Skip to content
Michael Gurley edited this page Apr 4, 2020 · 1 revision

CONCEPT_NUMERIC is an extension of the OMOP CDM and vocabulary that supports formal representation of concepts containing numeric values or ranges. This proposal has not yet been ratified by a larger CDM Workgroup. However, it plays a critical role in supporting ETL from tumor registries.

Background * NAACCR vocabulary includes concepts representing numeric values or numeric ranges. Often, these concepts also contain measurement units. For example, “Described as less than 1 centimeter (cm)". In OMOP CDM, these concepts are normally used in Measurement and Observation tables to store value_as_concept_id. Analysis of these data is currently possible only if the user knows exactly which concepts are used to represent range or value, including their respective units. It is not possible to perform analysis on numeric values of these data, nor is it possible to differentiate numeric values by units. For example, it is not impossible to find tumors which size is less than 2 cm by issuing the following simple query:

SELECT * 
FROM measurement
WHERE measurement_concept_id = 4139794	-- Tumor size
AND ( (value_as_number <= 2 and unit_concept_id = 8582) -- Centimeter
OR (value_as_number <= 20 and unit_concept_id = 8588)) --Millimeter
AND COALESCE(operator_concept_id, 4171754) = 4171754 -- Less than or equal

One has to know exactly the concepts that cover this range.

Proposal

  1. Add a new table, CONCEPT_NUMERIC

In this table, numeric values, units and math operators indicating range limits (less than) corresponding to “numeric” concepts will be stored.

Field Required Type Description
concept_id Yes integer A foreign key that refers to a respective concept in the Standardized Vocabularies.
value_as_number Yes float A value of the concept expressed as a numeric value.
unit_concept_id No integer A foreign key to a Standard Concept ID of the concept units in the Standardized Vocabularies that belong to the 'Unit' domain.
operator_concept_id yes float A foreign key identifier to the predefined Concept in the Standardized Vocabularies reflecting the mathematical operator that is applied to the value_as_number. Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain.
  1. Conventions for representing “numeric” concepts in CONCEPT_NUMERIC

Numeric ranges that have lower and upper limits will be represented by two records in this table. Numeric ranges containing only lower or upper limit will be represented by one record.

Below are examples of representing the following “numeric” concepts in CONCEPT_NUMERIC:

concept_id concept_name domain_id vocabulary_id concept_class_id standard_concept concept_code
45883535 Mild Meas Value LOINC Answer S LA6752-5
35920053 Described as "less than 1 centimeter (cm)" Meas Value NAACCR Cancer Identification S melanoma_skin@2800@991
35919956 Described as "less than 2 cm," or "greater than 1 cm," or "between 1 cm and 2 cm" Meas Value NAACCR Cancer Identification S melanoma_mouth_other@2800@992

CONCEPT_NUMERIC

concept_id value_as_number unit_concept_id operator_concept_id Description
45883535 1 1 is numeric value of ‘Mild’
35920053 1 8582 4171756 ‘Less than 1 cm’
35919956 1 8582 4171755 Lower limit of ‘between 1 cm and 2 cm’
35919956 2 8582 4171754 Upper limit of ‘between 1 cm and 2 cm’
  1. Population of Measurement and Observation tables with the data represented by “numeric” concepts

When data are represented by “numeric” concepts, we recommend populating value_as_number, unit_id and operator_id (if available) along with value_as_concept_id. These additional values can be easily extracted from Concept_Numeric for the respective concept. Below is an example of Measurement record representing ‘Mild’ (45883535) ‘Pain intensity rating scale’ (4137083):

measurement_id measurement_concept_id value_as_concept_id value_as_number
1111111 4137083 45883535 1

In case, when a numeric concept represents a range with both lower and upper limits (e.g. ‘between 1 and 2 cm’), we recommend creating two records representing respectively lower and upper limit of the range. Values for value_as_number, unit_id and operator_id will be extracted from Concept_Numeric. Below is an example of Measurement record representing ‘Tumor size’ (4139794) ‘Described as "less than 2 cm," or "greater than 1 cm," or "between 1 cm and 2 cm"’ (35919956):

measurement_id measurement_concept_id value_as_concept_id value_as_number unit_concept_id operator_concept_id
2222222 4139794 35919956 1 8582 4171755
3333333 4139794 35919956 2 8582 4171754

This representation was also suggested in this Forum post: https://forums.ohdsi.org/t/how-to-implement-a-lab-test-range-result-in-measurement-table/5221

  1. Queries to analyze data represented by “numeric” concepts When data represented by “numeric” concepts is stored in the Measurement table as described in the previous section, queries based on numeric values become possible against this data.

For example:

SELECT * 
FROM measurement
WHERE measurement_concept_id = 4139794	-- Tumor size
AND ( (value_as_number <= 2 and unit_concept_id = 8582) -- Centimeter
OR (value_as_number <= 20 and unit_concept_id = 8588)) --Millimeter
AND COALESCE(operator_concept_id, 4171754) = 4171754 -- Less than or equal

This query will identify records containing either regular numeric values (e.g. value_as_number = 0.5) or “numeric” concepts.

Clone this wiki locally