OEModule\OphCiExamination\components\ExaminationCreator::save PHP Method

save() public method

Create an examination event.
public save ( $episodeId, $userId, $examination, $eventType, $eyeIds, $refractionType, $opNoteEventId = null ) : Event
$episodeId
$userId
$examination
$eventType
$eyeIds
$refractionType
$opNoteEventId
return Event
    public function save($episodeId, $userId, $examination, $eventType, $eyeIds, $refractionType, $opNoteEventId = null)
    {
        $examinationEvent = $this->createExamination($episodeId, $userId, $examination, $eventType);
        if ($examinationEvent->save(true, null, true)) {
            $examinationEvent->refresh();
            $refraction = new \OEModule\OphCiExamination\models\Element_OphCiExamination_Refraction();
            $refraction->event_id = $examinationEvent->id;
            $refraction->created_user_id = $refraction->last_modified_user_id = $userId;
            $iop = $this->createIop($userId, $eyeIds, $examinationEvent);
            $complications = $this->createComplications($userId, $eyeIds, $examinationEvent);
            $this->createComments($userId, $examination, $examinationEvent);
            $this->createMessage($episodeId, $userId, $examination, $examinationEvent);
            if (count($examination['patient']['eyes'][0]['reading'][0]['visual_acuity']) || count($examination['patient']['eyes'][0]['reading'][0]['near_visual_acuity'])) {
                $this->createVisualFunction($userId, $eyeIds, $examinationEvent);
                if (count($examination['patient']['eyes'][0]['reading'][0]['visual_acuity'])) {
                    $measure = $examination['patient']['eyes'][0]['reading'][0]['visual_acuity'][0]['measure'];
                    $unit = \OEModule\OphCiExamination\models\OphCiExamination_VisualAcuityUnit::model()->find('name = :measure', array('measure' => $measure));
                    $visualAcuity = $this->createVisualAcuity($userId, $eyeIds, $examinationEvent, $unit);
                }
                if (count($examination['patient']['eyes'][0]['reading'][0]['near_visual_acuity'])) {
                    $nearMeasure = $examination['patient']['eyes'][0]['reading'][0]['near_visual_acuity'][0]['measure'];
                    $nearUnit = \OEModule\OphCiExamination\models\OphCiExamination_VisualAcuityUnit::model()->find('name = :measure', array('measure' => $nearMeasure));
                    $nearVisualAcuity = $this->createVisualAcuity($userId, $eyeIds, $examinationEvent, $nearUnit, true);
                }
            }
            foreach ($examination['patient']['eyes'] as $eye) {
                $eyeLabel = strtolower($eye['label']);
                $refractionReading = $eye['reading'][0]['refraction'];
                $typeSide = $eyeLabel . '_type_id';
                $sphereSide = $eyeLabel . '_sphere';
                $cylinderSide = $eyeLabel . '_cylinder';
                $axisSide = $eyeLabel . '_axis';
                $refraction->{$typeSide} = $refractionType['id'];
                $refraction->{$sphereSide} = $refractionReading['sphere'];
                $refraction->{$cylinderSide} = $refractionReading['cylinder'];
                $refraction->{$axisSide} = $refractionReading['axis'];
                foreach ($eye['reading'][0]['visual_acuity'] as $vaData) {
                    $this->addVisualAcuityReading($userId, $visualAcuity, $unit, $vaData, $eyeLabel);
                }
                foreach ($eye['reading'][0]['near_visual_acuity'] as $vaData) {
                    $this->addVisualAcuityReading($userId, $nearVisualAcuity, $nearUnit, $vaData, $eyeLabel, true);
                }
                $this->addIop($eyeIds, $eye, $iop, $eyeLabel);
                $this->addComplication($userId, $eyeIds, $opNoteEventId, $eye, $complications, $eyeLabel);
            }
            $refraction->eye_id = $eyeIds['both'];
            if (!$refraction->save(true, null, true)) {
                throw new \CDbException('Refraction failed: ' . print_r($iop->getErrors(), true));
            }
            return $examinationEvent;
        } else {
            throw new \CDbException('Examination failed: ' . print_r($examinationEvent->getErrors(), true));
        }
    }