/** * custom validation for virtual clinic referral. * * @TODO: this should hand off validation to a faked PatientTicket request via the API. * * @param array $data * * @return array */ protected function setAndValidateElementsFromData($data) { $errors = parent::setAndValidateElementsFromData($data); if (isset($data['patientticket_queue']) && ($api = Yii::app()->moduleAPI->get('PatientTicketing'))) { $co_sid = @$data[\CHtml::modelName(models\Element_OphCiExamination_ClinicOutcome::model())]['status_id']; $status = models\OphCiExamination_ClinicOutcome_Status::model()->findByPk($co_sid); if ($status && $status->patientticket) { $err = array(); $queue = null; if (!$data['patientticket_queue']) { $err['patientticket_queue'] = 'You must select a valid Virtual Clinic for referral'; } elseif (!($queue = $api->getQueueForUserAndFirm(Yii::app()->user, $this->firm, $data['patientticket_queue']))) { $err['patientticket_queue'] = 'Virtual Clinic not found'; } if ($queue) { if (!$api->canAddPatientToQueue($this->patient, $queue)) { $err['patientticket_queue'] = 'Cannot add Patient to Queue'; } else { list($ignore, $fld_errs) = $api->extractQueueData($queue, $data, true); $err = array_merge($err, $fld_errs); } } if (count($err)) { $et_name = models\Element_OphCiExamination_ClinicOutcome::model()->getElementTypeName(); if (@$errors[$et_name]) { $errors[$et_name] = array_merge($errors[$et_name], $err); } else { $errors[$et_name] = $err; } } } } return $errors; }
_status"> <div class="field-row row"> <div class="large-3 column"> <label for="<?php echo CHtml::modelName($element) . '_status_id'; ?> "> <?php echo $element->getAttributeLabel('status_id'); ?> : </label> </div> <div class="large-3 column end"> <?php $outcomes = \OEModule\OphCiExamination\models\OphCiExamination_ClinicOutcome_Status::model()->activeOrPk($element->status_id)->bySubspecialty($this->firm->getSubspecialty())->findAll(); $html_options = array('empty' => '- Please select -', 'nowrapper' => true, 'options' => array()); $authRoles = Yii::app()->authManager->getRoles(Yii::app()->user->id); foreach ($outcomes as $opt) { $options = array('data-followup' => $opt->followup, 'data-ticket' => $opt->patientticket); if ($opt->patientticket && (!count($queues) || !isset($authRoles["Patient Tickets"]))) { $options['disabled'] = true; } $html_options['options'][(string) $opt->id] = $options; } echo $form->dropDownList($element, 'status_id', \CHtml::listData($outcomes, 'id', 'name'), $html_options); ?> </div> </div> </div>