/** * 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('/'); }