/** * @dataProvider dataProvider_Search */ public function testSearch_WithValidTerms_ReturnsExpectedResults($searchTerms, $numResults, $expectedKeys) { $this->model->setAttributes($searchTerms); $results = $this->model->search(); $data = $results->getData(); $expectedResults = array(); if (!empty($expectedKeys)) { foreach ($expectedKeys as $key) { $expectedResults[] = $this->disorders($key); } } $this->assertEquals($numResults, $results->getItemCount()); $this->assertEquals($expectedResults, $data); }
/** * @covers CommonSystemicDisorder::getList */ public function testGetList() { $expected = array(); foreach ($this->commonsystemicdisorder as $data) { $disorder = Disorder::model()->findByPk($data['disorder_id']); $expected[$disorder->id] = $disorder->term; } $firm = $this->getMockBuilder('Firm')->disableOriginalConstructor()->getMock(); $this->assertEquals($expected, $this->model->getList($firm), 'List results should match.'); }
public function actionDetails() { if (!isset($_REQUEST['name'])) { echo CJavaScript::jsonEncode(false); } else { $disorder = Disorder::model()->find('fully_specified_name = ? OR term = ?', array($_REQUEST['name'], $_REQUEST['name'])); if ($disorder) { echo $disorder->id; } else { echo CJavaScript::jsonEncode(false); } } }
public function run() { if ($this->element) { $this->class = CHTML::modelName($this->element); } else { $this->class = get_class($this); } if (empty($_POST) || !array_key_exists($this->class, $_POST)) { if (empty($this->element->event_id)) { if ($this->default) { // It's a new event so fetch the most recent element_diagnosis $firmId = Yii::app()->session['selected_firm_id']; $firm = Firm::model()->findByPk($firmId); if (isset(Yii::app()->getController()->patient)) { $patientId = Yii::app()->getController()->patient->id; $episode = Episode::getCurrentEpisodeByFirm($patientId, $firm, true); if ($episode && ($disorder = $episode->diagnosis)) { // There is a diagnosis for this episode $this->value = $disorder->id; $this->label = $disorder->term; } } } } else { if (isset($this->element->disorder)) { $this->value = $this->element->disorder->id; $this->label = $this->element->disorder->term; } } } elseif (array_key_exists($this->field, $_POST[$this->class])) { if (preg_match('/[^\\d]/', $_POST[$this->class][$this->field])) { if ($disorder = Disorder::model()->find('term=? and specialty_id is not null', array($_POST[$this->class][$this->field]))) { $this->value = $disorder->id; $this->label = $disorder->term; } } else { $this->value = $_POST[$this->class][$this->field]; if ($disorder = Disorder::model()->findByPk($this->value)) { $this->label = $disorder->term; } } } parent::run(); }
public function actionSearch() { if (Yii::app()->request->isAjaxRequest) { $criteria = new CDbCriteria(); if (isset($_GET['term']) && strlen($term = $_GET['term']) > 0) { $criteria->addCondition(array('LOWER(fully_specified_name) LIKE :term', 'LOWER(term) LIKE :term'), 'OR'); $params[':term'] = '%' . strtolower(strtr($term, array('%' => '\\%'))) . '%'; } $criteria->order = 'fully_specified_name'; $criteria->select = 'id, fully_specified_name'; $criteria->params = $params; $disorders = Disorder::model()->active()->findAll($criteria); $return = array(); foreach ($disorders as $disorder) { $return[] = array('label' => $disorder->fully_specified_name, 'value' => $disorder->fully_specified_name, 'id' => $disorder->id); } echo CJSON::encode($return); } }
/** * add a diagnosis to the specified parent if it doesn't already exist there. * * @throws Exception */ public function actionAddDiagnosis() { $parent = null; if (@$_POST['parent_id'] && !($parent = OphCoTherapyapplication_TherapyDisorder::model()->findByPk((int) $_POST['parent_id']))) { throw new Exception('Cannot find parent with id ' . $parent->id); } if (!($disorder = Disorder::model()->findByPk((int) @$_POST['disorder_id']))) { throw new Exception('Unknown disorder id ' . @$_POST['disorder_id']); } // check not already been added $criteria = new CDbCriteria(); $criteria->condition = 'disorder_id = :did'; $criteria->params = array(':did' => $disorder->id); if ($parent) { $criteria->condition .= ' AND parent_id = :pid'; $criteria->params[':pid'] = $parent->id; } else { $criteria->condition .= ' AND parent_id is NULL'; } if (OphCoTherapyapplication_TherapyDisorder::model()->find($criteria)) { Yii::app()->user->setFlash('failure', 'Disorder already set at this level'); } else { $therapy_disorder = new OphCoTherapyapplication_TherapyDisorder(); $therapy_disorder->disorder_id = $disorder->id; $query = 'SELECT MAX(display_order) AS maxdisplay FROM ' . OphCoTherapyapplication_TherapyDisorder::model()->tableName(); if ($parent) { $therapy_disorder->parent_id = $parent->id; $query .= ' WHERE parent_id = ' . $parent->id; } $val = Yii::app()->db->createCommand($query)->queryRow(); $therapy_disorder->display_order = $val['maxdisplay'] + 1; if (!$therapy_disorder->save()) { throw new Exception('Unable to save new therapy disorder ' . print_r($therapy_disorder->getErrors(), true)); } Yii::app()->user->setFlash('success', 'Disorder added'); Audit::add('admin', 'create', $therapy_disorder->id, null, array('module' => 'OphCoTherapyapplication', 'model' => 'OphCoTherapyapplication_TherapyDisorder')); } $this->redirect(array('viewdiagnoses', 'parent_id' => @$_POST['parent_id'])); }
public static function getList($firm) { return CHtml::listData(Disorder::model()->findAll(array('condition' => 'specialty_id is null', 'join' => 'JOIN common_systemic_disorder cad ON cad.disorder_id = t.id', 'order' => 'term')), 'id', 'term'); }
/** * Get the patient diabetes type as Disorder instance - will return generic Diabetes * if no specific type available, but patient has diabetes * * @return Disorder|null */ public function getDiabetes() { $type = $this->getDiabetesType(); if ($type === null && $this->hasDisorderTypeByIds(Disorder::$SNOMED_DIABETES_SET)) { return Disorder::model()->findByPk(Disorder::SNOMED_DIABETES); } return $type; }
/** * @param $diagnosis_id * * @return string */ protected function getDiagnosisString($diagnosis_id) { if (!$diagnosis_id) { return 'N/A'; } if (!@$this->_diagnosis_cache[$diagnosis_id]) { $disorder = Disorder::model()->findByPk($diagnosis_id); if ($disorder) { $this->_diagnosis_cache[$diagnosis_id] = $disorder->term; } else { $this->_diagnosis_cache[$diagnosis_id] = 'REMOVED DISORDER'; } } return $this->_diagnosis_cache[$diagnosis_id]; }
public function getDiabetesTypes() { return array(\Disorder::SNOMED_DIABETES_TYPE_I => \Disorder::model()->findByPk(\Disorder::SNOMED_DIABETES_TYPE_I)->term, \Disorder::SNOMED_DIABETES_TYPE_II => \Disorder::model()->findByPk(\Disorder::SNOMED_DIABETES_TYPE_II)->term); }
private function populateTmpRcoNodEpisodeDiabeticDiagnosis() { $disorder = Disorder::model()->findByPk(Disorder::SNOMED_DIABETES); $disorder_ids = implode(",", $disorder->descendentIds()); $query = <<<EOL INSERT INTO tmp_rco_nod_EpisodeDiabeticDiagnosis_{$this->extractIdentifier} ( oe_event_id, IsDiabetic, DiabetesTypeId, DiabetesRegimeId, AgeAtDiagnosis ) SELECT c.oe_event_id, (SELECT CASE WHEN d.id IN ( {$disorder_ids} ) THEN 1 ELSE 0 END) AS IsDiabetic, ( SELECT CASE WHEN d.id IN (23045005,28032008,46635009,190368000,190369008,190371008,190372001,199229001,237618001,290002008,313435000,314771006,314893005, 314894004,401110002,420270002,420486006,420514000,420789003,420825003,420868002,420918009,421165007,421305000,421365002,421468001, 421893009,421920002,422228004,422297002,425159004,425442003,426907004,427571000,428896009,11530004) THEN 1 WHEN d.id IN (9859006,44054006,81531005,190388001,190389009,190390000,190392008,199230006,237599002,237604008,237614004,237650006, 313436004,314772004,314902007,314903002,314904008,359642000,395204000,420279001,420414003,420436000,420715001,420756003, 421326000,421631007,421707005,421750000,421779007,421847006,421986006,422014003,422034002,422099009,422166005,423263001, 424989000,427027005,427134009,428007007,359638003) THEN 2 WHEN d.id IN (237626009,237627000,11687002,46894009,71546005,75022004,420491007,420738003,420989005,421223006,421389009,421443003, 422155003,76751001,199223000,199225007,199227004) THEN 3 WHEN d.id IN (237619009,359939009) THEN 4 WHEN d.id IN (14052004,28453007) THEN 5 WHEN d.id IN (2751001,4307007,4783006,5368009,5969009,8801005,33559001,42954008,49817004,51002006,57886004,59079001,70694009, 73211009,75524006,75682002,111552007,111554008,127012008,190329007,190330002,190331003,190406000,190407009,190410002, 190411003,190412005,190416008,190447002,199226008,199228009,199231005,237600004,237601000,237603002,237611007,237612000, 237616002,237617006,237620003,238981002,275918005,276560009,408540003,413183008,420422005,420683009,421256007,421895002, 422088007,422183001,422275004,426705001,426875007,427089005,441628001,91352004,399144008) THEN 9 ELSE "" END ) AS DiabetesTypeId, "" AS DiabetesRegimeId, ( \t\t\tSELECT CASE WHEN DATE != '' THEN IFNULL((DATE_FORMAT(`date`, '%Y') - DATE_FORMAT(p.dob, '%Y') - (DATE_FORMAT(`date`, '00-%m-%d') < DATE_FORMAT(p.dob, '00-%m-%d'))), "") ELSE "" \t\t\t\tEND ) \t\t AS AgeAtDiagnosis FROM tmp_rco_nod_main_event_episodes_{$this->extractIdentifier} c JOIN patient p ON c.patient_id = p.id JOIN secondary_diagnosis s ON s.patient_id = p.id JOIN disorder d ON d.id = s.disorder_id; EOL; return $query; }
protected function getDiagnosisName($disorder_id) { if (!$disorder_id) { return 'N/A'; } if ($disorder = Disorder::model()->findByPk($disorder_id)) { return $disorder->term; } else { return 'UNKNOWN'; } }
/** * Ajax function for quick disorder lookup. * * Used when eyedraw elements have doodles that are associated with disorders * * @throws Exception */ public function actionGetDisorder() { if (!@$_GET['disorder_id']) { return; } if (!($disorder = \Disorder::model()->findByPk(@$_GET['disorder_id']))) { throw new \Exception('Unable to find disorder: ' . @$_GET['disorder_id']); } header('Content-type: application/json'); echo json_encode(array('id' => $disorder->id, 'name' => $disorder->term)); Yii::app()->end(); }
/** * Cache wrapper for searching for and retrieving disorder by id * @param $id * @return Disorder|null */ protected function getDisorder($id) { if (!array_key_exists($id, $this->disorders)) { $this->disorders[$id] = Disorder::model()->findByPk($id); } return $this->disorders[$id]; }
$l2_seen = true; break; } } if (!$l2_seen) { if ($l2_disorder = Disorder::model()->findByPk($posted_l2_id)) { $l2_disorders[$l1->id][] = $l2_disorder; $l1_opts[$l1->id]['data-level2'][] = array('id' => $posted_l2_id, 'term' => $l2_disorder->term); } } } break; } } if (!$l1_seen) { $l1_disorders[] = Disorder::model()->findByPk($posted_l1_id); } } } // now manipulation is at an end, we can json encode the level 2 disorder data foreach ($l1_opts as $id => $data) { if (array_key_exists('data-level2', $data)) { $l1_opts[$id]['data-level2'] = CJSON::encode($data['data-level2']); } } $layoutColumns = array('label' => 4, 'field' => 8); ?> <div class="row field-row"> <div class="large-<?php echo $layoutColumns['label']; ?>
public function actionAdddiagnosis() { if (isset($_POST['DiagnosisSelection']['ophthalmic_disorder_id'])) { $disorder = Disorder::model()->findByPk(@$_POST['DiagnosisSelection']['ophthalmic_disorder_id']); } else { $disorder = Disorder::model()->findByPk(@$_POST['DiagnosisSelection']['systemic_disorder_id']); } if (!$disorder) { throw new Exception('Unable to find disorder: ' . @$_POST['DiagnosisSelection']['ophthalmic_disorder_id'] . ' / ' . @$_POST['DiagnosisSelection']['systemic_disorder_id']); } if (!($patient = Patient::model()->findByPk(@$_POST['patient_id']))) { throw new Exception('Unable to find patient: ' . @$_POST['patient_id']); } $date = $this->processFuzzyDate(); if (!$_POST['diagnosis_eye']) { if (!SecondaryDiagnosis::model()->find('patient_id=? and disorder_id=? and date=?', array($patient->id, $disorder->id, $date))) { $patient->addDiagnosis($disorder->id, null, $date); } } elseif (!SecondaryDiagnosis::model()->find('patient_id=? and disorder_id=? and eye_id=? and date=?', array($patient->id, $disorder->id, $_POST['diagnosis_eye'], $date))) { $patient->addDiagnosis($disorder->id, $_POST['diagnosis_eye'], $date); } $this->redirect(array('patient/view/' . $patient->id)); }
/** * If script is set up to define the COD it will create one if it can't be found. * * @param $disorder_id * @param $subspecialty */ protected function getCOD($disorder_id, $subspecialty) { $key = "{$disorder_id}:{$subspecialty->id}"; if (!array_key_exists($key, $this->cod)) { $criteria = new CDbCriteria(); $criteria->addCondition('subspecialty_id = :si'); $criteria->params[':si'] = $subspecialty->id; if ($disorder_id == 'null') { $criteria->addCondition('disorder_id is null'); } else { $criteria->addCondition('disorder_id = :di'); $criteria->params[':di'] = $disorder_id; } if (!($cod = CommonOphthalmicDisorder::model()->find($criteria) && $this->reset_parent)) { $display_order = $this->getNextDisplayOrderForSubspecialty($subspecialty); $_disorder_id = Disorder::model()->findByPk($disorder_id) ? $disorder_id : null; $cod = new CommonOphthalmicDisorder(); $cod->disorder_id = $_disorder_id; $cod->subspecialty_id = $subspecialty->id; $cod->save(); } $this->cod[$key] = $cod; } return $this->cod[$key]; }
public function description() { $description = 'Patients with ' . ($this->condition_type == 'or' ? 'any' : 'all') . " of these diagnoses:\n"; if (!empty($this->principal)) { foreach ($this->principal as $disorder_id) { $description .= Disorder::model()->findByPk($disorder_id)->term . " (Principal)\n"; } } if (!empty($this->secondary)) { foreach ($this->secondary as $disorder_id) { $description .= Disorder::model()->findByPk($disorder_id)->term . " (Secondary)\n"; } } return $description . "Between " . $this->start_date . " and " . $this->end_date; }
public static function getList($firm) { if (empty($firm)) { throw new CException('Firm is required.'); } if ($firm->serviceSubspecialtyAssignment) { $ss_id = $firm->serviceSubspecialtyAssignment->subspecialty_id; $disorders = Disorder::model()->active()->findAll(array('condition' => 'cad.subspecialty_id = :subspecialty_id', 'join' => 'JOIN common_ophthalmic_disorder cad ON cad.disorder_id = t.id JOIN specialty ON specialty_id = specialty.id AND specialty.code = :ophcode', 'order' => 'term', 'params' => array(':subspecialty_id' => $ss_id, ':ophcode' => 130))); return CHtml::listData($disorders, 'id', 'term'); } return array(); }
/** * check a level 2 diagnosis is provided for level 1 diagnoses that require it (need to check the side as well though) */ public function requiredIfSecondary($attribute, $params) { if ($params['side'] == 'left' && $this->eye_id != \Eye::RIGHT || $params['side'] == 'right' && $this->eye_id != \Eye::LEFT) { if ($this->{$params}['dependent'] && !$this->{$attribute}) { if ($api = Yii::app()->moduleAPI->get('OphCoTherapyapplication')) { if (count($api->getLevel2Disorders($this->{$params}['dependent']))) { $disorder = \Disorder::model()->findByPk($this->{$params}['dependent']); $this->addError($attribute, $disorder->term . " must be associated with another diagnosis"); } } } } }