/**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['supply' => ['@attributes' => ['classCode' => 'SPLY', 'moodCode' => 'INT'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.17.2'), 'id' => Component::id(Utilities::UUIDv4()), 'statusCode' => Component::statusCode('completed'), 'repeatNumber' => ['@attributes' => ['value' => $PortionData['repeatNumber']]], 'quantity' => ['@attributes' => ['value' => $PortionData['quantity']]]]];
         // MAY contain zero or one [0..1] author
         if (count($PortionData['Author']) > 0) {
             $Entry['supply']['author'] = LevelOther\authorParticipation::Insert($PortionData['Author'][0], $CompleteData);
         }
         // MAY contain zero or one [0..1] entryRelationship
         // SHALL contain exactly one [1..1] Instruction (V2)
         if (count($PortionData['Instruction']) > 0) {
             $Entry['supply']['entryRelationship'] = ['@attributes' => ['typeCode' => 'SUBJ', 'moodCode' => 'INT'], 'act' => instruction::Insert($PortionData['Instruction'][0], $CompleteData)];
         }
         // MAY contain zero or one [0..1] product
         // SHALL contain exactly one [1..1] Medication Information (V2)
         if (count($PortionData['ProductMedicationInformation']) > 0) {
             $Entry['supply']['product'][] = medicationInformation::Insert($PortionData['ProductMedicationInformation'][0], $CompleteData);
         }
         // MAY contain zero or one [0..1] product
         // SHALL contain exactly one [1..1] Immunization Medication Information (V2)
         if (count($PortionData['ProductImmunizationMedicationInformation']) > 0) {
             $Entry['supply']['product'][] = immunizationMedicationInformation::Insert($PortionData['ProductImmunizationMedicationInformation'][0], $CompleteData);
         }
         // SHOULD contain zero or one [0..1] effectiveTime
         // SHALL contain exactly one [1..1] high
         if (isset($PortionData['effectiveTime_low'])) {
             $Entry['supply']['effectiveTime'] = ['@attributes' => ['xsi:type' => 'IVL_TS'], 'low' => ['@attributes' => ['value' => $PortionData['effectiveTime_low']]], 'high' => ['@attributes' => ['nullFlavor' => 'UNK']]];
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #2
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|\Exception|Exception
  */
 public static function insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         // Compose the segment
         $Entry = ['organizer' => ['@attributes' => ['classCode' => 'CLUSTER', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.26.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => '46680005', 'codeSystem' => '2.16.840.1.113883.6.96', 'codeSystemName' => 'SNOMED CT', 'displayName' => 'Vital signs']], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTime'])]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['organizer']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Vital Sign Observation (V2)
         if (count($PortionData['VitalSignObservation']) > 0) {
             foreach ($PortionData['VitalSignObservation'] as $VitalSignObservation) {
                 $Entry['organizer']['entryRelationship'][] = vitalSignObservation::Insert($VitalSignObservation, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #3
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['supply' => ['@attributes' => ['moodCode' => $PortionData['moodCode'], 'classCode' => 'SPLY'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.41.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']], 'statusCode' => Component::statusCode('active')]];
         // SHOULD contain zero or one [0..1] effectiveTime
         if (isset($PortionData['effectiveTime'])) {
             $Entry['supply']['effectiveTime'] = Component::time($PortionData['effectiveTime']);
         }
         // SHOULD contain zero or more [0..1] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             $Entry['supply']['author'][] = LevelOther\authorParticipation::Insert($PortionData['Author'][0], $CompleteData);
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Patient Priority Preference (NEW)
         if (count($PortionData['PatientPriorityPreference']) > 0) {
             foreach ($PortionData['ProviderPriorityPreference'] as $ProviderPriorityPreference) {
                 $Entry['supply']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Patient Priority Preference (NEW)
         if (count($PortionData['ProviderPriorityPreference']) > 0) {
             foreach ($PortionData['ProviderPriorityPreference'] as $ProviderPriorityPreference) {
                 $Entry['supply']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #4
0
 /**
  * @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.140'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => '44383000', 'codeSystem' => '2.16.840.1.113883.6.96', 'codeSystemName' => 'SNOMED', 'displayName' => 'Patient referral for consultation'], 'statusCode' => Component::statusCode('active'), 'effectiveTime' => Component::time($PortionData['effectiveTime'])]];
         // 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);
             }
         }
         /**
          * This entry relationship represents a reference to another act in the document instance representing
          * the clinical reason for the referral (e.g. problem, concern, procedure).
          */
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Act Reference (NEW)
         if (count($PortionData['DocumentReferenceClinicalReasonReferral']) > 0) {
             foreach ($PortionData['DocumentReferenceClinicalReasonReferral'] as $DocumentReferenceClinicalReasonReferral) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], actReference::Insert($DocumentReferenceClinicalReasonReferral, $CompleteData)];
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship
         // This entryRelationship represents whether the referral is for full or shared care.
         if (count($PortionData['FullOrSharedCareObservation']) > 0) {
             foreach ($PortionData['FullOrSharedCareObservation'] as $FullOrSharedCareObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], 'observation' => ['@attributes' => ['classCode' => 'OBS', 'moodCode' => 'EVN'], 'code' => ['code' => 'ASSERTION', 'codeSystem' => '2.16.840.1.113883.5.4'], 'statusCode' => Component::statusCode('completed'), 'value' => ['xsi:type' => 'CD', 'code' => $FullOrSharedCareObservation['code'], 'displayName' => $FullOrSharedCareObservation['displayName'], 'codeSystem' => Utilities::CodingSystemId($FullOrSharedCareObservation['codeSystemName'])]]];
             }
         }
         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.74.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => '311465003', 'codeSystem' => '2.16.840.1.113883.6.96', 'codeSystemName' => 'SNOED-CT', 'displayName' => 'Cognitive functions']], 'effectiveTime' => Component::time($PortionData['effectiveTime']), 'value' => ['xsi:type' => 'CD', 'code' => $PortionData['code'], 'displayName' => $PortionData['displayName'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName']]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Authors']) > 0) {
             foreach ($PortionData['Authors'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:14272) such that it
         // SHALL contain exactly one [1..1] Non-Medicinal Supply Activity (V2)
         if (count($PortionData['NonMedicinalSupplyActivity']) > 0) {
             $Entry['observation']['entryRelationship'][] = nonMedicinalSupplyActivity::Insert($PortionData['NonMedicinalSupplyActivity'], $CompleteData);
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:14272) such that it
         // SHALL contain exactly one [1..1] Caregiver Characteristics
         if (count($PortionData['CaregiverCharacteristics']) > 0) {
             $Entry['observation']['entryRelationship'][] = caregiverCharacteristics::Insert($PortionData['CaregiverCharacteristics'], $CompleteData);
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:14272) such that it
         // b.	SHALL contain exactly one [1..1] Assessment Scale Observation
         if (count($PortionData['AssessmentScaleObservation']) > 0) {
             $Entry['observation']['entryRelationship'][] = assessmentScaleObservation::Insert($PortionData['AssessmentScaleObservation'], $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.24.3.90.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => 'ASSERTION', 'codeSystem' => '2.16.840.1.113883.5.4']], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['onsetDate'], $PortionData['resolutionDate'])]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Reaction Observation (V2)
         if (count($PortionData['ReactionObservation']) > 0) {
             foreach ($PortionData['ReactionObservation'] as $ReactionObservation) {
                 $Entry['observation']['entryRelationship'][] = reactionObservation::Insert($ReactionObservation, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Severity Observation (V2)
         if (count($PortionData['SeverityObservation']) > 0) {
             foreach ($PortionData['SeverityObservation'] as $SeverityObservation) {
                 $Entry['observation']['entryRelationship'][] = severityObservation::Insert($SeverityObservation, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public function insert($PortionData, $CompleteData)
 {
     try {
         $Entry = ['observation' => ['@attributes' => ['classCode' => 'OBS', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.85.2'), 'code' => ['@attributes' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'displayName' => $PortionData['displayName'], 'codeSystemName' => $PortionData['codeSystemName']]], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTime']), 'value' => ['@attributes' => ['xsi:type' => 'PQ', 'value' => $PortionData['values'], 'unit' => $PortionData['unit']]]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #8
0
 /**
  * @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.85.2'), 'code' => ['@attributes' => ['code' => '229819007', 'codeSystem' => '2.16.840.1.113883.6.96', 'displayName' => 'Tobacco use and exposure']], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['from_effectiveTime'], $PortionData['to_effectiveTime']), 'value' => ['@attributes' => ['xsi:type' => 'CD'], 'reference' => ['@attributes' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']]]]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #9
0
 /**
  * @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.138'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => '230125005', 'codeSystem' => '2.16.840.1.113883.6.96', 'codeSystemName' => 'SNOMED CT', 'displayName' => 'diet followed'], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTime']), 'value' => ['xsi:type' => 'CD', 'code' => $PortionData['code'], 'displayName' => $PortionData['displayName'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName']]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #10
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|\Exception|Exception
  */
 public function insert($PortionData, $CompleteData)
 {
     try {
         // Compose the segment
         $Entry = array('observation' => ['@attributes' => ['classCode' => 'OBS', 'moodCode' => 'EVN'], 'templateId' => ['@attributes' => ['root' => '2.16.840.1.113883.10.20.22.4.114']], 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => 'ASSERTION', 'codeSystem' => '2.16.840.1.113883.5.4']], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTme']), 'value' => ['@attributes' => ['xsi:type' => 'CD', 'code' => $PortionData['woundCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['woundCodeSystemName']), 'codeSystemName' => $PortionData['woundCodeSystemName'], 'displayName' => $PortionData['woundDisplayName']]], 'targetSiteCode' => ['@attributes' => ['code' => $PortionData['siteCode'], 'codeSystem' => Utilities::CodingSystemId($PortionData['siteCodeSystemName']), 'codeSystemName' => $PortionData['siteCodeSystemName'], 'displayName' => $PortionData['siteDisplayName']]]]);
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Wound Measurement Observation (NEW)
         if (count($PortionData['WoundMeasurementObservation']) > 0) {
             foreach ($PortionData['WoundMeasurementObservation'] as $WoundMeasurementObservation) {
                 $Entry['observation']['entryRelationship'][] = woundMeasurementObservation::Insert($WoundMeasurementObservation, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Wound Characteristics (NEW)
         if (count($PortionData['WoundCharacteristics']) > 0) {
             foreach ($PortionData['WoundCharacteristics'] as $WoundCharacteristics) {
                 $Entry['observation']['entryRelationship'][] = woundCharacteristics::Insert($WoundCharacteristics, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Number of Pressure Ulcers Observation
         if (count($PortionData['NumberOfPressureUlcersObservation']) > 0) {
             foreach ($PortionData['NumberOfPressureUlcersObservation'] as $NumberOfPressureUlcersObservation) {
                 $Entry['observation']['entryRelationship'][] = numberOfPressureUlcersObservation::Insert($NumberOfPressureUlcersObservation, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Highest Pressure Ulcer Stage
         if (count($PortionData['HighestPressureUlcerStage']) > 0) {
             foreach ($PortionData['HighestPressureUlcerStage'] as $HighestPressureUlcerStage) {
                 $Entry['observation']['entryRelationship'][] = highestPressureUlcerStage::Insert($HighestPressureUlcerStage, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #11
0
 /**
  * @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.30.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => 'CONC', 'codeSystem' => '2.16.840.1.113883.5.6'], 'statusCode' => Component::statusCode($PortionData['active']), 'effectiveTime' => ['low' => ['@attributes' => ['low' => Component::time($PortionData['firstDate'])]]]]];
         // 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);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship
         // SHALL contain exactly one [1..1] Allergy - Intolerance Observation (V2)
         if (count($PortionData['AllergyIntoleranceObservation']) > 0) {
             foreach ($PortionData['AllergyIntoleranceObservation'] as $AllergyIntoleranceObservation) {
                 $Entry['act']['entryRelationship'][] = allergyIntoleranceObservation::Insert($AllergyIntoleranceObservation, $CompleteData);
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #12
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['organizer' => ['@attributes' => ['classCode' => 'BATTERY', 'moodCode' => 'EVN'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.1.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']]], 'statusCode' => Component::statusCode($PortionData['status']), 'effectiveTime' => Component::time($PortionData['effectiveTime']), 'value' => ['@attributes' => ['xsi:type' => 'PQ', 'value' => $PortionData['value'], 'unit' => $PortionData['unit']]]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['organizer']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHALL contain at least one [1..*] component
         // SHALL contain exactly one [1..1] Result Observation (V2)
         if (count($PortionData['ResultObservation']) > 0) {
             foreach ($PortionData['ResultObservation'] as $ResultObservation) {
                 $Entry['organizer']['component'][] = [resultObservation::Insert($ResultObservation, $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.125'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['xsi:type' => 'CD', 'code' => '285231000', 'displayName' => 'Mental Function', 'codeSystem' => '2.16.840.1.113883.6.96', 'codeSystemName' => 'SNOMED CT'], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTime']), 'value' => ['xsi:type' => 'CD', 'code' => $PortionData['code'], 'displayName' => $PortionData['displayName'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName']]]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Authors']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Assessment Scale Observation
         if (count($PortionData['AssessmentScaleObservation']) > 0) {
             foreach ($PortionData['AssessmentScaleObservation'] as $AssessmentScaleObservation) {
                 $Entry['observation']['entryRelationship']['entry'][] = ['@attributes' => ['typeCode' => 'COMP'], 'observation' => assessmentScaleObservation::Insert($AssessmentScaleObservation, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #14
0
 /**
  * @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' => 'GOL'], 'templateId' => [0 => Component::templateId('2.16.840.1.113883.10.20.22.4.44.2'), 1 => Component::templateId('2.16.840.1.113883.10.20.22.4.44.2')], 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => $PortionData['goalCode'], 'displayName' => $PortionData['goalDisplayName'], 'codeSystem' => Utilities::CodingSystemId($PortionData['goalCodeSystemName']), 'codeSystemName' => $PortionData['goalCodeSystemName']]], 'statusCode' => Component::statusCode('active'), 'effectiveTime' => Component::time($PortionData['effectiveTime'])]];
         // SHALL contain at least one [1..*] Author Participation (NEW)
         // (templateId:2.16.840.1.113883.10.20.22.4.119) (CONF:30995)
         if (count($PortionData['Authors']) > 0) {
             foreach ($PortionData['Authors'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship (CONF:30701)
         // SHALL contain exactly one [1..1] Health Concern Act (NEW)
         // (templateId:2.16.840.1.113883.10.20.22.4.132) (CONF:30703)
         if (count($PortionData['HealthConcernAct']) > 0) {
             foreach ($PortionData['HealthConcernAct'] as $HealthConcernAct) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], healthConcernAct::Insert($HealthConcernAct, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30704)
         // SHALL contain exactly one [1..1] Planned Encounter (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.40.2) (CONF:30706)
         if (count($PortionData['PlannedEncounter']) > 0) {
             foreach ($PortionData['PlannedEncounter'] as $PlannedEncounter) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedEncounter::Insert($PlannedEncounter, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30707)
         // SHALL contain exactly one [1..1] Planned Observation (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.44.2) (CONF:30709)
         if (count($PortionData['PlannedObservation']) > 0) {
             foreach ($PortionData['PlannedObservation'] as $PlannedObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedObservation::Insert($PlannedObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30710)
         // SHALL contain exactly one [1..1] Planned Procedure (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.41.2) (CONF:30712)
         if (count($PortionData['PlannedProcedure']) > 0) {
             foreach ($PortionData['PlannedProcedure'] as $PlannedProcedure) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedProcedure::Insert($PlannedObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30713)
         // SHALL contain exactly one [1..1] Planned Substance Administration (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.42.2) (CONF:30715)
         if (count($PortionData['PlannedSubstanceAdministration']) > 0) {
             foreach ($PortionData['PlannedSubstanceAdministration'] as $PlannedSubstanceAdministration) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedSubstanceAdministration::Insert($PlannedSubstanceAdministration, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30716)
         // SHALL contain exactly one [1..1] Planned Supply (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.43.2) (CONF:30718)
         if (count($PortionData['PlannedSupply']) > 0) {
             foreach ($PortionData['PlannedSupply'] as $PlannedSupply) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedSupply::Insert($PlannedSupply, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:30770)
         // SHALL contain exactly one [1..1] Planned Act (V2)
         // (templateId:2.16.840.1.113883.10.20.22.4.39.2) (CONF:30772)
         if (count($PortionData['PlannedAct']) > 0) {
             foreach ($PortionData['PlannedAct'] as $PlannedAct) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'COMP'], plannedAct::Insert($PlannedAct, $CompleteData)];
             }
         }
         // SHOULD contain zero or one [0..1] entryRelationship (CONF:30785)
         // SHALL contain exactly one [1..1] Patient Priority Preference (NEW)
         // (templateId:2.16.840.1.113883.10.20.22.4.142) (CONF:30787)
         if (count($PortionData['PatientPriorityPreference']) > 0) {
             foreach ($PortionData['PatientPriorityPreference'] as $PatientPriorityPreference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], patientPriorityPreference::Insert($PatientPriorityPreference, $CompleteData)];
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship (CONF:30788)
         // SHALL contain exactly one [1..1] Provider Priority Preference (NEW)
         // (templateId:2.16.840.1.113883.10.20.22.4.143) (CONF:30790)
         if (count($PortionData['ProviderPriorityPreference']) > 0) {
             foreach ($PortionData['ProviderPriorityPreference'] as $ProviderPriorityPreference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship (CONF:31559)
         // SHALL contain exactly one [1..1] Act Reference (NEW)
         // (templateId:2.16.840.1.113883.10.20.22.4.122) (CONF:31588)
         if (count($PortionData['ActReference']) > 0) {
             foreach ($PortionData['ActReference'] as $ActReference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], 'observation' => actReference::Insert($ActReference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #15
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['observation' => ['@attributes' => ['moodCode' => 'EVN', 'classCode' => 'OBS'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.144'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => Component::time($PortionData['effectiveTime'])]];
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Goal Observation (NEW)
         if (count($PortionData['GoalObservation']) > 0) {
             foreach ($PortionData['GoalObservation'] as $GoalObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'GEVL'], goalObservation::Insert($GoalObservation, $CompleteData)];
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Progress Toward Goal Observation (NEW)
         if (count($PortionData['ProgressTowardGoalObservation']) > 0) {
             foreach ($PortionData['ProgressTowardGoalObservation'] as $ProgressTowardGoalObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SPRT'], progressTowardGoalObservation::Insert($ProgressTowardGoalObservation, $CompleteData)];
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Progress Toward Goal Observation (NEW)
         if (count($PortionData['ProgressTowardGoalObservation']) > 0) {
             foreach ($PortionData['ProgressTowardGoalObservation'] as $ProgressTowardGoalObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SPRT'], progressTowardGoalObservation::Insert($ProgressTowardGoalObservation, $CompleteData)];
             }
         }
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Intervention Act (NEW)
         if (count($PortionData['InterventionAct']) > 0) {
             foreach ($PortionData['InterventionAct'] as $InterventionAct) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], interventionAct::Insert($InterventionAct, $CompleteData)];
             }
         }
         /**
          * Where an Outcome Observation needs to reference a Goal Observation already described in the CDA
          * document instance, rather than repeating the full content of the Goal Observation,
          * the Act Reference template may be used to reference this entry.
          */
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Intervention Act (NEW)
         if (count($PortionData['GoalObservationEvaluationReference']) > 0) {
             foreach ($PortionData['GoalObservationEvaluationReference'] as $GoalObservationEvaluationReference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'GEVL'], actReference::Insert($GoalObservationEvaluationReference, $CompleteData)];
             }
         }
         /**
          * Where an Outcome Observation needs to reference an Intervention Act already described in the CDA
          * document instance, rather than repeating the full content of the Intervention Act, the Act
          * Reference template may be used to reference this entry.
          */
         // SHOULD contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Intervention Act (NEW)
         if (count($PortionData['GoalObservationReasonReference']) > 0) {
             foreach ($PortionData['GoalObservationReasonReference'] as $GoalObservationReasonReference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'RSON'], actReference::Insert($GoalObservationReasonReference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #16
0
 /**
  * @return array
  */
 public static function Structure()
 {
     return ['TextObservation' => ['onsetDate' => 'SHALL contain exactly one [1..1] effectiveTime', 'resolutionDate' => 'SHALL contain exactly one [1..1] effectiveTime', LevelOther\authorParticipation::Structure(), reactionObservation::Structure(), severityObservation::Structure(), sopInstanceObservation::Structure(), quantityMeasurementObservation::Structure()]];
 }
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['act' => ['@attributes' => ['moodCode' => 'EVN', 'classCode' => 'ACT'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.3.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => 'CONC', 'codeSystem' => '2.16.840.1.113883.5.6', 'displayName' => 'Concern'], 'statusCode' => ['@attributes' => ['code' => $PortionData['statusCode']]], 'effectiveTime' => ['low' => ['@attributes' => ['value' => $PortionData['start_effectiveTime']]]]]];
         // This effectiveTime MAY contain zero or one [0..1] high (CONF:9033).
         // Note: The effectiveTime/high asserts when the concern was completed
         // (e.g. when the clinician deemed there is no longer any need to track the underlying condition)
         if (isset($PortionData['end_effectiveTime'])) {
             $Entry['act']['effectiveTime']['high'] = ['@attributes' => ['value' => $PortionData['end_effectiveTime']]];
         }
         // 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);
             }
         }
         // SHALL contain at least one [1..*] entryRelationship (CONF:10093)
         // SHALL contain exactly one [1..1] Problem Observation (V2)
         if (count($PortionData['ProblemObservation']) > 0) {
             foreach ($PortionData['ProblemObservation'] as $ProblemObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], problemObservation::Insert($ProblemObservation, $CompleteData)];
             }
         }
         // SHALL contain at least one [1..*] entryRelationship (CONF:10093)
         // b.	SHALL contain exactly one [1..1] Provider Priority Preference (NEW)
         if (count($PortionData['ProviderPriorityPreference']) > 0) {
             foreach ($PortionData['ProblemObservation'] as $ProviderPriorityPreference) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #18
0
 /**
  * @return array
  */
 public static function Structure()
 {
     return ['PlannedProcedure' => ['moodCode' => 'SHALL be selected from ValueSet Plan of Care moodCode (SubstanceAdministration/Supply)', 'repeatNumber' => 'SHALL contain exactly one [0..1] repeatNumber', 'quantity' => 'SHALL contain exactly one [0..1] quantity', 'effectiveTime' => 'SHOULD contain zero or one [0..1] effectiveTime', LevelOther\authorParticipation::Structure(), LevelDocument\performer::Structure(), patientPriorityPreference::Structure(), providerPriorityPreference::Structure()]];
 }
Exemple #19
0
 /**
  * @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.132'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['@attributes' => ['code' => 'CONC', 'displayName' => 'handoff communication (procedure)', 'codeSystem' => '2.16.840.1.113883.5.6', 'codeSystemName' => 'HL7ActClass', 'displayName' => 'Concern']], 'statusCode' => Component::statusCode('active'), 'effectiveTime' => Component::time($PortionData['effectiveTime'])]];
         // 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] Problem Observation (V2)
         if (count($PortionData['ProblemObservation']) > 0) {
             foreach ($PortionData['ProblemObservation'] as $ProblemObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], problemObservation::Insert($ProblemObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Allergy - Intolerance Observation (V2)
         if (count($PortionData['AllergyIntoleranceObservation']) > 0) {
             foreach ($PortionData['AllergyIntoleranceObservation'] as $AllergyIntoleranceObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], allergyIntoleranceObservation::Insert($AllergyIntoleranceObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Assessment Scale Observation
         if (count($PortionData['AssessmentScaleObservation']) > 0) {
             foreach ($PortionData['AssessmentScaleObservation'] as $AssessmentScaleObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], assessmentScaleObservation::Insert($AssessmentScaleObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Self-Care Activities (ADL and IADL) (NEW)
         if (count($PortionData['SelfCareActivitiesADLAndIADL']) > 0) {
             foreach ($PortionData['SelfCareActivitiesADLAndIADL'] as $SelfCareActivitiesADLAndIADL) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], selfCareActivitiesADLAndIADL::Insert($SelfCareActivitiesADLAndIADL, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Cognitive Abilities Observation (NEW)
         if (count($PortionData['CognitiveAbilitiesObservation']) > 0) {
             foreach ($PortionData['CognitiveAbilitiesObservation'] as $CognitiveAbilitiesObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], cognitiveAbilitiesObservation::Insert($CognitiveAbilitiesObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Cognitive Status Observation (V2)
         if (count($PortionData['CognitiveStatusObservation']) > 0) {
             foreach ($PortionData['CognitiveStatusObservation'] as $CognitiveStatusObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], cognitiveStatusObservation::Insert($CognitiveStatusObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Cognitive Status Observation (V2)
         if (count($PortionData['CurrentSmokingStatus']) > 0) {
             foreach ($PortionData['CurrentSmokingStatus'] as $CurrentSmokingStatus) {
                 $Entry['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], 'observation' => currentSmokingStatus::Insert($CurrentSmokingStatus, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Encounter Diagnosis (V2)
         if (count($PortionData['EncounterDiagnosis']) > 0) {
             foreach ($PortionData['EncounterDiagnosis'] as $EncounterDiagnosis) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], encounterDiagnosis::Insert($EncounterDiagnosis, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Family History Organizer
         if (count($PortionData['FamilyHistoryOrganizer']) > 0) {
             foreach ($PortionData['FamilyHistoryOrganizer'] as $FamilyHistoryOrganizer) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], familyHistoryOrganizer::Insert($FamilyHistoryOrganizer, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Functional Status Observation (V2)
         if (count($PortionData['FunctionalStatusObservation']) > 0) {
             foreach ($PortionData['FunctionalStatusObservation'] as $FunctionalStatusObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], functionalStatusObservation::Insert($FunctionalStatusObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Hospital Admission Diagnosis (V2)
         if (count($PortionData['HospitalAdmissionDiagnosis']) > 0) {
             foreach ($PortionData['HospitalAdmissionDiagnosis'] as $HospitalAdmissionDiagnosis) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], hospitalAdmissionDiagnosis::Insert($HospitalAdmissionDiagnosis, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Mental Status Observation (NEW)
         if (count($PortionData['MentalStatusObservation']) > 0) {
             foreach ($PortionData['MentalStatusObservation'] as $MentalStatusObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], mentalStatusObservation::Insert($MentalStatusObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Nutrition Assessment (NEW)
         if (count($PortionData['NutritionAssessment']) > 0) {
             foreach ($PortionData['NutritionAssessment'] as $NutritionAssessment) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], nutritionAssessment::Insert($NutritionAssessment, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Nutrition Assessment (NEW)
         if (count($PortionData['PostprocedureDiagnosis']) > 0) {
             foreach ($PortionData['PostprocedureDiagnosis'] as $PostprocedureDiagnosis) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], postprocedureDiagnosis::Insert($PostprocedureDiagnosis, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Pregnancy Observation
         if (count($PortionData['PregnancyObservation']) > 0) {
             foreach ($PortionData['PregnancyObservation'] as $PregnancyObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], pregnancyObservation::Insert($PregnancyObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Preoperative Diagnosis (V2)
         if (count($PortionData['PreoperativeDiagnosis']) > 0) {
             foreach ($PortionData['PreoperativeDiagnosis'] as $PreoperativeDiagnosis) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], preoperativeDiagnosis::Insert($PreoperativeDiagnosis, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Reaction Observation (V2)
         if (count($PortionData['ReactionObservation']) > 0) {
             foreach ($PortionData['ReactionObservation'] as $ReactionObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], reactionObservation::Insert($ReactionObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Reaction Observation (V2)
         if (count($PortionData['ResultObservation']) > 0) {
             foreach ($PortionData['ResultObservation'] as $ResultObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], resultObservation::Insert($ResultObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Sensory and Speech Status (NEW)
         if (count($PortionData['SensoryAndSpeechStatus']) > 0) {
             foreach ($PortionData['SensoryAndSpeechStatus'] as $SensoryAndSpeechStatus) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], sensoryAndSpeechStatus::Insert($SensoryAndSpeechStatus, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Social History Observation (V2)
         if (count($PortionData['SocialHistoryObservation']) > 0) {
             foreach ($PortionData['SocialHistoryObservation'] as $SocialHistoryObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], socialHistoryObservation::Insert($SocialHistoryObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Substance or Device Allergy - Intolerance Observation (V2)
         if (count($PortionData['SubstanceOrDeviceAllergyIntoleranceObservation']) > 0) {
             foreach ($PortionData['SubstanceOrDeviceAllergyIntoleranceObservation'] as $SubstanceOrDeviceAllergyIntoleranceObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], substanceOrDeviceAllergyIntoleranceObservation::Insert($SubstanceOrDeviceAllergyIntoleranceObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Tobacco Use (V2)
         if (count($PortionData['TobaccoUse']) > 0) {
             foreach ($PortionData['TobaccoUse'] as $TobaccoUse) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], tobaccoUse::Insert($TobaccoUse, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Vital Sign Observation (V2)
         if (count($PortionData['VitalSignObservation']) > 0) {
             foreach ($PortionData['VitalSignObservation'] as $VitalSignObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], vitalSignObservation::Insert($VitalSignObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Wound Observation (NEW)
         if (count($PortionData['WoundObservation']) > 0) {
             foreach ($PortionData['WoundObservation'] as $WoundObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], woundObservation::Insert($WoundObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Caregiver Characteristics
         if (count($PortionData['CaregiverCharacteristics']) > 0) {
             foreach ($PortionData['CaregiverCharacteristics'] as $CaregiverCharacteristics) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], caregiverCharacteristics::Insert($CaregiverCharacteristics, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Cultural and Religious Observation (NEW)
         if (count($PortionData['CulturalAndReligiousObservation']) > 0) {
             foreach ($PortionData['CulturalAndReligiousObservation'] as $CulturalAndReligiousObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], culturalAndReligiousObservation::Insert($CulturalAndReligiousObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Characteristics of Home Environment (NEW)
         if (count($PortionData['CharacteristicsOfHomeEnvironment']) > 0) {
             foreach ($PortionData['CharacteristicsOfHomeEnvironment'] as $CharacteristicsOfHomeEnvironment) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], characteristicsOfHomeEnvironment::Insert($CharacteristicsOfHomeEnvironment, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Nutritional Status Observation (NEW)
         if (count($PortionData['NutritionalStatusObservation']) > 0) {
             foreach ($PortionData['NutritionalStatusObservation'] as $NutritionalStatusObservation) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], nutritionalStatusObservation::Insert($NutritionalStatusObservation, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Result Organizer (V2)
         if (count($PortionData['ResultOrganizer']) > 0) {
             foreach ($PortionData['ResultOrganizer'] as $ResultOrganizer) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], resultOrganizer::Insert($ResultOrganizer, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Patient Priority Preference (NEW)
         if (count($PortionData['PatientPriorityPreference']) > 0) {
             foreach ($PortionData['PatientPriorityPreference'] as $PatientPriorityPreference) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], patientPriorityPreference::Insert($PatientPriorityPreference, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Provider Priority Preference (NEW)
         if (count($PortionData['ProviderPriorityPreference']) > 0) {
             foreach ($PortionData['ProviderPriorityPreference'] as $ProviderPriorityPreference) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         // MAY contain zero or more [0..*] entryRelationship
         // SHALL contain exactly one [1..1] Problem Concern Act (Condition) (V2)
         if (count($PortionData['ProblemConcernActCondition']) > 0) {
             foreach ($PortionData['ProblemConcernActCondition'] as $ProblemConcernActCondition) {
                 $Entry['act']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], problemConcernActCondition::Insert($ProblemConcernActCondition, $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'][] = ['@attributes' => ['typeCode' => 'REFR'], actReference::Insert($ActReference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #20
0
 /**
  * @param $PortionData
  * @param $CompleteData
  * @return array|Exception
  */
 public static function Insert($PortionData, $CompleteData)
 {
     try {
         // Validate first
         self::Validate($PortionData);
         $Entry = ['observation' => ['@attributes' => ['moodCode' => 'EVN', 'classCode' => 'OBS'], 'templateId' => Component::templateId('2.16.840.1.113883.10.20.22.4.4.2'), 'id' => Component::id(Utilities::UUIDv4()), 'code' => ['code' => '64572001', 'codeSystem' => '2.16.840.1.113883.6.96', 'displayName' => 'Condition'], 'statusCode' => Component::statusCode('completed'), 'effectiveTime' => ['low' => ['@attributes' => ['value' => $PortionData['onsetDate']]]], 'value' => ['@attributes' => ['xsi:type' => 'CD', 'code' => $PortionData['code'], 'codeSystem' => Utilities::CodingSystemId($PortionData['codeSystemName']), 'codeSystemName' => $PortionData['codeSystemName'], 'displayName' => $PortionData['displayName']]]]];
         // SHOULD contain zero or one [0..1] text
         if (isset($PortionData['Narrated'])) {
             $Entry['observation']['text'] = self::Narrative($PortionData['Narrated']);
         }
         // This effectiveTime MAY contain zero or one [0..1] high (CONF:9033).
         // Note: The effectiveTime/high asserts when the concern was completed
         // (e.g. when the clinician deemed there is no longer any need to track the underlying condition)
         if (isset($PortionData['resolvedDate'])) {
             $Entry['observation']['effectiveTime']['high'] = ['@attributes' => ['value' => $PortionData['resolvedDate']]];
         }
         // SHOULD contain zero or more [0..*] Author Participation (NEW)
         if (count($PortionData['Author']) > 0) {
             foreach ($PortionData['Author'] as $Author) {
                 $Entry['observation']['author'][] = LevelOther\authorParticipation::Insert($Author, $CompleteData);
             }
         }
         // MAY contain zero or one [0..1] entryRelationship
         // SHALL contain exactly one [1..1] Age Observation
         if (count($PortionData['AgeObservation']) > 0) {
             foreach ($PortionData['AgeObservation'] as $AgeObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'SUBJ'], ageObservation::Insert($AgeObservation, $CompleteData)];
             }
         }
         // MAY contain zero or one [0..1] entryRelationship
         // SHALL contain exactly one [1..1] Prognosis Observation (NEW)
         if (count($PortionData['PrognosisObservation']) > 0) {
             foreach ($PortionData['PrognosisObservation'] as $PrognosisObservation) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], prognosisObservation::Insert($PrognosisObservation, $CompleteData)];
             }
         }
         // MAY contain zero or one [0..1] entryRelationship
         // SHALL contain exactly one [1..1] Patient Priority Preference (NEW)
         if (count($PortionData['PatientPriorityPreference']) > 0) {
             foreach ($PortionData['PatientPriorityPreference'] as $PatientPriorityPreference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], patientPriorityPreference::Insert($PatientPriorityPreference, $CompleteData)];
             }
         }
         // MAY contain zero or one [0..1] entryRelationship
         // SHALL contain exactly one [1..1] Prognosis Observation (NEW)
         if (count($PortionData['ProviderPriorityPreference']) > 0) {
             foreach ($PortionData['ProviderPriorityPreference'] as $ProviderPriorityPreference) {
                 $Entry['observation']['entryRelationship'][] = ['@attributes' => ['typeCode' => 'REFR'], providerPriorityPreference::Insert($ProviderPriorityPreference, $CompleteData)];
             }
         }
         return $Entry;
     } catch (Exception $Error) {
         return $Error;
     }
 }
Exemple #21
0
 /**
  * @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;
     }
 }