The followings are the available columns in table 'disorder':
Наследование: extends BaseActiveRecordVersioned
Пример #1
0
 /**
  * @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);
         }
     }
 }
Пример #4
0
 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);
     }
 }
Пример #6
0
 /**
  * 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');
 }
Пример #8
0
 /**
  * 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;
 }
Пример #9
0
 /**
  * @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);
 }
Пример #11
0
    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';
     }
 }
Пример #13
0
 /**
  * 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'];
?>
Пример #16
0
 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));
 }
Пример #17
0
 /**
  * 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];
 }
Пример #18
0
 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");
                 }
             }
         }
     }
 }