Implementation Guide
23.1.0 - R4 APIs

Publish Box goes here

Resource Profile: AthenaObservation - Mappings

Active as of 2022-03-01

Mappings for the athena-observation-profile resource profile.

Mappings for athenaFlow (http://unknown.org/athenaFlow)

AthenaObservation
ObservationFHIRR4_OBSERVATIONVIEW
   id%RESOURCEID%
   meta
      versionId%RESOURCEID%
      lastUpdated%WHENUPDATED%
      profile (US Core Observation Lab Profile)IfEqual(MapLabCoding(r.HG_GROUPID.getBigDecimal(rs),r.HDID.getBigDecimal(rs), "OBSHIERGRPSTOCATEGORY") != null ? MapLabCoding(r.HG_GROUPID.getBigDecimal(rs),r.HDID.getBigDecimal(rs), "OBSHIERGRPSTOCATEGORY").getCode() : null,"laboratory").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab")
      profile (US Core Pediatric BMI For Age Profile)IfEqual(%HDID%,"22346").Then("http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age")
      profile (US Core Pulse Oximetry Profile)IfEqual(getParentHdid(%HDID%) != null ? getParentHdid(%HDID%) : %HDID%,"2173").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry")
      profile (US Core Pediatric Head Occipital-frontal Circumference Percentile Profile)IfEqual(%HDID%,"5346").Then("http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile")
      profile (US Core Pediatric Weight For Height Profile)IfEqual(%HDID%,"29139").Then("http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height")
      profile (US Core Smokingstatus Profile)IfEqual(isSmokingStatusProfile(r.HDID.getBigDecimal(rs), "72166-2"),"true").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus")
      profile (US Core Blood Pressure Profile)IfEqual(getParentHdid(%HDID%),"85354-9").Then("http://hl7.org/fhir/StructureDefinition/bp")
      security
      security (SENSITIVECHART)CheckSensitive(%SENSITIVECHART%)
      security (CONFABBR)
         systemgetSiteCodeSystem("ConfidentialDocument")
         code%CONFABBR%
      tagMakeChangeTagList(%CHANGE%)
   identifierMakeIdentifier("U",getSiteSystem("ObservationId"),%RESOURCEID%)
   statusMapCode(%STATE%,"OBSSTATUS")
   category
   category (FHIRCATEGORY)
      codingMakeObservationCategoryList(%HDID%,"FSVIEWTOCATEGORY")
   category (PANELCATEGORY)
      codingMakeCodingWithSystem(%LOP_CODE%,getMapLabOrderPanelSystem(%LOP_CODETYPE%,"OIDTOURL"), %LOP_NAME%)
   category (HG_GROUPID)
      codingMakeCodingWithSystem(%HG_GROUPID%, getSiteCodeSystem("HIERGRPS"), %HG_GROUPNAME%)
      text%HG_GROUPNAME%,%HDID%
   code
      coding (TOCODE)MakeObservationCodingList(%HDID%, %OBSHEAD_DESCRIPTION%)
      coding (HDID)MakeRecentCoding(%HDID%,getSiteCodeSystem("HDID"),%NAME%)
      coding (C1_CODE)MakeCodingList(%C1_CODE%, %C1_CODING_SYSTEM_NAME%,%C1_DESCRIPTION%, "OIDTOURL")
      coding (C2_CODE)MakeCodingList(%C2_CODE%, %C2_CODING_SYSTEM_NAME%,%C2_DESCRIPTION%, "OIDTOURL")
      text%OBSHEAD_DESCRIPTION%
   subjectMakeReference("PERSON",%PID%,"Patient")
   encounterMakeReference("DOCUMENT",%SDID%,"Encounter")
   effective[x]%OBSDATE%
   issued%WHENUPDATED%
   performer (PractitionerPerformer)MakeReference("USR",%CREATOR%,%USRID%,"Practitioner")
   performer (OrganizationPerformer)MakeLabReference(%SDID%, %C1_CODE%, %C2_CODE%)
   value[x]IfEqual( %OBSTYPE%,"N").Then(Context::MakeQuantity,%OBSVALUE%,%UNIT%,%HDID%) | IfNotEqual(%OBSTYPE%,"N").Then(Context::MakeObservationValue,%HDID%, %OBSVALUE%)
   dataAbsentReasonMakeObservationConcept("unknown", "http://terminology.hl7.org/CodeSystem/data-absent-reason", "Unknown", %HDID%)
   interpretationMapConcept(%ABNORMAL%,"OBSABNORMAL")
   notemakeAnnotation(%DESCRIPTION%)
   referenceRange
      text%RANGE%
   component
      code
         coding (TOCODE)MakeObservationComponentCodingList(%HDID%, %OBSHEAD_DESCRIPTION%)
         coding (HDID)MakeComponentCoding(%HDID%,getSiteCodeSystem("HDID"),%NAME%)
      value[x]IfEqual( %OBSTYPE%,"N").Then(MakeComponentQuantity(%OBSVALUE%,%UNIT%, %HDID%,%SDID%,%PID%,%OBSDATE%))
      dataAbsentReasonMakeObservationComponentDataAbsentConcept(%OBSVALUE%,%UNIT%, %HDID%,%SDID%,%PID%,%OBSDATE%)

Mappings for athenaPractice (http://unknown.org/athenaPractice)

AthenaObservation
ObservationFHIRR4_OBSERVATIONVIEW
   id%RESOURCEID%
   meta
      versionId%RESOURCEID%
      lastUpdated%WHENUPDATED%
      profile (US Core Observation Lab Profile)IfEqual(MapLabCoding(r.HG_GROUPID.getBigDecimal(rs),r.HDID.getBigDecimal(rs), "OBSHIERGRPSTOCATEGORY") != null ? MapLabCoding(r.HG_GROUPID.getBigDecimal(rs),r.HDID.getBigDecimal(rs), "OBSHIERGRPSTOCATEGORY").getCode() : null,"laboratory").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab")
      profile (US Core Pediatric BMI For Age Profile)IfEqual(%HDID%,"22346").Then("http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age")
      profile (US Core Pulse Oximetry Profile)IfEqual(getParentHdid(%HDID%) != null ? getParentHdid(%HDID%) : %HDID%,"2173").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry")
      profile (US Core Pediatric Head Occipital-frontal Circumference Percentile Profile)IfEqual(%HDID%,"5346").Then("http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile")
      profile (US Core Pediatric Weight For Height Profile)IfEqual(%HDID%,"29139").Then("http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height")
      profile (US Core Smokingstatus Profile)IfEqual(isSmokingStatusProfile(r.HDID.getBigDecimal(rs), "72166-2"),"true").Then("http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus")
      profile (US Core Blood Pressure Profile)IfEqual(getParentHdid(%HDID%),"85354-9").Then("http://hl7.org/fhir/StructureDefinition/bp")
      security
      security (SENSITIVECHART)CheckSensitive(%SENSITIVECHART%)
      security (CONFABBR)
         systemgetSiteCodeSystem("ConfidentialDocument")
         code%CONFABBR%
      tagMakeChangeTagList(%CHANGE%)
   identifierMakeIdentifier("U",getSiteSystem("ObservationId"),%RESOURCEID%)
   statusMapCode(%STATE%,"OBSSTATUS")
   category
   category (FHIRCATEGORY)
      codingMakeObservationCategoryList(%HDID%,"FSVIEWTOCATEGORY")
   category (PANELCATEGORY)
      codingMakeCodingWithSystem(%LOP_CODE%,getMapLabOrderPanelSystem(%LOP_CODETYPE%,"OIDTOURL"), %LOP_NAME%)
   category (HG_GROUPID)
      codingMakeCodingWithSystem(%HG_GROUPID%, getSiteCodeSystem("HIERGRPS"), %HG_GROUPNAME%)
      text%HG_GROUPNAME%,%HDID%
   code
      coding (TOCODE)MakeObservationCodingList(%HDID%, %OBSHEAD_DESCRIPTION%)
      coding (HDID)MakeRecentCoding(%HDID%,getSiteCodeSystem("HDID"),%NAME%)
      coding (C1_CODE)MakeCodingList(%C1_CODE%, %C1_CODING_SYSTEM_NAME%,%C1_DESCRIPTION%, "OIDTOURL")
      coding (C2_CODE)MakeCodingList(%C2_CODE%, %C2_CODING_SYSTEM_NAME%,%C2_DESCRIPTION%, "OIDTOURL")
      text%OBSHEAD_DESCRIPTION%
   subjectMakeReference("PERSON",%PID%,"Patient")
   encounterMakeReference("DOCUMENT",%SDID%,"Encounter")
   effective[x]%OBSDATE%
   issued%WHENUPDATED%
   performer (PractitionerPerformer)MakeReference("USR",%CREATOR%,%USRID%,"Practitioner")
   performer (OrganizationPerformer)MakeLabReference(%SDID%, %C1_CODE%, %C2_CODE%)
   value[x]IfEqual( %OBSTYPE%,"N").Then(Context::MakeQuantity,%OBSVALUE%,%UNIT%,%HDID%) | IfNotEqual(%OBSTYPE%,"N").Then(Context::MakeObservationValue,%HDID%, %OBSVALUE%)
   dataAbsentReasonMakeObservationConcept("unknown", "http://terminology.hl7.org/CodeSystem/data-absent-reason", "Unknown", %HDID%)
   interpretationMapConcept(%ABNORMAL%,"OBSABNORMAL")
   notemakeAnnotation(%DESCRIPTION%)
   referenceRange
      text%RANGE%
   component
      code
         coding (TOCODE)MakeObservationComponentCodingList(%HDID%, %OBSHEAD_DESCRIPTION%)
         coding (HDID)MakeComponentCoding(%HDID%,getSiteCodeSystem("HDID"),%NAME%)
      value[x]IfEqual( %OBSTYPE%,"N").Then(MakeComponentQuantity(%OBSVALUE%,%UNIT%, %HDID%,%SDID%,%PID%,%OBSDATE%))
      dataAbsentReasonMakeObservationComponentDataAbsentConcept(%OBSVALUE%,%UNIT%, %HDID%,%SDID%,%PID%,%OBSDATE%)

Mappings for Workflow Pattern (http://hl7.org/fhir/workflow)

AthenaObservation
ObservationEvent
   identifierEvent.identifier
   basedOnEvent.basedOn
   partOfEvent.partOf
   statusEvent.status
   codeEvent.code
   subjectEvent.subject
   encounterEvent.context
   effective[x]Event.occurrence[x]
   performerEvent.performer.actor
   performer (PractitionerPerformer)Event.performer.actor
   performer (OrganizationPerformer)Event.performer.actor

Mappings for SNOMED CT Concept Domain Binding (http://snomed.info/conceptdomain)

AthenaObservation
Observation< 363787002 |Observable entity|
   status< 445584004 |Report by finality status|
   code< 363787002 |Observable entity| OR < 386053000 |Evaluation procedure|
   value[x]< 441742003 |Evaluation finding|
   interpretation< 260245000 |Findings values|
   bodySite< 123037004 |Body structure|
   specimen< 123038009 |Specimen|
   device< 49062001 |Device|
   referenceRange
      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|
      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|
   component
      code< 363787002 |Observable entity| OR < 386053000 |Evaluation procedure|
      value[x]363714003 |Interprets| < 441742003 |Evaluation finding|
      interpretation< 260245000 |Findings values|

Mappings for HL7 v2 Mapping (http://hl7.org/v2)

AthenaObservation
ObservationOBX
   meta
      security
      security (SENSITIVECHART)
      security (CONFABBR)
         systemC*E.3
         versionC*E.7
         codeC*E.1
         displayC*E.2 - but note this is not well followed
         userSelectedSometimes implied by being first
   identifierOBX.21 For OBX segments from systems without OBX-21 support a combination of ORC/OBR and OBX must be negotiated between trading partners to uniquely identify the OBX segment. Depending on how V2 has been implemented each of these may be an option: 1) OBR-3 + OBX-3 + OBX-4 or 2) OBR-3 + OBR-4 + OBX-3 + OBX-4 or 2) some other way to uniquely ID the OBR/ORC + OBX-3 + OBX-4.
   basedOnORC
   partOfVaries by domain
   statusOBX-11
   category
   category (FHIRCATEGORY)
      codingC*E.1-8, C*E.10-22
      textC*E.9. But note many systems use C*E.2 for this
   category (PANELCATEGORY)
      codingC*E.1-8, C*E.10-22
      textC*E.9. But note many systems use C*E.2 for this
   category (HG_GROUPID)
      codingC*E.1-8, C*E.10-22
      textC*E.9. But note many systems use C*E.2 for this
   codeOBX-3
      codingC*E.1-8, C*E.10-22
      coding (TOCODE)C*E.1-8, C*E.10-22
      coding (HDID)C*E.1-8, C*E.10-22
      coding (C1_CODE)C*E.1-8, C*E.10-22
      coding (C2_CODE)C*E.1-8, C*E.10-22
      textC*E.9. But note many systems use C*E.2 for this
   subjectPID-3
   focusOBX-3
   encounterPV1
   effective[x]OBX-14, and/or OBX-19 after v2.4 (depends on who observation made)
   issuedOBR.22 (or MSH.7), or perhaps OBX-19 (depends on who observation made)
   performerOBX.15 / (Practitioner) OBX-16, PRT-5:PRT-4='RO' / (Device) OBX-18 , PRT-10:PRT-4='EQUIP' / (Organization) OBX-23, PRT-8:PRT-4='PO'
   performer (PractitionerPerformer)OBX.15 / (Practitioner) OBX-16, PRT-5:PRT-4='RO' / (Device) OBX-18 , PRT-10:PRT-4='EQUIP' / (Organization) OBX-23, PRT-8:PRT-4='PO'
   performer (OrganizationPerformer)OBX.15 / (Practitioner) OBX-16, PRT-5:PRT-4='RO' / (Device) OBX-18 , PRT-10:PRT-4='EQUIP' / (Organization) OBX-23, PRT-8:PRT-4='PO'
   value[x]OBX.2, OBX.5, OBX.6
   dataAbsentReasonN/A
   interpretationOBX-8
   noteNTE.3 (partner NTE to OBX, or sometimes another (child?) OBX)
   bodySiteOBX-20
   methodOBX-17
   specimenSPM segment
   deviceOBX-17 / PRT -10
   referenceRangeOBX.7
      lowOBX-7
      highOBX-7
      typeOBX-10
      appliesToOBX-10
      textOBX-7
   hasMemberRelationships established by OBX-4 usage
   derivedFromRelationships established by OBX-4 usage
   componentcontainment by OBX-4?
      codeOBX-3
         codingC*E.1-8, C*E.10-22
         coding (TOCODE)C*E.1-8, C*E.10-22
         coding (HDID)C*E.1-8, C*E.10-22
         textC*E.9. But note many systems use C*E.2 for this
      value[x]OBX.2, OBX.5, OBX.6
      dataAbsentReasonN/A
      interpretationOBX-8
      referenceRangeOBX.7

Mappings for RIM Mapping (http://hl7.org/v3)

AthenaObservation
ObservationEntity. Role, or Act, Observation[classCode=OBS, moodCode=EVN]
   meta
      idn/a
      extensionn/a
      security
      security (SENSITIVECHART)
      security (CONFABBR)
         idn/a
         extensionn/a
         system./codeSystem
         version./codeSystemVersion
         code./code
         displayCV.displayName
         userSelectedCD.codingRationale
   textAct.text?
   containedN/A
   extensionN/A
   modifierExtensionN/A
   identifierid
   basedOn.inboundRelationship[typeCode=COMP].source[moodCode=EVN]
   partOf.outboundRelationship[typeCode=FLFS].target
   statusstatus Amended & Final are differentiated by whether it is the subject of a ControlAct event with a type of "revise"
   category.outboundRelationship[typeCode="COMP].target[classCode="LIST", moodCode="EVN"].code
   category (FHIRCATEGORY).outboundRelationship[typeCode="COMP].target[classCode="LIST", moodCode="EVN"].code
      idn/a
      extensionn/a
      codingunion(., ./translation)
      text./originalText[mediaType/code="text/plain"]/data
   category (PANELCATEGORY).outboundRelationship[typeCode="COMP].target[classCode="LIST", moodCode="EVN"].code
      idn/a
      extensionn/a
      codingunion(., ./translation)
      text./originalText[mediaType/code="text/plain"]/data
   category (HG_GROUPID).outboundRelationship[typeCode="COMP].target[classCode="LIST", moodCode="EVN"].code
      idn/a
      extensionn/a
      codingunion(., ./translation)
      text./originalText[mediaType/code="text/plain"]/data
   codecode
      idn/a
      extensionn/a
      codingunion(., ./translation)
      coding (TOCODE)union(., ./translation)
      coding (HDID)union(., ./translation)
      coding (C1_CODE)union(., ./translation)
      coding (C2_CODE)union(., ./translation)
      text./originalText[mediaType/code="text/plain"]/data
   subjectparticipation[typeCode=RTGT]
   focusparticipation[typeCode=SBJ]
   encounterinboundRelationship[typeCode=COMP].source[classCode=ENC, moodCode=EVN]
   effective[x]effectiveTime
   issuedparticipation[typeCode=AUT].time
   performerparticipation[typeCode=PRF]
   performer (PractitionerPerformer)participation[typeCode=PRF]
   performer (OrganizationPerformer)participation[typeCode=PRF]
   value[x]value
   dataAbsentReasonvalue.nullFlavor
   interpretationinterpretationCode
   notesubjectOf.observationEvent[code="annotation"].value
   bodySitetargetSiteCode
   methodmethodCode
   specimenparticipation[typeCode=SPC].specimen
   deviceparticipation[typeCode=DEV]
   referenceRangeoutboundRelationship[typeCode=REFV]/target[classCode=OBS, moodCode=EVN]
      idn/a
      extensionn/a
      modifierExtensionN/A
      lowvalue:IVL_PQ.low
      highvalue:IVL_PQ.high
      typeinterpretationCode
      appliesTointerpretationCode
      ageoutboundRelationship[typeCode=PRCN].targetObservationCriterion[code="age"].value
      textvalue:ST
   hasMemberoutBoundRelationship
   derivedFrom.targetObservation
   componentoutBoundRelationship[typeCode=COMP]
      idn/a
      extensionn/a
      modifierExtensionN/A
      codecode
         idn/a
         extensionn/a
         codingunion(., ./translation)
         coding (TOCODE)union(., ./translation)
         coding (HDID)union(., ./translation)
         text./originalText[mediaType/code="text/plain"]/data
      value[x]value
      dataAbsentReasonvalue.nullFlavor
      interpretationinterpretationCode
      referenceRangeoutboundRelationship[typeCode=REFV]/target[classCode=OBS, moodCode=EVN]

Mappings for FiveWs Pattern Mapping (http://hl7.org/fhir/fivews)

AthenaObservation
Observation
   identifierFiveWs.identifier
   statusFiveWs.status
   categoryFiveWs.class
   category (FHIRCATEGORY)FiveWs.class
   category (PANELCATEGORY)FiveWs.class
   category (HG_GROUPID)FiveWs.class
   codeFiveWs.what[x]
   subjectFiveWs.subject[x], FiveWs.subject
   focusFiveWs.subject[x], FiveWs.subject
   encounterFiveWs.context
   effective[x]FiveWs.done[x]
   issuedFiveWs.recorded
   performerFiveWs.actor
   performer (PractitionerPerformer)FiveWs.actor
   performer (OrganizationPerformer)FiveWs.actor
   component
      codeFiveWs.what[x]

Mappings for SNOMED CT Attribute Binding (http://snomed.org/attributebinding)

AthenaObservation
Observation
   code116680003 |Is a|
   value[x]363714003 |Interprets|
   interpretation363713009 |Has interpretation|
   bodySite718497002 |Inherent location|
   specimen704319004 |Inherent in|
   device424226004 |Using device|
   component
      value[x]363714003 |Interprets|
      interpretation363713009 |Has interpretation|