MEASUREMEN
The meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.
|
-Operators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.
+Operators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.
|
integer
@@ -10720,7 +10720,7 @@ EPISODE
episode_start_date
|
-The date when the Episode beings.
+The date when the Episode begins.
|
Please see [article] for how to define an Episode start date.
diff --git a/docs/cdm60.html b/docs/cdm60.html
index 2234d257..e800e7ce 100644
--- a/docs/cdm60.html
+++ b/docs/cdm60.html
@@ -4691,7 +4691,7 @@ MEASUREMEN
The meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.
|
-Operators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.
+Operators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.
|
integer
diff --git a/docs/oncology.html b/docs/oncology.html
index 55d37a74..b09b79a1 100644
--- a/docs/oncology.html
+++ b/docs/oncology.html
@@ -611,7 +611,7 @@ episode
episode_start_date
|
-The date when the Episode beings.
+The date when the Episode begins.
|
Please see [article] for how to define an Episode start date.
diff --git a/docs/search.json b/docs/search.json
index 2f1be572..a7310312 100644
--- a/docs/search.json
+++ b/docs/search.json
@@ -298,7 +298,7 @@
"href": "cdm60.html#clinical-data-tables",
"title": "OMOP CDM v6.0",
"section": "Clinical Data Tables",
- "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR. There is a helpful rule listed in table below for how to derive BIRTH_DATETIME if it is not available in the source. New to CDM v6.0 The person’s death date is now stored in this table instead of the separate DEATH table. In the case that multiple dates of death are given in the source data the ETL should make a choice as to which death date to put in the PERSON table. Any additional dates can be stored in the OBSERVATION table using the concept 4265167 which stands for ‘Date of death’ . Similarly, the cause of death is stored in the CONDITION_OCCURRENCE table using the CONDITION_STATUS_CONCEPT_ID 32891 for ‘Cause of death’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\nThis field is the death date to be used in analysis, as determined by the ETL logic. Any additional information about a Person’s death is stored in the OBSERVATION table with the concept_id 4306655 or in the CONDITION_OCCURRENCE .\n\n\nIf there are multiple dates of death given for a Person, choose the one that is deemed most reliable. This may be a discharge from the hospital where the Person is listed as deceased or it could be latest death date provided. If a patient has clinical activity more than 60 days after the death date given in the source, it is a viable option to drop the death record as it may have been falsely reported. Similarly, if the death record is from a reputable source (e.g. government provided information) it is also a viable option to remove event records that occur in the data > 60 days after death.\n\n\ndatetime\n\n\nNo\n\n\n\n\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between and Hispanic. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of or Hispanic store that value from the source data here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, without bed, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit: visit_end_datetime = visit_start_datetime - Emergency Room Visit: visit_end_datetime = visit_start_datetime - Inpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime and visit_type_concept_id with 32220 patient to identify the visit as incomplete. - All other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the discharge_to_source_value to a standard concept in the visit domain. If not available set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nVISIT_DETAIL\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 patient to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit detail record. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. If not available, set to 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_detail_parent_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure). \n\n\ninteger\n\n\nNo\n\n\nfield should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\nNo\n\n\nNo\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures. If the user finds the same procedure over concurrent days, it is assumed those records are part of a procedure lasting more than a day. This logic is in lieu of the procedure_end_date, which will be added in a future version of the CDM.\nETL Conventions\nIf a procedure lasts more than a day, then it should be recorded as a separate record for each day the procedure occurred, this logic is in lieu of the PROCEDURE_END_DATE, which will be added in a future version of the CDM. When dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are: - Same Procedure - Same PROCEDURE_DATETIME - Same Visit Occurrence or Visit Detail - Same Provider - Same Modifier for Procedures. Source codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the to value relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the to value relationship in the vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here. New to CDM v6.0 An Observation can now be linked to other records in the CDM instance using the fields OBSERVATION_EVENT_ID and OBS_EVENT_FIELD_CONCEPT_ID. To link another record to an Observation, the primary key goes in OBSERVATION_EVENT_ID (CONDITION_OCCURRENCE_ID, DRUG_EXPOSURE_ID, etc.) and the Concept representing the field where the OBSERVATION_EVENT_ID was taken from go in the OBS_EVENT_FIELD_CONCEPT_ID. For example, a CONDITION_OCCURRENCE of Asthma might be linked to an Observation of a family history of Asthma. In this case the CONDITION_OCCURRENCE_ID of the Asthma record would go in OBSERVATION_EVENT_ID of the family history record and the CONCEPT_ID 1147127 would go in OBS_EVENT_FIELD_CONCEPT_ID to denote that the OBSERVATION_EVENT_ID represents a CONDITION_OCCURRENCE_ID.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain though they still should be Standard Concepts.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER), a verbatim string (VALUE_AS_STRING), or a datetime (VALUE_AS_DATETIME). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_datetime\n\n\nIt is possible that some Observation records might store a result as a date value.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\noffset\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nSURVEY_CONDUCT\nTable Description\nThe SURVEY_CONDUCT table is used to store an instance of a completed survey or questionnaire.\nUser Guide\nThis table captures details of the individual questionnaire such as who completed it, when it was completed and to which patient treatment or visit it relates to (if any).\nETL Conventions\nEach SURVEY has a SURVEY_CONCEPT_ID, a concept in the CONCEPT table identifying the questionnaire e.g. EQ5D, VR12, SF12. Each questionnaire should exist in the CONCEPT table. Each SURVEY can be optionally related to a specific Visit in order to link it both to the Visit during which it was completed and any subsequent Visit where treatment was assigned based on the patient’s responses.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nsurvey_conduct_id\n\n\nUnique identifier for each completed survey.\n\n\nFor each instance of a survey completion create a unique identifier.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nsurvey_concept_id\n\n\nThis is the Concept that represents the survey that was completed.\n\n\nPut the CONCEPT_ID that identifies the survey that the Person completed. There is no specified domain for this table but the concept class ‘staging/scales’ contains many common surveys. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsurvey_start_date\n\n\nDate on which the survey was started.\n\n\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_start_datetime\n\n\n\n\nIf no time given, set to midnight.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_end_date\n\n\nDate on which the survey was completed.\n\n\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_end_datetime\n\n\n\n\nIf no time given, set to midnight.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThis is the Provider associated with the survey completion.\n\n\nThe ETL may need to make a choice as to which Provider to put here. This could either be the provider that ordered the survey or the provider who observed the completion of the survey.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nassisted_concept_id\n\n\nThis is a Concept that represents whether the survey was completed with assistance or independently.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrespondent_type_concept_id\n\n\nThis is a Concept that represents who actually recorded the answers to the survey. For example, this could be the patient or a research associate.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ntiming_concept_id\n\n\nThis is a Concept that represents the timing of the survey. For example this could be the 3-month follow-up appointment.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncollection_method_concept_id\n\n\nThis Concept represents how the responses were collected.\n\n\nUse the concepts that have the relationship ‘Has Answer’ with the CONCEPT_ID 42529316.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nassisted_source_value\n\n\nSource value representing whether patient required assistance to complete the survey. Example: ‘Completed without assistance’, ‘Completed with assistance’.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrespondent_type_source_value\n\n\nSource code representing role of person who completed the survey.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ntiming_source_value\n\n\nText string representing the timing of the survey. Example: Baseline, 6-month follow-up.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncollection_method_source_value\n\n\nThe collection method as it appears in the source data.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_source_value\n\n\nThe survey name as it appears in the source data.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_source_concept_id\n\n\n\n\nIf unavailable, set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsurvey_source_identifier\n\n\nUnique identifier for each completed survey in source system.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalidated_survey_concept_id\n\n\n\n\nIf unavailable, set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalidated_survey_source_value\n\n\nSource value representing the validation status of the survey.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_version_number\n\n\nVersion number of the questionnaire or survey used.\n\n\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the Survey occurred.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nresponse_visit_occurrence_id\n\n\nThe Visit during which any treatment related to the Survey was carried out.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE"
+ "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR. There is a helpful rule listed in table below for how to derive BIRTH_DATETIME if it is not available in the source. New to CDM v6.0 The person’s death date is now stored in this table instead of the separate DEATH table. In the case that multiple dates of death are given in the source data the ETL should make a choice as to which death date to put in the PERSON table. Any additional dates can be stored in the OBSERVATION table using the concept 4265167 which stands for ‘Date of death’ . Similarly, the cause of death is stored in the CONDITION_OCCURRENCE table using the CONDITION_STATUS_CONCEPT_ID 32891 for ‘Cause of death’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\nThis field is the death date to be used in analysis, as determined by the ETL logic. Any additional information about a Person’s death is stored in the OBSERVATION table with the concept_id 4306655 or in the CONDITION_OCCURRENCE .\n\n\nIf there are multiple dates of death given for a Person, choose the one that is deemed most reliable. This may be a discharge from the hospital where the Person is listed as deceased or it could be latest death date provided. If a patient has clinical activity more than 60 days after the death date given in the source, it is a viable option to drop the death record as it may have been falsely reported. Similarly, if the death record is from a reputable source (e.g. government provided information) it is also a viable option to remove event records that occur in the data > 60 days after death.\n\n\ndatetime\n\n\nNo\n\n\n\n\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between and Hispanic. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of or Hispanic store that value from the source data here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, without bed, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit: visit_end_datetime = visit_start_datetime - Emergency Room Visit: visit_end_datetime = visit_start_datetime - Inpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime and visit_type_concept_id with 32220 patient to identify the visit as incomplete. - All other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the discharge_to_source_value to a standard concept in the visit domain. If not available set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nVISIT_DETAIL\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 patient to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit detail record. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. If not available, set to 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_detail_parent_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure). \n\n\ninteger\n\n\nNo\n\n\nfield should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\nNo\n\n\nNo\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures. If the user finds the same procedure over concurrent days, it is assumed those records are part of a procedure lasting more than a day. This logic is in lieu of the procedure_end_date, which will be added in a future version of the CDM.\nETL Conventions\nIf a procedure lasts more than a day, then it should be recorded as a separate record for each day the procedure occurred, this logic is in lieu of the PROCEDURE_END_DATE, which will be added in a future version of the CDM. When dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are: - Same Procedure - Same PROCEDURE_DATETIME - Same Visit Occurrence or Visit Detail - Same Provider - Same Modifier for Procedures. Source codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the to value relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the to value relationship in the vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here. New to CDM v6.0 An Observation can now be linked to other records in the CDM instance using the fields OBSERVATION_EVENT_ID and OBS_EVENT_FIELD_CONCEPT_ID. To link another record to an Observation, the primary key goes in OBSERVATION_EVENT_ID (CONDITION_OCCURRENCE_ID, DRUG_EXPOSURE_ID, etc.) and the Concept representing the field where the OBSERVATION_EVENT_ID was taken from go in the OBS_EVENT_FIELD_CONCEPT_ID. For example, a CONDITION_OCCURRENCE of Asthma might be linked to an Observation of a family history of Asthma. In this case the CONDITION_OCCURRENCE_ID of the Asthma record would go in OBSERVATION_EVENT_ID of the family history record and the CONCEPT_ID 1147127 would go in OBS_EVENT_FIELD_CONCEPT_ID to denote that the OBSERVATION_EVENT_ID represents a CONDITION_OCCURRENCE_ID.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain though they still should be Standard Concepts.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER), a verbatim string (VALUE_AS_STRING), or a datetime (VALUE_AS_DATETIME). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_datetime\n\n\nIt is possible that some Observation records might store a result as a date value.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\noffset\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nSURVEY_CONDUCT\nTable Description\nThe SURVEY_CONDUCT table is used to store an instance of a completed survey or questionnaire.\nUser Guide\nThis table captures details of the individual questionnaire such as who completed it, when it was completed and to which patient treatment or visit it relates to (if any).\nETL Conventions\nEach SURVEY has a SURVEY_CONCEPT_ID, a concept in the CONCEPT table identifying the questionnaire e.g. EQ5D, VR12, SF12. Each questionnaire should exist in the CONCEPT table. Each SURVEY can be optionally related to a specific Visit in order to link it both to the Visit during which it was completed and any subsequent Visit where treatment was assigned based on the patient’s responses.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nsurvey_conduct_id\n\n\nUnique identifier for each completed survey.\n\n\nFor each instance of a survey completion create a unique identifier.\n\n\nbigint\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\nbigint\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nsurvey_concept_id\n\n\nThis is the Concept that represents the survey that was completed.\n\n\nPut the CONCEPT_ID that identifies the survey that the Person completed. There is no specified domain for this table but the concept class ‘staging/scales’ contains many common surveys. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsurvey_start_date\n\n\nDate on which the survey was started.\n\n\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_start_datetime\n\n\n\n\nIf no time given, set to midnight.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_end_date\n\n\nDate on which the survey was completed.\n\n\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_end_datetime\n\n\n\n\nIf no time given, set to midnight.\n\n\ndatetime\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThis is the Provider associated with the survey completion.\n\n\nThe ETL may need to make a choice as to which Provider to put here. This could either be the provider that ordered the survey or the provider who observed the completion of the survey.\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nassisted_concept_id\n\n\nThis is a Concept that represents whether the survey was completed with assistance or independently.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrespondent_type_concept_id\n\n\nThis is a Concept that represents who actually recorded the answers to the survey. For example, this could be the patient or a research associate.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ntiming_concept_id\n\n\nThis is a Concept that represents the timing of the survey. For example this could be the 3-month follow-up appointment.\n\n\nThere is no specific domain or class for this field, just choose the one that best represents the value given in the source.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncollection_method_concept_id\n\n\nThis Concept represents how the responses were collected.\n\n\nUse the concepts that have the relationship ‘Has Answer’ with the CONCEPT_ID 42529316.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nassisted_source_value\n\n\nSource value representing whether patient required assistance to complete the survey. Example: ‘Completed without assistance’, ‘Completed with assistance’.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrespondent_type_source_value\n\n\nSource code representing role of person who completed the survey.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ntiming_source_value\n\n\nText string representing the timing of the survey. Example: Baseline, 6-month follow-up.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncollection_method_source_value\n\n\nThe collection method as it appears in the source data.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_source_value\n\n\nThe survey name as it appears in the source data.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_source_concept_id\n\n\n\n\nIf unavailable, set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsurvey_source_identifier\n\n\nUnique identifier for each completed survey in source system.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalidated_survey_concept_id\n\n\n\n\nIf unavailable, set to 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalidated_survey_source_value\n\n\nSource value representing the validation status of the survey.\n\n\n\n\nvarchar(100)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsurvey_version_number\n\n\nVersion number of the questionnaire or survey used.\n\n\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the Survey occurred.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nresponse_visit_occurrence_id\n\n\nThe Visit during which any treatment related to the Survey was carried out.\n\n\n\n\nbigint\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE"
},
{
"objectID": "cdm60.html#health-system-data-tables",
@@ -354,7 +354,7 @@
"href": "cdm55.html#clinical-data-tables",
"title": "OMOP CDM v5.5",
"section": "Clinical Data Tables",
- "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between “Hispanic” and “Not Hispanic”. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of “Hispanic” or “Not Hispanic” store that value from the source data here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the discharged_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 “Still patient” to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nparent_visit_detail_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of “Condition” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure).”,“The field should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures.\nETL Conventions\nWhen dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are:\n\nSame Procedure\nSame procedure_datetime\nSame Visit Occurrence or Visit Detail\nSame Provider\nSame Modifier for Procedures.\n\nSource codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of “Procedure” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_end_date\n\n\nUse this field to house the date that the procedure ended.\n\n\nThis is meant to be the end date of the procedure. It is not required and for most cases will be the same as the PROCEDURE_START_DATE.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_end_datetime\n\n\nUse this field to house the datetime that the procedure ended.\n\n\nThis is meant to house the end datetime of the procedure and will most often be used in conjunction with the procedure_start_datetime to determine the length of the procedure.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(255)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nproduction_id\n\n\nThis is the Production Identifier (UDI-PI) portion of the Unique Device Identification.\n\n\n\n\nvarchar(255)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nUNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Device. For example, blood transfusions are considered devices and can be given in mL quantities.\n\n\nThis code is mapped to a Standard Unit Concept in the Standardized Vocabularies and the original code is stored here for reference. 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.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Unit necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the “Maps to value” relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the “Maps to value” relationship in the vocabulary.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_source_concept_id\n\n\nThis is the concept representing the VALUE_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using VALUE_AS_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the VALUE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nmeasurement_event_id\n\n\nIf the Measurement record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeas_event_field_concept_id\n\n\nIf the Measurement record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the MEASUREMENT_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_date\n\n\nThis is the date value of the Result of the Observation, if applicable and available.\n\n\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Observation from the source data. Do not get confused with the Observation_source_value which captures source value of the observation mapped to observation_concept_id. This field is the observation result value from the source.\n\n\nIf the observation_source_value was a question, for example, or an observation that requires a result then this field is the answer/ result from the source data. Store the verbatim value that represents the result of the observation_source_value.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_source_concept_id\n\n\nThis is the concept representing the VALUE_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using VALUE_AS_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the VALUE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nNOTE\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n“offset”\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the specimen was collected.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a SPECIMEN_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the SPECIMEN record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the specimen was collected. For example, if the person was in the ICU at the time of the collection the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT"
+ "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between “Hispanic” and “Not Hispanic”. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of “Hispanic” or “Not Hispanic” store that value from the source data here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the discharged_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 “Still patient” to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nparent_visit_detail_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of “Condition” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure).”,“The field should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures.\nETL Conventions\nWhen dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are:\n\nSame Procedure\nSame procedure_datetime\nSame Visit Occurrence or Visit Detail\nSame Provider\nSame Modifier for Procedures.\n\nSource codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of “Procedure” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_end_date\n\n\nUse this field to house the date that the procedure ended.\n\n\nThis is meant to be the end date of the procedure. It is not required and for most cases will be the same as the PROCEDURE_START_DATE.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_end_datetime\n\n\nUse this field to house the datetime that the procedure ended.\n\n\nThis is meant to house the end datetime of the procedure and will most often be used in conjunction with the procedure_start_datetime to determine the length of the procedure.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(255)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nproduction_id\n\n\nThis is the Production Identifier (UDI-PI) portion of the Unique Device Identification.\n\n\n\n\nvarchar(255)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nUNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Device. For example, blood transfusions are considered devices and can be given in mL quantities.\n\n\nThis code is mapped to a Standard Unit Concept in the Standardized Vocabularies and the original code is stored here for reference. 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.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Unit necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the “Maps to value” relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the “Maps to value” relationship in the vocabulary.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_source_concept_id\n\n\nThis is the concept representing the VALUE_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using VALUE_AS_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the VALUE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nmeasurement_event_id\n\n\nIf the Measurement record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nmeas_event_field_concept_id\n\n\nIf the Measurement record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the MEASUREMENT_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_date\n\n\nThis is the date value of the Result of the Observation, if applicable and available.\n\n\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Observation from the source data. Do not get confused with the Observation_source_value which captures source value of the observation mapped to observation_concept_id. This field is the observation result value from the source.\n\n\nIf the observation_source_value was a question, for example, or an observation that requires a result then this field is the answer/ result from the source data. Store the verbatim value that represents the result of the observation_source_value.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvalue_as_source_concept_id\n\n\nThis is the concept representing the VALUE_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using VALUE_AS_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the VALUE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nNOTE\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n“offset”\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the specimen was collected.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a SPECIMEN_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the SPECIMEN record.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the specimen was collected. For example, if the person was in the ICU at the time of the collection the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nVISIT_DETAIL\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT"
},
{
"objectID": "cdm55.html#health-system-data-tables",
@@ -375,7 +375,7 @@
"href": "cdm55.html#standardized-derived-elements",
"title": "OMOP CDM v5.5",
"section": "Standardized Derived Elements",
- "text": "Standardized Derived Elements\n\nDRUG_ERA\nTable Description\nA Drug Era is defined as a span of time when the Person is assumed to be exposed to a particular active ingredient. A Drug Era is not the same as a Drug Exposure: Exposures are individual records corresponding to the source when Drug was delivered to the Person, while successive periods of Drug Exposures are combined under certain rules to produce continuous Drug Eras. Every record in the DRUG_EXPOSURE table should be part of a drug era based on the dates of exposure.\nETL Conventions\nThe SQL script for generating DRUG_ERA records can be found here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe drug_concept_id should conform to the concept class ‘ingredient’ as the drug_era is an era of time where a person is exposed to a particular drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_era_start_date\n\n\n\n\nThe Drug Era Start Date is the start date of the first Drug Exposure for a given ingredient, with at least 31 days since the previous exposure.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_era_end_date\n\n\n\n\nThe Drug Era End Date is the end date of the last Drug Exposure. The End Date of each Drug Exposure is either taken from the field drug_exposure_end_date or, as it is typically not available, inferred using the following rules: For pharmacy prescription data, the date when the drug was dispensed plus the number of days of supply are used to extrapolate the End Date for the Drug Exposure. Depending on the country-specific healthcare system, this supply information is either explicitly provided in the day_supply field or inferred from package size or similar information. For Procedure Drugs, usually the drug is administered on a single date (i.e., the administration date). A standard Persistence Window of 30 days (gap, slack) is permitted between two subsequent such extrapolated DRUG_EXPOSURE records to be considered to be merged into a single Drug Era.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_count\n\n\nThe count of grouped DRUG_EXPOSURE records that were included in the DRUG_ERA row\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngap_days\n\n\n\n\nThe Gap Days determine how many total drug-free days are observed between all Drug Exposure events that contribute to a DRUG_ERA record. It is assumed that the drugs are “not stockpiled” by the patient, i.e. that if a new drug prescription or refill is observed (a new DRUG_EXPOSURE record is written), the remaining supply from the previous events is abandoned. The difference between Persistence Window and Gap Days is that the former is the maximum drug-free time allowed between two subsequent DRUG_EXPOSURE records, while the latter is the sum of actual drug-free days for the given Drug Era under the above assumption of non-stockpiling.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDOSE_ERA\nTable Description\nA Dose Era is defined as a span of time when the Person is assumed to be exposed to a constant dose of a specific active ingredient.\nETL Conventions\nDose Eras will be derived from records in the DRUG_EXPOSURE table and the Dose information from the DRUG_STRENGTH table using a standardized algorithm. Dose Form information is not taken into account. So, if the patient changes between different formulations, or different manufacturers with the same formulation, the Dose Era is still spanning the entire time of exposure to the Ingredient.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndose_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe Concept Id representing the specific drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\nunit_concept_id\n\n\nThe Concept Id representing the unit of the specific drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\ndose_value\n\n\nThe numeric value of the dosage of the drug_ingredient.\n\n\n\n\nfloat\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_era_start_date\n\n\nThe date the Person started on the specific dosage, with at least 31 days since any prior exposure.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_era_end_date\n\n\n\n\nThe date the Person was no longer exposed to the dosage of the specific drug ingredient. An era is ended if there are 31 days or more between dosage records.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nCONDITION_ERA\nTable Description\nA Condition Era is defined as a span of time when the Person is assumed to have a given condition. Similar to Drug Eras, Condition Eras are chronological periods of Condition Occurrence and every Condition Occurrence record should be part of a Condition Era. Combining individual Condition Occurrences into a single Condition Era serves two purposes:\n\nIt allows aggregation of chronic conditions that require frequent ongoing care, instead of treating each Condition Occurrence as an independent event.\nIt allows aggregation of multiple, closely timed doctor visits for the same Condition to avoid double-counting the Condition Occurrences. For example, consider a Person who visits her Primary Care Physician (PCP) and who is referred to a specialist. At a later time, the Person visits the specialist, who confirms the PCP’s original diagnosis and provides the appropriate treatment to resolve the condition. These two independent doctor visits should be aggregated into one Condition Era.\n\nETL Conventions\nEach Condition Era corresponds to one or many Condition Occurrence records that form a continuous interval. The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found here The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe Concept Id representing the Condition.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_era_start_date\n\n\nThe start date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the start date of the very first chronologically recorded instance of the condition with at least 31 days since any prior record of the same Condition.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_era_end_date\n\n\nThe end date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the end date of the final continuously recorded instance of the Condition.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_occurrence_count\n\n\nThe number of individual Condition Occurrences used to construct the condition era.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nEPISODE\nTable Description\nThe EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.\nUser Guide\nValid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nA unique identifier for each Episode.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the episode is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nepisode_concept_id\n\n\nThe EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.\n\n\nChoose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the information from the Oncology workgroup describing how these are defined. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nEpisode\n\n\n\n\nepisode_start_date\n\n\nThe date when the Episode beings.\n\n\nPlease see [article] for how to define an Episode start date.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_start_datetime\n\n\nThe date and time when the Episode begins.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_end_date\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\nPlease see [article] for how to define an Episode end date.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_end_datetime\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_parent_id\n\n\nUse this field to find the Episode that subsumes the given Episode record. This is used in the case that an Episode are nested into each other.\n\n\nIf there are multiple nested levels to how Episodes are represented, the EPISODE_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nEPISODE\n\n\n\n\n\n\nepisode_number\n\n\nFor sequences of episodes, this is used to indicate the order the episodes occurred. For example, lines of treatment could be indicated here.\n\n\nPlease see [article] for the details of how to count episodes.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_object_concept_id\n\n\nA Standard Concept representing the disease phase, outcome, or other abstraction of which the episode consists. For example, if the EPISODE_CONCEPT_ID is treatment regimen then the EPISODE_OBJECT_CONCEPT_ID should contain the chemotherapy regimen concept, like Afatinib monotherapy.\n\n\nEpisode entries from the ‘Disease Episode’ concept class should have an episode_object_concept_id that comes from the Condition domain. Episode entries from the ‘Treatment Episode’ concept class should have an episode_object_concept_id that scome from the ‘Procedure’ domain or ‘Regimen’ concept class.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nProcedure, Regimen\n\n\n\n\nepisode_type_concept_id\n\n\nThis field can be used to determine the provenance of the Episode record, as in whether the episode was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the EPISODE_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nepisode_source_value\n\n\nThe source code for the Episode as it appears in the source data. This code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_source_concept_id\n\n\nA foreign key to a Episode Concept that refers to the code used in the source.\n\n\nGiven that the Episodes are user-defined it is unlikely that there will be a Source Concept available. If that is the case then set this field to zero.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nEPISODE_EVENT\nTable Description\nThe EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.\nUser Guide\nThis connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.\nETL Conventions\nSome episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nUse this field to link the EPISODE_EVENT record to its EPISODE.\n\n\nPut the EPISODE_ID that subsumes the EPISODE_EVENT record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nEPISODE\n\n\n\n\n\n\nevent_id\n\n\nThis field is the primary key of the linked record in the database. For example, if the Episode Event is a Condition Occurrence, then the CONDITION_OCCURRENCE_ID of the linked record goes in this field.\n\n\nPut the primary key of the linked record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_event_field_concept_id\n\n\nThis field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the EVENT_ID came from. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nMetadata"
+ "text": "Standardized Derived Elements\n\nDRUG_ERA\nTable Description\nA Drug Era is defined as a span of time when the Person is assumed to be exposed to a particular active ingredient. A Drug Era is not the same as a Drug Exposure: Exposures are individual records corresponding to the source when Drug was delivered to the Person, while successive periods of Drug Exposures are combined under certain rules to produce continuous Drug Eras. Every record in the DRUG_EXPOSURE table should be part of a drug era based on the dates of exposure.\nETL Conventions\nThe SQL script for generating DRUG_ERA records can be found here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe drug_concept_id should conform to the concept class ‘ingredient’ as the drug_era is an era of time where a person is exposed to a particular drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_era_start_date\n\n\n\n\nThe Drug Era Start Date is the start date of the first Drug Exposure for a given ingredient, with at least 31 days since the previous exposure.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_era_end_date\n\n\n\n\nThe Drug Era End Date is the end date of the last Drug Exposure. The End Date of each Drug Exposure is either taken from the field drug_exposure_end_date or, as it is typically not available, inferred using the following rules: For pharmacy prescription data, the date when the drug was dispensed plus the number of days of supply are used to extrapolate the End Date for the Drug Exposure. Depending on the country-specific healthcare system, this supply information is either explicitly provided in the day_supply field or inferred from package size or similar information. For Procedure Drugs, usually the drug is administered on a single date (i.e., the administration date). A standard Persistence Window of 30 days (gap, slack) is permitted between two subsequent such extrapolated DRUG_EXPOSURE records to be considered to be merged into a single Drug Era.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndrug_exposure_count\n\n\nThe count of grouped DRUG_EXPOSURE records that were included in the DRUG_ERA row\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ngap_days\n\n\n\n\nThe Gap Days determine how many total drug-free days are observed between all Drug Exposure events that contribute to a DRUG_ERA record. It is assumed that the drugs are “not stockpiled” by the patient, i.e. that if a new drug prescription or refill is observed (a new DRUG_EXPOSURE record is written), the remaining supply from the previous events is abandoned. The difference between Persistence Window and Gap Days is that the former is the maximum drug-free time allowed between two subsequent DRUG_EXPOSURE records, while the latter is the sum of actual drug-free days for the given Drug Era under the above assumption of non-stockpiling.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nDOSE_ERA\nTable Description\nA Dose Era is defined as a span of time when the Person is assumed to be exposed to a constant dose of a specific active ingredient.\nETL Conventions\nDose Eras will be derived from records in the DRUG_EXPOSURE table and the Dose information from the DRUG_STRENGTH table using a standardized algorithm. Dose Form information is not taken into account. So, if the patient changes between different formulations, or different manufacturers with the same formulation, the Dose Era is still spanning the entire time of exposure to the Ingredient.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndose_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe Concept Id representing the specific drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\nunit_concept_id\n\n\nThe Concept Id representing the unit of the specific drug ingredient.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\ndose_value\n\n\nThe numeric value of the dosage of the drug_ingredient.\n\n\n\n\nfloat\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_era_start_date\n\n\nThe date the Person started on the specific dosage, with at least 31 days since any prior exposure.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ndose_era_end_date\n\n\n\n\nThe date the Person was no longer exposed to the dosage of the specific drug ingredient. An era is ended if there are 31 days or more between dosage records.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nCONDITION_ERA\nTable Description\nA Condition Era is defined as a span of time when the Person is assumed to have a given condition. Similar to Drug Eras, Condition Eras are chronological periods of Condition Occurrence and every Condition Occurrence record should be part of a Condition Era. Combining individual Condition Occurrences into a single Condition Era serves two purposes:\n\nIt allows aggregation of chronic conditions that require frequent ongoing care, instead of treating each Condition Occurrence as an independent event.\nIt allows aggregation of multiple, closely timed doctor visits for the same Condition to avoid double-counting the Condition Occurrences. For example, consider a Person who visits her Primary Care Physician (PCP) and who is referred to a specialist. At a later time, the Person visits the specialist, who confirms the PCP’s original diagnosis and provides the appropriate treatment to resolve the condition. These two independent doctor visits should be aggregated into one Condition Era.\n\nETL Conventions\nEach Condition Era corresponds to one or many Condition Occurrence records that form a continuous interval. The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found here The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_era_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe Concept Id representing the Condition.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_era_start_date\n\n\nThe start date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the start date of the very first chronologically recorded instance of the condition with at least 31 days since any prior record of the same Condition.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_era_end_date\n\n\nThe end date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the end date of the final continuously recorded instance of the Condition.\n\n\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\ncondition_occurrence_count\n\n\nThe number of individual Condition Occurrences used to construct the condition era.\n\n\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\n\n\nEPISODE\nTable Description\nThe EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.\nUser Guide\nValid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nA unique identifier for each Episode.\n\n\n\n\ninteger\n\n\ntrue\n\n\ntrue\n\n\nfalse\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the episode is recorded.\n\n\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nPERSON\n\n\n\n\n\n\nepisode_concept_id\n\n\nThe EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.\n\n\nChoose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the information from the Oncology workgroup describing how these are defined. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nEpisode\n\n\n\n\nepisode_start_date\n\n\nThe date when the Episode begins.\n\n\nPlease see [article] for how to define an Episode start date.\n\n\ndate\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_start_datetime\n\n\nThe date and time when the Episode begins.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_end_date\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\nPlease see [article] for how to define an Episode end date.\n\n\ndate\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_end_datetime\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\n\n\ndatetime\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_parent_id\n\n\nUse this field to find the Episode that subsumes the given Episode record. This is used in the case that an Episode are nested into each other.\n\n\nIf there are multiple nested levels to how Episodes are represented, the EPISODE_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nEPISODE\n\n\n\n\n\n\nepisode_number\n\n\nFor sequences of episodes, this is used to indicate the order the episodes occurred. For example, lines of treatment could be indicated here.\n\n\nPlease see [article] for the details of how to count episodes.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_object_concept_id\n\n\nA Standard Concept representing the disease phase, outcome, or other abstraction of which the episode consists. For example, if the EPISODE_CONCEPT_ID is treatment regimen then the EPISODE_OBJECT_CONCEPT_ID should contain the chemotherapy regimen concept, like Afatinib monotherapy.\n\n\nEpisode entries from the ‘Disease Episode’ concept class should have an episode_object_concept_id that comes from the Condition domain. Episode entries from the ‘Treatment Episode’ concept class should have an episode_object_concept_id that scome from the ‘Procedure’ domain or ‘Regimen’ concept class.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nProcedure, Regimen\n\n\n\n\nepisode_type_concept_id\n\n\nThis field can be used to determine the provenance of the Episode record, as in whether the episode was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the EPISODE_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nepisode_source_value\n\n\nThe source code for the Episode as it appears in the source data. This code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\n\n\nvarchar(50)\n\n\nfalse\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_source_concept_id\n\n\nA foreign key to a Episode Concept that refers to the code used in the source.\n\n\nGiven that the Episodes are user-defined it is unlikely that there will be a Source Concept available. If that is the case then set this field to zero.\n\n\ninteger\n\n\nfalse\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nEPISODE_EVENT\nTable Description\nThe EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.\nUser Guide\nThis connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.\nETL Conventions\nSome episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nUse this field to link the EPISODE_EVENT record to its EPISODE.\n\n\nPut the EPISODE_ID that subsumes the EPISODE_EVENT record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nEPISODE\n\n\n\n\n\n\nevent_id\n\n\nThis field is the primary key of the linked record in the database. For example, if the Episode Event is a Condition Occurrence, then the CONDITION_OCCURRENCE_ID of the linked record goes in this field.\n\n\nPut the primary key of the linked record here.\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\nfalse\n\n\n\n\n\n\n\n\nepisode_event_field_concept_id\n\n\nThis field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the EVENT_ID came from. Accepted Concepts\n\n\ninteger\n\n\ntrue\n\n\nfalse\n\n\ntrue\n\n\nCONCEPT\n\n\nMetadata"
},
{
"objectID": "cdm55.html#metadata-tables",
@@ -396,14 +396,14 @@
"href": "cdm54ToolingSupport.html",
"title": "OMOP CDM v5.4 Detailed Tooling Support",
"section": "",
- "text": "This tables below contain an overview of which standard OHDSI tools make use of which OMOP CDM fields. The goal is to inform ETL developers, tooling developers and CDM extensions.\n\nFor ETL developers it helps to have guidance on which fields to prioritise in the mapping. Most value will be gained from populating fields support across the OHDSI tooling.\nFor OHDSI tooling developers, this page provides insight in the gaps of support and can drive future development efforts.\nFor CDM extensions, it helps to known what it means for an OMOP CDM table/field to be part of the standard. In other words: what OHDSI tooling do we at least expect to support the new extensions?\n\nCurrently four OHDSI tools have been evaluated: DataQualityDashboard, Achilles, Atlas (Data Sources and Cohort creation) and Feature Extraction.\n\n\n\n\n\n\n\n\n\n\nTool\nSupports CDM Field if\nLink to resource used\n\n\n\n\nDataQualityDashboard\nPart of Field Level checks\nhttps://github.com/OHDSI/DataQualityDashboard/blob/main/inst/csv/OMOP_CDMv5.4_Field_Level.csv\n\n\nAchilles\nCovered by at least one Achilles analysis\nhttps://github.com/OHDSI/Achilles/blob/main/inst/csv/achilles/achilles_analysis_details.csv\n\n\nAtlas Data Sources\nA statistic based on the field is shown in a ‘Data Sources’ visualisation\nhttps://atlas-demo.ohdsi.org/\n\n\nAtlas Cohort\nUsed in te Atlas User Interface for cohort definition criteria (directly, or via ‘Add attribute’)\nhttps://atlas-demo.ohdsi.org/\n\n\nFeature Extraction\nUsed in one of the Feature Extraction analyses\nhttps://github.com/OHDSI/FeatureExtraction/blob/main/inst/csv/\n\n\n\nGeneral criteria: - r emoji::emoji(\"heavy_check_mark\") if the field essential for OMOP CDM definition (Primary Key, Foreign Key) e.g. person_id not explicitly used, but essential. (if the PK is marked as False, it typically means the whole table is not used in the tool e.g. _source_value fields that are used for traceability in ETL) - r emoji::emoji(\"exclamation\") if field is used by the tool, but not in a meaningful way. e.g. provider_id in Achilles only checked for a valid foreign key to the provider table."
+ "text": "This tables below contain an overview of which standard OHDSI tools make use of which OMOP CDM fields. The goal is to inform ETL developers, tooling developers and CDM extensions.\n\nFor ETL developers it helps to have guidance on which fields to prioritise in the mapping. Most value will be gained from populating fields support across the OHDSI tooling.\nFor OHDSI tooling developers, this page provides insight in the gaps of support and can drive future development efforts.\nFor CDM extensions, it helps to known what it means for an OMOP CDM table/field to be part of the standard. In other words: what OHDSI tooling do we at least expect to support the new extensions?\n\nCurrently four OHDSI tools have been evaluated: DataQualityDashboard, Achilles, Atlas (Data Sources and Cohort creation) and Feature Extraction.\n\n\n\n\n\n\n\n\n\n\nTool\nSupports CDM Field if\nLink to resource used\n\n\n\n\nDataQualityDashboard\nPart of Field Level checks\nhttps://github.com/OHDSI/DataQualityDashboard/blob/main/inst/csv/OMOP_CDMv5.4_Field_Level.csv\n\n\nAchilles\nCovered by at least one Achilles analysis\nhttps://github.com/OHDSI/Achilles/blob/main/inst/csv/achilles/achilles_analysis_details.csv\n\n\nAtlas Data Sources\nA statistic based on the field is shown in a ‘Data Sources’ visualisation\nhttps://atlas-demo.ohdsi.org/\n\n\nAtlas Cohort\nUsed in the Atlas User Interface for cohort definition criteria (directly, or via ‘Add attribute’)\nhttps://atlas-demo.ohdsi.org/\n\n\nFeature Extraction\nUsed in one of the Feature Extraction analyses\nhttps://github.com/OHDSI/FeatureExtraction/blob/main/inst/csv/\n\n\n\nGeneral criteria: - r emoji::emoji(\"heavy_check_mark\") if the field essential for OMOP CDM definition (Primary Key, Foreign Key) e.g. person_id not explicitly used, but essential. (if the PK is marked as False, it typically means the whole table is not used in the tool e.g. _source_value fields that are used for traceability in ETL) - r emoji::emoji(\"exclamation\") if field is used by the tool, but not in a meaningful way. e.g. provider_id in Achilles only checked for a valid foreign key to the provider table."
},
{
"objectID": "cdm54ToolingSupport.html#criteria",
"href": "cdm54ToolingSupport.html#criteria",
"title": "OMOP CDM v5.4 Detailed Tooling Support",
"section": "",
- "text": "Tool\nSupports CDM Field if\nLink to resource used\n\n\n\n\nDataQualityDashboard\nPart of Field Level checks\nhttps://github.com/OHDSI/DataQualityDashboard/blob/main/inst/csv/OMOP_CDMv5.4_Field_Level.csv\n\n\nAchilles\nCovered by at least one Achilles analysis\nhttps://github.com/OHDSI/Achilles/blob/main/inst/csv/achilles/achilles_analysis_details.csv\n\n\nAtlas Data Sources\nA statistic based on the field is shown in a ‘Data Sources’ visualisation\nhttps://atlas-demo.ohdsi.org/\n\n\nAtlas Cohort\nUsed in te Atlas User Interface for cohort definition criteria (directly, or via ‘Add attribute’)\nhttps://atlas-demo.ohdsi.org/\n\n\nFeature Extraction\nUsed in one of the Feature Extraction analyses\nhttps://github.com/OHDSI/FeatureExtraction/blob/main/inst/csv/\n\n\n\nGeneral criteria: - r emoji::emoji(\"heavy_check_mark\") if the field essential for OMOP CDM definition (Primary Key, Foreign Key) e.g. person_id not explicitly used, but essential. (if the PK is marked as False, it typically means the whole table is not used in the tool e.g. _source_value fields that are used for traceability in ETL) - r emoji::emoji(\"exclamation\") if field is used by the tool, but not in a meaningful way. e.g. provider_id in Achilles only checked for a valid foreign key to the provider table."
+ "text": "Tool\nSupports CDM Field if\nLink to resource used\n\n\n\n\nDataQualityDashboard\nPart of Field Level checks\nhttps://github.com/OHDSI/DataQualityDashboard/blob/main/inst/csv/OMOP_CDMv5.4_Field_Level.csv\n\n\nAchilles\nCovered by at least one Achilles analysis\nhttps://github.com/OHDSI/Achilles/blob/main/inst/csv/achilles/achilles_analysis_details.csv\n\n\nAtlas Data Sources\nA statistic based on the field is shown in a ‘Data Sources’ visualisation\nhttps://atlas-demo.ohdsi.org/\n\n\nAtlas Cohort\nUsed in the Atlas User Interface for cohort definition criteria (directly, or via ‘Add attribute’)\nhttps://atlas-demo.ohdsi.org/\n\n\nFeature Extraction\nUsed in one of the Feature Extraction analyses\nhttps://github.com/OHDSI/FeatureExtraction/blob/main/inst/csv/\n\n\n\nGeneral criteria: - r emoji::emoji(\"heavy_check_mark\") if the field essential for OMOP CDM definition (Primary Key, Foreign Key) e.g. person_id not explicitly used, but essential. (if the PK is marked as False, it typically means the whole table is not used in the tool e.g. _source_value fields that are used for traceability in ETL) - r emoji::emoji(\"exclamation\") if field is used by the tool, but not in a meaningful way. e.g. provider_id in Achilles only checked for a valid foreign key to the provider table."
},
{
"objectID": "cdm54ToolingSupport.html#person",
@@ -452,7 +452,7 @@
"href": "cdm54.html#clinical-data-tables",
"title": "OMOP CDM v5.4",
"section": "Clinical Data Tables",
- "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between “Hispanic” and “Not Hispanic”. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of “Hispanic” or “Not Hispanic” store that value from the source data here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the discharged_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 “Still patient” to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nparent_visit_detail_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of “Condition” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure).”,“The field should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures.\nETL Conventions\nWhen dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are:\n\nSame Procedure\nSame procedure_datetime\nSame Visit Occurrence or Visit Detail\nSame Provider\nSame Modifier for Procedures.\n\nSource codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of “Procedure” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_end_date\n\n\nUse this field to house the date that the procedure ended.\n\n\nThis is meant to be the end date of the procedure. It is not required and for most cases will be the same as the PROCEDURE_START_DATE.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_end_datetime\n\n\nUse this field to house the datetime that the procedure ended.\n\n\nThis is meant to house the end datetime of the procedure and will most often be used in conjunction with the procedure_start_datetime to determine the length of the procedure.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(255)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nproduction_id\n\n\nThis is the Production Identifier (UDI-PI) portion of the Unique Device Identification.\n\n\n\n\nvarchar(255)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nUNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Device. For example, blood transfusions are considered devices and can be given in mL quantities.\n\n\nThis code is mapped to a Standard Unit Concept in the Standardized Vocabularies and the original code is stored here for reference. 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.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Unit necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the “Maps to value” relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the “Maps to value” relationship in the vocabulary.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\n“This is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.”\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_event_id\n\n\nIf the Measurement record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeas_event_field_concept_id\n\n\nIf the Measurement record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the MEASUREMENT_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Observation from the source data. Do not get confused with the Observation_source_value which captures source value of the observation mapped to observation_concept_id. This field is the observation result value from the source.\n\n\nIf the observation_source_value was a question, for example, or an observation that requires a result then this field is the answer/ result from the source data. Store the verbatim value that represents the result of the observation_source_value.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nNOTE\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n“offset”\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT"
+ "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between “Hispanic” and “Not Hispanic”. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of “Hispanic” or “Not Hispanic” store that value from the source data here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATION_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the discharged_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be “Inpatient Visit”, “Outpatient Visit”, “Ambulatory Visit”, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 “Still patient” to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nadmitted_from_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitted_from_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitted_from_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndischarged_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was transferred to another hospital or sent to a long-term care facility, for example. It is assumed that a person is discharged to home therefore there is not a standard concept id for “home”. Use concept id = 0 when a person is discharged to home.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a “following_visit_id”.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nparent_visit_detail_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of “Condition” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure).”,“The field should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures.\nETL Conventions\nWhen dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are:\n\nSame Procedure\nSame procedure_datetime\nSame Visit Occurrence or Visit Detail\nSame Provider\nSame Modifier for Procedures.\n\nSource codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of “Procedure” should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_end_date\n\n\nUse this field to house the date that the procedure ended.\n\n\nThis is meant to be the end date of the procedure. It is not required and for most cases will be the same as the PROCEDURE_START_DATE.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_end_datetime\n\n\nUse this field to house the datetime that the procedure ended.\n\n\nThis is meant to house the end datetime of the procedure and will most often be used in conjunction with the procedure_start_datetime to determine the length of the procedure.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(255)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nproduction_id\n\n\nThis is the Production Identifier (UDI-PI) portion of the Unique Device Identification.\n\n\n\n\nvarchar(255)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nUNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Device. For example, blood transfusions are considered devices and can be given in mL quantities.\n\n\nThis code is mapped to a Standard Unit Concept in the Standardized Vocabularies and the original code is stored here for reference. 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.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\nThis is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Unit necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the “Maps to value” relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the “Maps to value” relationship in the vocabulary.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_concept_id\n\n\n“This is the concept representing the UNIT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using UNIT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.”\n\n\nIf the UNIT_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeasurement_event_id\n\n\nIf the Measurement record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nmeas_event_field_concept_id\n\n\nIf the Measurement record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the MEASUREMENT_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Observation from the source data. Do not get confused with the Observation_source_value which captures source value of the observation mapped to observation_concept_id. This field is the observation result value from the source.\n\n\nIf the observation_source_value was a question, for example, or an observation that requires a result then this field is the answer/ result from the source data. Store the verbatim value that represents the result of the observation_source_value.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobservation_event_id\n\n\nIf the Observation record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here. See the ETL Conventions for the OBSERVATION table for more details.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nobs_event_field_concept_id\n\n\nIf the Observation record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the OBSERVATION_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_event_id\n\n\nIf the Note record is related to another record in the database, this field is the primary key of the linked record.\n\n\nPut the primary key of the linked record, if applicable, here.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_event_field_concept_id\n\n\nIf the Note record is related to another record in the database, this field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the NOTE_EVENT_ID came from.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nNOTE\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n“offset”\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT"
},
{
"objectID": "cdm54.html#health-system-data-tables",
@@ -473,7 +473,7 @@
"href": "cdm54.html#standardized-derived-elements",
"title": "OMOP CDM v5.4",
"section": "Standardized Derived Elements",
- "text": "Standardized Derived Elements\n\nDRUG_ERA\nTable Description\nA Drug Era is defined as a span of time when the Person is assumed to be exposed to a particular active ingredient. A Drug Era is not the same as a Drug Exposure: Exposures are individual records corresponding to the source when Drug was delivered to the Person, while successive periods of Drug Exposures are combined under certain rules to produce continuous Drug Eras. Every record in the DRUG_EXPOSURE table should be part of a drug era based on the dates of exposure.\nETL Conventions\nThe SQL script for generating DRUG_ERA records can be found here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe drug_concept_id should conform to the concept class ‘ingredient’ as the drug_era is an era of time where a person is exposed to a particular drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_era_start_date\n\n\n\n\nThe Drug Era Start Date is the start date of the first Drug Exposure for a given ingredient, with at least 31 days since the previous exposure.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_era_end_date\n\n\n\n\nThe Drug Era End Date is the end date of the last Drug Exposure. The End Date of each Drug Exposure is either taken from the field drug_exposure_end_date or, as it is typically not available, inferred using the following rules: For pharmacy prescription data, the date when the drug was dispensed plus the number of days of supply are used to extrapolate the End Date for the Drug Exposure. Depending on the country-specific healthcare system, this supply information is either explicitly provided in the day_supply field or inferred from package size or similar information. For Procedure Drugs, usually the drug is administered on a single date (i.e., the administration date). A standard Persistence Window of 30 days (gap, slack) is permitted between two subsequent such extrapolated DRUG_EXPOSURE records to be considered to be merged into a single Drug Era.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_count\n\n\nThe count of grouped DRUG_EXPOSURE records that were included in the DRUG_ERA row\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngap_days\n\n\n\n\nThe Gap Days determine how many total drug-free days are observed between all Drug Exposure events that contribute to a DRUG_ERA record. It is assumed that the drugs are “not stockpiled” by the patient, i.e. that if a new drug prescription or refill is observed (a new DRUG_EXPOSURE record is written), the remaining supply from the previous events is abandoned. The difference between Persistence Window and Gap Days is that the former is the maximum drug-free time allowed between two subsequent DRUG_EXPOSURE records, while the latter is the sum of actual drug-free days for the given Drug Era under the above assumption of non-stockpiling.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDOSE_ERA\nTable Description\nA Dose Era is defined as a span of time when the Person is assumed to be exposed to a constant dose of a specific active ingredient.\nETL Conventions\nDose Eras will be derived from records in the DRUG_EXPOSURE table and the Dose information from the DRUG_STRENGTH table using a standardized algorithm. Dose Form information is not taken into account. So, if the patient changes between different formulations, or different manufacturers with the same formulation, the Dose Era is still spanning the entire time of exposure to the Ingredient.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndose_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe Concept Id representing the specific drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\nunit_concept_id\n\n\nThe Concept Id representing the unit of the specific drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\ndose_value\n\n\nThe numeric value of the dosage of the drug_ingredient.\n\n\n\n\nfloat\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_era_start_date\n\n\nThe date the Person started on the specific dosage, with at least 31 days since any prior exposure.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_era_end_date\n\n\n\n\nThe date the Person was no longer exposed to the dosage of the specific drug ingredient. An era is ended if there are 31 days or more between dosage records.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nCONDITION_ERA\nTable Description\nA Condition Era is defined as a span of time when the Person is assumed to have a given condition. Similar to Drug Eras, Condition Eras are chronological periods of Condition Occurrence and every Condition Occurrence record should be part of a Condition Era. Combining individual Condition Occurrences into a single Condition Era serves two purposes:\n\nIt allows aggregation of chronic conditions that require frequent ongoing care, instead of treating each Condition Occurrence as an independent event.\nIt allows aggregation of multiple, closely timed doctor visits for the same Condition to avoid double-counting the Condition Occurrences. For example, consider a Person who visits her Primary Care Physician (PCP) and who is referred to a specialist. At a later time, the Person visits the specialist, who confirms the PCP’s original diagnosis and provides the appropriate treatment to resolve the condition. These two independent doctor visits should be aggregated into one Condition Era.\n\nETL Conventions\nEach Condition Era corresponds to one or many Condition Occurrence records that form a continuous interval. The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found here The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe Concept Id representing the Condition.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_era_start_date\n\n\nThe start date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the start date of the very first chronologically recorded instance of the condition with at least 31 days since any prior record of the same Condition.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_era_end_date\n\n\nThe end date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the end date of the final continuously recorded instance of the Condition.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_occurrence_count\n\n\nThe number of individual Condition Occurrences used to construct the condition era.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nEPISODE\nTable Description\nThe EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.\nUser Guide\nValid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nA unique identifier for each Episode.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the episode is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nepisode_concept_id\n\n\nThe EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.\n\n\nChoose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see [article] for cancers and [article] for non-cancers describing how these are defined. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nEpisode\n\n\n\n\nepisode_start_date\n\n\nThe date when the Episode beings.\n\n\nPlease see [article] for how to define an Episode start date.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_start_datetime\n\n\nThe date and time when the Episode begins.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_end_date\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\nPlease see [article] for how to define an Episode end date.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_end_datetime\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_parent_id\n\n\nUse this field to find the Episode that subsumes the given Episode record. This is used in the case that an Episode are nested into each other.\n\n\nIf there are multiple nested levels to how Episodes are represented, the EPISODE_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nEPISODE\n\n\n\n\n\n\nepisode_number\n\n\nFor sequences of episodes, this is used to indicate the order the episodes occurred. For example, lines of treatment could be indicated here.\n\n\nPlease see [article] for the details of how to count episodes.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_object_concept_id\n\n\nA Standard Concept representing the disease phase, outcome, or other abstraction of which the episode consists. For example, if the EPISODE_CONCEPT_ID is treatment regimen then the EPISODE_OBJECT_CONCEPT_ID should contain the chemotherapy regimen concept, like Afatinib monotherapy.\n\n\nEpisode entries from the ‘Disease Episode’ concept class should have an episode_object_concept_id that comes from the Condition domain. Episode entries from the ‘Treatment Episode’ concept class should have an episode_object_concept_id that scome from the ‘Procedure’ domain or ‘Regimen’ concept class.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nProcedure, Regimen\n\n\n\n\nepisode_type_concept_id\n\n\nThis field can be used to determine the provenance of the Episode record, as in whether the episode was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the EPISODE_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nepisode_source_value\n\n\nThe source code for the Episode as it appears in the source data. This code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_source_concept_id\n\n\nA foreign key to a Episode Concept that refers to the code used in the source.\n\n\nGiven that the Episodes are user-defined it is unlikely that there will be a Source Concept available. If that is the case then set this field to zero.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nEPISODE_EVENT\nTable Description\nThe EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.\nUser Guide\nThis connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.\nETL Conventions\nSome episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nUse this field to link the EPISODE_EVENT record to its EPISODE.\n\n\nPut the EPISODE_ID that subsumes the EPISODE_EVENT record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nEPISODE\n\n\n\n\n\n\nevent_id\n\n\nThis field is the primary key of the linked record in the database. For example, if the Episode Event is a Condition Occurrence, then the CONDITION_OCCURRENCE_ID of the linked record goes in this field.\n\n\nPut the primary key of the linked record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_event_field_concept_id\n\n\nThis field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the EVENT_ID came from. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nMetadata"
+ "text": "Standardized Derived Elements\n\nDRUG_ERA\nTable Description\nA Drug Era is defined as a span of time when the Person is assumed to be exposed to a particular active ingredient. A Drug Era is not the same as a Drug Exposure: Exposures are individual records corresponding to the source when Drug was delivered to the Person, while successive periods of Drug Exposures are combined under certain rules to produce continuous Drug Eras. Every record in the DRUG_EXPOSURE table should be part of a drug era based on the dates of exposure.\nETL Conventions\nThe SQL script for generating DRUG_ERA records can be found here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe drug_concept_id should conform to the concept class ‘ingredient’ as the drug_era is an era of time where a person is exposed to a particular drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_era_start_date\n\n\n\n\nThe Drug Era Start Date is the start date of the first Drug Exposure for a given ingredient, with at least 31 days since the previous exposure.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_era_end_date\n\n\n\n\nThe Drug Era End Date is the end date of the last Drug Exposure. The End Date of each Drug Exposure is either taken from the field drug_exposure_end_date or, as it is typically not available, inferred using the following rules: For pharmacy prescription data, the date when the drug was dispensed plus the number of days of supply are used to extrapolate the End Date for the Drug Exposure. Depending on the country-specific healthcare system, this supply information is either explicitly provided in the day_supply field or inferred from package size or similar information. For Procedure Drugs, usually the drug is administered on a single date (i.e., the administration date). A standard Persistence Window of 30 days (gap, slack) is permitted between two subsequent such extrapolated DRUG_EXPOSURE records to be considered to be merged into a single Drug Era.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndrug_exposure_count\n\n\nThe count of grouped DRUG_EXPOSURE records that were included in the DRUG_ERA row\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ngap_days\n\n\n\n\nThe Gap Days determine how many total drug-free days are observed between all Drug Exposure events that contribute to a DRUG_ERA record. It is assumed that the drugs are “not stockpiled” by the patient, i.e. that if a new drug prescription or refill is observed (a new DRUG_EXPOSURE record is written), the remaining supply from the previous events is abandoned. The difference between Persistence Window and Gap Days is that the former is the maximum drug-free time allowed between two subsequent DRUG_EXPOSURE records, while the latter is the sum of actual drug-free days for the given Drug Era under the above assumption of non-stockpiling.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nDOSE_ERA\nTable Description\nA Dose Era is defined as a span of time when the Person is assumed to be exposed to a constant dose of a specific active ingredient.\nETL Conventions\nDose Eras will be derived from records in the DRUG_EXPOSURE table and the Dose information from the DRUG_STRENGTH table using a standardized algorithm. Dose Form information is not taken into account. So, if the patient changes between different formulations, or different manufacturers with the same formulation, the Dose Era is still spanning the entire time of exposure to the Ingredient.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndose_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe Concept Id representing the specific drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\nunit_concept_id\n\n\nThe Concept Id representing the unit of the specific drug ingredient.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\ndose_value\n\n\nThe numeric value of the dosage of the drug_ingredient.\n\n\n\n\nfloat\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_era_start_date\n\n\nThe date the Person started on the specific dosage, with at least 31 days since any prior exposure.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ndose_era_end_date\n\n\n\n\nThe date the Person was no longer exposed to the dosage of the specific drug ingredient. An era is ended if there are 31 days or more between dosage records.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nCONDITION_ERA\nTable Description\nA Condition Era is defined as a span of time when the Person is assumed to have a given condition. Similar to Drug Eras, Condition Eras are chronological periods of Condition Occurrence and every Condition Occurrence record should be part of a Condition Era. Combining individual Condition Occurrences into a single Condition Era serves two purposes:\n\nIt allows aggregation of chronic conditions that require frequent ongoing care, instead of treating each Condition Occurrence as an independent event.\nIt allows aggregation of multiple, closely timed doctor visits for the same Condition to avoid double-counting the Condition Occurrences. For example, consider a Person who visits her Primary Care Physician (PCP) and who is referred to a specialist. At a later time, the Person visits the specialist, who confirms the PCP’s original diagnosis and provides the appropriate treatment to resolve the condition. These two independent doctor visits should be aggregated into one Condition Era.\n\nETL Conventions\nEach Condition Era corresponds to one or many Condition Occurrence records that form a continuous interval. The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found here The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_era_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe Concept Id representing the Condition.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_era_start_date\n\n\nThe start date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the start date of the very first chronologically recorded instance of the condition with at least 31 days since any prior record of the same Condition.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_era_end_date\n\n\nThe end date for the Condition Era constructed from the individual instances of Condition Occurrences. It is the end date of the final continuously recorded instance of the Condition.\n\n\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\ncondition_occurrence_count\n\n\nThe number of individual Condition Occurrences used to construct the condition era.\n\n\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\n\n\nEPISODE\nTable Description\nThe EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.\nUser Guide\nValid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nA unique identifier for each Episode.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nTRUE\n\n\nFALSE\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the episode is recorded.\n\n\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nPERSON\n\n\n\n\n\n\nepisode_concept_id\n\n\nThe EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.\n\n\nChoose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see [article] for cancers and [article] for non-cancers describing how these are defined. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nEpisode\n\n\n\n\nepisode_start_date\n\n\nThe date when the Episode begins.\n\n\nPlease see [article] for how to define an Episode start date.\n\n\ndate\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_start_datetime\n\n\nThe date and time when the Episode begins.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_end_date\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\nPlease see [article] for how to define an Episode end date.\n\n\ndate\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_end_datetime\n\n\nThe date when the instance of the Episode is considered to have ended.\n\n\n\n\ndatetime\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_parent_id\n\n\nUse this field to find the Episode that subsumes the given Episode record. This is used in the case that an Episode are nested into each other.\n\n\nIf there are multiple nested levels to how Episodes are represented, the EPISODE_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nEPISODE\n\n\n\n\n\n\nepisode_number\n\n\nFor sequences of episodes, this is used to indicate the order the episodes occurred. For example, lines of treatment could be indicated here.\n\n\nPlease see [article] for the details of how to count episodes.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_object_concept_id\n\n\nA Standard Concept representing the disease phase, outcome, or other abstraction of which the episode consists. For example, if the EPISODE_CONCEPT_ID is treatment regimen then the EPISODE_OBJECT_CONCEPT_ID should contain the chemotherapy regimen concept, like Afatinib monotherapy.\n\n\nEpisode entries from the ‘Disease Episode’ concept class should have an episode_object_concept_id that comes from the Condition domain. Episode entries from the ‘Treatment Episode’ concept class should have an episode_object_concept_id that scome from the ‘Procedure’ domain or ‘Regimen’ concept class.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nProcedure, Regimen\n\n\n\n\nepisode_type_concept_id\n\n\nThis field can be used to determine the provenance of the Episode record, as in whether the episode was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the EPISODE_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nepisode_source_value\n\n\nThe source code for the Episode as it appears in the source data. This code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\n\n\nvarchar(50)\n\n\nFALSE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_source_concept_id\n\n\nA foreign key to a Episode Concept that refers to the code used in the source.\n\n\nGiven that the Episodes are user-defined it is unlikely that there will be a Source Concept available. If that is the case then set this field to zero.\n\n\ninteger\n\n\nFALSE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nEPISODE_EVENT\nTable Description\nThe EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.\nUser Guide\nThis connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.\nETL Conventions\nSome episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nepisode_id\n\n\nUse this field to link the EPISODE_EVENT record to its EPISODE.\n\n\nPut the EPISODE_ID that subsumes the EPISODE_EVENT record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nEPISODE\n\n\n\n\n\n\nevent_id\n\n\nThis field is the primary key of the linked record in the database. For example, if the Episode Event is a Condition Occurrence, then the CONDITION_OCCURRENCE_ID of the linked record goes in this field.\n\n\nPut the primary key of the linked record here.\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nFALSE\n\n\n\n\n\n\n\n\nepisode_event_field_concept_id\n\n\nThis field is the CONCEPT_ID that identifies which table the primary key of the linked record came from.\n\n\nPut the CONCEPT_ID that identifies which table and field the EVENT_ID came from. Accepted Concepts\n\n\ninteger\n\n\nTRUE\n\n\nFALSE\n\n\nTRUE\n\n\nCONCEPT\n\n\nMetadata"
},
{
"objectID": "cdm54.html#metadata-tables",
@@ -543,7 +543,7 @@
"href": "cdm53.html#clinical-data-tables",
"title": "OMOP CDM v5.3",
"section": "Clinical Data Tables",
- "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between and Hispanic. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of or Hispanic store that value from the source data here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATOIN_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, without bed, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitting_source_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitting_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitting_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the discharge_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 patient to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitting_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nVarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nadmitting_source_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitting_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nVarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit detail record. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_detail_parent_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure). \n\n\ninteger\n\n\nNo\n\n\nfield should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\nNo\n\n\nNo\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures. If the user finds the same procedure over concurrent days, it is assumed those records are part of a procedure lasting more than a day. This logic is in lieu of the procedure_end_date, which will be added in a future version of the CDM.\nETL Conventions\nIf a procedure lasts more than 24 hours, then it should be recorded as a separate record for each day the procedure occurred, this logic is in lieu of the PROCEDURE_END_DATE, which will be added in a future version of the CDM. When dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are: - Same Procedure - Same PROCEDURE_DATETIME - Same Visit Occurrence or Visit Detail - Same Provider - Same Modifier for Procedures. Source codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the to value relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the to value relationship in the vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\noffset\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT"
+ "text": "Clinical Data Tables\n\nPERSON\nTable Description\nThis table serves as the central identity management for all Persons in the database. It contains records that uniquely identify each person or patient, and some demographic information.\nUser Guide\nAll records in this table are independent Persons.\nETL Conventions\nAll Persons in a database needs one record in this table, unless they fail data quality requirements specified in the ETL. Persons with no Events should have a record nonetheless. If more than one data source contributes Events to the database, Persons must be reconciled, if possible, across the sources to create one single record per Person. The content of the BIRTH_DATETIME must be equivalent to the content of BIRTH_DAY, BIRTH_MONTH and BIRTH_YEAR.For detailed conventions for how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\nIt is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.\n\n\nAny person linkage that needs to occur to uniquely identify Persons ought to be done prior to writing this table. This identifier can be the original id from the source data provided if it is an integer, otherwise it can be an autogenerated number.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\ngender_concept_id\n\n\nThis field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.\n\n\nUse the gender or sex value present in the data under the assumption that it is the biological sex at birth. If the source data captures gender identity it should be stored in the OBSERVATION table. Accepted gender concepts. Please refer to the THEMIS repository for detailed conventions on how to populate this field.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nGender\n\n\n\n\nyear_of_birth\n\n\nCompute age using year_of_birth.\n\n\nFor data sources with date of birth, the year should be extracted. If no year of birth is available all the person’s data should be dropped from the CDM instance. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmonth_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the month should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nday_of_birth\n\n\n\n\nFor data sources that provide the precise date of birth, the day should be extracted and stored in this field.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nbirth_datetime\n\n\n\n\nThis field is not required but highly encouraged. For data sources that provide the precise datetime of birth, that value should be stored in this field. For more information on how to populate this field, please refer to the THEMIS repository.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_concept_id\n\n\nThis field captures race or ethnic background of the person.\n\n\nOnly use this field if you have information about race or ethnic background. The Vocabulary contains Concepts about the main races and ethnic backgrounds in a hierarchical system. Due to the imprecise nature of human races and ethnic backgrounds, this is not a perfect system. Mixed races are not supported. If a clear race or ethnic background cannot be established, use Concept_Id 0. Accepted Race Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRace\n\n\n\n\nethnicity_concept_id\n\n\nThis field captures Ethnicity as defined by the Office of Management and Budget (OMB) of the US Government: it distinguishes only between and Hispanic. Races and ethnic backgrounds are not stored here.\n\n\nOnly use this field if you have US-based data and a source of this information. Do not attempt to infer Ethnicity from the race or ethnic background of the Person. Accepted ethnicity concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nEthnicity\n\n\n\n\nlocation_id\n\n\nThe location refers to the physical address of the person. This field should capture the last known location of the person.\n\n\nPut the location_id from the LOCATION table here that represents the most granular location information for the person. For additional information on how to populate this field, please refer to the THEMIS repository.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nLOCATION\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider refers to the last known primary care provider (General Practitioner).\n\n\nPut the provider_id from the PROVIDER table of the last known general practitioner of the person. If there are multiple providers, it is up to the ETL to decide which to put here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThe Care Site refers to where the Provider typically provides the primary care.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nperson_source_value\n\n\nUse this field to link back to persons in the source data. This is typically used for error checking of ETL logic.\n\n\nSome use cases require the ability to link back to persons in the source data. This field allows for the storing of the person value as it appears in the source. This field is not required but strongly recommended.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_value\n\n\nThis field is used to store the biological sex of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the assigned sex at birth of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ngender_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes assigned sex at birth in a non-standard vocabulary, store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nrace_source_value\n\n\nThis field is used to store the race of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nPut the race of the person as it appears in the source data.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrace_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes race in an OMOP supported vocabulary store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nethnicity_source_value\n\n\nThis field is used to store the ethnicity of the person from the source data. It is not intended for use in standard analytics but for reference only.\n\n\nIf the person has an ethnicity other than the OMB standard of or Hispanic store that value from the source data here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nethnicity_source_concept_id\n\n\nDue to the small number of options, this tends to be zero.\n\n\nIf the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nOBSERVATION_PERIOD\nTable Description\nThis table contains records which define spans of time during which two conditions are expected to hold: (i) Clinical Events that happened to the Person are recorded in the Event tables, and (ii) absence of records indicate such Events did not occur during this span of time.\nUser Guide\nFor each Person, one or more OBSERVATION_PERIOD records may be present, but they will not overlap or be back to back to each other. Events may exist outside all of the time spans of the OBSERVATION_PERIOD records for a patient, however, absence of an Event outside these time spans cannot be construed as evidence of absence of an Event. Incidence or prevalence rates should only be calculated for the time of active OBSERVATION_PERIOD records. When constructing cohorts, outside Events can be used for inclusion criteria definition, but without any guarantee for the performance of these criteria. Also, OBSERVATION_PERIOD records can be as short as a single day, greatly disturbing the denominator of any rate calculation as part of cohort characterizations. To avoid that, apply minimal observation time as a requirement for any cohort definition.\nETL Conventions\nEach Person needs to have at least one OBSERVATION_PERIOD record, which should represent time intervals with a high capture rate of Clinical Events. Some source data have very similar concepts, such as enrollment periods in insurance claims data. In other source data such as most EHR systems these time spans need to be inferred under a set of assumptions. It is the discretion of the ETL developer to define these assumptions. In many ETL solutions the start date of the first occurrence or the first high quality occurrence of a Clinical Event (Condition, Drug, Procedure, Device, Measurement, Visit) is defined as the start of the OBSERVATION_PERIOD record, and the end date of the last occurrence of last high quality occurrence of a Clinical Event, or the end of the database period becomes the end of the OBSERVATOIN_PERIOD for each Person. If a Person only has a single Clinical Event the OBSERVATION_PERIOD record can be as short as one day. Depending on these definitions it is possible that Clinical Events fall outside the time spans defined by OBSERVATION_PERIOD records. Family history or history of Clinical Events generally are not used to generate OBSERVATION_PERIOD records around the time they are referring to. Any two overlapping or adjacent OBSERVATION_PERIOD records have to be merged into one.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_period_id\n\n\nA Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.\n\n\nAssign a unique observation_period_id to each discrete Observation Period for a Person.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe Person ID of the PERSON record for which the Observation Period is recorded.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_period_start_date\n\n\nUse this date to determine the start date of the Observation Period.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_start_date can be inferred as the earliest Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer. If a Person switches plans but stays with the same payer, and therefore capturing of data continues, that change would be captured in PAYER_PLAN_PERIOD.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_period_end_date\n\n\nUse this date to determine the end date of the period for which we can assume that all events for a Person are recorded.\n\n\nIt is often the case that the idea of Observation Periods does not exist in source data. In those cases, the observation_period_end_date can be inferred as the last Event date available for the Person. In insurance claim data, the Observation Period can be considered as the time period the Person is enrolled with a payer.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nperiod_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation Period as in whether the period was determined from an insurance enrollment file, EHR healthcare encounters, or other sources.\n\n\nChoose the observation_period_type_concept_id that best represents how the period was determined. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\n\n\nVISIT_OCCURRENCE\nTable Description\nThis table contains Events where Persons engage with the healthcare system for a duration of time. They are often also called “Encounters”. Visits are defined by a configuration of circumstances under which they occur, such as (i) whether the patient comes to a healthcare institution, the other way around, or the interaction is remote, (ii) whether and what kind of trained medical staff is delivering the service during the Visit, and (iii) whether the Visit is transient or for a longer period involving a stay in bed.\nUser Guide\nThe configuration defining the Visit are described by Concepts in the Visit Domain, which form a hierarchical structure, but rolling up to generally familiar Visits adopted in most healthcare systems worldwide:\n\nInpatient Visit: Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock\nEmergency Room Visit: Person visiting dedicated healthcare institution for treating emergencies, at a Care Site, within one day, with physicians and Providers permanently available to deliver service around the clock\nEmergency Room and Inpatient Visit: Person visiting ER followed by a subsequent Inpatient Visit, where Emergency department is part of hospital, and transition from the ER to other hospital departments is undefined\nNon-hospital institution Visit: Person visiting dedicated institution for reasons of poor health, at a Care Site, long-term or permanently, with no physician but possibly other Providers permanently available to deliver service around the clock\nOutpatient Visit: Person visiting dedicated ambulatory healthcare institution, at a Care Site, within one day, without bed, with physicians or medical Providers delivering service during Visit\nHome Visit: Provider visiting Person, without a Care Site, within one day, delivering service\nTelehealth Visit: Patient engages with Provider through communication media\nPharmacy Visit: Person visiting pharmacy for dispensing of Drug, at a Care Site, within one day\nLaboratory Visit: Patient visiting dedicated institution, at a Care Site, within one day, for the purpose of a Measurement.\nAmbulance Visit: Person using transportation service for the purpose of initiating one of the other Visits, without a Care Site, within one day, potentially with Providers accompanying the Visit and delivering service\nCase Management Visit: Person interacting with healthcare system, without a Care Site, within a day, with no Providers involved, for administrative purposes\n\nThe Visit duration, or ‘length of stay’, is defined as VISIT_END_DATE - VISIT_START_DATE. For all Visits this is <1 day, except Inpatient Visits and Non-hospital institution Visits. The CDM also contains the VISIT_DETAIL table where additional information about the Visit is stored, for example, transfers between units during an inpatient Visit.\nETL Conventions\nVisits can be derived easily if the source data contain coding systems for Place of Service or Procedures, like CPT codes for well visits. In those cases, the codes can be looked up and mapped to a Standard Visit Concept. Otherwise, Visit Concepts have to be identified in the ETL process. This table will contain concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Visits can be adjacent to each other, i.e. the end date of one can be identical with the start date of the other. As a consequence, more than one-day Visits or their descendants can be recorded for the same day. Multi-day visits must not overlap, i.e. share days other than start and end days. It is often the case that some logic should be written for how to define visits and how to assign Visit_Concept_Id. For example, in US claims outpatient visits that appear to occur within the time period of an inpatient visit can be rolled into one with the same Visit_Occurrence_Id. In EHR data inpatient visits that are within one day of each other may be strung together to create one visit. It will all depend on the source data and how encounter records should be translated to visit occurrences. Providers can be associated with a Visit through the PROVIDER_ID field, or indirectly through PROCEDURE_OCCURRENCE records linked both to the VISIT and PROVIDER tables.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_concept_id\n\n\nThis field contains a concept id representing the kind of visit, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_start_date\n\n\nFor inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.\n\n\nWhen populating VISIT_START_DATE, you should think about the patient experience to make decisions on how to define visits. In the case of an inpatient visit this should be the date the patient was admitted to the hospital or institution. In all other cases this should be the date of the patient-provider interaction. If this information is not available the record should be dropped.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_date\n\n\nFor inpatient visits the end date is typically the discharge date. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them:\n\nOutpatient Visit: visit_end_datetime = visit_start_datetime\nEmergency Room Visit: visit_end_datetime = visit_start_datetime\nInpatient Visit: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs.\nNon-hospital institution Visits: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs.\nFor Inpatient Visits ongoing at the date of ETL, put date of processing the data into visit_end_datetime\nAll other Visits: visit_end_datetime = visit_start_datetime. If this is a one-day visit the end date should match the start date.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_type_concept_id\n\n\nUse this field to understand the provenance of the visit record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\nInteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). If there are multiple providers associated with a visit in the source, this can be reflected in the event tables (CONDITION_OCCURRENCE, PROCEDURE_OCCURRENCE, etc.) or in the VISIT_DETAIL table.\n\n\nIf there are multiple providers associated with a visit, you will need to choose which one to put here. The additional providers can be stored in the VISIT_DETAIL table.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit took place.\n\n\nThere should only be one Care Site associated with a Visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the visit source value, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_source_concept_id\n\n\n\n\nIf the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitting_source_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitting_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nadmitting_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the discharge_to_source_value to a standard concept in the visit domain. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\npreceding_visit_occurrence_id\n\n\nUse this field to find the visit that occurred for the person prior to the given visit. There could be a few days or a few years in between.\n\n\nThis field can be used to link a visit immediately preceding the current visit. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nVISIT_DETAIL\n\nTable Description\nThe VISIT_DETAIL table is an optional table used to represents details of each record in the parent VISIT_OCCURRENCE table. A good example of this would be the movement between units in a hospital during an inpatient stay or claim lines associated with a one insurance claim. For every record in the VISIT_OCCURRENCE table there may be 0 or more records in the VISIT_DETAIL table with a 1:n relationship where n may be 0. The VISIT_DETAIL table is structurally very similar to VISIT_OCCURRENCE table and belongs to the visit domain.\nUser Guide\nThe configuration defining the Visit Detail is described by Concepts in the Visit Domain, which form a hierarchical structure. The Visit Detail record will have an associated to the Visit Occurrence record in two ways: 1. The Visit Detail record will have the VISIT_OCCURRENCE_ID it is associated to 2. The VISIT_DETAIL_CONCEPT_ID will be a descendant of the VISIT_CONCEPT_ID for the Visit.\nETL Conventions\nIt is not mandatory that the VISIT_DETAIL table be filled in, but if you find that the logic to create VISIT_OCCURRENCE records includes the roll-up of multiple smaller records to create one picture of a Visit then it is a good idea to use VISIT_DETAIL. In EHR data, for example, a Person may be in the hospital but instead of one over-arching Visit their encounters are recorded as times they interacted with a health care provider. A Person in the hospital interacts with multiple providers multiple times a day so the encounters must be strung together using some heuristic (defined by the ETL) to identify the entire Visit. In this case the encounters would be considered Visit Details and the entire Visit would be the Visit Occurrence. In this example it is also possible to use the Vocabulary to distinguish Visit Details from a Visit Occurrence by setting the VISIT_CONCEPT_ID to 9201 and the VISIT_DETAIL_CONCEPT_IDs either to 9201 or its children to indicate where the patient was in the hospital at the time of care.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nvisit_detail_id\n\n\nUse this to identify unique interactions between a person and the health care system. This identifier links across the other CDM event tables to associate events with a visit detail.\n\n\nThis should be populated by creating a unique identifier for each unique interaction between a person and the healthcare system where the person receives a medical good or service over a span of time.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nvisit_detail_concept_id\n\n\nThis field contains a concept id representing the kind of visit detail, like inpatient or outpatient. All concepts in this field should be standard and belong to the Visit domain.\n\n\nPopulate this field based on the kind of visit that took place for the person. For example this could be Visit, Visit, Visit, etc. This table will contain standard concepts in the Visit domain. These concepts are arranged in a hierarchical structure to facilitate cohort definitions by rolling up to generally familiar Visits adopted in most healthcare systems worldwide. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\nvisit_detail_start_date\n\n\nThis is the date of the start of the encounter. This may or may not be equal to the date of the Visit the Visit Detail is associated with.\n\n\nWhen populating VISIT_DETAIL_START_DATE, you should think about the patient experience to make decisions on how to define visits. Most likely this should be the date of the patient-provider interaction.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_start_datetime\n\n\n\n\nIf no time is given for the start date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_date\n\n\nThis the end date of the patient-provider interaction. If a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_date, then set the visit_end_date to the date of the data pull.\n\n\nVisit Detail end dates are mandatory. If end dates are not provided in the source there are three ways in which to derive them: - Outpatient Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Emergency Room Visit Detail: visit_detail_end_datetime = visit_detail_start_datetime - Inpatient Visit Detail: Usually there is information about discharge. If not, you should be able to derive the end date from the sudden decline of activity or from the absence of inpatient procedures/drugs. - Non-hospital institution Visit Details: Particularly for claims data, if end dates are not provided assume the visit is for the duration of month that it occurs. For Inpatient Visit Details ongoing at the date of ETL, put date of processing the data into visit_detai_end_datetime and visit_detail_type_concept_id with 32220 patient to identify the visit as incomplete. All other Visits Details: visit_detail_end_datetime = visit_detail_start_datetime.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_end_datetime\n\n\nIf a Person is still an inpatient in the hospital at the time of the data extract and does not have a visit_end_datetime, then set the visit_end_datetime to the datetime of the data pull.\n\n\nIf no time is given for the end date of a visit, set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_type_concept_id\n\n\nUse this field to understand the provenance of the visit detail record, or where the record comes from.\n\n\nPopulate this field based on the provenance of the visit detail record, as in whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nprovider_id\n\n\nThere will only be one provider per visit record and the ETL document should clearly state how they were chosen (attending, admitting, etc.). This is a typical reason for leveraging the VISIT_DETAIL table as even though each VISIT_DETAIL record can only have one provider, there is no limit to the number of VISIT_DETAIL records that can be associated to a VISIT_OCCURRENCE record.\n\n\nThe additional providers associated to a Visit can be stored in this table where each VISIT_DETAIL record represents a different provider.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\ncare_site_id\n\n\nThis field provides information about the Care Site where the Visit Detail took place.\n\n\nThere should only be one Care Site associated with a Visit Detail.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCARE_SITE\n\n\n\n\n\n\nvisit_detail_source_value\n\n\nThis field houses the verbatim value from the source data representing the kind of visit detail that took place (inpatient, outpatient, emergency, etc.)\n\n\nIf there is information about the kind of visit detail in the source data that value should be stored here. If a visit is an amalgamation of visits from the source then use a hierarchy to choose the VISIT_DETAIL_SOURCE_VALUE, such as IP -> ER-> OP. This should line up with the logic chosen to determine how visits are created.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvisit_detail_source_concept_id\n\n\n\n\nIf the VISIT_DETAIL_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nadmitting_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was admitted from. Typically this applies only to visits that have a length of stay, like inpatient visits or long-term care visits.\n\n\nVarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nadmitting_source_concept_id\n\n\nUse this field to determine where the patient was admitted from. This concept is part of the visit domain and can indicate if a patient was admitted to the hospital from a long-term care facility, for example.\n\n\nIf available, map the admitting_source_value to a standard concept in the visit domain. Accepted Concepts. If a person was admitted from home or was self-referred, set this to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\ndischarge_to_source_value\n\n\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating where a person was discharged to after a visit, as in they went home or were moved to long-term care. Typically this applies only to visits that have a length of stay of a day or more.\n\n\nVarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndischarge_to_concept_id\n\n\nUse this field to determine where the patient was discharged to after a visit detail record. This concept is part of the visit domain and can indicate if a patient was discharged to home or sent to a long-term care facility, for example.\n\n\nIf available, map the DISCHARGE_TO_SOURCE_VALUE to a Standard Concept in the Visit domain. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nVisit\n\n\n\n\npreceding_visit_detail_id\n\n\nUse this field to find the visit detail that occurred for the person prior to the given visit detail record. There could be a few days or a few years in between.\n\n\nThe PRECEDING_VISIT_DETAIL_ID can be used to link a visit immediately preceding the current Visit Detail. Note this is not symmetrical, and there is no such thing as a _visit_id.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_detail_parent_id\n\n\nUse this field to find the visit detail that subsumes the given visit detail record. This is used in the case that a visit detail record needs to be nested beyond the VISIT_OCCURRENCE/VISIT_DETAIL relationship.\n\n\nIf there are multiple nested levels to how Visits are represented in the source, the VISIT_DETAIL_PARENT_ID can be used to record this relationship.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nUse this field to link the VISIT_DETAIL record to its VISIT_OCCURRENCE.\n\n\nPut the VISIT_OCCURRENCE_ID that subsumes the VISIT_DETAIL record here.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\n\n\nCONDITION_OCCURRENCE\nTable Description\nThis table contains records of Events of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign, or a symptom, which is either observed by a Provider or reported by the patient.\nUser Guide\nConditions are defined by Concepts from the Condition domain, which form a complex hierarchy. As a result, the same Person with the same disease may have multiple Condition records, which belong to the same hierarchical family. Most Condition records are mapped from diagnostic codes, but recorded signs, symptoms and summary descriptions also contribute to this table. Rule out diagnoses should not be recorded in this table, but in reality their negating nature is not always captured in the source data, and other precautions must be taken when when identifying Persons who should suffer from the recorded Condition. Record all conditions as they exist in the source data. Any decisions about diagnosis/phenotype definitions would be done through cohort specifications. These cohorts can be housed in the COHORT table. Conditions span a time interval from start to end, but are typically recorded as single snapshot records with no end date. The reason is twofold: (i) At the time of the recording the duration is not known and later not recorded, and (ii) the Persons typically cease interacting with the healthcare system when they feel better, which leads to incomplete capture of resolved Conditions. The CONDITION_ERA table addresses this issue. Family history and past diagnoses (‘history of’) are not recorded in this table. Instead, they are listed in the OBSERVATION table. Codes written in the process of establishing the diagnosis, such as ‘question of’ of and ‘rule out’, should not represented here. Instead, they should be recorded in the OBSERVATION table, if they are used for analyses. However, this information is not always available.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Condition Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ncondition_occurrence_id\n\n\nThe unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled.\n\n\nEach instance of a condition present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same condition within the same visit. It is valid to keep these duplicates and assign them individual, unique, CONDITION_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the condition is recorded.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ncondition_concept_id\n\n\nThe CONDITION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a condition\n\n\nThe standard CONCEPT_ID that represents the CONDITION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the condition concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition\n\n\n\n\ncondition_start_date\n\n\nUse this date to determine the start date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_start_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_date\n\n\nUse this date to determine the end date of the condition\n\n\nMost often data sources do not have the idea of a start date for a condition. Rather, if a source only has one date associated with a condition record it is acceptable to use that date for both the CONDITION_START_DATE and the CONDITION_END_DATE.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_end_datetime\n\n\n\n\nIf a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_type_concept_id\n\n\nThis field can be used to determine the provenance of the Condition record, as in whether the condition was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the CONDITION_TYPE_CONCEPT_ID that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncondition_status_concept_id\n\n\nThis concept represents the point during the visit the diagnosis was given (admitting diagnosis, final diagnosis), whether the diagnosis was determined due to laboratory findings, if the diagnosis was exclusionary, or if it was a preliminary diagnosis, among others.\n\n\nChoose the Concept in the Condition Status domain that best represents the point during the visit when the diagnosis was given. These can include admitting diagnosis, principal diagnosis, and secondary diagnosis. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nCondition Status\n\n\n\n\nstop_reason\n\n\nThe Stop Reason indicates why a Condition is no longer valid with respect to the purpose within the source data. Note that a Stop Reason does not necessarily imply that the condition is no longer occurring.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with condition record, e.g. the provider who made the diagnosis or the provider who recorded the symptom.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the condition occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a CONDITION_START_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the CONDITION_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the condition occurred. For example, if the person was in the ICU at the time of the diagnosis the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ncondition_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncondition_source_concept_id\n\n\nThis is the concept representing the condition source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Condition necessary for a given analytic use case. Consider using CONDITION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncondition_status_source_value\n\n\nThis field houses the verbatim value from the source data representing the condition status.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a diagnosis was given to a patient. This source value is mapped to a standard concept which is stored in the CONDITION_STATUS_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDRUG_EXPOSURE\nTable Description\nThis table captures records about the exposure to a Drug ingested or otherwise introduced into the body. A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain biochemical effect on the metabolism. Drugs include prescription and over-the-counter medicines, vaccines, and large-molecule biologic therapies. Radiological devices ingested or applied locally do not count as Drugs.\nUser Guide\nThe purpose of records in this table is to indicate an exposure to a certain drug as best as possible. In this context a drug is defined as an active ingredient. Drug Exposures are defined by Concepts from the Drug domain, which form a complex hierarchy. As a result, one DRUG_SOURCE_CONCEPT_ID may map to multiple standard concept ids if it is a combination product. Records in this table represent prescriptions written, prescriptions dispensed, and drugs administered by a provider to name a few. The DRUG_TYPE_CONCEPT_ID can be used to find and filter on these types. This table includes additional information about the drug products, the quantity given, and route of administration.\nETL Conventions\nInformation about quantity and dose is provided in a variety of different ways and it is important for the ETL to provide as much information as possible from the data. Depending on the provenance of the data fields may be captured differently i.e. quantity for drugs administered may have a separate meaning from quantity for prescriptions dispensed. If a patient has multiple records on the same day for the same drug or procedures the ETL should not de-dupe them unless there is probable reason to believe the item is a true data duplicate. Take note on how to handle refills for prescriptions written.For detailed conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndrug_exposure_id\n\n\nThe unique key given to records of drug dispensings or administrations for a person. Refer to the ETL for how duplicate drugs during the same visit were handled.\n\n\nEach instance of a drug dispensing or administration present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same drug within the same visit. It is valid to keep these duplicates and assign them individual, unique, DRUG_EXPOSURE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the drug dispensing or administration is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndrug_concept_id\n\n\nThe DRUG_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a drug product or molecule otherwise introduced to the body. The drug concepts can have a varying degree of information about drug strength and dose. This information is relevant in the context of quantity and administration information in the subsequent fields plus strength information from the DRUG_STRENGTH table, provided as part of the standard vocabulary download.\n\n\nThe standard CONCEPT_ID that represents the DRUG_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the drug concept representing the most amount of detail you have. Records whose source values map to standard concepts with a domain of Drug should go in this table. When the Drug Source Value of the code cannot be translated into Standard Drug Concept IDs, a Drug exposure entry is stored with only the corresponding SOURCE_CONCEPT_ID and DRUG_SOURCE_VALUE and a DRUG_CONCEPT_ID of 0. The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: Marketed Product, Branded Pack, Clinical Pack, Branded Drug, Clinical Drug, Branded Drug Component, Clinical Drug Component, Branded Drug Form, Clinical Drug Form, and only if no other information is available Ingredient. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDrug\n\n\n\n\ndrug_exposure_start_date\n\n\nUse this date to determine the start date of the drug record.\n\n\nValid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration was recorded. It is a valid ETL choice to use the date the drug was ordered as the DRUG_EXPOSURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_start_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_date\n\n\nThe DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient.\n\n\nIf this information is not explicitly available in the data, infer the end date from start date and duration.For detailed conventions for how to populate this field, please see the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_exposure_end_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nverbatim_end_date\n\n\nThis is the end date of the drug exposure as it appears in the source data, if it is given\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure, etc.\n\n\nChoose the drug_type_concept_id that best represents the provenance of the record, for example whether it came from a record of a prescription written or physician administered drug. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nstop_reason\n\n\nThe reason a person stopped a medication as it is represented in the source. Reasons include regimen completed, changed, removed, etc. This field will be retired in v6.0.\n\n\nThis information is often not populated in source data and it is a valid etl choice to leave it blank if the information does not exist.\n\n\nvarchar(20)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrefills\n\n\nThis is only filled in when the record is coming from a prescription written this field is meant to represent intended refills at time of the prescription.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nTo find the dose form of a drug the RELATIONSHIP table can be used where the relationship_id is ‘Has dose form’. If liquid, quantity stands for the total amount dispensed or ordered of ingredient in the units given by the drug_strength table. If the unit from the source data does not align with the unit in the DRUG_STRENGTH table the quantity should be converted to the correct unit given in DRUG_STRENGTH. For clinical drugs with fixed dose forms (tablets etc.) the quantity is the number of units/tablets/capsules prescribed or dispensed (can be partial, but then only 1/2 or 1/3, not 0.01). Clinical drugs with divisible dose forms (injections) the quantity is the amount of ingredient the patient got. For example, if the injection is 2mg/mL but the patient got 80mL then quantity is reported as 160. Quantified clinical drugs with divisible dose forms (prefilled syringes), the quantity is the amount of ingredient similar to clinical drugs. Please see how to calculate drug dose for more information.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndays_supply\n\n\n\n\nThe number of days of supply of the medication as recorded in the original prescription or dispensing record. Days supply can differ from actual drug duration (i.e. prescribed days supply vs actual exposure). \n\n\ninteger\n\n\nNo\n\n\nfield should be left empty if the source data does not contain a verbatim days_supply, and should not be calculated from other fields.Negative values are not allowed. If the source has negative days supply the record should be dropped as it is unknown if the patient actually took the drug. Several actions are possible: 1) record is not trustworthy and we remove the record entirely. 2) we trust the record and leave days_supply empty or 3) record needs to be combined with other record (e.g. reversal of prescription). High values (>365 days) should be investigated. If considered an error in the source data (e.g. typo), the value needs to be excluded to prevent creation of unrealistic long eras.\n\n\nNo\n\n\nNo\n\n\n\n\n\n\nsig\n\n\nThis is the verbatim instruction for the drug as written by the provider.\n\n\nPut the written out instructions for the drug as it is verbatim in the source, if available.\n\n\nvarchar(MAX)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nroute_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the ROUTE_SOURCE_VALUE maps to in the route domain. This is meant to represent the route of administration of the drug. Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nRoute\n\n\n\n\nlot_number\n\n\nAn identifier assigned to a particular quantity or lot of drug product from the manufacturer.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with drug record, e.g. the provider who wrote the prescription or the provider who administered the drug.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the ordering vs administering physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the drug was prescribed, administered or dispensed.\n\n\nTo populate this field drug exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the drug exposure occurred. For example, if the person was in the ICU at the time of the drug administration the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndrug_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Drug Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndrug_source_concept_id\n\n\nThis is the concept representing the drug source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Drug necessary for a given analytic use case. Consider using DRUG_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DRUG_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nroute_source_value\n\n\nThis field houses the verbatim value from the source data representing the drug route.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating when and how a drug was given to a patient. This source value is mapped to a standard concept which is stored in the ROUTE_CONCEPT_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndose_unit_source_value\n\n\nThis field houses the verbatim value from the source data representing the dose unit of the drug given.\n\n\nThis information may be called something different in the source data but the field is meant to contain a value indicating the unit of dosage of drug given to the patient. This is an older column and will be deprecated in an upcoming version.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nPROCEDURE_OCCURRENCE\nTable Description\nThis table contains records of activities or processes ordered by, or carried out by, a healthcare provider on the patient with a diagnostic or therapeutic purpose.\nUser Guide\nLab tests are not a procedure, if something is observed with an expected resulting amount and unit then it should be a measurement. Phlebotomy is a procedure but so trivial that it tends to be rarely captured. It can be assumed that there is a phlebotomy procedure associated with many lab tests, therefore it is unnecessary to add them as separate procedures. If the user finds the same procedure over concurrent days, it is assumed those records are part of a procedure lasting more than a day. This logic is in lieu of the procedure_end_date, which will be added in a future version of the CDM.\nETL Conventions\nIf a procedure lasts more than 24 hours, then it should be recorded as a separate record for each day the procedure occurred, this logic is in lieu of the PROCEDURE_END_DATE, which will be added in a future version of the CDM. When dealing with duplicate records, the ETL must determine whether to sum them up into one record or keep them separate. Things to consider are: - Same Procedure - Same PROCEDURE_DATETIME - Same Visit Occurrence or Visit Detail - Same Provider - Same Modifier for Procedures. Source codes and source text fields mapped to Standard Concepts of the Procedure Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nprocedure_occurrence_id\n\n\nThe unique key given to a procedure record for a person. Refer to the ETL for how duplicate procedures during the same visit were handled.\n\n\nEach instance of a procedure occurrence in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same procedure within the same visit. It is valid to keep these duplicates and assign them individual, unique, PROCEDURE_OCCURRENCE_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the PERSON for whom the procedure is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nprocedure_concept_id\n\n\nThe PROCEDURE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a procedure\n\n\nThe standard CONCEPT_ID that represents the PROCEDURE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the procedure concept representing the most amount of detail you have. Only records whose source values map to standard concepts with a domain of should go in this table. Accepted Concepts.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nProcedure\n\n\n\n\nprocedure_date\n\n\nUse this date to determine the date the procedure started.\n\n\nThis is meant to be the start date of the procedure. It will be renamed in a future version to PROCEDURE_START_DATE.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_datetime\n\n\n\n\nIf the procedure has a start time in the native date, use this field to house that information. This will be renamed in a future version to PROCEDURE_START_DATETIME.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_type_concept_id\n\n\nThis field can be used to determine the provenance of the Procedure record, as in whether the procedure was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the PROCEDURE_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. If a procedure is recorded as an EHR encounter, the PROCEDURE_TYPE_CONCEPT would be ‘EHR encounter record’. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nmodifier_concept_id\n\n\nThe modifiers are intended to give additional information about the procedure but as of now the vocabulary is under review.\n\n\nIt is up to the ETL to choose how to map modifiers if they exist in source data. These concepts are typically distinguished by ‘Modifier’ concept classes (e.g., ‘CPT4 Modifier’ as part of the ‘CPT4’ vocabulary). If there is more than one modifier on a record, one should be chosen that pertains to the procedure rather than provider. Accepted Concepts.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nquantity\n\n\nIf the quantity value is omitted, a single procedure is assumed.\n\n\nIf a Procedure has a quantity of ‘0’ in the source, this should default to ‘1’ in the ETL. If there is a record in the source it can be assumed the exposure occurred at least once\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with the procedure record, e.g. the provider who performed the Procedure.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record, for example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the procedure occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a PROCEDURE_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the Visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the PROCEDURE_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Procedure occurred. For example, if the Person was in the ICU at the time of the Procedure the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nprocedure_source_value\n\n\nThis field houses the verbatim value from the source data representing the procedure that occurred. For example, this could be an CPT4 or OPCS4 code.\n\n\nUse this value to look up the source concept id and then map the source concept id to a standard concept id.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprocedure_source_concept_id\n\n\nThis is the concept representing the procedure source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Procedure necessary for a given analytic use case. Consider using PROCEDURE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the PROCEDURE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\nCONCEPT\n\n\n\n\n\n\nmodifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the modifier code for the procedure that occurred.\n\n\nThe value stored here is mapped to a MODIFIER_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEVICE_EXPOSURE\nTable Description\nThe Device domain captures information about a person’s exposure to a foreign physical object or instrument which is used for diagnostic or therapeutic purposes through a mechanism beyond chemical action. Devices include implantable objects (e.g. pacemakers, stents, artificial joints), medical equipment and supplies (e.g. bandages, crutches, syringes), other instruments used in medical procedures (e.g. sutures, defibrillators) and material used in clinical care (e.g. adhesives, body material, dental material, surgical material).\nUser Guide\nThe distinction between Devices or supplies and Procedures are sometimes blurry, but the former are physical objects while the latter are actions, often to apply a Device or supply.\nETL Conventions\nSource codes and source text fields mapped to Standard Concepts of the Device Domain have to be recorded here.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndevice_exposure_id\n\n\nThe unique key given to records a person’s exposure to a foreign physical object or instrument.\n\n\nEach instance of an exposure to a foreign object or device present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndevice_concept_id\n\n\nThe DEVICE_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source concept id which represents a foreign object or instrument the person was exposed to.\n\n\nThe standard CONCEPT_ID that represents the DEVICE_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the device concept representing the most amount of detail you have. Accepted concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nDevice\n\n\n\n\ndevice_exposure_start_date\n\n\nUse this date to determine the start date of the device record.\n\n\nValid entries include a start date of a procedure to implant a device, the date of a prescription for a device, or the date of device administration.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_start_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_date\n\n\nThe DEVICE_EXPOSURE_END_DATE denotes the day the device exposure ended for the patient, if given.\n\n\nPut the end date or discontinuation date as it appears from the source data or leave blank if unavailable.\n\n\ndate\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_exposure_end_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_type_concept_id\n\n\nYou can use the TYPE_CONCEPT_ID to denote the provenance of the record, as in whether the record is from administrative claims or EHR.\n\n\nChoose the device_type_concept_id that best represents the provenance of the record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nunique_device_id\n\n\nThis is the Unique Device Identification (UDI-DI) number for devices regulated by the FDA, if given.\n\n\nFor medical devices that are regulated by the FDA, a Unique Device Identification (UDI) is provided if available in the data source and is recorded in the UNIQUE_DEVICE_ID field.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\n\n\nIf there is a record of device exposure in the source but no quantity value, then set to 1.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider associated with device record, e.g. the provider who wrote the prescription or the provider who implanted the device.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the device was prescribed or given.\n\n\nTo populate this field device exposures must be explicitly initiated in the visit detail record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\ndevice_source_value\n\n\nThis field houses the verbatim value from the source data representing the device exposure that occurred. For example, this could be an NDC or Gemscript code.\n\n\nThis code is mapped to a Standard Device Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndevice_source_concept_id\n\n\nThis is the concept representing the device source value and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Device necessary for a given analytic use case. Consider using DEVICE_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the DEVICE_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nMEASUREMENT\nTable Description\nThe MEASUREMENT table contains records of Measurements, i.e. structured values (numerical or categorical) obtained through systematic and standardized examination or testing of a Person or Person’s sample. The MEASUREMENT table contains both orders and results of such Measurements as laboratory tests, vital signs, quantitative findings from pathology reports, etc. Measurements are stored as attribute value pairs, with the attribute as the Measurement Concept and the value representing the result. The value can be a Concept (stored in VALUE_AS_CONCEPT), or a numerical value (VALUE_AS_NUMBER) with a Unit (UNIT_CONCEPT_ID). The Procedure for obtaining the sample is housed in the PROCEDURE_OCCURRENCE table, though it is unnecessary to create a PROCEDURE_OCCURRENCE record for each measurement if one does not exist in the source data. Measurements differ from Observations in that they require a standardized test or some other activity to generate a quantitative or qualitative result. If there is no result, it is assumed that the lab test was conducted but the result was not captured.\nUser Guide\nMeasurements are predominately lab tests with a few exceptions, like blood pressure or function tests. Results are given in the form of a value and unit combination. When investigating measurements, look for operator_concept_ids (<, >, etc.).\nETL Conventions\nOnly records where the source value maps to a Concept in the measurement domain should be included in this table. Even though each Measurement always has a result, the fields VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are not mandatory as often the result is not given in the source data. When the result is not known, the Measurement record represents just the fact that the corresponding Measurement was carried out, which in itself is already useful information for some use cases. For some Measurement Concepts, the result is included in the test. For example, ICD10 CONCEPT_ID 45548980 ‘Abnormal level of unspecified serum enzyme’ indicates a Measurement and the result (abnormal). In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. In this example, the ‘Maps to’ relationship directs to 4046263 ‘Enzyme measurement’ as well as a ‘Maps to value’ record to 4135493 ‘Abnormal’.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nmeasurement_id\n\n\nThe unique key given to a Measurement record for a Person. Refer to the ETL for how duplicate Measurements during the same Visit were handled.\n\n\nEach instance of a measurement present in the source data should be assigned this unique key. In some cases, a person can have multiple records of the same measurement within the same visit. It is valid to keep these duplicates and assign them individual, unique, MEASUREMENT_IDs, though it is up to the ETL how they should be handled.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Measurement is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nmeasurement_concept_id\n\n\nThe MEASUREMENT_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies. This is the standard concept mapped from the source value which represents a measurement.\n\n\nThe standard CONCEPT_ID that represents the MEASUREMENT_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the measurement concept representing the most amount of detail you have. Only records whose source values map to concepts with a domain of Measurement should go in this table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nMeasurement\n\n\n\n\nmeasurement_date\n\n\nUse this date to determine the date of the measurement.\n\n\nIf there are multiple dates in the source data associated with a record such as order_date, draw_date, and result_date, choose the one that is closest to the date the sample was drawn from the patient.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_datetime\n\n\n\n\nThis is not required. If a source does not specify datetime the convention is to set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_time\n\n\n\n\nThis is present for backwards compatibility and will be deprecated in an upcoming version.\n\n\nvarchar(10)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_type_concept_id\n\n\nThis field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\noperator_concept_id\n\n\nThe meaning of Concept 4172703 for ‘=’ is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it’s important when devising analyses to not to forget testing for the content of this field for values different from =.\n\n\nOperators are <, <=, =, >=, > and these concepts belong to the ‘Meas Value Operator’ domain. Accepted Concepts. The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there’s an exact numeric value given (instead of putting ‘=’) or there’s no numeric value at all.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.\n\n\nConvention for negative values\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIf the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the to value relationship in the vocabulary.\n\n\nIf there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the to value relationship in the vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nAt present, there isn’t a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it’s not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.\n\n\nIf the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nrange_low\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrange_high\n\n\nRanges have the same unit as the VALUE_AS_NUMBER. These ranges are provided by the source and should remain NULL if not given.\n\n\nIf reference ranges for upper and lower limit of normal as provided (typically by a laboratory) these are stored in the RANGE_HIGH and RANGE_LOW fields. This should be set to NULL if not provided.\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nprovider_id\n\n\nThe provider associated with measurement record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Measurement occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If a MEASUREMENT_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the measurement record. If a measurement is related to a visit explicitly in the source data, it is possible that the result date of the Measurement falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Measurement occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nmeasurement_source_value\n\n\nThis field contains the exact value from the source data that represents the measurement that occurred.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in MEASUREMENT_CONCEPT_ID and in the ‘Measurement’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nmeasurement_source_concept_id\n\n\nThis is the concept representing the MEASUREMENT_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Measurement necessary for a given analytic use case. Consider using MEASUREMENT_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the MEASUREMENT_SOURCE_VALUE is coded in the source data using a vocabulary supported by OMOP Standardized Vocabularies, insert the CONCEPT_ID representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field contains the exact value from the source data that represents the unit of measurement used.\n\n\nThis value corresponds to a standardized CONCEPT_ID found in UNIT_CONCEPT_ID and in the ‘Unit’ domain within the Standardized Vocabularies. The original code is retained here for reference purposes.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_source_value\n\n\nThis field houses the verbatim result value of the Measurement from the source data .\n\n\nIf both a continuous and categorical result are given in the source data such that both VALUE_AS_NUMBER and VALUE_AS_CONCEPT_ID are both included, store the verbatim value that was mapped to VALUE_AS_CONCEPT_ID here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nOBSERVATION\nTable Description\nThe OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.\nUser Guide\nObservations differ from Measurements in that they do not require a standardized test or some other activity to generate clinical fact. Typical observations are medical history, family history, the stated need for certain treatment, social circumstances, lifestyle choices, healthcare utilization patterns, etc. If the generation clinical facts requires a standardized testing such as lab testing or imaging and leads to a standardized result, the data item is recorded in the MEASUREMENT table. If the clinical fact observed determines a sign, symptom, diagnosis of a disease or other medical condition, it is recorded in the CONDITION_OCCURRENCE table. Valid Observation Concepts are not enforced to be from any domain but they must not belong to the Condition, Procedure, Drug, Device, Specimen, or Measurement domains and they must be Standard Concepts. The observation table usually records the date or datetime of when the observation was obtained, not the date of the observation starting. For example, if the patient reports that they had a heart attack when they were 50, the observation date or datetime is the date of the report, the heart attack observation can have a value_as_concept which captures how long ago the observation applied to the patient.\nETL Conventions\nRecords whose Source Values map to any domain besides Condition, Procedure, Drug, Specimen, Measurement or Device should be stored in the Observation table. Observations can be stored as attribute value pairs, with the attribute as the Observation Concept and the value representing the clinical fact. This fact can be a Concept (stored in VALUE_AS_CONCEPT), a numerical value (VALUE_AS_NUMBER) or a verbatim string (VALUE_AS_STRING). Even though Observations do not have an explicit result, the clinical fact can be stated separately from the type of Observation in the VALUE_AS_* fields. It is recommended for Observations that are suggestive statements of positive assertion should have a value of ‘Yes’ (concept_id=4188539), recorded, even though the null value is the equivalent.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nobservation_id\n\n\nThe unique key given to an Observation record for a Person. Refer to the ETL for how duplicate Observations during the same Visit were handled.\n\n\nEach instance of an observation present in the source data should be assigned this unique key.\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe PERSON_ID of the Person for whom the Observation is recorded. This may be a system generated code.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nobservation_concept_id\n\n\nThe OBSERVATION_CONCEPT_ID field is recommended for primary use in analyses, and must be used for network studies.\n\n\nThe standard CONCEPT_ID that represents the OBSERVATION_SOURCE_VALUE. The concept id should be derived either from mapping from the source concept id or by picking the concept representing the most amount of detail you have. There is no specified domain that the Concepts in this table must adhere to. The only rule is that records with Concepts in the Condition, Procedure, Drug, Measurement, or Device domains MUST go to the corresponding table.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nobservation_date\n\n\nThe date of when the Observation was obtained. Depending on what the Observation represents this could be the date of a lab test, the date of a survey, or the date a patient’s family history was taken.\n\n\nFor some observations the ETL may need to make a choice as to which date to choose.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_datetime\n\n\n\n\nIf no time is given set to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_type_concept_id\n\n\nThis field can be used to determine the provenance of the Observation record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.\n\n\nChoose the OBSERVATION_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nvalue_as_number\n\n\nThis is the numerical value of the Result of the Observation, if applicable and available. It is not expected that all Observations will have numeric results, rather, this field is here to house values should they exist.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_string\n\n\nThis is the categorical value of the Result of the Observation, if applicable and available.\n\n\n\n\nvarchar(60)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nvalue_as_concept_id\n\n\nIt is possible that some records destined for the Observation table have two clinical ideas represented in one source code. This is common with ICD10 codes that describe a family history of some Condition, for example. In OMOP the Vocabulary breaks these two clinical ideas into two codes; one becomes the OBSERVATION_CONCEPT_ID and the other becomes the VALUE_AS_CONCEPT_ID. It is important when using the Observation table to keep this possibility in mind and to examine the VALUE_AS_CONCEPT_ID field for relevant information.\n\n\nNote that the value of VALUE_AS_CONCEPT_ID may be provided through mapping from a source Concept which contains the content of the Observation. In those situations, the CONCEPT_RELATIONSHIP table in addition to the ‘Maps to’ record contains a second record with the relationship_id set to ‘Maps to value’. For example, ICD10 Z82.4 ‘Family history of ischaemic heart disease and other diseases of the circulatory system’ has a ‘Maps to’ relationship to 4167217 ‘Family history of clinical finding’ as well as a ‘Maps to value’ record to 134057 ‘Disorder of cardiovascular system’. If there’s no categorial result in a source_data, set value_as_concept_id to NULL, if there is a categorial result in a source_data but without mapping, set value_as_concept_id to 0.\n\n\nInteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nqualifier_concept_id\n\n\nThis field contains all attributes specifying the clinical fact further, such as as degrees, severities, drug-drug interaction alerts etc.\n\n\nUse your best judgement as to what Concepts to use here and if they are necessary to accurately represent the clinical record. There is no restriction on the domain of these Concepts, they just need to be Standard.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_concept_id\n\n\nThere is currently no recommended unit for individual observation concepts. UNIT_SOURCE_VALUES should be mapped to a Standard Concept in the Unit domain that best represents the unit as given in the source data.\n\n\nThere is no standardization requirement for units associated with OBSERVATION_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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nUnit\n\n\n\n\nprovider_id\n\n\nThe provider associated with the observation record, e.g. the provider who ordered the test or the provider who recorded the result.\n\n\nThe ETL may need to make a choice as to which PROVIDER_ID to put here. Based on what is available this may or may not be different than the provider associated with the overall VISIT_OCCURRENCE record. For example the admitting vs attending physician on an EHR record.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe visit during which the Observation occurred.\n\n\nDepending on the structure of the source data, this may have to be determined based on dates. If an OBSERVATION_DATE occurs within the start and end date of a Visit it is a valid ETL choice to choose the VISIT_OCCURRENCE_ID from the visit that subsumes it, even if not explicitly stated in the data. While not required, an attempt should be made to locate the VISIT_OCCURRENCE_ID of the observation record. If an observation is related to a visit explicitly in the source data, it is possible that the result date of the Observation falls outside of the bounds of the Visit dates.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe VISIT_DETAIL record during which the Observation occurred. For example, if the Person was in the ICU at the time the VISIT_OCCURRENCE record would reflect the overall hospital stay and the VISIT_DETAIL record would reflect the ICU stay during the hospital visit.\n\n\nSame rules apply as for the VISIT_OCCURRENCE_ID.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nobservation_source_value\n\n\nThis field houses the verbatim value from the source data representing the Observation that occurred. For example, this could be an ICD10 or Read code.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nobservation_source_concept_id\n\n\nThis is the concept representing the OBSERVATION_SOURCE_VALUE and may not necessarily be standard. This field is discouraged from use in analysis because it is not required to contain Standard Concepts that are used across the OHDSI community, and should only be used when Standard Concepts do not adequately represent the source detail for the Observation necessary for a given analytic use case. Consider using OBSERVATION_CONCEPT_ID instead to enable standardized analytics that can be consistent across the network.\n\n\nIf the OBSERVATION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nunit_source_value\n\n\nThis field houses the verbatim value from the source data representing the unit of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nqualifier_source_value\n\n\nThis field houses the verbatim value from the source data representing the qualifier of the Observation that occurred.\n\n\nThis code is mapped to a Standard Concept in the Standardized Vocabularies and the original code is stored here for reference.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nDEATH\nTable Description\nThe death domain contains the clinical event for how and when a Person dies. A person can have up to one record if the source system contains evidence about the Death, such as: Condition in an administrative claim, status of enrollment into a health plan, or explicit record in EHR data.\nETL Conventions\nFor specific conventions on how to populate this table, please refer to the THEMIS repository.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\ndeath_date\n\n\nThe date the person was deceased.\n\n\nIf the precise date include day or month is not known or not allowed, December is used as the default month, and the last day of the month the default day. For additional conventions related to this field, please refer to the THEMIS repository.\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_datetime\n\n\n\n\nIf you have date and time of death, populate death_datetime, otherwise leave NULL\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndeath_type_concept_id\n\n\nThis is the provenance of the death record, i.e., where it came from. It is possible that an administrative claims database would source death information from a government file so do not assume the Death Type is the same as the Visit Type, etc.\n\n\nUse the type concept that reflects the source of the death record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\ncause_concept_id\n\n\nThis is the Standard Concept representing the Person’s cause of death, if available.\n\n\nThere is no specified domain for this concept, just choose the Standard Concept Id that the Source Concept Id maps to.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ncause_source_value\n\n\n\n\nIf available, put the source code representing the cause of death here.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ncause_source_concept_id\n\n\n\n\nIf the cause of death was coded using a Vocabulary present in the OMOP Vocabularies (not necessarily a standard concept) put the CONCEPT_ID representing the cause of death here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\n\n\nNOTE\nTable Description\nThe NOTE table captures unstructured information that was recorded by a provider about a patient in free text (in ASCII, or preferably in UTF8 format) notes on a given date. The type of note_text is CLOB or varchar(MAX) depending on RDBMS.\nETL Conventions\nHL7/LOINC CDO is a standard for consistent naming of documents to support a range of use cases: retrieval, organization, display, and exchange. It guides the creation of LOINC codes for clinical notes. CDO annotates each document with 5 dimensions:\n\nKind of Document: Characterizes the general structure of the document at a macro level (e.g. Anesthesia Consent)\nType of Service: Characterizes the kind of service or activity (e.g. evaluations, consultations, and summaries). The notion of time sequence, e.g., at the beginning (admission) at the end (discharge) is subsumed in this axis. Example: Discharge Teaching.\nSetting: Setting is an extension of CMS’s definitions (e.g. Inpatient, Outpatient)\nSubject Matter Domain (SMD): Characterizes the subject matter domain of a note (e.g. Anesthesiology)\nRole: Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty (e.g. Physician) Each combination of these 5 dimensions rolls up to a unique LOINC code.\n\nAccording to CDO requirements, only 2 of the 5 dimensions are required to properly annotate a document; Kind of Document and any one of the other 4 dimensions. However, not all the permutations of the CDO dimensions will necessarily yield an existing LOINC code. Each of these dimensions are contained in the OMOP Vocabulary under the domain of ‘Meas Value’ with each dimension represented as a Concept Class.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_id\n\n\nA unique identifier for each note.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nnote_date\n\n\nThe date the note was recorded.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_datetime\n\n\n\n\nIf time is not given set the time to NULL.\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_type_concept_id\n\n\nThe provenance of the note. Most likely this will be EHR.\n\n\nPut the source system of the note, as in EHR record. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nnote_class_concept_id\n\n\nA Standard Concept Id representing the HL7 LOINC Document Type Vocabulary classification of the note.\n\n\nMap the note classification to a Standard Concept. For more information see the ETL Conventions in the description of the NOTE table. Accepted Concepts. This Concept can alternatively be represented by concepts with the relationship ‘Kind of (LOINC)’ to 706391 (Note).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_title\n\n\nThe title of the note.\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_text\n\n\nThe content of the note.\n\n\n\n\nvarchar(MAX)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nencoding_concept_id\n\n\nThis is the Concept representing the character encoding type.\n\n\nPut the Concept Id that represents the encoding character type here. Currently the only option is UTF-8 (32678). It the note is encoded in any other type, like ASCII then put 0.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nlanguage_concept_id\n\n\nThe language of the note.\n\n\nUse Concepts that are descendants of the concept 4182347 (World Languages).\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nprovider_id\n\n\nThe Provider who wrote the note.\n\n\nThe ETL may need to make a determination on which provider to put here.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nPROVIDER\n\n\n\n\n\n\nvisit_occurrence_id\n\n\nThe Visit during which the note was written.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_OCCURRENCE\n\n\n\n\n\n\nvisit_detail_id\n\n\nThe Visit Detail during which the note was written.\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nVISIT_DETAIL\n\n\n\n\n\n\nnote_source_value\n\n\n\n\nThe source value mapped to the NOTE_CLASS_CONCEPT_ID.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nNOTE_NLP\nTable Description\nThe NOTE_NLP table encodes all output of NLP on clinical notes. Each row represents a single extracted term from a note.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nnote_nlp_id\n\n\nA unique identifier for the NLP record.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nnote_id\n\n\nThis is the NOTE_ID for the NOTE record the NLP record is associated to.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nsection_concept_id\n\n\n\n\nThe SECTION_CONCEPT_ID should be used to represent the note section contained in the NOTE_NLP record. These concepts can be found as parts of document panels and are based on the type of note written, i.e. a discharge summary. These panels can be found as concepts with the relationship ‘Subsumes’ to CONCEPT_ID 45875957.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nsnippet\n\n\nA small window of text surrounding the term\n\n\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\noffset\n\n\nCharacter offset of the extracted term in the input note\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nlexical_variant\n\n\nRaw text extracted from the NLP tool.\n\n\n\n\nvarchar(250)\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnote_nlp_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnote_nlp_source_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nnlp_system\n\n\n\n\nName and version of the NLP system that extracted the term. Useful for data provenance.\n\n\nvarchar(250)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_date\n\n\nThe date of the note processing.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nnlp_datetime\n\n\nThe date and time of the note processing.\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_exists\n\n\n\n\nTerm_exists is defined as a flag that indicates if the patient actually has or had the condition. Any of the following modifiers would make Term_exists false: Negation = true Subject = [anything other than the patient] Conditional = true/li> Rule_out = true Uncertain = very low certainty or any lower certainties A complete lack of modifiers would make Term_exists true.\n\n\nvarchar(1)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_temporal\n\n\n\n\nTerm_temporal is to indicate if a condition is present or just in the past. The following would be past: - History = true - Concept_date = anything before the time of the report\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nterm_modifiers\n\n\n\n\nFor the modifiers that are there, they would have to have these values: - Negation = false - Subject = patient - Conditional = false - Rule_out = false - Uncertain = true or high or moderate or even low (could argue about low). Term_modifiers will concatenate all modifiers for different types of entities (conditions, drugs, labs etc) into one string. Lab values will be saved as one of the modifiers.\n\n\nvarchar(2000)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nSPECIMEN\nTable Description\nThe specimen domain contains the records identifying biological samples from a person.\nETL Conventions\nAnatomic site is coded at the most specific level of granularity possible, such that higher level classifications can be derived using the Standardized Vocabularies.\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\nspecimen_id\n\n\nUnique identifier for each specimen.\n\n\n\n\ninteger\n\n\nYes\n\n\nYes\n\n\nNo\n\n\n\n\n\n\n\n\nperson_id\n\n\nThe person from whom the specimen is collected.\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nPERSON\n\n\n\n\n\n\nspecimen_concept_id\n\n\n\n\nThe standard CONCEPT_ID that the SPECIMEN_SOURCE_VALUE maps to in the specimen domain. Accepted Concepts\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_type_concept_id\n\n\n\n\nPut the source of the specimen record, as in an EHR system. Accepted Concepts. A more detailed explanation of each Type Concept can be found on the vocabulary wiki.\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\nType Concept\n\n\n\n\nspecimen_date\n\n\nThe date the specimen was collected.\n\n\n\n\ndate\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_datetime\n\n\n\n\n\n\ndatetime\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nquantity\n\n\nThe amount of specimen collected from the person.\n\n\n\n\nfloat\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_concept_id\n\n\nThe unit for the quantity of the specimen.\n\n\nMap the UNIT_SOURCE_VALUE to a Standard Concept in the Unit domain. Accepted Concepts. 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. If there’s no mapping of a source unit, populate unit_concept_id with 0.\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nanatomic_site_concept_id\n\n\nThis is the site on the body where the specimen is from.\n\n\nMap the ANATOMIC_SITE_SOURCE_VALUE to a Standard Concept in the Spec Anatomic Site domain. This should be coded at the lowest level of granularity Accepted Concepts\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\ndisease_status_concept_id\n\n\n\n\n\n\ninteger\n\n\nNo\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nspecimen_source_id\n\n\nThis is the identifier for the specimen from the source system.\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nspecimen_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nunit_source_value\n\n\n\n\nThis unit for the quantity of the specimen, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nanatomic_site_source_value\n\n\n\n\nThis is the site on the body where the specimen was taken from, as represented in the source.\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndisease_status_source_value\n\n\n\n\n\n\nvarchar(50)\n\n\nNo\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\n\n\nFACT_RELATIONSHIP\nTable Description\nThe FACT_RELATIONSHIP table contains records about the relationships between facts stored as records in any table of the CDM. Relationships can be defined between facts from the same domain, or different domains. Examples of Fact Relationships include: Person relationships (parent-child), care site relationships (hierarchical organizational structure of facilities within a health system), indication relationship (between drug exposures and associated conditions), usage relationships (of devices during the course of an associated procedure), or facts derived from one another (measurements derived from an associated specimen).\nETL Conventions\nAll relationships are directional, and each relationship is represented twice symmetrically within the FACT_RELATIONSHIP table. For example, two persons if person_id = 1 is the mother of person_id = 2 two records are in the FACT_RELATIONSHIP table (all strings in fact concept_id records in the Concept table: - Person, 1, Person, 2, parent of - Person, 2, Person, 1, child of\n\n\n\n\nCDM Field\n\n\nUser Guide\n\n\nETL Conventions\n\n\nDatatype\n\n\nRequired\n\n\nPrimary Key\n\n\nForeign Key\n\n\nFK Table\n\n\nFK Domain\n\n\n\n\n\n\ndomain_concept_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_1\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\ndomain_concept_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT\n\n\n\n\n\n\nfact_id_2\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nNo\n\n\n\n\n\n\n\n\nrelationship_concept_id\n\n\n\n\n\n\ninteger\n\n\nYes\n\n\nNo\n\n\nYes\n\n\nCONCEPT"
},
{
"objectID": "cdm53.html#health-system-data-tables",
diff --git a/inst/csv/OMOP_CDMv5.3_Field_Level.csv b/inst/csv/OMOP_CDMv5.3_Field_Level.csv
index aba25463..c6de06a8 100644
--- a/inst/csv/OMOP_CDMv5.3_Field_Level.csv
+++ b/inst/csv/OMOP_CDMv5.3_Field_Level.csv
@@ -149,7 +149,7 @@ measurement,measurement_date,Yes,date,Use this date to determine the date of the
measurement,measurement_datetime,No,datetime,NA,This is not required. If a source does not specify datetime the convention is to set to NULL.,No,No,NA,NA,NA,NA
measurement,measurement_time,No,varchar(10),NA,This is present for backwards compatibility and will be deprecated in an upcoming version.,No,No,NA,NA,NA,NA
measurement,measurement_type_concept_id,Yes,integer,"This field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.","Choose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Type+Concept&standardConcept=Standard&page=1&pageSize=15&query=). A more detailed explanation of each Type Concept can be found on the [vocabulary wiki](https://github.com/OHDSI/Vocabulary-v5.0/wiki/Vocab.-TYPE_CONCEPT).",No,Yes,CONCEPT,CONCEPT_ID,Type Concept,NA
-measurement,operator_concept_id,No,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
+measurement,operator_concept_id,No,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
measurement,value_as_number,No,float,"This is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.",[Convention for negative values](https://ohdsi.github.io/Themis/negative_value_as_number.html),No,No,NA,NA,NA,NA
measurement,value_as_concept_id,No,integer,If the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the \Maps to value\ relationship in the vocabulary.,"If there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the \Maps to value\ relationship in the vocabulary.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
measurement,unit_concept_id,No,integer,"At present, there isn't a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it's not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.","If the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.",No,Yes,CONCEPT,CONCEPT_ID,Unit,NA
diff --git a/inst/csv/OMOP_CDMv5.4_Field_Level.csv b/inst/csv/OMOP_CDMv5.4_Field_Level.csv
index a6d0d4b2..f07fbca9 100644
--- a/inst/csv/OMOP_CDMv5.4_Field_Level.csv
+++ b/inst/csv/OMOP_CDMv5.4_Field_Level.csv
@@ -154,7 +154,7 @@ measurement,measurement_date,TRUE,date,Use this date to determine the date of th
measurement,measurement_datetime,FALSE,datetime,NA,This is not required. If a source does not specify datetime the convention is to set to NULL.,FALSE,FALSE,NA,NA,NA,NA
measurement,measurement_time,FALSE,varchar(10),NA,This is present for backwards compatibility and will be deprecated in an upcoming version.,FALSE,FALSE,NA,NA,NA,NA
measurement,measurement_type_concept_id,TRUE,integer,"This field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.","Choose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Type+Concept&standardConcept=Standard&page=1&pageSize=15&query=). A more detailed explanation of each Type Concept can be found on the [vocabulary wiki](https://github.com/OHDSI/Vocabulary-v5.0/wiki/Vocab.-TYPE_CONCEPT).",FALSE,TRUE,CONCEPT,CONCEPT_ID,Type Concept,NA
-measurement,operator_concept_id,FALSE,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",FALSE,TRUE,CONCEPT,CONCEPT_ID,NA,NA
+measurement,operator_concept_id,FALSE,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",FALSE,TRUE,CONCEPT,CONCEPT_ID,NA,NA
measurement,value_as_number,FALSE,float,"This is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.",[Convention for negative values](https://ohdsi.github.io/Themis/negative_value_as_number.html),FALSE,FALSE,NA,NA,NA,NA
measurement,value_as_concept_id,FALSE,integer,"If the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the ""Maps to value"" relationship in the vocabulary.","If there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the ""Maps to value"" relationship in the vocabulary.",FALSE,TRUE,CONCEPT,CONCEPT_ID,NA,NA
measurement,unit_concept_id,FALSE,integer,"At present, there isn't a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it's not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.","If the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.",FALSE,TRUE,CONCEPT,CONCEPT_ID,Unit,NA
@@ -371,7 +371,7 @@ condition era.",NA,FALSE,FALSE,NA,NA,NA,NA
episode,episode_id,TRUE,integer,A unique identifier for each Episode.,NA,TRUE,FALSE,NA,NA,NA,NA
episode,person_id,TRUE,integer,The PERSON_ID of the PERSON for whom the episode is recorded.,NA,FALSE,TRUE,PERSON,PERSON_ID,NA,NA
episode,episode_concept_id,TRUE,integer,"The EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.","Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see [article] for cancers and [article] for non-cancers describing how these are defined. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Episode&page=1&pageSize=15&query=)",FALSE,TRUE,CONCEPT,CONCEPT_ID,Episode,NA
-episode,episode_start_date,TRUE,date,The date when the Episode beings.,Please see [article] for how to define an Episode start date.,FALSE,FALSE,NA,NA,NA,NA
+episode,episode_start_date,TRUE,date,The date when the Episode begins.,Please see [article] for how to define an Episode start date.,FALSE,FALSE,NA,NA,NA,NA
episode,episode_start_datetime,FALSE,datetime,The date and time when the Episode begins.,NA,FALSE,FALSE,NA,NA,NA,NA
episode,episode_end_date,FALSE,date,The date when the instance of the Episode is considered to have ended.,Please see [article] for how to define an Episode end date.,FALSE,FALSE,NA,NA,NA,NA
episode,episode_end_datetime,FALSE,datetime,The date when the instance of the Episode is considered to have ended.,NA,FALSE,FALSE,NA,NA,NA,NA
diff --git a/inst/csv/OMOP_CDMv5.5_Field_Level.csv b/inst/csv/OMOP_CDMv5.5_Field_Level.csv
index 9e38ce5f..b518711d 100644
--- a/inst/csv/OMOP_CDMv5.5_Field_Level.csv
+++ b/inst/csv/OMOP_CDMv5.5_Field_Level.csv
@@ -154,7 +154,7 @@ measurement,measurement_date,true,date,Use this date to determine the date of th
measurement,measurement_datetime,false,datetime,NA,This is not required. If a source does not specify datetime the convention is to set to NULL.,false,false,NA,NA,NA,NA
measurement,measurement_time,false,varchar(10),NA,This is present for backwards compatibility and will be deprecated in an upcoming version.,false,false,NA,NA,NA,NA
measurement,measurement_type_concept_id,true,integer,"This field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.","Choose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Type+Concept&standardConcept=Standard&page=1&pageSize=15&query=). A more detailed explanation of each Type Concept can be found on the [vocabulary wiki](https://github.com/OHDSI/Vocabulary-v5.0/wiki/Vocab.-TYPE_CONCEPT).",false,true,CONCEPT,CONCEPT_ID,Type Concept,NA
-measurement,operator_concept_id,false,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",false,true,CONCEPT,CONCEPT_ID,NA,NA
+measurement,operator_concept_id,false,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",false,true,CONCEPT,CONCEPT_ID,NA,NA
measurement,value_as_number,false,float,"This is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.",[Convention for negative values](https://ohdsi.github.io/Themis/negative_value_as_number.html),false,false,NA,NA,NA,NA
measurement,value_as_concept_id,false,integer,"If the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the ""Maps to value"" relationship in the vocabulary.","If there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the ""Maps to value"" relationship in the vocabulary.",false,true,CONCEPT,CONCEPT_ID,NA,NA
measurement,unit_concept_id,false,integer,"At present, there isn't a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it's not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.","If the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.",false,true,CONCEPT,CONCEPT_ID,Unit,NA
@@ -377,7 +377,7 @@ condition era.",NA,false,false,NA,NA,NA,NA
episode,episode_id,true,integer,A unique identifier for each Episode.,NA,true,false,NA,NA,NA,NA
episode,person_id,true,integer,The PERSON_ID of the PERSON for whom the episode is recorded.,NA,false,true,PERSON,PERSON_ID,NA,NA
episode,episode_concept_id,true,integer,"The EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.","Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the [information](https://ohdsi.github.io/OncologyWG/model.html#episodes) from the Oncology workgroup describing how these are defined. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Episode&page=1&pageSize=15&query=)",false,true,CONCEPT,CONCEPT_ID,Episode,NA
-episode,episode_start_date,true,date,The date when the Episode beings.,Please see [article] for how to define an Episode start date.,false,false,NA,NA,NA,NA
+episode,episode_start_date,true,date,The date when the Episode begins.,Please see [article] for how to define an Episode start date.,false,false,NA,NA,NA,NA
episode,episode_start_datetime,false,datetime,The date and time when the Episode begins.,NA,false,false,NA,NA,NA,NA
episode,episode_end_date,false,date,The date when the instance of the Episode is considered to have ended.,Please see [article] for how to define an Episode end date.,false,false,NA,NA,NA,NA
episode,episode_end_datetime,false,datetime,The date when the instance of the Episode is considered to have ended.,NA,false,false,NA,NA,NA,NA
diff --git a/inst/csv/OMOP_CDMv6.0_Field_Level.csv b/inst/csv/OMOP_CDMv6.0_Field_Level.csv
index fecd8264..498293ea 100644
--- a/inst/csv/OMOP_CDMv6.0_Field_Level.csv
+++ b/inst/csv/OMOP_CDMv6.0_Field_Level.csv
@@ -149,7 +149,7 @@ measurement,measurement_date,Yes,date,Use this date to determine the date of the
measurement,measurement_datetime,No,datetime,NA,This is not required. If a source does not specify datetime the convention is to set to NULL.,No,No,NA,NA,NA,NA
measurement,measurement_time,No,varchar(10),NA,This is present for backwards compatibility and will be deprecated in an upcoming version.,No,No,NA,NA,NA,NA
measurement,measurement_type_concept_id,Yes,integer,"This field can be used to determine the provenance of the Measurement record, as in whether the measurement was from an EHR system, insurance claim, registry, or other sources.","Choose the MEASUREMENT_TYPE_CONCEPT_ID that best represents the provenance of the record, for example whether it came from an EHR record or billing claim. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Type+Concept&standardConcept=Standard&page=1&pageSize=15&query=). A more detailed explanation of each Type Concept can be found on the [vocabulary wiki](https://github.com/OHDSI/Vocabulary-v5.0/wiki/Vocab.-TYPE_CONCEPT).",No,Yes,CONCEPT,CONCEPT_ID,Type Concept,NA
-measurement,operator_concept_id,No,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explictly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
+measurement,operator_concept_id,No,integer,"The meaning of Concept [4172703](https://athena.ohdsi.org/search-terms/terms/4172703) for '=' is identical to omission of a OPERATOR_CONCEPT_ID value. Since the use of this field is rare, it's important when devising analyses to not to forget testing for the content of this field for values different from =.","Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Meas+Value+Operator&standardConcept=Standard&page=1&pageSize=15&query=). The operator_concept_id explicitly refers to the value of the measurement. Leave it NULL if there's an exact numeric value given (instead of putting '=') or there's no numeric value at all.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
measurement,value_as_number,No,float,"This is the numerical value of the Result of the Measurement, if available. Note that measurements such as blood pressures will be split into their component parts i.e. one record for systolic, one record for diastolic.",[Convention for negative values](https://ohdsi.github.io/Themis/negative_value_as_number.html),No,No,NA,NA,NA,NA
measurement,value_as_concept_id,No,integer,If the raw data gives a categorial result for measurements those values are captured and mapped to standard concepts. This can be done manually or using the \Maps to value\ relationship in the vocabulary.,"If there is no categorial result in the source data, set VALUE_AS_CONCEPT_ID to NULL, if there is a categorial result in a source data but without mapping, set VALUE_AS_CONCEPT_ID to 0, else map to a CONCEPT_ID. These are also mapped using the \Maps to value\ relationship in the vocabulary.",No,Yes,CONCEPT,CONCEPT_ID,NA,NA
measurement,unit_concept_id,No,integer,"At present, there isn't a prescribed unit for individual measurements, such as Hemoglobin A1C, meaning it's not obligatory to express these measurements as a percentage. UNIT_SOURCE_VALUES should be linked to a Standard Concept within the Unit domain that most accurately reflects the unit provided in the source data.","If the source data does not include units, set UNIT_CONCEPT_ID to NULL. If units are provided but not mapped, set UNIT_CONCEPT_ID to 0. Otherwise, map the units to a CONCEPT_ID. Remember that units are case-sensitive in vocabulary.",No,Yes,CONCEPT,CONCEPT_ID,Unit,NA
diff --git a/site/cdm54ToolingSupport.qmd b/site/cdm54ToolingSupport.qmd
index b7fa878f..de5c3540 100644
--- a/site/cdm54ToolingSupport.qmd
+++ b/site/cdm54ToolingSupport.qmd
@@ -21,7 +21,7 @@ Tool | Supports CDM Field if | Link to resource used
DataQualityDashboard | Part of Field Level checks | https://github.com/OHDSI/DataQualityDashboard/blob/main/inst/csv/OMOP_CDMv5.4_Field_Level.csv
Achilles | Covered by at least one Achilles analysis | https://github.com/OHDSI/Achilles/blob/main/inst/csv/achilles/achilles_analysis_details.csv
Atlas Data Sources | A statistic based on the field is shown in a 'Data Sources' visualisation | https://atlas-demo.ohdsi.org/
-Atlas Cohort | Used in te Atlas User Interface for cohort definition criteria (directly, or via 'Add attribute') | https://atlas-demo.ohdsi.org/
+Atlas Cohort | Used in the Atlas User Interface for cohort definition criteria (directly, or via 'Add attribute') | https://atlas-demo.ohdsi.org/
Feature Extraction | Used in one of the Feature Extraction analyses | https://github.com/OHDSI/FeatureExtraction/blob/main/inst/csv/
General criteria:
|