/** * 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); }