model() public static method

Returns the static model of the specified AR class.
public static model ( $className = __CLASS__ ) : SecondaryDiagnosis
return SecondaryDiagnosis the static model class
Exemplo n.º 1
0
 protected function afterSave()
 {
     foreach (SecondaryDiagnosis::model()->findAll('patient_id=? and disorder_id=?', array($this->patient_id, $this->disorder_id)) as $sd) {
         if ($this->eye_id == $sd->eye_id || $this->eye_id == 3 && in_array($sd->eye_id, array(1, 2))) {
             $sd->delete();
         } elseif (in_array($this->eye_id, array(1, 2)) && $sd->eye_id == 3) {
             $sd->eye_id = $this->eye_id == 1 ? 2 : 1;
             $sd->save();
         }
     }
 }
Exemplo n.º 2
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));
 }
 /**
  * Update the diagnoses for this element using a hash structure of
  * [{
  * 		'disorder_id' => integer,
  * 		'eye_id' => \Eye::LEFT|\Eye::RIGHT|\Eye::BOTH,
  * 		'principal' => boolean
  * }, ... ]
  *
  * @param $update_disorders
  * @throws Exception
  */
 public function updateDiagnoses($update_disorders)
 {
     $current_diagnoses = OphCiExamination_Diagnosis::model()->findAll('element_diagnoses_id=?', array($this->id));
     $curr_by_disorder_id = array();
     $secondary_disorder_ids = array();
     foreach ($current_diagnoses as $cd) {
         $curr_by_disorder_id[$cd->disorder_id] = $cd;
     }
     foreach ($update_disorders as $u_disorder) {
         if (!($curr = @$curr_by_disorder_id[$u_disorder['disorder_id']])) {
             $curr = new OphCiExamination_Diagnosis();
             $curr->element_diagnoses_id = $this->id;
             $curr->disorder_id = $u_disorder['disorder_id'];
         } else {
             unset($curr_by_disorder_id[$u_disorder['disorder_id']]);
         }
         if ($curr->eye_id != $u_disorder['eye_id'] || $curr->principal != $u_disorder['principal']) {
             // need to update & save
             $curr->eye_id = $u_disorder['eye_id'];
             $curr->principal = $u_disorder['principal'];
             if (!$curr->save()) {
                 throw new \Exception("save failed" . print_r($curr->getErrors(), true));
             }
         }
         if ($u_disorder['principal']) {
             $this->event->episode->setPrincipalDiagnosis($u_disorder['disorder_id'], $u_disorder['eye_id']);
         } else {
             //add a secondary diagnosis
             // Note that this may be creating duplicate diagnoses, but that is okay as the dates on them will differ
             $this->event->episode->patient->addDiagnosis($u_disorder['disorder_id'], $u_disorder['eye_id'], substr($this->event->created_date, 0, 10));
             // and track
             $secondary_disorder_ids[] = $u_disorder['disorder_id'];
         }
     }
     // remove any current diagnoses no longer needed
     foreach ($curr_by_disorder_id as $curr) {
         if (!$curr->delete()) {
             throw new \Exception('Unable to remove old disorder');
         }
     }
     // ensure secondary diagnoses are consistent
     // FIXME: ongoing discussion as to whether we should be removing diagnosis from the patient here
     // particularly if this is a save of an older examination record.
     foreach (\SecondaryDiagnosis::model()->findAll('patient_id=?', array($this->event->episode->patient_id)) as $sd) {
         if ($sd->disorder->specialty && $sd->disorder->specialty->code == 130) {
             if (!in_array($sd->disorder_id, $secondary_disorder_ids)) {
                 $this->event->episode->patient->removeDiagnosis($sd->id);
             }
         }
     }
 }
Exemplo n.º 4
0
 public function getSdl()
 {
     $criteria = new CDbCriteria();
     $criteria->compare('patient_id', $this->id);
     $criteria->order = 'created_date asc';
     $diagnoses = array();
     foreach (SecondaryDiagnosis::model()->findAll('patient_id=?', array($this->id)) as $i => $sd) {
         if ($sd->disorder->specialty && $sd->disorder->specialty->code == 130) {
             $diagnoses[] = strtolower(($sd->eye ? $sd->eye->adjective . ' ' : '') . $sd->disorder->term);
         }
     }
     return Helper::formatList($diagnoses);
 }
 /**
  * Because the secondary diagnosis may or may not exist we have a function to check for it.
  *
  * @return SecondaryDiagnosis|null
  */
 protected function _getSecondaryDiagnosis()
 {
     if ($this->secondarydiagnosis_id) {
         return \SecondaryDiagnosis::model()->findByPk($this->secondarydiagnosis_id);
     }
     return;
 }
 /**
  * Reset diagnosis data on the event based on the diagnosis set on this element.
  */
 protected function afterSave()
 {
     if (!$this->event->episode->eye && !$this->event->episode->disorder_id) {
         $this->event->episode->setPrincipalDiagnosis($this->disorder_id, $this->eye_id);
         if ($sd = SecondaryDiagnosis::model()->find('patient_id=? and disorder_id=? and eye_id = ?', array($this->event->episode->patient_id, $this->disorder_id, 3))) {
             $this->event->episode->patient->removeDiagnosis($sd->id);
             if (in_array($this->eye_id, array(1, 2))) {
                 $this->event->episode->patient->addDiagnosis($this->disorder_id, $this->eye_id == 1 ? 2 : 1);
             }
         }
     } else {
         if (!SecondaryDiagnosis::model()->find('patient_id=? and disorder_id=? and eye_id in (' . $this->eye_id . ',3)', array($this->event->episode->patient_id, $this->disorder_id))) {
             if (!Episode::model()->find('patient_id=? and disorder_id=? and eye_id in (' . $this->eye_id . ',3)', array($this->event->episode->patient_id, $this->disorder_id))) {
                 $this->event->episode->patient->addDiagnosis($this->disorder_id, $this->eye_id);
             }
         }
     }
     return parent::afterSave();
 }