Tiro.health Implementation Guide
0.1.0 - ci-build

Tiro.health Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: LabResult - Mappings

Draft as of 2026-06-09

Mappings for the LabResult resource profile.

Mappings to Structures in this Implementation Guide

No Mappings Found

Mappings to other Structures

No Mappings Found

Other Mappings

NameopenEHR Laboratory analyte result (v1)Workflow PatternFiveWs Pattern MappingSNOMED CT Concept Domain BindingHL7 V2 MappingRIM MappingSNOMED CT Attribute Bindingdoco
.. Observation
  • items[at0027]/value (not represented)
  • items[at0014] (not represented)
openEHR 'Analyte result sequence' (DV_COUNT) records the position of this analyte within a multi-analyte report (e.g. HL7 v2 OBX-1). When a panel is represented as multiple FHIR Observation resources, ordering is conveyed by the position in DiagnosticReport.result rather than on the Observation itself. Add an extension if you need to preserve the integer on the individual resource.
Event
clinical.diagnostics
< 363787002 |Observable entity|
OBX
  • Entity
  • Role
  • or Act
  • Observation[classCode=OBS
  • moodCode=EVN]
... id
... meta
... implicitRules
... language
... text
Act.text?
... contained
N/A
... extension
N/A
... modifierExtension
N/A
... identifier
Event.identifier
FiveWs.identifier
1) OBR-3 + OBX-3 + OBX-4 or 2) OBR-3 + OBR-4 + OBX-3 + OBX-4 or 3) some other way to uniquely ID the OBR/ORC + OBX-3 + OBX-4.
id
... instantiates[x]
Event.instantiatesCanonical
.outboundRelationship[typeCode=DEFN].target
... basedOn
Event.basedOn
ORC
.inboundRelationship[typeCode=COMP].source[moodCode=EVN]
... triggeredBy
ORC
.inboundRelationship[typeCode=COMP].source[moodCode=EVN]
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... observation
outBoundRelationship
.... type
code
.... reason
annotation
... partOf
Event.partOf
Varies by domain
.outboundRelationship[typeCode=FLFS].target
... status
  • items[at0005]/value
  • items[at0006]/value (not represented)
openEHR DV_CODED_TEXT (registered|partial|preliminary|final|corrected|amended|appended|entered-in-error|cancelled) → FHIR Observation.status. 'partial' and 'appended' have no exact FHIR code and collapse to 'preliminary' and 'amended' respectively.
Event.status
FiveWs.status
< 445584004 |Report by finality status|
OBX-11
status Amended & Final are differentiated by whether it is the subject of a ControlAct event with a type of "revise"
... Slices for category
(implicit)
No equivalent element on the openEHR archetype — the laboratory context is implicit in the archetype's identity (openEHR-EHR-CLUSTER.laboratory_test_analyte). FHIR makes this explicit on Observation.category and we therefore fix it to 'laboratory'.
FiveWs.class
  • .outboundRelationship[typeCode="COMP].target[classCode="LIST"
  • moodCode="EVN"].code
.... category:laboratory
FiveWs.class
  • .outboundRelationship[typeCode="COMP].target[classCode="LIST"
  • moodCode="EVN"].code
... code
items[at0024]/value
openEHR DV_TEXT (Analyte name) → FHIR Observation.code (CodeableConcept). FHIR encourages a coded value (LOINC or SNOMED CT); the archetype permits free text.
Event.code
FiveWs.what[x]
< 363787002 |Observable entity| OR < 386053000 |Evaluation procedure|
OBX-3
code
116680003 |Is a|
... subject
Event.subject
FiveWs.subject[x]
PID-3
participation[typeCode=RTGT]
... focus
FiveWs.subject[x]
OBX-3
participation[typeCode=SBJ]
... encounter
Event.encounter
FiveWs.context
PV1
  • inboundRelationship[typeCode=COMP].source[classCode=ENC
  • moodCode=EVN]
... Slices for effective[x]
Event.occurrence[x]
FiveWs.done[x]
  • OBX-14
  • and/or OBX-19 after v2.4 (depends on who observation made)
effectiveTime
.... effective[x]:effectiveDateTime
items[at0031]/value
openEHR 'Analysis performed time' (DV_DATE_TIME) → FHIR Observation.effective[x]: when the analysis was physically performed.
Event.occurrence[x]
FiveWs.done[x]
  • OBX-14
  • and/or OBX-19 after v2.4 (depends on who observation made)
effectiveTime
... issued
items[at0025]/value
openEHR 'Validation time' (DV_DATE_TIME) → FHIR Observation.issued: when the validated result was released.
FiveWs.recorded
  • OBR-22 (or MSH-7)
  • or perhaps OBX-19 (depends on who observation made)
participation[typeCode=AUT].time
... performer
Event.performer.actor
FiveWs.actor
  • OBX-15 / (Practitioner) OBX-16
  • PRT-4='RO' / (Device) OBX-18
  • PRT-4='EQUIP' / (Organization) OBX-23
  • PRT-4='PO'
participation[typeCode=PRF]
... value[x]
items[at0001]/value
openEHR 'Analyte result' is type-open (DV_QUANTITY, DV_CODED_TEXT, DV_TEXT, DV_BOOLEAN, DV_ORDINAL, …). FHIR value[x] expresses the same flexibility via its multiple alternative types.
< 441742003 |Evaluation finding|
  • OBX-2
  • OBX-5
  • OBX-6
value
363714003 |Interprets|
... dataAbsentReason
N/A
value.nullFlavor
... interpretation
< 260245000 |Findings values|
OBX-8
interpretationCode
363713009 |Has interpretation|
... note
items[at0003]/value
openEHR 'Comment' (DV_TEXT, 0..*) → FHIR Observation.note (Annotation, 0..*). The DV_TEXT value lands in Annotation.text.
  • NTE-3 (partner NTE to OBX
  • or sometimes another (child?) OBX)
subjectOf.observationEvent[code="annotation"].value
... bodySite
< 123037004 |Body structure|
OBX-20
targetSiteCode
718497002 |Inherent location|
... bodyStructure
targetSiteCode
... method
  • items[at0028]/value
  • items[at0032]/value (not represented)
openEHR 'Test method' → FHIR Observation.method (CodeableConcept).
OBX-17
methodCode
... specimen
items[at0026]/value
openEHR 'Specimen' (DV_IDENTIFIER / DV_URI / DV_TEXT) → FHIR Observation.specimen (Reference to Specimen). FHIR moves identification into a separate Specimen resource.
< 123038009 |Specimen|
SPM segment
participation[typeCode=SPC].specimen
704319004 |Inherent in|
... device
< 49062001 |Device|
OBX-17 / PRT -10
participation[typeCode=DEV]
424226004 |Using device|
... referenceRange
items[at0004]/value
openEHR 'Reference range guidance' (DV_TEXT) lands in Observation.referenceRange.text. Numeric low/high typically come from the result DV_QUANTITY's normalRange, which is not modelled at this archetype level.
OBX-7
  • outboundRelationship[typeCode=REFV]/target[classCode=OBS
  • moodCode=EVN]
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... low
OBX-7
IVL_PQ.low
.... high
OBX-7
IVL_PQ.high
.... normalValue
OBX-7
IVL_PQ.normal
.... type
< 260245000 |Findings values| OR < 365860008 |General clinical state finding| OR < 250171008 |Clinical history or observation findings| OR < 415229000 |Racial group| OR < 365400002 |Finding of puberty stage| OR < 443938003 |Procedure carried out on subject|
OBX-10
interpretationCode
.... appliesTo
< 260245000 |Findings values| OR < 365860008 |General clinical state finding| OR < 250171008 |Clinical history or observation findings| OR < 415229000 |Racial group| OR < 365400002 |Finding of puberty stage| OR < 443938003 |Procedure carried out on subject|
OBX-10
interpretationCode
.... age
outboundRelationship[typeCode=PRCN].targetObservationCriterion[code="age"].value
.... text
OBX-7
ST
... hasMember
Relationships established by OBX-4 usage
outBoundRelationship
... derivedFrom
Relationships established by OBX-4 usage
.targetObservation
... component
containment by OBX-4?
outBoundRelationship[typeCode=COMP]
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... code
FiveWs.what[x]
< 363787002 |Observable entity| OR < 386053000 |Evaluation procedure|
OBX-3
code
.... value[x]
363714003 |Interprets| < 441742003 |Evaluation finding|
  • OBX-2
  • OBX-5
  • OBX-6
value
363714003 |Interprets|
.... dataAbsentReason
N/A
value.nullFlavor
.... interpretation
< 260245000 |Findings values|
OBX-8
interpretationCode
363713009 |Has interpretation|
.... referenceRange
OBX-7
  • outboundRelationship[typeCode=REFV]/target[classCode=OBS
  • moodCode=EVN]

doco Documentation for this format