1 of 20

OMOP Measurements and Devices

Bridge2AI Standards Module

Jared Houghtaling

Software Developer/Analyst

Tufts Clinical and Translational Science Institute (CTSI)

Office Hours 18 May 2024

An overview of conventions for the MEASUREMENT and DEVICE domains

11 September 2025

2 of 20

Content

  • Intro to the MEASUREMENT table
  • Domain constraints and mapping approaches
  • Importance of units in OMOP CDM
  • A note about Observations
  • Intro to the DEVICE table

3 of 20

Structure of OMOP

HEALTH FACILITY

FINANCES & BILLING

ANALYTICS

&

GROUPING

METADATA

STANDARD TERMS

EVENTS

RECORDED

FOR A GIVEN

PATIENT

4 of 20

OMOP Vocab Content

OMOP Vocab Statistics:

  • 140+ vocabularies
  • 40+ domains
  • 10M+ concepts
  • ~4M standard concepts
  • ~1M classification concepts
  • ~80M Concept relationships
  • ~100M Ancestral relations
  • ~3M Concept synonyms

5 of 20

OMOP Vocab Content

OMOP Vocab Statistics:

  • 140+ vocabularies
  • 40+ domains
  • 10M+ concepts
  • ~4M standard concepts
  • ~1M classification concepts
  • ~80M Concept relationships
  • ~100M Ancestral relations
  • ~3M Concept synonyms

6 of 20

OMOP Vocab Content

Relevant Domains for MEASUREMENT Events:

  • MEASUREMENT
  • MEAS VALUE
  • UNIT
  • OPERATOR
  • TYPE CONCEPT

* Note that Measurements have the most domain-constrained concept_id fields of any event type

7 of 20

Measurements

(MOST) LOINC Codes are Standard in OMOP

  • Look-up LOINC code (e.g. 28803-5) in concept_code field of CONCEPT table; make sure you filter on LOINC vocab & MEASUREMENT domain!
  • Join associated concept_id for LOINC code (e.g. 3005795) on CONCEPT_RELATIONSHIP table’s concept_id_1, where relationship_id = ‘Maps to’
      • If code is standard, will map to itself. If non-standard, will map to replacement
  • Join associated concept_id_2 from CONCEPT_RELATIONSHIP back on CONCEPT to get its details and ensure it is STANDARD
  • Place this concept_id in your measurement_concept_id field (see demo)

8 of 20

Measurement Values & Operators

IF NUMERIC (or Numeric along with <, >, =, etc.)

  • (Optional) Verify that LOINC code does not have expected categorical responses for number (e.g. Has Answer)
  • Extract numeric-only portion from value and place in value_as_number
  • If relevant, extract operator and MAP to operator_concept_id (+ source_value)

IF CATEGORICAL (e.g. “POSITIVE”)

  • Map categorical value to concept_id in the MEAS VALUE domain, favoring LOINC Answers where duplicated
    • E.g. “POSITIVE” = 45884084
    • Note: while OBSERVATION has a ‘value_as_string’ field where you can place the literal value, MEASUREMENT does not.
    • Note: be careful with value_source_value fields, as they can contain free text with MRNs and dates

9 of 20

Measurement Range

Range Low and Range High are useful in contextualizing value

  • Be sure to check for consistent units
  • If unit mismatch, update the range values to match meas value unit, not the other way around
  • Non-required fields, and some measurements only have one side of the range (not a problem)

10 of 20

Introduction to Units in OMOP CDM

  • Units provide context for the combination of measurement and value
    • Important within a single site
    • VERY IMPORTANT when investigating measurements across a consortium
  • LOINC codes (almost always) provide a combination of laboratory test and associated unit
    • Many EHR systems, EPIC included, do not enforce the embedded units in laboratory measurements recorded in LOINC

11 of 20

Challenges with Units

  1. The unit value was simply omitted from a laboratory measurement
    • Units are rarely required to accompany a measurement recording during input
  2. The unit provided for a given measurement is nonsensical
    • The technician selects ‘K’ (Kelvin) for a concentration measurement reported in K/L (thousand/liter).
  3. A single measurement has multiple unit possibilities depending on measurement device or source system
    • Body weight taken in the ICU as KG, in other dept’s as LBS

12 of 20

Simplest Option: DQD Plausible Units

13 of 20

Simplest Option: DQD Plausible Units

  • At Tufts, we’ve converted the DQD CSV file to an expanded table of measurement concept + unit concept
  • Filtering on possible_units = 1 allows us to infer units for those measurements (~20%) where only 1 unit is plausible

14 of 20

ONCOLOGY Extension Columns

  1. Measurement_event_id and meas_event_field_concept_id

15 of 20

Devices

HEALTH FACILITY

FINANCES & BILLING

ANALYTICS

&

GROUPING

METADATA

STANDARD TERMS

EVENTS

RECORDED

FOR A GIVEN

PATIENT

16 of 20

Devices

17 of 20

OMOP Vocab Content

Relevant Domains for DEVICE Events:

  • DEVICE
  • UNIT
  • TYPE CONCEPT

* Note that Devices have other fields that capture device-specific info (unique_device_id, production_id) WARNING – these fields are free text and should be scrutinized for any potential PHI.

18 of 20

Devices

(MOST) Standard Devices are in SNOMED (+ other regional vocabularies)

  • Look-up SNOMED code (e.g. 28803-5) in concept_code field of CONCEPT table; make sure you filter DEVICE domain!
  • Join associated concept_id for SNOMED code (e.g. 467994009) on CONCEPT_RELATIONSHIP table’s concept_id_1, where relationship_id = ‘Maps to’
      • If code is standard, will map to itself. If non-standard, will map to replacement
  • Join associated concept_id_2 from CONCEPT_RELATIONSHIP back on CONCEPT to get its details and ensure it is STANDARD
  • Place this concept_id in your device_concept_id field

19 of 20

Device Quanity and Units� (most relevant for transfusions)

  • If there is a record of device exposure in the source but no quantity value, then set to 1.
  • There is no standardization requirement for units associated with DEVICE_CONCEPT_IDs, however, it is the responsibility of the ETL to choose the most plausible unit. If the source unit is NULL (applicable to cases when there’s no numerical value or when it doesn’t require a unit), keep unit_concept_id NULL as well.
  • Using the blood transfusion example, blood transfusion is represented by the DEVICE_CONCEPT_ID and the unit (mL) would be housed in the UNIT_SOURCE_VALUE and mapped to a standard concept in the unit domain.

20 of 20

Indirect Mapping – Discussion

  • If you have flowsheet measurements related to a ventilator, should you also populate a row for the ventilator as a device?