OHDSI Home | Forums | Wiki | Github

Measurement table examples

In The Book of OHDSI there are examples of records for the table Person and others, but not for the Measurement table. I am an OMOP noob and I need to convert patient data (in csv) to OMOP tables (ETL). I am having trouble converting lab test results (blood tests, urine tests, etc) into the Measurement table. Some examples, showing the test results and their correspondent records in the Measurement table, would be very helpful to me. For instance, how do I create Measurement records for the following results:

Full Haemogram: Hemoglobin  9.1   g/dl    Reference values: 11.5 - 15.5 g/dl
                Lymphocyte  0.79  mil/mm³ Reference values: 20 - 45 %  / 1.50 - 3.50 mil/mm³

Reference values can also appear just for one gender: Women: Inferior to 31 U/L. How to encode them in this case?

@dilvan:

Lab tests are generally standardized to LOINC. So you would put Hemoglobin F [Presence] in Blood and Lymphocytes [#/volume] in Blood into the measurement_concept_id, 9.1 and 0.79 into the value_as_number and gram per liter and million per microliter into unit_concept_id. For the reference values, you have range_low and range_high, and you put the values that have the same unit as the actual value (1.5 and 3.5 respectively for the lymphocytes). If you have different values for women and men you put the reference value according to the sex of the patient you are recording.

As an example, for the Hemoglobin 9.1 g/dl Reference values: 11.5 - 15.5 g/dl lab result, the Measurement record would be (I used 8713 for g/dL instead of 8636 for g/L and 3005872 instead of 3015745):

measurement_id: bigint generated during ETL
person_id: bigint generated during ETL
measurement_concept_id: 3005872
measurement_date: 2020-08-09
value_as_number: 9.1
unit_concept_id: 8713
range_low: 11.5
range_high: 15.5
provider_id: bigint generated during ETL
measurement_source_value: "Hemoglobin  9.1   g/dl    Reference values: 11.5 - 15.5 g/dl"

Correct?

Also:

  1. If a reference value = < 5.0 mg/L, I use just range_high: 5.0 and do not include range_low. Correct?
  2. We are putting the lab result string in measurement_source_value. What should we put in unit_source_value and value_source_value? The user guidance is STANDARD TEXT FOR SOURCE VALUES.
  3. To be a measurement_concept_id, a term only needs to belong to the domain Measurement (it doesn’t need to belong to the class Lab Test). For instance, does the lab result Coronavirus 2019-nCoV not detected (there is no information about the specific test used) have measurement_concept_id = 40218804 and value_as_concept_id = 45878588 (Not Present)?

more examples here
https://physionet.org/content/mimic-iv-demo-omop/0.9/1_omop_data_csv/measurement.csv

The examples you provided (thanks) answer the question: What should we put in unit_source_value and value_source_value ?
I hope now my conversion example is complete:

measurement_id: bigint generated during ETL
person_id: bigint generated during ETL
measurement_concept_id: 3005872
measurement_date: 2020-08-09
value_as_number: 9.1
unit_concept_id: 8713
range_low: 11.5
range_high: 15.5
provider_id: bigint generated during ETL
measurement_source_value: "Hemoglobin  9.1   g/dl    Reference values: 11.5 - 15.5 g/dl"
unit_source_value: "9.1"
value_source_value: "g/dL"
t