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))); } }