/** * Check if the paient id is already in the request list. * * @param int $patientId * * @return null|string 'primary' or 'secondary', this means, e.g.: patient id was submited for merge as secondary patient */ public function isPatientInRequestList($patientId) { $criteria = new CDbCriteria(); $criteria->condition = 'secondary_id=:patient_id OR ( primary_id=:patient_id AND status = ' . PatientMergeRequest::STATUS_NOT_PROCESSED . ') AND deleted = 0'; $criteria->params = array(':patient_id' => $patientId); $mergeRequest = PatientMergeRequest::model()->find($criteria); return $mergeRequest ? $mergeRequest->primary_id == $patientId ? 'primary' : 'secondary' : null; }
public function actionSearch() { $term = \Yii::app()->request->getParam('term', ''); $patientSearch = new PatientSearch(); $dataProvider = $patientSearch->search($term); $itemCount = $dataProvider->totalItemCount; $search_terms = $patientSearch->getSearchTerms(); if ($itemCount == 0) { Audit::add('search', 'search-results', implode(',', $search_terms) . ' : No results'); $message = 'Sorry, no results '; if ($search_terms['hos_num']) { $message .= 'for Hospital Number <strong>"' . $search_terms['hos_num'] . '"</strong>'; // check if the record was merged into another record $criteria = new CDbCriteria(); $criteria->compare('secondary_hos_num', $search_terms['hos_num']); $criteria->compare('status', PatientMergeRequest::STATUS_MERGED); $patientMergeRequest = PatientMergeRequest::model()->find($criteria); if ($patientMergeRequest) { $message = 'Hospital Number <strong>' . $search_terms['hos_num'] . '</strong> was merged into <strong>' . $patientMergeRequest->primary_hos_num . '</strong>'; } } elseif ($search_terms['nhs_num']) { $message .= 'for NHS Number <strong>"' . $search_terms['nhs_num'] . '"</strong>'; } elseif ($search_terms['first_name'] && $search_terms['last_name']) { $message .= 'for Patient Name <strong>"' . $search_terms['first_name'] . ' ' . $search_terms['last_name'] . '"</strong>'; } else { $message .= 'found for your search.'; } Yii::app()->user->setFlash('warning.no-results', $message); $this->redirect(Yii::app()->homeUrl); } elseif ($itemCount == 1) { foreach ($dataProvider->getData() as $item) { $this->redirect(array('patient/view/' . $item->id)); } } else { $this->renderPatientPanel = false; $this->render('results', array('data_provider' => $dataProvider, 'page_num' => \Yii::app()->request->getParam('Patient_page', 0), 'total_items' => $itemCount, 'term' => $term, 'search_terms' => $patientSearch->getSearchTerms(), 'sort_by' => (int) \Yii::app()->request->getParam('sort_by', null), 'sort_dir' => (int) \Yii::app()->request->getParam('sort_dir', null))); } }