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