Ejemplo n.º 1
0
 /**
  * Method setImmunizationsSection()
  */
 private function setImmunizationsSection()
 {
     $Immunizations = new Immunizations();
     $immunizationsData = $Immunizations->getPatientImmunizationsByPid($this->pid);
     unset($Immunizations);
     if (empty($immunizationsData) || $this->isExcluded('immunizations')) {
         $immunizations['@attributes'] = ['nullFlavor' => 'NI'];
     }
     $immunizations['templateId'] = ['@attributes' => ['root' => $this->requiredImmunization ? '2.16.840.1.113883.10.20.22.2.2.1' : '2.16.840.1.113883.10.20.22.2.2']];
     $immunizations['code'] = ['@attributes' => ['code' => '11369-6', 'codeSystemName' => 'LOINC', 'codeSystem' => '2.16.840.1.113883.6.1']];
     $immunizations['title'] = 'Immunizations';
     $immunizations['text'] = '';
     if ($this->isExcluded('immunizations')) {
         $this->addSection(['section' => $immunizations]);
         return;
     }
     if (!empty($immunizationsData)) {
         $immunizations['text'] = ['table' => ['@attributes' => ['border' => '1', 'width' => '100%'], 'thead' => ['tr' => [['th' => [['@value' => 'Vaccine'], ['@value' => 'Date'], ['@value' => 'Status']]]]], 'tbody' => ['tr' => []]]];
         $immunizations['entry'] = [];
         foreach ($immunizationsData as $item) {
             $date = preg_replace('/(\\d{4})-(\\d{2})-(\\d{2}) \\d{2}:\\d{2}:\\d{2}/', '$1$2', $item['administered_date']);
             $administered_by = $this->User->getUserByUid($item['administered_uid']);
             $immunizations['text']['table']['tbody']['tr'][] = ['td' => [['@value' => ucwords($item['vaccine_name'])], ['@value' => date('F Y', strtotime($item['administered_date']))], ['@value' => 'Completed']]];
             $entry['substanceAdministration'] = ['@attributes' => ['classCode' => 'SBADM', 'moodCode' => 'EVN', 'negationInd' => 'false', 'nullFlavor' => 'NI'], 'templateId' => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.4.52']], 'id' => ['@attributes' => ['root' => UUID::v4()]], 'code' => ['@attributes' => ['xsi:type' => 'CE', 'code' => 'IMMUNIZ', 'codeSystem' => '2.16.840.1.113883.5.4', 'codeSystemName' => 'ActCode']], 'statusCode' => ['@attributes' => ['code' => 'completed']], 'effectiveTime' => ['@attributes' => ['value' => $date]]];
             if (isset($item['administer_amount']) && $item['administer_amount'] != '') {
                 $entry['substanceAdministration']['doseQuantity'] = ['@attributes' => ['value' => $item['administer_amount'], 'unit' => $item['administer_units']]];
             } else {
                 $entry['substanceAdministration']['doseQuantity'] = ['@attributes' => ['nullFlavor' => 'UNK']];
             }
             $entry['substanceAdministration']['consumable'] = ['manufacturedProduct' => ['@attributes' => ['classCode' => 'MANU'], 'templateId' => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.4.54']], 'manufacturedMaterial' => ['code' => ['@attributes' => ['code' => $item['code'], 'codeSystemName' => 'CVX', 'codeSystem' => '2.16.840.1.113883.12.292', 'displayName' => ucwords($item['vaccine_name'])]]]]];
             if (isset($item['lot_number']) && $item['lot_number'] != '') {
                 $entry['substanceAdministration']['consumable']['manufacturedProduct']['manufacturedMaterial']['lotNumberText'] = $item['lot_number'];
             } else {
                 $entry['substanceAdministration']['consumable']['manufacturedProduct']['manufacturedMaterial']['lotNumberText'] = ['@attributes' => ['nullFlavor' => 'UNK']];
             }
             if (isset($item['manufacturer']) && $item['manufacturer'] != '') {
                 $entry['substanceAdministration']['consumable']['manufacturedProduct']['manufacturerOrganization'] = ['name' => $item['manufacturer']];
             } else {
                 $entry['substanceAdministration']['consumable']['manufacturedProduct']['manufacturerOrganization'] = ['@attributes' => ['nullFlavor' => 'UNK']];
             }
             // administered by...
             $entry['substanceAdministration']['performer']['assignedEntity'] = ['id' => ['@attributes' => ['root' => 'NA']]];
             if ($administered_by !== false) {
                 $entry['substanceAdministration']['performer']['assignedEntity']['code'] = ['@attributes' => ['code' => $administered_by['taxonomy'], 'codeSystem' => '2.16.840.1.114222.4.11.1066', 'codeSystemName' => 'NUCC Health Care Provider Taxonomy', 'displayName' => $administered_by['title'] . ' ' . $administered_by['fname'] . ' ' . $administered_by['mname'] . ' ' . $administered_by['lname']]];
             } else {
                 $entry['substanceAdministration']['performer']['assignedEntity']['code'] = ['@attributes' => ['nullFlavor' => 'UNK']];
             }
             // immunization education\
             if (isset($item['education_date']) && $item['education_date'] != '0000-00-00') {
                 $entry['substanceAdministration']['entryRelationship'] = ['@attributes' => ['typeCode' => 'SUBJ', 'inversionInd' => 'true'], 'act' => ['@attributes' => ['classCode' => 'ACT', 'moodCode' => 'INT'], 'templateId' => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.4.20']], 'code' => ['@attributes' => ['code' => '171044003', 'codeSystem' => '2.16.840.1.113883.6.96', 'displayName' => 'immunization education']], 'statusCode' => ['@attributes' => ['code' => 'completed']]]];
             }
             $immunizations['entry'][] = $entry;
         }
     }
     if ($this->requiredImmunization || isset($immunizations['entry'])) {
         $this->addSection(['section' => $immunizations]);
     }
     unset($immunizationsData, $immunizations);
 }