| Package | hl7.fhir.uv.omop |
| Resource Type | StructureMap |
| Id | ObservationMap |
| FHIR Version | R5 |
| Source | http://hl7.org/fhir/uv/omop/https://build.fhir.org/ig/HL7/fhir-omop-ig/StructureMap-ObservationMap.html |
| URL | http://hl7.org/fhir/uv/omop/StructureMap/ObservationMap |
| Version | 1.0.0-ballot |
| Status | draft |
| Date | 2025-07-29T17:40:15+00:00 |
| Name | ObservationMap |
| Title | Mapping Observation resource to Observation OMOP Domain |
| Realm | uv |
| Authority | hl7 |
| Description | This mapping maps FHIR Observation instances that are NOT considered measurements to OMOP Observation Table objects. Currently, this is done by considering the category code and mapping 'social-history', 'imaging', 'survey', 'exam', 'therapy', 'activity', and 'procedure' Observations. |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap ObservationMap
/// url = 'http://hl7.org/fhir/uv/omop/StructureMap/ObservationMap' /// name = 'ObservationMap' /// title = 'Mapping Observation resource to Observation OMOP Domain' /// status = 'draft' uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as source uses "http://hl7.org/fhir/uv/omop/StructureDefinition/Observation" alias ObsTable as target group Observe(source src : Observation, target tgt : ObsTable) { src where ('social-history' | 'imaging' | 'survey' | 'exam' | 'therapy' | 'activity' | 'procedure').supersetOf(Observation.category.coding.code) then { src.code as s -> tgt then { s.coding as sc -> tgt then { sc.code as a -> tgt.observation_concept_id = a; }; }; // src.id as id -> tgt.observation_id = cast(id, "integer"); src.effective : dateTime as a -> tgt.observation_datetime = a, tgt.observation_date = cast(a, 'date'); // src.subject as s -> tgt then { src.effective : instant as einst -> tgt.observation_datetime = cast(einst, 'dateTime'), tgt.observation_date = cast(einst, 'date'); src.effective : Period as s -> tgt then { s.start as ss -> tgt.observation_datetime = cast(ss, 'dateTime'), tgt.observation_date = cast(ss, 'date'); }; src.issued as s where (s.toDate != src.effectiveDate) -> tgt.observation_source_value = cast(s, 'string'); src.value : Quantity as s -> tgt then { s.value as a -> tgt.value_as_number = a; s.unit as b -> tgt.unit_concept_id = b; }; // src.performer as s -> tgt then { src.value : CodeableConcept as s -> tgt then { s.coding as sc -> tgt then { sc.code as a -> tgt.value_as_concept_id = a; }; }; src.value : string as b -> tgt.value_as_string = b; src.note as d -> tgt.observation_source_value = d; } "OnlyObs"; }
{
"resourceType": "StructureMap",
"id": "ObservationMap",
"text": {
"status": "generated",
"div": "<!-- snip (see above) -->"
},
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
"valueCode": "brr"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
"valueInteger": 1,
"_valueInteger": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
"valueCanonical": "http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"
}
]
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
"valueCode": "informative",
"_valueCode": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
"valueCanonical": "http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"
}
]
}
}
],
"url": "http://hl7.org/fhir/uv/omop/StructureMap/ObservationMap",
"version": "1.0.0-ballot",
"name": "ObservationMap",
"title": "Mapping Observation resource to Observation OMOP Domain",
"status": "draft",
"date": "2025-07-29T17:40:15+00:00",
"publisher": "HL7 International / Biomedical Research and Regulation",
"contact": [
{
"name": "HL7 International / Biomedical Research and Regulation",
"telecom": [
{
"system": "url",
"value": "http://www.hl7.org/Special/committees/rcrim"
}
]
}
],
"description": "This mapping maps FHIR Observation instances that are NOT considered measurements to OMOP Observation Table objects. Currently, this is done by considering the category code and mapping 'social-history', 'imaging', 'survey', 'exam', 'therapy', 'activity', and 'procedure' Observations.",
"jurisdiction": [
{
"coding": [
{
"system": "http://unstats.un.org/unsd/methods/m49/m49.htm",
"code": "001",
"display": "World"
}
]
}
],
"structure": [
{
"url": "http://hl7.org/fhir/StructureDefinition/Observation",
"mode": "source",
"alias": "Observation"
},
{
"url": "http://hl7.org/fhir/uv/omop/StructureDefinition/Observation",
"mode": "target",
"alias": "ObsTable"
}
],
"group": [
{
"name": "Observe",
"input": [
{
"name": "src",
"type": "Observation",
"mode": "source"
},
{
"name": "tgt",
"type": "ObsTable",
"mode": "target"
}
],
"rule": [
{
"name": "OnlyObs",
"source": [
{
"context": "src",
"condition": "('social-history' | 'imaging' | 'survey' | 'exam' | 'therapy' | 'activity' | 'procedure').supersetOf(Observation.category.coding.code)"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "src",
"element": "code",
"variable": "s"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "s",
"element": "coding",
"variable": "sc"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "sc",
"element": "code",
"variable": "a"
}
],
"target": [
{
"context": "tgt",
"element": "observation_concept_id",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
}
]
}
]
}
],
"documentation": "src.id as id -> tgt.observation_id = cast(id, \"integer\");"
},
{
"name": "effectiveDateTime",
"source": [
{
"context": "src",
"type": "dateTime",
"element": "effective",
"variable": "a"
}
],
"target": [
{
"context": "tgt",
"element": "observation_datetime",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
},
{
"context": "tgt",
"element": "observation_date",
"transform": "cast",
"parameter": [
{
"valueId": "a"
},
{
"valueString": "date"
}
]
}
],
"documentation": "src.subject as s -> tgt then {"
},
{
"name": "effectiveInstant",
"source": [
{
"context": "src",
"type": "instant",
"element": "effective",
"variable": "einst"
}
],
"target": [
{
"context": "tgt",
"element": "observation_datetime",
"transform": "cast",
"parameter": [
{
"valueId": "einst"
},
{
"valueString": "dateTime"
}
]
},
{
"context": "tgt",
"element": "observation_date",
"transform": "cast",
"parameter": [
{
"valueId": "einst"
},
{
"valueString": "date"
}
]
}
]
},
{
"name": "effectivePeriod",
"source": [
{
"context": "src",
"type": "Period",
"element": "effective",
"variable": "s"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "start",
"source": [
{
"context": "s",
"element": "start",
"variable": "ss"
}
],
"target": [
{
"context": "tgt",
"element": "observation_datetime",
"transform": "cast",
"parameter": [
{
"valueId": "ss"
},
{
"valueString": "dateTime"
}
]
},
{
"context": "tgt",
"element": "observation_date",
"transform": "cast",
"parameter": [
{
"valueId": "ss"
},
{
"valueString": "date"
}
]
}
]
}
]
},
{
"name": "issued",
"source": [
{
"context": "src",
"element": "issued",
"variable": "s",
"condition": "(s.toDate != src.effectiveDate)"
}
],
"target": [
{
"context": "tgt",
"element": "observation_source_value",
"transform": "cast",
"parameter": [
{
"valueId": "s"
},
{
"valueString": "string"
}
]
}
]
},
{
"name": "valueQuantity",
"source": [
{
"context": "src",
"type": "Quantity",
"element": "value",
"variable": "s"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "value",
"source": [
{
"context": "s",
"element": "value",
"variable": "a"
}
],
"target": [
{
"context": "tgt",
"element": "value_as_number",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
}
]
},
{
"name": "unit",
"source": [
{
"context": "s",
"element": "unit",
"variable": "b"
}
],
"target": [
{
"context": "tgt",
"element": "unit_concept_id",
"transform": "copy",
"parameter": [
{
"valueId": "b"
}
]
}
]
}
],
"documentation": "src.performer as s -> tgt then {"
},
{
"name": "valueCodeableConcept",
"source": [
{
"context": "src",
"type": "CodeableConcept",
"element": "value",
"variable": "s"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "s",
"element": "coding",
"variable": "sc"
}
],
"target": [
{
"transform": "copy",
"parameter": [
{
"valueId": "tgt"
}
]
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "sc",
"element": "code",
"variable": "a"
}
],
"target": [
{
"context": "tgt",
"element": "value_as_concept_id",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
}
]
}
]
}
]
},
{
"name": "valueString",
"source": [
{
"context": "src",
"type": "string",
"element": "value",
"variable": "b"
}
],
"target": [
{
"context": "tgt",
"element": "value_as_string",
"transform": "copy",
"parameter": [
{
"valueId": "b"
}
]
}
]
},
{
"name": "note",
"source": [
{
"context": "src",
"element": "note",
"variable": "d"
}
],
"target": [
{
"context": "tgt",
"element": "observation_source_value",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
}
]
}