/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData['Anesthesia']); $Section = ['component' => ['section' => ['templateId' => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.2.25.2']], 'code' => ['@attributes' => ['code' => '59774-0', 'displayName' => 'Anesthesia', 'codeSystem' => '2.16.840.1.113883.6.1', 'codeSystemName' => 'LOINC']], 'title' => 'Procedure Anesthesia', 'text' => self::Narrative($PortionData)]]]; // MAY contain zero or more [0..*] entry // SHALL contain exactly one [1..1] Procedure Activity Procedure (V2) if (count($PortionData['ProcedureActivityProcedure']) > 0) { foreach ($PortionData['ProcedureActivityProcedure'] as $ProcedureActivityProcedure) { $Section['component']['section']['entry'][] = ['@attributes' => ['typeCode' => 'DRIV'], LevelEntry\procedureActivityProcedure::Insert($ProcedureActivityProcedure, $CompleteData)]; } } // MAY contain zero or more [0..*] entry // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Section['component']['section']['entry'][] = ['@attributes' => ['typeCode' => 'DRIV'], LevelEntry\medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } return $Section; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Section = ['component' => ['section' => ['templateId' => [0 => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.2.1.1.2']], 1 => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.2.1.2']]], 'code' => ['@attributes' => ['code' => '10160-0', 'displayName' => 'History of Medication Use', 'codeSystem' => '2.16.840.1.113883.6.1', 'codeSystemName' => 'LOINC']], 'title' => 'History of Medication Use', 'text' => self::Narrative($PortionData)]]]; // SHOULD contain zero or more [0..*] entry // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Section['component']['section']['entry'][] = LevelEntry\medicationActivity::Insert($MedicationActivity, $CompleteData); } } return $Section; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['act' => ['@attributes' => ['classCode' => 'ACT', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.35.2'), 'code' => ['@attributes' => ['code' => '10183-2']]]]; // SHALL contain exactly one [1..1] Medication Activity (V2) // (templateId:2.16.840.1.113883.10.20.22.4.16.2) (CONF:15525). if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $Activity) { $Entry['act']['entryRelationship'][] = medicationActivity::Insert($Activity, $CompleteData); } } return $Entry; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['act' => ['@attributes' => ['classCode' => 'ACT', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.36.2'), 'code' => ['code' => '42346-7', 'codeSystem' => '2.16.840.1.113883.6.1', 'codeSystemName' => 'LOINC']]]; // SHALL contain at least one [1..*] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } return $Entry; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['observation' => ['@attributes' => ['classCode' => 'OBS', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.9.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => 'ASSERTION', 'codeSystem' => '2.16.840.1.113883.5.4']], 'statusCode' => Component::statusCode('completed'), 'value' => ['@attributes' => ['xsi:type' => 'CD', 'code' => $PortionData['problemCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['problemCodeSystemName']), 'displayName' => $PortionData['problemDisplayName'], 'codeSystemName' => $PortionData['problemCodeSystemName']]]]]; // SHOULD contain zero or one [0..1] effectiveTime (CONF:7332). // The effectiveTime, if present, SHOULD contain zero or one [0..1] low (CONF:7333) // The effectiveTime, if present, SHOULD contain zero or one [0..1] high (CONF:7334). if (isset($PortionData['from_effectiveTime'])) { $fromEntry['observation']['effectiveTime'] = ['low' => ['@attributes' => ['value' => $PortionData['from_effectiveTime']]]]; } else { $toEntry['observation']['effectiveTime'] = []; } if (isset($PortionData['to_effectiveTime'])) { $toEntry['observation']['effectiveTime'] = ['high' => ['@attributes' => ['value' => $PortionData['to_effectiveTime']]]]; } else { $toEntry['observation']['effectiveTime'] = []; } $Entry['observation']['effectiveTime'] = array_merge_recursive($fromEntry, $toEntry); // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Procedure Activity Procedure (V2) if (count($PortionData['ProcedureActivityProcedure']) > 0) { foreach ($PortionData['ProcedureActivityProcedure'] as $ProcedureActivityProcedure) { $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], procedureActivityProcedure::Insert($ProcedureActivityProcedure, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Severity Observation (V2) if (count($PortionData['SeverityObservation']) > 0) { foreach ($PortionData['SeverityObservation'] as $SeverityObservation) { $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], severityObservation::Insert($SeverityObservation, $CompleteData)]; } } return $Entry; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['act' => ['@attributes' => ['classCode' => 'ACT', 'moodCode' => $PortionData['moodCode']], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.131'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']]], 'statusCode' => Component::statusCode('active')]]; // SHOULD contain zero or more [0..*] Author Participation (NEW) if (count($PortionData['Author']) > 0) { foreach ($PortionData['Author'] as $Author) { $Entry['act']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData); } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Advance Directive Observation (V2) if (count($PortionData['AdvanceDirectiveObservation']) > 0) { foreach ($PortionData['AdvanceDirectiveObservation'] as $AdvanceDirectiveObservation) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], advanceDirectiveObservation::Insert($AdvanceDirectiveObservation, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['ProcedureActivityAct']) > 0) { foreach ($PortionData['ProcedureActivityAct'] as $ProcedureActivityAct) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], procedureActivityAct::Insert($ProcedureActivityAct, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Goal Observation (NEW) if (count($PortionData['GoalObservation']) > 0) { foreach ($PortionData['GoalObservationAct'] as $GoalObservation) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'RSON'], goalObservation::Insert($GoalObservation, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Procedure Activity Observation (V2) if (count($PortionData['ProcedureActivityObservation']) > 0) { foreach ($PortionData['ProcedureActivityObservation'] as $ProcedureActivityObservation) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], procedureActivityObservation::Insert($ProcedureActivityObservation, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Procedure Activity Procedure (V2) if (count($PortionData['ProcedureActivityProcedure']) > 0) { foreach ($PortionData['ProcedureActivityProcedure'] as $ProcedureActivityProcedure) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], procedureActivityProcedure::Insert($ProcedureActivityProcedure, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Encounter Activity (V2) if (count($PortionData['EncounterActivity']) > 0) { foreach ($PortionData['EncounterActivity'] as $EncounterActivity) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], encounterActivity::Insert($EncounterActivity, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Instruction (V2) if (count($PortionData['Instruction']) > 0) { foreach ($PortionData['Instruction'] as $Instruction) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], instruction::Insert($Instruction, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Instruction (V2) if (count($PortionData['NonMedicinalSupplyActivity']) > 0) { foreach ($PortionData['NonMedicinalSupplyActivity'] as $NonMedicinalSupplyActivity) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], nonMedicinalSupplyActivity::Insert($NonMedicinalSupplyActivity, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Act (V2) if (count($PortionData['PlannedAct']) > 0) { foreach ($PortionData['PlannedAct'] as $PlannedAct) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedAct::Insert($PlannedAct, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Encounter (V2) if (count($PortionData['PlannedEncounter']) > 0) { foreach ($PortionData['PlannedEncounter'] as $PlannedEncounter) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedEncounter::Insert($PlannedEncounter, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Encounter (V2) if (count($PortionData['PlannedObservation']) > 0) { foreach ($PortionData['PlannedObservation'] as $PlannedObservation) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedObservation::Insert($PlannedObservation, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Procedure (V2) if (count($PortionData['PlannedProcedure']) > 0) { foreach ($PortionData['PlannedProcedure'] as $PlannedProcedure) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedProcedure::Insert($PlannedProcedure, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Procedure (V2) if (count($PortionData['PlannedSubstanceAdministration']) > 0) { foreach ($PortionData['PlannedSubstanceAdministration'] as $PlannedSubstanceAdministration) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedSubstanceAdministration::Insert($PlannedSubstanceAdministration, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Planned Supply (V2) if (count($PortionData['PlannedSupply']) > 0) { foreach ($PortionData['PlannedSupply'] as $PlannedSupply) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], plannedSupply::Insert($PlannedSupply, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Nutrition Recommendations (NEW) if (count($PortionData['NutritionRecommendations']) > 0) { foreach ($PortionData['NutritionRecommendations'] as $NutritionRecommendations) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], nutritionRecommendations::Insert($NutritionRecommendations, $CompleteData)]; } } // MAY contain zero or more [0..*] entryRelationship // SHALL contain exactly one [1..1] Act Reference (NEW) if (count($PortionData['ActReference']) > 0) { foreach ($PortionData['ActReference'] as $ActReference) { $Entry['act']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'REFR'], actReference::Insert($ActReference, $CompleteData)]; } } return $Entry; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['procedure' => ['@attributes' => ['moodCode' => 'EVN', 'classCode' => 'PROC'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.14.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => $PortionData['activityCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['activityCodeSystemName']), 'displayName' => $PortionData['activityDisplayName'], 'codeSystemName' => $PortionData['activityCodeSystemName']], 'statusCode' => Component::statusCode($PortionData['statusCode']), 'effectiveTime' => Component::effectiveTime($PortionData['effectiveTime']), 'priorityCode' => ['@attributes' => ['code' => $PortionData['priorityCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['priorityCodeSystemName']), 'codeSystemName' => $PortionData['priorityCodeSystemName'], 'displayName' => $PortionData['priorityDisplayName']]], 'value' => ['@attributes' => ['xsi:type' => 'CD']]]]; // SHOULD contain zero or more [0..*] targetSiteCode // SHALL be selected from ValueSet Body Site Value Set if (count($PortionData['targetSiteCode']) > 0) { foreach ($PortionData['targetSiteCode'] as $targetSiteCode) { $Entry['procedure']['targetSiteCode'][] = ['@attributes' => ['code' => $targetSiteCode['targetSiteCode'], 'codeSystem' => Utilities::CodingSystemId($targetSiteCode['targetSiteCodeName']), 'codeSystemName' => $targetSiteCode['targetSiteCodeName'], 'displayName' => $targetSiteCode['targetSiteDisplayName']]]; } } // MAY contain zero or more [0..*] specimen // This specimen is for representing specimens obtained from a procedure if (count($PortionData['Specimen']) > 0) { foreach ($PortionData['Specimen'] as $Specimen) { $Entry['procedure']['specimen'][] = ['@attributes' => ['typeCode' => 'SPC'], 'specimenRole' => ['@attributes' => ['classCode' => 'SPEC'], 'id' => Component::id(Utilities::UUIDv4()), 'specimenPlayingEntity' => ['code' => ['@attributes' => ['code' => $Specimen['specimenCode'], 'codeSystem' => Utilities::CodingSystemId($Specimen['specimenCodeSystemName']), 'codeSystemName' => $Specimen['specimenCodeSystemName'], 'displayName' => $Specimen['specimenDisplayName']]]]]]; } } // SHOULD contain zero or one [0..1] text if (isset($PortionData['Narrated'])) { $Entry['procedure']['code']['originalText']['reference'] = ['@attributes' => ['value' => self::Narrative($PortionData['Narrated'])]]; } // SHOULD contain zero or more [0..*] performer if (count($PortionData['Performer']) > 0) { foreach ($PortionData['Performer'] as $Performer) { $Entry['procedure']['performer'][] = LevelDocument\performer::Insert($Performer, $CompleteData); } } // MAY contain zero or more [0..*] participant if (count($PortionData['Participant']) > 0) { foreach ($PortionData['Participant'] as $Participant) { $Entry['procedure']['participant'][] = LevelDocument\participant::Insert($Participant, $CompleteData); } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Instruction (V2) if (count($PortionData['Instruction']) > 0) { foreach ($PortionData['Instruction'] as $Instruction) { $Entry['procedure']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], instruction::Insert($Instruction, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Indication (V2) if (count($PortionData['Indication']) > 0) { foreach ($PortionData['Indication'] as $Indication) { $Entry['procedure']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], indication::Insert($Indication, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Entry['procedure']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } return $Entry; } catch (Exception $Error) { return $Error; } }
/** * @param $PortionData * @param $CompleteData * @return array|Exception */ public static function Insert($PortionData, $CompleteData) { try { // Validate first self::Validate($PortionData); $Entry = ['act' => ['@attributes' => ['moodCode' => 'INT', 'classCode' => 'ACT'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.12.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => $PortionData['activityCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['activityCodeSystemName']), 'displayName' => $PortionData['activityDisplayName'], 'codeSystemName' => $PortionData['activityCodeSystemName']], 'statusCode' => Component::statusCode($PortionData['statusCode']), 'effectiveTime' => Component::effectiveTime($PortionData['effectiveTime']), 'priorityCode' => ['@attributes' => ['code' => $PortionData['priorityCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['priorityCodeSystemName']), 'codeSystemName' => $PortionData['priorityCodeSystemName'], 'displayName' => $PortionData['priorityDisplayName']]]]]; // SHOULD contain zero or one [0..1] text if (isset($PortionData['Narrated'])) { $Entry['act']['code']['originalText']['reference'] = ['@attributes' => ['value' => self::Narrative($PortionData['Narrated'])]]; } // SHOULD contain zero or more [0..*] performer if (count($PortionData['Performer']) > 0) { foreach ($PortionData['Performer'] as $Performer) { $Entry['act']['performer'][] = LevelDocument\performer::Insert($Performer, $CompleteData); } } // MAY contain zero or more [0..*] participant if (count($PortionData['Participant']) > 0) { foreach ($PortionData['Participant'] as $Participant) { $Entry['act']['participant'][] = LevelDocument\participant::Insert($Participant, $CompleteData); } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Instruction (V2) if (count($PortionData['Instruction']) > 0) { foreach ($PortionData['Instruction'] as $Instruction) { $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], instruction::Insert($Instruction, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Indication (V2) if (count($PortionData['Indication']) > 0) { foreach ($PortionData['Indication'] as $Indication) { $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], indication::Insert($Indication, $CompleteData)]; } } // MAY contain zero or one [0..1] entryRelationship // SHALL contain exactly one [1..1] Medication Activity (V2) if (count($PortionData['MedicationActivity']) > 0) { foreach ($PortionData['MedicationActivity'] as $MedicationActivity) { $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], medicationActivity::Insert($MedicationActivity, $CompleteData)]; } } return $Entry; } catch (Exception $Error) { return $Error; } }