-
Notifications
You must be signed in to change notification settings - Fork 24
CONCEPT_NUMERIC
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
- 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. |
- 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’ |
- 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
- 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.
Oncology Working Group Publications/Presentation
Data Model
- Cancer Models Representation
- EPISODE
- EPISODE_EVENT
- MEASUREMENT
- CONCEPT_NUMERIC
- Disease Episode Model
Vocabularies
OMOP Model
- Populating the OMOP Oncology Extension
- NAACCR Tumor Registry
- EHR and Claims