Esempio n. 1
0
 /**
  * @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;
 }