Segment OBX [Component] to Observation Map
| # | V2 Field | Name | V2 Type | Card. | FHIR Attribute | FHIR Type | Equiv. |
|---|---|---|---|---|---|---|---|
| 1 | OBX-3 | Observation Identifier | CWE | 1..1 | codecomponent[each].code | CodeableConceptCodeableConcept | equivalentequivalent |
| 2 | OBX-4 | Observation Sub-ID | ST | 1..1 | $thisIF: Map to Observation.partOf or Observation.hasMember or Observation.DerivedFrom according to the implementation guidance for the v2 message at hand, otherwise map to the extension-sub-id to enable the final destination to determine how to structure the observations. OBX-4 Sub Identifier would determine how to use Observation.partOf or Observation.hasMember or Observation.DerivedFrom, but is highly dependent on the local implementation of OBX-4 or an implementation guide (e.g., LRI, Clinical Genomics). That is not known at the standard level, so we cannot provide specific mapping guidance here. However, if the mapper does not have access to the syntax used and its meaning, we need to be able to pass on OBX-4 Sub Identifier to the final destination that should know how to then structure it using FHIR attributes. | - | equivalent |
| 3 | OBX-5 | Observation Value | varies | -1..* | component[each].valueQuantitycomponent[each].valueStringIF: Any markup in ST, FT or TX data may not present properly given that valueString is a string data type component[each].valueCodeableConceptcomponent[each].valueCodeableConceptcomponent[each].valueCodeableConceptcomponent[each].valueCodeableConceptcomponent[each].valueCodeableConceptcomponent[each].valuePeriodcomponent[each].valueDateTimecomponent[each].valueRangecomponent[each].valueString= OBX-5.1+"-"+OBX-5.2 component[each].valueTimecomponent[each].valueString= OBX-5.1+" "+OBX-5.2+" "+OBX-5.3+" "+OBX-5.4" "OBX-6" component[each].valueRatio[1]component[each].valueRange[1]component[each].valueString= OBX-5.1+" "+OBX-5.2+" "+OBX-5.3+" "+OBX-5.4" "OBX-6" component[each].valueQuantity[1]component[each].valueString= OBX-5.1+" "+OBX-5.2+" "+OBX-5.3+" "+OBX-5.4" "OBX-6" IF: If line 19 through 23 all fail while OBX-2 = SN component[each].extension[1].url= "https://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.valueAttachment" IF: If none of the other observations in OBX-5 are not derived from the documentation included Some implementers may include in OBX-5 the documentation that the other OBX-5 components are derived from. In that situations component[each].extension[1].valueAttachmentIF: If none of the other observations in OBX-5 are not derived from the documentation included We are for now addressing Base64 that cover .pdf, pictures and other binaries. If somebody does this, we will address those. derivedFrom(DocumentReference)IF: And if other observation in OBX-5 are derived from the documentation included component[each].extension[1].url= "https://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.valueAttachment" IF: If none of the other observations in OBX-5 are not derived from the documentation referenced component[each].extension[1].valueAttachmentIF: If none of the other observations in OBX-5 are not derived from the documentation referenced To be resolved when we resolve DocumentReference and valueAttachment derivedFrom(DocumentReference)IF: And if other observation in OBX-5 are derived from the documentation being referenced | quantitystringCodeableConceptCodeableConceptCodeableConceptCodeableConceptCodeableConceptPerioddateTimeRangestringtimestringRatioRangestringQuantitystringuriAttachmentReferenceuriAttachmentReference | equivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalent |
| 4 | OBX-6 | Units | CWE | 1..1 | component[each].valueQuantitycomponent[each].valueQuantity[1]Note that OBX-5 and OBX-6 resolve to different components for the same Quantity data type. component[each].valueRange[1].lowcomponent[each].valueRange[1].highcomponent[each].valueRatio[1].numeratorcomponent[each].valueRatio[1].denominator | QuantityQuantitySimpleQuantitySimpleQuantityQuantityQuantity | equivalentequivalentequivalentequivalentequivalentequivalent |
| 5 | OBX-7 | References Range | ST | 1..1 | component[each].referenceRange.textIf OBX-7 is sufficiently parseable, then the low, high, type, appliesTo, and/or age may be used. | - | equivalent |
| 6 | OBX-8 | Interpretation Codes | CWE | -1..* | interpretation | CodeableConcept | equivalent |
| 7 | OBX-10 | Nature of Abnormal Test | ID | -1..* | extension[2].uri= "http://hl7.org/fhir/StructureDefinition/observation-nature-of-abnormal-test" extension[2].valueCodeableConcept | uriCodeableConcept | equivalentequivalent |
| 8 | OBX-11 | Observation Result Status | ID | 1..1 | statusstatus.extension[1].url= "http://hl7.org/fhir/StructureDefinition/alternate-codes" status.extension[1].valueCodeableConcept.coding.code= "X" status.extension[1].valueCodeableConcept.coding.system= "http://terminology.hl7.org/CodeSystem/v2-0085" dataAbsentReason.coding[2].code= "not-asked" dataAbsentReason.coding[2].system= "http://terminology.hl7.org/CodeSystem/data-absent-reason" | codeuriCodeableConceptstring-- | equivalentequivalentequivalentequivalentequivalentequivalent |
| 9 | OBX-14 | Date/Time of the Observation | DTM | 1..1 | effectiveDateTime | dateTime | equivalent |
| 10 | OBX-16 | Responsible Observer | XCN | -1..* | performer[1](PractitionerRole.practitioner(Practitioner))performer[1](PractitionerRole.code.coding.code)= "responsibleObserver" performer[1](PractitionerRole.code.coding.system)= "http://terminology.hl7.org/CodeSystem/practitioner-role" | Reference(PractitionerRole)stringuri | equivalentequivalentequivalent |
| 11 | OBX-17 | Observation Method | CWE | -1..* | methodThe cardinality of Observation.method is 0..1 while the source allows for multiple methods. As we are not aware of anybody populating multiples in HL7 v2, we did not provide further mapping guidance. If you need to support multiples, please submit a gForge to OO for the HL7 v2 to FHIR mapping Implementation Guide. | CodeableConcept | equivalent |
| 12 | OBX-18 | Equipment Instance Identifier | EI | -1..* | device(Device.identifier) | Identifier | equivalent |
| 13 | OBX-19 | Date/Time of the Analysis | DTM | 1..1 | extension[1].url"http://hl7.org/fhir/StructureDefinition/observation-analysis-date-time" extension[1].valueDateTime | uridateTime | equivalentequivalent |
| 14 | OBX-20 | Observation Site | CWE | -1..* | bodySiteThe cardinality of Observation.bodySite is 0..1 while the source allows for multiple body sites. As we are not aware of anybody populating multiples in HL7 v2, we did not provide further mapping guidance. If you need to support multiples, please submit a gForge to OO for the HL7 v2 to FHIR mapping Implementation Guide. | CodeableConcept | equivalent |
| 15 | OBX-21 | Observation Instance Identifier | EI | 1..1 | identifieridentifier.type.coding.code= "FILL" | Identifiercode | equivalentequivalent |
| 16 | OBX-23 | Performing Organization Name | XON | 1..1 | performer[2](Organization)performer[2](PractitionerRole.organization(Organization)) | Reference(Organization)Reference(Organization) | equivalentequivalent |
| 17 | OBX-24 | Performing Organization Address | XAD | 1..1 | performer[2](Organization.address)performer[2](PractitionerRole.organization(Organization.address)) | AddressAddress | equivalentequivalent |
| 18 | OBX-25 | Performing Organization Medical Director | XCN | 1..1 | performer[2](PractitionerRole)performer[2](PractitionerRole.code.coding.value)= "MDIR" performer[2](PractitionerRole.code.coding.system)= "http://terminology.hl7.org/CodeSystem/v2-0912" | Reference(PractitionerRole)stringuri | equivalentequivalentequivalent |
| 19 | OBX-29 | Observation Type | ID | 1..1 | category[1].coding.codecategory[1].coding.system | codeuri | equivalentequivalent |
| 20 | OBX-30 | Observation Sub-Type | ID | 1..1 | extension[2].url= "http://hl7.org/fhir/StructureDefinition/observation-structure-type" extension[2].valueCodeableConcept.coding.codeextension[2].valueCodeableConcept.coding.system= "http://hl7.org/fhir/StructureDefinition/observation-structure-type" | uricodeuri | equivalentequivalentequivalent |
| 21 | OBX-33 | Observation Related Specimen Identifier | EIP | -1..* | extension[1].uri= "http://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.specimen" Note that in v2 messages the observations that a calculated observation is derived from on and involve multiple specimens are typically not included with the message. To enable relating the calculated observation to the correct specimens it relates to, the v2 message should include the originating observations that in turn use OBX-33 to link to the correct specimens. Without that, and if there are multiple specimens in OBX-33, there is no standard method to correctly associate the observation with the correct specimens. The implementer will have to devise an appropriate method for that in their context. extension[1].valueReference(Group.member.entity(Specimen.identifier[1])extension[2].uri= "http://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.specimen" extension[2].valueReference(Group.member.entity(Specimen.identifier[2]))specimen(Specimen.identifier[1])specimen(Specimen.identifier[2]) | Reference---IdentifierIdentifier | equivalentequivalentequivalentequivalentequivalentequivalent |