MEASUREMENT: Mapping of FHIR Observation and Procedure Resources to OMOP MEASUREMENT Table

This document details the design and decisions for implementing mapping of FHIR Observation and Procedure resources to the OMOP MEASUREMENT Table.

The following references were used to inform this implementation.

References for FHIR Observation (mapped to OMOP MEASUREMENT)

General Mapping Resources This is the fhir-to-omop documentation for general FHIR and OMOP information.
FHIR Observation (STU3) FHIR Documentation for the Observation resource. The following version have been considered.
MEASUREMENT This is the OMOP documentation for the MEASUREMENT table.

References for Procedure

General Mapping Resources This is the fhir-to-omop documentation for general FHIR and OMOP information.
FHIR Procedure (STU3) FHIR Documentation for the Procedure resource. The following version have been considered.
MEASUREMENT Procedures with codes for the measurement domain are put into the MEASUREMENT table. This is the OMOP documentation for the MEASUREMENT table.

Reference Data

The resoures show below are used for specific use cases and examples

0a2a950e-59b0-4669-8007-a505a3f14cbc This patient has examples of FHIR Procedure resources, and specifically has examples of Procedure resources that use codes other than procedure codes (e.g. Measurement, Observation, and Condition). The set of files in this folder represent the full set of FHIR resources for the synthmass patient 0a2a950e-59b0-4669-8007-a505a3f14cbc.

Mapping Details

Records in the MEASUREMENT table come from three sources.

Measurements from Observations

FHIR: OMOP MEASUREMENT records are mapped from FHIR Observation resources. Observations that are in the LAB domain or in the VITAL_SIGNS domain are mapped to OMOP MEASUREMENT records Attribute level details of how FHIR Observation resources are parsed are in the ObservationParser class.

OMOP: Attribute level details of how the parser is mapped to OMOP records are in the ObservationBuilder class.

Measurements from Procedures

FHIR: OMOP MEASUREMENT records are mapped from FHIR Procedure resources. Attribute level details of how FHIR Procedure resources are parsed are in the ProcedureParser class.

OMOP: Attribute level details of how the parser is mapped to OMOP records are in the OmopProcedureBuilder class.

We have found FHIR Procedure resources using codes that are not procedure codes. These codes include codes for Measurements, Observations, and Conditions. The OMOP Data Quality Dashboard (DQD) tests indicated all records in the procedure table should have a procedure_concept_id that mapps to a concept that is in the Procedure domain (i.e. domain_id = "Procedure"). Therefore, when Procedure FHIR resources are found that have a coding that is for a Measurement, Observation, or Condition these FHIR procedures are not written to the OMOP procedure table but are respetively written to the measurement, observation_occurrence, or condition tables. The code for this is also in the OmopProcedureBuilder class. DQD results are shown below.

Testing Results 2022-04-08

On April 8th, 2022 we updated our instance of DQD witch resulted in a number of new tests failing. These failures have been remediated with the exceptions shown below. We are currently not implementing visit_detail. The other failures have been confirmed to be accurate reflections of the source test data.

Passing Tests 2022-04-08



Previously Failing Tests 2022-04-08




Data Quality Dashboard results for MEASUREMENT

Failing due to data

The tests failing below have been found to be related to data found in the Synthea data set.

Failing due to UCUM codes not found in OHDSI CONCEPTS Table

The tests failing below have been found to be related to concepts in the Synthea data that have UCUM codes that are not in OHDSI.

Examples of FHIR Procedure Resources That Have Non-procedure Codings

The following is a list of FHIR resources found to have non-procedure codings (i.e. domain_id should be "Procedure" and is not). The person_source_code shown is the ID for the patient found on synthmass. Click here to download the larger list.