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.
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. |
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. |
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. |
Records in the MEASUREMENT table come from three sources.
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.
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.
The tests failing below have been found to be related to data found in the Synthea data set.
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.
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.