/**
* Omnibox search handler.
*/
public function actionSearch()
{
if (isset($_POST['query']) && ($query = trim($_POST['query']))) {
//empty string
if (strlen($query) == 0) {
Yii::app()->user->setFlash('warning.search_error', 'Please enter either a hospital number or a firstname and lastname.');
} else {
// Event ID
if (preg_match('/^(E|Event)\\s*[:;]\\s*([0-9]+)$/i', $query, $matches)) {
$event_id = $matches[2];
if ($event = Event::model()->findByPk($event_id)) {
$event_class_name = $event->eventType->class_name;
$this->redirect(array($event_class_name . '/default/view/' . $event_id));
} else {
Yii::app()->user->setFlash('warning.search_error', 'Event ID not found');
$this->redirect('/');
}
return;
} else {
$patientSearch = new PatientSearch();
// lets check if it is a NHS number, Hospital number or Patient name
if ($patientSearch->getNHSnumber($query) || $patientSearch->getHospitalNumber($query) || $patientSearch->getPatientName($query)) {
$this->redirect(array('patient/search', 'term' => $query));
} else {
// not a valid search
Yii::app()->user->setFlash('warning.search_error', '<strong>"' . CHtml::encode($query) . '"</strong> is not a valid search.');
}
}
}
}
/*
// NHS number (assume 10 digit number is an NHS number)
if(preg_match('/^(N|NHS)\s*[:;]\s*([0-9\- ]+)$/i',$query,$matches)
|| preg_match('/^([0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]{4})$/i',$query,$matches)) {
$nhs = (isset($matches[2])) ? $matches[2] : $matches[1];
$nhs = str_replace(array('-',' '),'',$nhs);
$this->redirect(array('patient/search', 'nhs_num' => $nhs));
return;
}
// Hospital number (assume a < 10 digit number is a hosnum)
if(preg_match('/^(H|Hosnum)\s*[:;]\s*([0-9a-zA-Z\-]+)$/i',$query,$matches)
|| preg_match(Yii::app()->params['hos_num_regex'],$query,$matches)) {
$hosnum = (isset($matches[2])) ? $matches[2] : $matches[1];
$this->redirect(array('patient/search', 'hos_num' => $hosnum));
return;
}
// Patient name
if (preg_match('/^(?:P(?:atient)?[:;\s]*)?(.*[ ,].*)$/', $query, $m)) {
$name = $m[1];
if (strpos($name, ',') !== false) {
list ($surname, $firstname) = explode(',', $name, 2);
} else {
list ($firstname, $surname) = explode(' ', $name, 2);
}
$this->redirect(array('patient/search', 'first_name' => trim($firstname), 'last_name' => trim($surname)));
}
} */
/*if (isset($query)) {
if (strlen($query) == 0) {
Yii::app()->user->setFlash('warning.search_error', "Please enter either a hospital number or a firstname and lastname.");
} else {
Yii::app()->user->setFlash('warning.search_error', '<strong>"'.CHtml::encode($query).'"</strong> is not a valid search.');
}
}*/
$this->redirect('/');
}