Returns the static model of the specified AR class.
public static model ( $className = __CLASS__ ) : SecondaryDiagnosis | ||
return | SecondaryDiagnosis | the static model class |
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(); } } }
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); } } } }
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(); }