/**
  * @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;
     }
 }
Beispiel #2
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()]];
 }
Beispiel #3
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.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;
     }
 }