protected function saveComplexAttributes_Element_OphCiExamination_History($element, $data, $index) { $patient = \Patient::model()->findByPk($this->patient->id); // we remove all current allergy data if (!empty($data['deleted_allergies'])) { foreach ($data['deleted_allergies'] as $i => $assignment_id) { if ($assignment_id > 0) { $allergyToDel = \PatientAllergyAssignment::model()->findByPk($assignment_id); if ($allergyToDel) { $allergyToDel->delete(); } } } } if (isset($data['no_allergies']) && $data['no_allergies']) { $patient->setNoAllergies(); } else { if (!empty($data['selected_allergies'])) { foreach ($data['selected_allergies'] as $i => $allergy_id) { $allergyObject = \Allergy::model()->findByPk($allergy_id); if ($data['other_names'][$i] == 'undefined') { $data['other_names'][$i] = ''; } $patient->addAllergy($allergyObject, $data['other_names'][$i], $data['allergy_comments'][$i], false, $this->event->id); } } } }