| Package | hl7.fhir.uv.omop |
| Resource Type | StructureMap |
| Id | MeasurementMap |
| FHIR Version | R5 |
| Source | http://hl7.org/fhir/uv/omop/https://build.fhir.org/ig/HL7/fhir-omop-ig/StructureMap-MeasurementMap.html |
| URL | http://hl7.org/fhir/uv/omop/StructureMap/MeasurementMap |
| Version | 1.0.0-ballot |
| Status | draft |
| Date | 2025-07-29T17:40:15+00:00 |
| Name | MeasurementMap |
| Title | Mapping Observation resource to Measurement OMOP Domain |
| Realm | uv |
| Authority | hl7 |
| Description | This mapping maps FHIR Observation instances that are considered measurements to OMOP Measurement Table objects. Currently, this is done by considering the category code and mapping 'vital-signs' and 'laboratory' Observations. |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap MeasurementMap
/// url = 'http://hl7.org/fhir/uv/omop/StructureMap/MeasurementMap' /// name = 'MeasurementMap' /// title = 'Mapping Observation resource to Measurement OMOP Domain' /// status = 'draft' uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as source uses "http://hl7.org/fhir/uv/omop/StructureDefinition/Measurement" alias MeasureTable as target group Measures(source src : Observation, target tgt : MeasureTable) { src where ('vital-signs' | 'laboratory').supersetOf(Observation.category.coding.code) then { src.code as s -> tgt then { s.coding as sc -> tgt then { sc.code as a -> tgt.measurement_concept_id = a; }; }; // src.id as id -> tgt.measurement_id = cast(id, "integer"); src.effective : dateTime as edt -> tgt.measurement_datetime = edt, tgt.measurement_date = cast(edt, 'date'); // src.subject as s -> tgt then { src.effective : instant as einst -> tgt.measurement_datetime = cast(einst, 'dateTime'), tgt.measurement_date = cast(einst, 'date'); src.effective : Period as s -> tgt then { s.start as eps -> tgt.measurement_datetime = cast(eps, 'dateTime'), tgt.measurement_date = cast(eps, 'date'); }; src.issued as s where (src.issued.toDate != src.effectiveDateTime) -> tgt.measurement_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_source_value = b; src.interpretation as c -> tgt.value_as_concept_id = c; src.note as d -> tgt.measurement_source_value = d; } "OnlyMeasures"; }
{
"resourceType": "StructureMap",
"id": "MeasurementMap",
"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/MeasurementMap",
"version": "1.0.0-ballot",
"name": "MeasurementMap",
"title": "Mapping Observation resource to Measurement 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 considered measurements to OMOP Measurement Table objects. Currently, this is done by considering the category code and mapping 'vital-signs' and 'laboratory' 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/Measurement",
"mode": "target",
"alias": "MeasureTable"
}
],
"group": [
{
"name": "Measures",
"input": [
{
"name": "src",
"type": "Observation",
"mode": "source"
},
{
"name": "tgt",
"type": "MeasureTable",
"mode": "target"
}
],
"rule": [
{
"name": "OnlyMeasures",
"source": [
{
"context": "src",
"condition": "('vital-signs' | 'laboratory').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": "measurement_concept_id",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
}
]
}
]
}
],
"documentation": "src.id as id -> tgt.measurement_id = cast(id, \"integer\");"
},
{
"name": "effectiveDateTime",
"source": [
{
"context": "src",
"type": "dateTime",
"element": "effective",
"variable": "edt"
}
],
"target": [
{
"context": "tgt",
"element": "measurement_datetime",
"transform": "copy",
"parameter": [
{
"valueId": "edt"
}
]
},
{
"context": "tgt",
"element": "measurement_date",
"transform": "cast",
"parameter": [
{
"valueId": "edt"
},
{
"valueString": "date"
}
]
}
],
"documentation": "src.subject as s -> tgt then {"
},
{
"name": "effectiveInstant",
"source": [
{
"context": "src",
"type": "instant",
"element": "effective",
"variable": "einst"
}
],
"target": [
{
"context": "tgt",
"element": "measurement_datetime",
"transform": "cast",
"parameter": [
{
"valueId": "einst"
},
{
"valueString": "dateTime"
}
]
},
{
"context": "tgt",
"element": "measurement_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": "eps"
}
],
"target": [
{
"context": "tgt",
"element": "measurement_datetime",
"transform": "cast",
"parameter": [
{
"valueId": "eps"
},
{
"valueString": "dateTime"
}
]
},
{
"context": "tgt",
"element": "measurement_date",
"transform": "cast",
"parameter": [
{
"valueId": "eps"
},
{
"valueString": "date"
}
]
}
]
}
]
},
{
"name": "issued",
"source": [
{
"context": "src",
"element": "issued",
"variable": "s",
"condition": "(src.issued.toDate != src.effectiveDateTime)"
}
],
"target": [
{
"context": "tgt",
"element": "measurement_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_source_value",
"transform": "copy",
"parameter": [
{
"valueId": "b"
}
]
}
]
},
{
"name": "interpretation",
"source": [
{
"context": "src",
"element": "interpretation",
"variable": "c"
}
],
"target": [
{
"context": "tgt",
"element": "value_as_concept_id",
"transform": "copy",
"parameter": [
{
"valueId": "c"
}
]
}
]
},
{
"name": "note",
"source": [
{
"context": "src",
"element": "note",
"variable": "d"
}
],
"target": [
{
"context": "tgt",
"element": "measurement_source_value",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
}
]
}