Segment OBX to Observation Map

This ConceptMap represents a mapping from the HL7 V2 Segment OBX to the FHIR Observation Resource.
View in v2-to-FHIR IG
#V2 FieldNameV2 TypeCard.FHIR AttributeFHIR TypeEquiv.
1OBX-3Observation IdentifierCWE1..1
code

Note that in Observation there is category field that depending on implementation guide and/or realm is required. MSH-9.2 Trigger Event, the MSH-3 Sending Application and OBX-3 Observation Identifier's code system ontology would inform how to value Observation.category.

CodeableConcept
equivalent
2OBX-4Observation Sub-IDOG1..1
$this

IF: 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
3OBX-5Observation Valuevaries-1..*
valueQuantity.value
valueString

IF: Any markup in ST, FT or TX data may not present properly given that valueString is a string data type

valueCodeableConcept[1]
valueCodeableConcept
valueCodeableConcept
valueCodeableConcept
valueCodeableConcept
valuePeriod
valueDateTime
valueRange
valueString

= OBX-5.1+"-"+OBX-5.2

valueTime
valueString

= OBX-5.1+" "+OBX-5.2+" "+OBX-5.3+" "+OBX-5.4" "OBX-6"

valueRatio[1]
valueRange[1]
valueString

= OBX-5.1+" "+OBX-5.2+" "+OBX-5.3+" "+OBX-5.4" "OBX-6"

valueQuantity[1]

Note that OBX-5 and OBX-6 resolve to different components for the same Quantity data type.

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

valueSampedData

Full guidance on how to populate SampledData based on a single vector or an array will be provided in a future version based on interest. Please submit a JIRA if you are interested.

extension[1].url

= "https://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.valueAttachment"

extension[1].valueAttachment

We are for now addressing Base64 that cover .pdf, pictures and other binaries. If somebody does this, we will address those.

extension[1].url

= "https://hl7.org/fhir/5.0/StructureDefinition/extension-Observation.valueAttachment"

extension[1].valueAttachment

To be resolved when we resolve DocumentReference and valueAttachment

quantitystringCodeableConceptCodeableConceptCodeableConceptCodeableConceptCodeableConceptPerioddateTimeRangestringtimestringRatioRangestringQuantitystringSampledDatauriAttachmenturiAttachment
equivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalentequivalent
4OBX-6UnitsCWE1..1
valueQuantity[1]

Note that OBX-5 and OBX-6 resolve to different components for the same Quantity data type.

valueQuantity[1]

Note that OBX-5 and OBX-6 resolve to different components for the same Quantity data type.

valueRange[1].low
valueRange[1].high
valueRatio[1].numerator
valueRatio[1].denominator
QuantityQuantitySimpleQuantitySimpleQuantityQuantityQuantity
equivalentequivalentequivalentequivalentequivalentequivalent
5OBX-7References RangeST1..1
referenceRange.text

If OBX-7 is sufficiently parseable, then the low, high, type, appliesTo, and/or age may be used.

string
equivalent
6OBX-8Interpretation CodesCWE-1..*
interpretation
CodeableConcept
equivalent
7OBX-10Nature of Abnormal TestID-1..*
extension[2].uri

= "http://hl7.org/fhir/StructureDefinition/observation-nature-of-abnormal-test"

extension[2].valueCodeableConcept
uriCodeableConcept
equivalentequivalent
8OBX-11Observation Result StatusID1..1
status
status.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
9OBX-14Date/Time of the ObservationDTM1..1
effectiveDateTime
dateTime
equivalent
10OBX-15Producer's IDCWE1..1
performer[2](Organization)

We are mapping this to an identifier considering the definition (used for a unique identifier of the producer), although that does not fit the use of the CWE data type in HL7 v2. Depending on context (e.g., US CLIA or IHE LTW, or ILW) this may reflect a location (US CLIA) or an organization (IHE LTW or ILW).

performer[2](PractitionerRole)
identifier-
equivalentequivalent
11OBX-16Responsible ObserverXCN-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)CodeableConceptCodeableConcept
equivalentequivalentequivalent
12OBX-17Observation MethodCWE-1..*
method

The 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
13OBX-18Equipment Instance IdentifierEI-1..*
device(Device.identifier)
Identifier
equivalent
14OBX-19Date/Time of the AnalysisDTM1..1
extension[2].url

"http://hl7.org/fhir/StructureDefinition/observation-analysis-date-time"

extension[2].valueDateTime
uridateTime
equivalentequivalent
15OBX-20Observation SiteCWE-1..*
bodySite

The 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
16OBX-21Observation Instance IdentifierEI1..1
identifier
identifier.type.coding.code

= "FILL"

Identifiercode
equivalentequivalent
17OBX-23Performing Organization NameXON1..1
performer[2](Organization)
performer[2](PractitionerRole[1].organization(Organization))
Reference(Organization)Reference(Organization)
equivalentequivalent
18OBX-24Performing Organization AddressXAD1..1
performer[2](Organization.address)
performer[2](PractitionerRole[1].organization(Organization.address))
AddressAddress
equivalentequivalent
19OBX-25Performing Organization Medical DirectorXCN1..1
performer[2](PractitionerRole[1].practitioner)
performer[2](PractitionerRole[1].code.coding.code)

= "MDIR"

performer[2](PractitionerRole[1].code.coding.system)

= "http://terminology.hl7.org/CodeSystem/v2-0912"

Reference(PractitionerRole)code-
equivalentequivalentequivalent
20OBX-29Observation TypeID1..1
category[1].coding.code
category[1].coding.system
codeuri
equivalentequivalent
21OBX-30Observation Sub-TypeID1..1
extension[2].url

= "http://hl7.org/fhir/StructureDefinition/observation-structure-type"

The sub type was necessary in v2 to distinguish purpose of the observation when it appears in a message in the same group (e.g., answers to ask at order entry questions with actual results ). Within FHIR flagging the observation may not be necessary, but that is not yet clear. Until then, we will keep the thought of needing an extension, but not create it yet.

extension[2].valueCodeableConcept.coding.code
extension[2].valueCodeableConcept.coding.system

= "http://hl7.org/fhir/StructureDefinition/observation-structure-type"

uricodeuri
equivalentequivalentequivalent
22OBX-33Observation Related Specimen IdentifierEIP-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

Equivalence Legend

equivalentExact match
wider/narrowerBroader/more specific meaning
relatedtoRelated but not exact
unmatchedNo equivalent in target