Inheritance: extends BaseActiveRecordVersioned
コード例 #1
0
 /**
  * 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>