/** * @param $rule * @return bool */ private function ckActiveMedicationAllergies($rule) { if (isset($rule['concepts']['ALLE']) && !empty($rule['concepts']['ALLE'])) { $count = 0; foreach ($rule['concepts']['ALLE'] as $concept) { $allergies = $this->Allergies->getPatientActiveDrugAllergiesByPidAndCode($this->Patient->getPatientPid(), $concept['concept_code']); if (empty($allergies)) { continue; } if ($concept['frequency_interval'] == 0) { $count++; continue; } $frequency = 0; foreach ($allergies as $allergy) { if ($this->isWithInterval($allergy['begin_date'], $concept['frequency_interval'], $concept['frequency_operator'], 'Y-m-d')) { $frequency++; if ($concept['frequency'] == $frequency) { break; } } } if ($concept['frequency_operator'] == '' || $this->compare($frequency, $concept['frequency_operator'], $concept['frequency'])) { $count++; } } return $count == count($rule['concepts']['ALLE']); } return true; }