cdmTableName,cdmFieldName,isRequired,cdmDatatype,userGuidance,etlConventions,isPrimaryKey,isForeignKey,fkTableName,fkFieldName,fkDomain,fkClass,unique DQ identifiers
PERSON,person_id,Yes,integer,It is assumed that every person with a different unique identifier is in fact a different person and should be treated independently.,"Any 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 it is an integer, otherwise it can be an autogenerated number.",Yes,No,,,,,
PERSON,gender_concept_id,Yes,integer,This field is meant to capture the biological sex at birth of the Person. This field should not be used to study gender identity issues.,Use 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.,No,Yes,CONCEPT,CONCEPT_ID,Gender,,
PERSON,year_of_birth,Yes,integer,,"For data sources with date of birth, the year should be extracted. For data sources where the year of birth is not available, the approximate year of birth could be derived based on age group categorization, if available.",No,No,,,,,
PERSON,month_of_birth,No,integer,,"For data sources that provide the precise date of birth, the month should be extracted and stored in this field.",No,No,,,,,
PERSON,day_of_birth,No,integer,,"For data sources that provide the precise date of birth, the day should be extracted and stored in this field.",No,No,,,,,
PERSON,birth_datetime,No,datetime,Compute age using birth_datetime.,"For data sources that provide the precise datetime of birth, that value should be stored in this field. If birth_datetime is not provided in the source, use the following logic to infer the date: If day_of_birth is null and month_of_birth is not null then use the first of the month in that year. If month_of_birth is null or if day_of_birth AND month_of_birth are both null and the person has records during their year of birth then use the date of the earliest record, otherwise use the 15th of June of that year. If time of birth is not given use midnight (00:00:0000).",No,No,,,,,
PERSON,race_concept_id,Yes,integer,This field captures race or ethnic background of the person.,"Only 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.",No,Yes,CONCEPT,CONCEPT_ID,Race,,
PERSON,ethnicity_concept_id,Yes,integer,"This 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.",Only 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.,No,Yes,CONCEPT,CONCEPT_ID,Ethnicity,,
PERSON,location_id,No,integer,The location refers to the physical address of the person. This field should capture the last known location of the person. Any prior locations are captured in the LOCATION_HISTORY table.,"Put the location_id from the LOCATION table here that represents the most granular location information for the person. This could represent anything from postal code or parts thereof, state, or county for example. Since many databases contain deindentified data, it is common that the precision of the location is reduced to prevent re-identification. This field should capture the last known location. Any prior locations are captured in the LOCATION_HISTORY table.",No,Yes,LOCATION,LOCATION_ID,,,
PERSON,provider_id,No,integer,The Provider refers to the last known primary care provider (General Practitioner).,"Put 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 business to decide which to put here.",No,Yes,PROVIDER,PROVIDER_ID,,,
PERSON,care_site_id,No,integer,The Care Site refers to where the Provider typically provides the primary care.,,No,Yes,CARE_SITE,CARE_SITE_ID,,,
PERSON,person_source_value,No,varchar(50),Use this field to link back to persons in the source data. This is typically used for error checking of ETL logic.,Some 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.,No,No,,,,,
PERSON,gender_source_value,No,varchar(50),This 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.,Put the biological sex of the person as it appears in the source data.,No,No,,,,,
PERSON,gender_source_concept_id,No,Integer,"Due to the small number of options, this tends to be zero.","If the source data codes biological sex in a non-standard vocabulary, store the concept_id here.",No,Yes,CONCEPT,CONCEPT_ID,,,
PERSON,race_source_value,No,varchar(50),This 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.,Put the race of the person as it appears in the source data.,No,No,,,,,
PERSON,race_source_concept_id,No,Integer,"Due to the small number of options, this tends to be zero.",If the source data codes race in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PERSON,ethnicity_source_value,No,varchar(50),This 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.,"If the person has an ethnicity other than the OMB standard of ""Hispanic"" or ""Not Hispanic"" store that value from the source data here.",No,No,,,,,
PERSON,ethnicity_source_concept_id,No,Integer,"Due to the small number of options, this tends to be zero.","If the source data codes ethnicity in an OMOP supported vocabulary, store the concept_id here.",No,Yes,CONCEPT,CONCEPT_ID,,,
OBSERVATION_PERIOD,observation_period_id,Yes,integer,A Person can have multiple discrete Observation Periods which are identified by the Observation_Period_Id.,Assign a unique observation_period_id to each discrete Observation Period for a Person.,Yes,No,,,,,
OBSERVATION_PERIOD,person_id,Yes,integer,The Person ID of the PERSON record for which the Observation Period is recorded.,,No,Yes,PERSON,PERSON_ID,,,
OBSERVATION_PERIOD,observation_period_start_date,Yes,date,Use this date to determine the start date of the Observation Period,"It 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.",No,No,,,,,
OBSERVATION_PERIOD,observation_period_end_date,Yes,date,Use this date to determine the end date of the period for which we can assume that all events for a Person are recorded.,"It 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.",No,No,,,,,
OBSERVATION_PERIOD,period_type_concept_id,Yes,Integer,"This 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.",Choose the observation_period_type_concept_id that best represents how the period was determined.,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
VISIT_OCCURRENCE,visit_occurrence_id,Yes,integer,Use 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.,This 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.,Yes,No,,,,,
VISIT_OCCURRENCE,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
VISIT_OCCURRENCE,visit_concept_id,Yes,integer,"This 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.","Populate 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.",No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_OCCURRENCE,visit_start_date,Yes,date,"For inpatient visits, the start date is typically the admission date. For outpatient visits the start date and end date will be the same.","When 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.",No,No,,,,,
VISIT_OCCURRENCE,visit_start_datetime,No,datetime,,"If no time is given for the start date of a visit, set it to midnight (00:00:0000).",No,No,,,,,
VISIT_OCCURRENCE,visit_end_date,Yes,date,For inpatient visits the end date is typically the discharge date.,"Visit 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 ""Still 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.",No,No,,,,,
VISIT_OCCURRENCE,visit_end_datetime,No,datetime,,"If no time is given for the end date of a visit, set it to midnight (00:00:0000).",No,No,,,,,
VISIT_OCCURRENCE,visit_type_concept_id,Yes,Integer,"Use this field to understand the provenance of the visit record, or where the record comes from.","Populate this field based on the provenance of the visit record, as in whether it came from an EHR record or billing claim.",No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
VISIT_OCCURRENCE,provider_id,No,integer,"There 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.","If 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.",No,Yes,PROVIDER,PROVIDER_ID,,,
VISIT_OCCURRENCE,care_site_id,No,integer,This field provides information about the care site where the visit took place.,There should only be one care site associated with a visit.,No,Yes,CARE_SITE,CARE_SITE_ID,,,
VISIT_OCCURRENCE,visit_source_value,No,varchar(50),"This field houses the verbatim value from the source data representing the kind of visit that took place (inpatient, outpatient, emergency, etc.)","If 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.",No,No,,,,,
VISIT_OCCURRENCE,visit_source_concept_id,No,integer,,If the visit source value is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.,No,Yes,CONCEPT,CONCEPT_ID,,,
VISIT_OCCURRENCE,admitting_source_concept_id,No,integer,"Use 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.","If available, map the admitted_from_source_value to a standard concept in the visit domain.",No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_OCCURRENCE,admitting_source_value,No,varchar(50),,"This 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.",No,No,,,,,
VISIT_OCCURRENCE,discharge_to_concept_id,No,integer,"Use 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.","If available, map the discharge_to_source_value to a standard concept in the visit domain.",No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_OCCURRENCE,discharge_to_source_value,No,varchar(50),,"This 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.",No,No,,,,,
VISIT_OCCURRENCE,preceding_visit_occurrence_id,No,integer,Use this field to find the visit that occured for the person prior to the given visit. There could be a few days or a few years in between.,"The preceding_visit_id 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"".",No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
CONDITION_OCCURRENCE,condition_occurrence_id,Yes,bigint,The unique key given to a condition record for a person. Refer to the ETL for how duplicate conditions during the same visit were handled. ,"Each 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.",Yes,No,,,,,
CONDITION_OCCURRENCE,person_id,Yes,bigint,The PERSON_ID of the PERSON for whom the condition is recorded.,,No,Yes,PERSON,PERSON_ID,,,
CONDITION_OCCURRENCE,condition_concept_id,Yes,integer,"The 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","The CONCEPT_ID that the CONDITION_SOURCE_VALUE maps to. Only records whose source values map to concepts with a domain of ""Condition"" should go in this table. ",No,Yes,CONCEPT,CONCEPT_ID,Condition,,
CONDITION_OCCURRENCE,condition_start_date,Yes,date,Use this date to determine the start date of the condition,"Most 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.",No,No,,,,,
CONDITION_OCCURRENCE,condition_start_datetime,No,datetime,,If a source does not specify datetime the convention is to set the time to midnight (00:00:0000),No,No,,,,,
CONDITION_OCCURRENCE,condition_end_date,No,date,Use this date to determine the end date of the condition,"Most 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.",No,No,,,,,
CONDITION_OCCURRENCE,condition_end_datetime,No,datetime,,If a source does not specify datetime the convention is to set the time to midnight (00:00:0000),No,No,,,,,
CONDITION_OCCURRENCE,condition_type_concept_id,Yes,integer,"This 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.",Choose the condition_type_concept_id that best represents the provenance of the record. ,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
CONDITION_OCCURRENCE,condition_status_concept_id,No,integer,"This 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. ","Presently, there is no designated vocabulary, domain, or class that represents condition status. The concepts with a relationship_id of ""subsumes"" with CONCEPT_ID 4021918 ""Qualifier for type of diagnosis"" should be used. These include admitting diagnosis, principal diagnosis, and secondary diagnosis.",No,Yes,CONCEPT,CONCEPT_ID,,,
CONDITION_OCCURRENCE,stop_reason,No,varchar(20),The 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.,This 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.,No,No,,,,,
CONDITION_OCCURRENCE,provider_id,No,integer,The provider associated with condition record. ,The 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.,No,Yes,PROVIDER,PROVIDER_ID,,,
CONDITION_OCCURRENCE,visit_occurrence_id,No,integer,The visit during which the condition was diagnosed.,"Depending on the structure of the source data, this may have to be determined based on dates.",No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
CONDITION_OCCURRENCE,visit_detail_id,No,integer,"The VISIT_DETAIL record during which the condition was diagnosed. 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.",,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
CONDITION_OCCURRENCE,condition_source_value,No,varchar(50),"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.  ",This code is mapped to a Standard Condition Concept in the Standardized Vocabularies and the original code is stored here for reference.,No,No,,,,,
CONDITION_OCCURRENCE,condition_source_concept_id,No,integer,,If the CONDITION_SOURCE_VALUE is coded in the source data using an OMOP supported vocabulary put the concept id representing the source value here.,No,Yes,CONCEPT,CONCEPT_ID,,,
CONDITION_OCCURRENCE,condition_status_source_value,No,varchar(50),,This 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.,No,No,,,,,
DRUG_EXPOSURE,drug_exposure_id,Yes,bigint,Use this to identify unique dispensings or administrations of a drug product to a person,This should be populated by creating a unique identifier for each unique instance where a person receives a dispensing or administration of a drug.,Yes,No,,,,,
DRUG_EXPOSURE,person_id,Yes,bigint,,,No,Yes,PERSON,PERSON_ID,,,
DRUG_EXPOSURE,drug_concept_id,Yes,integer,"The 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 value which represents a drug product or molecule otherwise introduced to the body.",Map source values to standard concepts. All concepts in the DRUG_EXPOSURE table should be in the 'Drug' domain.,No,Yes,CONCEPT,CONCEPT_ID,Drug,,
DRUG_EXPOSURE,drug_exposure_start_date,Yes,date,,"Valid entries include a start date of a prescription, the date a prescription was filled, or the date on which a Drug administration procedure was recorded.",No,No,,,,,
DRUG_EXPOSURE,drug_exposure_start_datetime,No,datetime,,If time is unknown set it to midnight.,No,No,,,,,
DRUG_EXPOSURE,drug_exposure_end_date,Yes,date,,"The DRUG_EXPOSURE_END_DATE denotes the day the drug exposure ended for the patient. This could be that the duration of DAYS_SUPPLY was reached, or because the exposure was stopped (medication changed, medication discontinued, etc.).  To populate this field, start first with DAYS_SUPPLY using the calculation DRUG_EXPOSURE_END_DATE = DRUG_EXPOSURE_START_DATE + DAYS_SUPPLY -1 day. If DAYS_SUPPLY is not available then use the VERBATIM_END_DATE as it is given in the source data. If there is no verbatim end date then set DRUG_EXPOSURE_END_DATE equal to DRUG_EXPOSURE_START_DATE.                                                                                                                                                                                                                                                                                                                                      When the native data suggests a drug exposure has a days supply less than 0, drop the record as it is unknown if a person has received the drug or not (THEMIS issue #24). 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 (THEMIS issue #14).  Depending on different sources, it could be a known or an inferred date and denotes the last day at which the patient was still exposed to Drug.",No,No,,,,,
DRUG_EXPOSURE,drug_exposure_end_datetime,No,datetime,,If time is unknown set it to midnight.,No,No,,,,,
DRUG_EXPOSURE,verbatim_end_date,No,date,"This is the end date as it appears in the source data, if it is given.",Put the end date for the drug exposure as it appears in the source data. This may or may not be the same as DRUG_EXPOSURE_END_DATE given the logic for assigning DRUG_EXPOSURE_END_DATE.,No,No,,,,,
DRUG_EXPOSURE,drug_type_concept_id,Yes,integer,You can use the TYPE_CONCEPT_ID to delineate between prescriptions written vs. prescriptions dispensed vs. medication history vs. patient-reported exposure,This field is meant to preserve the provenance of the record. Any standard concepts in the 'Type Concept' domain are valid here. ,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
DRUG_EXPOSURE,stop_reason,No,varchar(20),"Reason a person stopped a medication. Reasons include regimen completed, changed, removed, etc.",,No,No,,,,,
DRUG_EXPOSURE,refills,No,integer,"The content of the refills field determines the current refill number, not the number of remaining refills. For example, for a drug prescription with 2 refills, the content of this field for the 3 Drug Exposure events are null, 1 and 2.",,No,No,,,,,
DRUG_EXPOSURE,quantity,No,float,,,No,No,,,,,
DRUG_EXPOSURE,days_supply,No,integer,,,No,No,,,,,
DRUG_EXPOSURE,sig,No,varchar(MAX),(and printed on the container),,No,No,,,,,
DRUG_EXPOSURE,route_concept_id,No,integer,"Route information can also be inferred from the Drug product itself by determining the Drug Form of the Concept, creating some partial overlap of the same type of information. Therefore, route information should be stored in DRUG_CONCEPT_ID (as a drug with corresponding Dose Form). The ROUTE_CONCEPT_ID could be used for storing more granular forms e.g. 'Intraventricular cardiac'.",,No,Yes,CONCEPT,CONCEPT_ID,Route,,
DRUG_EXPOSURE,lot_number,No,varchar(50),,,No,No,,,,,
DRUG_EXPOSURE,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
DRUG_EXPOSURE,visit_occurrence_id,No,integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
DRUG_EXPOSURE,visit_detail_id,No,integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
DRUG_EXPOSURE,drug_source_value,No,varchar(50),,"This code is mapped to a Standard Drug concept in the Standardized Vocabularies and the original code is, stored here for reference.",No,No,,,,,
DRUG_EXPOSURE,drug_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_EXPOSURE,route_source_value,No,varchar(50),,,No,No,,,,,
DRUG_EXPOSURE,dose_unit_source_value,No,varchar(50),,,No,No,,,,,
PROCEDURE_OCCURRENCE,procedure_occurrence_id,Yes,integer,,,Yes,No,,,,,
PROCEDURE_OCCURRENCE,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
PROCEDURE_OCCURRENCE,procedure_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Procedure,,
PROCEDURE_OCCURRENCE,procedure_date,Yes,date,,,No,No,,,,,
PROCEDURE_OCCURRENCE,procedure_datetime,No,datetime,,,No,No,,,,,
PROCEDURE_OCCURRENCE,procedure_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
PROCEDURE_OCCURRENCE,modifier_concept_id,No,integer,"These concepts are typically distinguished by 'Modifier' concept classes (e.g., 'CPT4 Modifier' as part of the 'CPT4' vocabulary).",,No,Yes,CONCEPT,CONCEPT_ID,,,
PROCEDURE_OCCURRENCE,quantity,No,integer,"If the quantity value is omitted, a single procedure is assumed.","If 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 (THEMIS issue #26).",No,No,,,,,
PROCEDURE_OCCURRENCE,provider_id,No,integer,,,No,No,PROVIDER,PROVIDER_ID,,,
PROCEDURE_OCCURRENCE,visit_occurrence_id,No,integer,,,No,No,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
PROCEDURE_OCCURRENCE,visit_detail_id,No,integer,,,No,No,VISIT_DETAIL,VISIT_DETAIL_ID,,,
PROCEDURE_OCCURRENCE,procedure_source_value,No,varchar(50),,"This code is mapped to a standard procedure Concept in the Standardized Vocabularies and the original code is, stored here for reference. Procedure source codes are typically ICD-9-Proc, CPT-4, HCPCS or OPCS-4 codes.",No,No,,,,,
PROCEDURE_OCCURRENCE,procedure_source_concept_id,No,integer,,,No,No,CONCEPT,CONCEPT_ID,,,
PROCEDURE_OCCURRENCE,modifier_source_value,No,varchar(50),,,No,No,,,,,
DEVICE_EXPOSURE,device_exposure_id,Yes,bigint,,,Yes,No,,,,,
DEVICE_EXPOSURE,person_id,Yes,bigint,,,No,Yes,PERSON,PERSON_ID,,,
DEVICE_EXPOSURE,device_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Device,,
DEVICE_EXPOSURE,device_exposure_start_date,Yes,date,,,No,No,,,,,
DEVICE_EXPOSURE,device_exposure_start_datetime,No,datetime,,,No,No,,,,,
DEVICE_EXPOSURE,device_exposure_end_date,No,date,,,No,No,,,,,
DEVICE_EXPOSURE,device_exposure_end_datetime,No,datetime,,,No,No,,,,,
DEVICE_EXPOSURE,device_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
DEVICE_EXPOSURE,unique_device_id,No,varchar(50),,"For 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.",No,No,,,,,
DEVICE_EXPOSURE,quantity,No,integer,,,No,No,,,,,
DEVICE_EXPOSURE,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
DEVICE_EXPOSURE,visit_occurrence_id,No,integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
DEVICE_EXPOSURE,visit_detail_id,No,integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
DEVICE_EXPOSURE,device_source_value,No,varchar(50),,,No,No,,,,,
DEVICE_EXPOSURE,device_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
MEASUREMENT,measurement_id,Yes,integer,,,Yes,No,,,,,
MEASUREMENT,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
MEASUREMENT,measurement_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Measurement,,
MEASUREMENT,measurement_date,Yes,date,,,No,No,,,,,
MEASUREMENT,measurement_datetime,No,datetime,,,No,No,,,,,
MEASUREMENT,measurement_time,No,varchar(10),This is present for backwards compatibility and will be deprecated in an upcoming version,,No,No,,,,,
MEASUREMENT,measurement_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
MEASUREMENT,operator_concept_id,No,integer,"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 =.","If there is a negative value coming from the source, set the VALUE_AS_NUMBER to NULL, with the exception of the following Measurements (listed as LOINC codes):
1925-7 Base excess in Arterial blood by calculation
1927-3 Base excess in Venous blood by calculation Operators are <, <=, =, >=, > and these concepts belong to the 'Meas Value Operator' domain.
8632-2 QRS-Axis
11555-0 Base excess in Blood by calculation
1926-5 Base excess in Capillary blood by calculation
28638-5 Base excess in Arterial cord blood by calculation
28639-3 Base excess in Venous cord blood by calculation
THEMIS issue #16",No,Yes,CONCEPT,CONCEPT_ID,,,
MEASUREMENT,value_as_number,No,float,,,No,No,,,,,
MEASUREMENT,value_as_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
MEASUREMENT,unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Unit,,
MEASUREMENT,range_low,No,float,Ranges have the same unit as the VALUE_AS_NUMBER.,If 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. Ranges have the same unit as the VALUE_AS_NUMBER.,No,No,,,,,
MEASUREMENT,range_high,No,float,Ranges have the same unit as the VALUE_AS_NUMBER.,,No,No,,,,,
MEASUREMENT,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
MEASUREMENT,visit_occurrence_id,No,integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
MEASUREMENT,visit_detail_id,No,integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
MEASUREMENT,measurement_source_value,No,varchar(50),,,No,No,,,,,
MEASUREMENT,measurement_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
MEASUREMENT,unit_source_value,No,varchar(50),,,No,No,,,,,
MEASUREMENT,value_source_value,No,varchar(50),,,No,No,,,,,
VISIT_DETAIL,visit_detail_id,Yes,integer,,,Yes,No,,,,,
VISIT_DETAIL,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
VISIT_DETAIL,visit_detail_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_DETAIL,visit_detail_start_date,Yes,date,,,No,No,,,,,
VISIT_DETAIL,visit_detail_start_datetime,No,datetime,,,No,No,,,,,
VISIT_DETAIL,visit_detail_end_date,Yes,date,,,No,No,,,,,
VISIT_DETAIL,visit_detail_end_datetime,No,datetime,,,No,No,,,,,
VISIT_DETAIL,visit_detail_type_concept_id,Yes,Integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
VISIT_DETAIL,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
VISIT_DETAIL,care_site_id,No,integer,,,No,Yes,CARE_SITE,CARE_SITE_ID,,,
VISIT_DETAIL,visit_detail_source_value,No,varchar(50),,,No,No,,,,,
VISIT_DETAIL,visit_detail_source_concept_id,No,Integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
VISIT_DETAIL,admitting_source_value,No,Varchar(50),,,No,No,,,,,
VISIT_DETAIL,admitting_source_concept_id,No,Integer,,,No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_DETAIL,discharge_to_source_value,No,Varchar(50),,,No,No,,,,,
VISIT_DETAIL,discharge_to_concept_id,No,Integer,,,No,Yes,CONCEPT,CONCEPT_ID,Visit,,
VISIT_DETAIL,preceding_visit_detail_id,No,Integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
VISIT_DETAIL,visit_detail_parent_id,No,Integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
VISIT_DETAIL,visit_occurrence_id,Yes,Integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
NOTE,note_id,Yes,integer,,,Yes,No,,,,,
NOTE,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
NOTE,note_date,Yes,date,,,No,No,,,,,
NOTE,note_datetime,No,datetime,,,No,No,,,,,
NOTE,note_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
NOTE,note_class_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE,note_title,No,varchar(250),,,No,No,,,,,
NOTE,note_text,Yes,varchar(MAX),,,No,No,,,,,
NOTE,encoding_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE,language_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
NOTE,visit_occurrence_id,No,integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
NOTE,visit_detail_id,No,integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
NOTE,note_source_value,No,varchar(50),,,No,No,,,,,
NOTE_NLP,note_nlp_id,Yes,integer,,,Yes,No,,,,,
NOTE_NLP,note_id,Yes,integer,,,No,No,,,,,
NOTE_NLP,section_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE_NLP,snippet,No,varchar(250),,,No,No,,,,,
NOTE_NLP,offset,No,varchar(50),,,No,No,,,,,
NOTE_NLP,lexical_variant,Yes,varchar(250),,,No,No,,,,,
NOTE_NLP,note_nlp_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE_NLP,note_nlp_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
NOTE_NLP,nlp_system,No,varchar(250),,,No,No,,,,,
NOTE_NLP,nlp_date,Yes,date,,,No,No,,,,,
NOTE_NLP,nlp_datetime,No,datetime,,,No,No,,,,,
NOTE_NLP,term_exists,No,varchar(1),,"Term_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.
",No,No,,,,,
NOTE_NLP,term_temporal,No,varchar(50),,"Term_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",No,No,,,,,
NOTE_NLP,term_modifiers,No,varchar(2000),,"For 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. A list of allowable modifiers (e.g., signature for medications) and their possible values will be standardized later.",No,No,,,,,
OBSERVATION,observation_id,Yes,integer,,,Yes,No,,,,,
OBSERVATION,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
OBSERVATION,observation_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
OBSERVATION,observation_date,Yes,date,,,No,No,,,,,
OBSERVATION,observation_datetime,No,datetime,,,No,No,,,,,
OBSERVATION,observation_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
OBSERVATION,value_as_number,No,float,,,No,No,,,,,
OBSERVATION,value_as_string,No,varchar(60),,,No,No,,,,,
OBSERVATION,value_as_concept_id,No,Integer,,"Note 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, ICD9CM V17.5 concept_id 44828510 'Family history of asthma' has a 'Maps to' relationship to 4167217 'Family history of clinical finding' as well as a 'Maps to value' record to 317009 'Asthma'.",No,Yes,CONCEPT,CONCEPT_ID,,,
OBSERVATION,qualifier_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
OBSERVATION,unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Unit,,
OBSERVATION,provider_id,No,integer,,,No,Yes,PROVIDER,PROVIDER_ID,,,
OBSERVATION,visit_occurrence_id,No,integer,,,No,Yes,VISIT_OCCURRENCE,VISIT_OCCURRENCE_ID,,,
OBSERVATION,visit_detail_id,No,integer,,,No,Yes,VISIT_DETAIL,VISIT_DETAIL_ID,,,
OBSERVATION,observation_source_value,No,varchar(50),,,No,No,,,,,
OBSERVATION,observation_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
OBSERVATION,unit_source_value,No,varchar(50),,,No,No,,,,,
OBSERVATION,qualifier_source_value,No,varchar(50),,,No,No,,,,,
SPECIMEN,specimen_id,Yes,integer,,,Yes,No,,,,,
SPECIMEN,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
SPECIMEN,specimen_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SPECIMEN,specimen_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
SPECIMEN,specimen_date,Yes,date,,,No,No,,,,,
SPECIMEN,specimen_datetime,No,datetime,,,No,No,,,,,
SPECIMEN,quantity,No,float,,,No,No,,,,,
SPECIMEN,unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SPECIMEN,anatomic_site_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SPECIMEN,disease_status_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SPECIMEN,specimen_source_id,No,varchar(50),,,No,No,,,,,
SPECIMEN,specimen_source_value,No,varchar(50),,,No,No,,,,,
SPECIMEN,unit_source_value,No,varchar(50),,,No,No,,,,,
SPECIMEN,anatomic_site_source_value,No,varchar(50),,,No,No,,,,,
SPECIMEN,disease_status_source_value,No,varchar(50),,,No,No,,,,,
FACT_RELATIONSHIP,domain_concept_id_1,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
FACT_RELATIONSHIP,fact_id_1,Yes,integer,,,No,No,,,,,
FACT_RELATIONSHIP,domain_concept_id_2,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
FACT_RELATIONSHIP,fact_id_2,Yes,integer,,,No,No,,,,,
FACT_RELATIONSHIP,relationship_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
LOCATION,location_id,Yes,integer,,,Yes,No,,,,,
LOCATION,address_1,No,varchar(50),,,No,No,,,,,
LOCATION,address_2,No,varchar(50),,,No,No,,,,,
LOCATION,city,No,varchar(50),,,No,No,,,,,
LOCATION,state,No,varchar(2),,,No,No,,,,,
LOCATION,zip,No,varchar(9),,"Zip codes are handled as strings of up to 9 characters length. For US addresses, these represent either a 3-digit abbreviated Zip code as provided by many sources for patient protection reasons, the full 5-digit Zip or the 9-digit (ZIP + 4) codes. Unless for specific reasons analytical methods should expect and utilize only the first 3 digits. For international addresses, different rules apply.",No,No,,,,,
LOCATION,county,No,varchar(20),,,No,No,,,,,
LOCATION,location_source_value,No,varchar(50),,,No,No,,,,,
CARE_SITE,care_site_id,Yes,integer,,Assign an id to each unique combination of location_id and place_of_service_source_value,Yes,No,,,,,
CARE_SITE,care_site_name,No,varchar(255),The name of the care_site as it appears in the source data,,No,No,,,,,
CARE_SITE,place_of_service_concept_id,No,integer,"This is a high-level way of characterizing a Care Site. Typically, however, Care Sites can provide care in multiple settings (inpatient, outpatient, etc.) and this granularity should be reflected in the visit.","Choose the concept in the visit domain that best represents the setting in which healthcare is provided in the Care Site. If most visits in a Care Site are Inpatient, then the place_of_service_concept_id should represent Inpatient. If information is present about a unique Care Site (e.g. Pharmacy) then a Care Site record should be created.",No,Yes,CONCEPT,CONCEPT_ID,,,
CARE_SITE,location_id,No,integer,The location_id from the LOCATION table representing the physical location of the care_site.,,No,Yes,LOCATION,LOCATION_ID,,,
CARE_SITE,care_site_source_value,No,varchar(50),The identifier of the care_site as it appears in the source data. This could be an identifier separate from the name of the care_site.,,No,No,,,,,
CARE_SITE,place_of_service_source_value,No,varchar(50),,Put the place of service of the care_site as it appears in the source data.,No,No,,,,,
PROVIDER,provider_id,Yes,integer,It is assumed that every provider with a different unique identifier is in fact a different person and should be treated independently.,"This identifier can be the original id from the source data provided it is an integer, otherwise it can be an autogenerated number.",Yes,No,,,,,
PROVIDER,provider_name,No,varchar(255),,"This field is not necessary as it is not necessary to have the actual identity of the Provider. Rather, the idea is to uniquely and anonymously identify providers of care across the database.",No,No,,,,,
PROVIDER,npi,No,varchar(20),This is the National Provider Number issued to health care providers in the US by the Centers for Medicare and Medicaid Services (CMS).,,No,No,,,,,
PROVIDER,dea,No,varchar(20),"This is the identifier issued by the DEA, a US federal agency, that allows a provider to write prescriptions for controlled substances.",,No,No,,,,,
PROVIDER,specialty_concept_id,No,integer,"This field either represents the most common specialty that occurs in the data or the most specific concept that represents all specialties listed, should the provider have more than one. This includes physician specialties such as internal medicine, emergency medicine, etc. and allied health professionals such as nurses, midwives, and pharmacists.","If a Provider has more than one Specialty, there are two options: 1. Choose a concept_id which is a common ancestor to the multiple specialties, or, 2. Choose the specialty that occurs most often for the provider. Concepts in this field should be Standard with a domain of Provider.",No,Yes,CONCEPT,CONCEPT_ID,,,
PROVIDER,care_site_id,No,integer,This is the CARE_SITE_ID for the location that the provider primarily practices in.,"If a Provider has more than one Care Site, the main or most often exerted CARE_SITE_ID should be recorded.",No,Yes,CARE_SITE,CARE_SITE_ID,,,
PROVIDER,year_of_birth,No,integer,,,No,No,,,,,
PROVIDER,gender_concept_id,No,integer,This field represents the recorded gender of the provider in the source data.,"If given, put a concept from the gender domain representing the recorded gender of the provider.",No,Yes,CONCEPT,CONCEPT_ID,Gender,,
PROVIDER,provider_source_value,No,varchar(50),Use this field to link back to providers in the source data. This is typically used for error checking of ETL logic.,Some use cases require the ability to link back to providers in the source data. This field allows for the storing of the provider identifier as it appears in the source.,No,No,,,,,
PROVIDER,specialty_source_value,No,varchar(50),"This is the kind of provider or specialty as it appears in the source data. This includes physician specialties such as internal medicine, emergency medicine, etc. and allied health professionals such as nurses, midwives, and pharmacists.",Put the kind of provider as it appears in the source data. This field is up to the discretion of the ETL-er as to whether this should be the coded value from the source or the text description of the lookup value.,No,No,,,,,
PROVIDER,specialty_source_concept_id,No,integer,This is often zero as many sites use propietary codes to store physician speciality.,If the source data codes provider specialty in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PROVIDER,gender_source_value,No,varchar(50),This is provider's gender as it appears in the source data.,Put the provider's gender as it appears in the source data. This field is up to the discretion of the ETL-er as to whether this should be the coded value from the source or the text description of the lookup value.,No,No,,,,,
PROVIDER,gender_source_concept_id,No,integer,This is often zero as many sites use propietary codes to store provider gender.,If the source data codes provider gender in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,payer_plan_period_id,Yes,integer,"A unique identifier for each unique combination of a Person, Payer, Plan, and Period of time.",,Yes,Yes,PERSON,PERSON_ID,,,
PAYER_PLAN_PERIOD,person_id,Yes,integer,The Person covered by the Plan.,"A single Person can have multiple, overlapping, PAYER_PLAN_PERIOD records",No,Yes,PERSON,PERSON_ID,,,
PAYER_PLAN_PERIOD,payer_plan_period_start_date,Yes,date,Start date of Plan coverage.,,No,No,,,,,
PAYER_PLAN_PERIOD,payer_plan_period_end_date,Yes,date,End date of Plan coverage.,,No,No,,,,,
PAYER_PLAN_PERIOD,payer_concept_id,No,integer,This field represents the organization who reimburses the provider which administers care to the Person.,"Map the Payer directly to a standard CONCEPT_ID. If one does not exists please contact the vocabulary team. There is no global controlled vocabulary available for this information. The point is to stratify on this information and identify if Persons have the same payer, though the name of the Payer is not necessary.",No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,payer_source_value,No,varchar(50),This is the Payer as it appears in the source data.,,No,No,,,,,
PAYER_PLAN_PERIOD,payer_source_concept_id,No,integer,,If the source data codes the Payer in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,plan_concept_id,No,integer,This field represents the specific health benefit Plan the Person is enrolled in.,Map the Plan directly to a standard CONCEPT_ID. If one does not exists please contact the vocabulary team. There is no global controlled vocabulary available for this information. The point is to stratify on this information and identify if Persons have the same health benefit Plan though the name of the Plan is not necessary.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,plan_source_value,No,varchar(50),This is the health benefit Plan of the Person as it appears in the source data.,,No,No,,,,,
PAYER_PLAN_PERIOD,plan_source_concept_id,No,integer,,If the source data codes the Plan in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,sponsor_concept_id,No,integer,"This field represents the sponsor of the Plan who finances the Plan. This includes self-insured, small group health plan and large group health plan.",Map the sponsor directly to a standard CONCEPT_ID. If one does not exists please contact the vocabulary team. There is no global controlled vocabulary available for this information. The point is to stratify on this information and identify if Persons have the same sponsor though the name of the sponsor is not necessary.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,sponsor_source_value,No,varchar(50),The Plan sponsor as it appears in the source data.,,No,No,,,,,
PAYER_PLAN_PERIOD,sponsor_source_concept_id,No,integer,,If the source data codes the sponsor in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,family_source_value,No,varchar(50),The common identifier for all people (often a family) that covered by the same policy.,Often these are the common digits of the enrollment id of the policy members.,No,No,,,,,
PAYER_PLAN_PERIOD,stop_reason_concept_id,No,integer,"This field represents the reason the Person left the Plan, if known.",Map the stop reason directly to a standard CONCEPT_ID. If one does not exists please contact the vocabulary team. There is no global controlled vocabulary available for this information.,No,Yes,CONCEPT,CONCEPT_ID,,,
PAYER_PLAN_PERIOD,stop_reason_source_value,No,varchar(50),The Plan stop reason as it appears in the source data.,,No,No,,,,,
PAYER_PLAN_PERIOD,stop_reason_source_concept_id,No,integer,,If the source data codes the stop reason in an OMOP supported vocabulary store the concept_id here.,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,cost_id,Yes,INTEGER,,,Yes,No,,,,,
COST,cost_event_id,Yes,INTEGER,,,No,No,,,,,
COST,cost_domain_id,Yes,VARCHAR(20),,,No,Yes,DOMAIN,DOMAIN_ID,,,
COST,cost_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,currency_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,total_charge,No,FLOAT,,,No,No,,,,,
COST,total_cost,No,FLOAT,,,No,No,,,,,
COST,total_paid,No,FLOAT,,,No,No,,,,,
COST,paid_by_payer,No,FLOAT,,,No,No,,,,,
COST,paid_by_patient,No,FLOAT,,,No,No,,,,,
COST,paid_patient_copay,No,FLOAT,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,paid_patient_coinsurance,No,FLOAT,,,No,No,,,,,
COST,paid_patient_deductible,No,FLOAT,,,No,No,,,,,
COST,paid_by_primary,No,FLOAT,,,No,No,,,,,
COST,paid_ingredient_cost,No,FLOAT,,,No,No,,,,,
COST,paid_dispensing_fee,No,FLOAT,,,No,No,,,,,
COST,payer_plan_period_id,No,INTEGER,,,No,No,,,,,
COST,amount_allowed,No,FLOAT,,,No,No,,,,,
COST,revenue_code_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,revenue_code_source_value,No,VARCHAR(50),Revenue codes are a method to charge for a class of procedures and conditions in the U.S. hospital system.,,No,No,,,,,
COST,drg_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COST,drg_source_value,No,VARCHAR(3),Diagnosis Related Groups are US codes used to classify hospital cases into one of approximately 500 groups. ,,No,No,,,,,
DRUG_ERA,drug_era_id,Yes,integer,,,Yes,No,,,,,
DRUG_ERA,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
DRUG_ERA,drug_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Drug,Ingredient,
DRUG_ERA,drug_era_start_date,Yes,datetime,,The Drug Era Start Date is the start date of the first Drug Exposure for a given ingredient.  (NOT RIGHT),No,No,,,,,
DRUG_ERA,drug_era_end_date,Yes,datetime,,"The 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.   (ARENT WE REQUIRING TO USE DRUG_EXPOSURE_END_DATE NOW????)",No,No,,,,,
DRUG_ERA,drug_exposure_count,No,integer,,,No,No,,,,,
DRUG_ERA,gap_days,No,integer,,"The 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.",No,No,,,,,
DOSE_ERA,dose_era_id,Yes,integer,,,Yes,No,,,,,
DOSE_ERA,person_id,Yes,integer,,,No,Yes,PERSON,PERSON_ID,,,
DOSE_ERA,drug_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Drug,Ingredient,
DOSE_ERA,unit_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Unit,,
DOSE_ERA,dose_value,Yes,float,,,No,No,,,,,
DOSE_ERA,dose_era_start_date,Yes,datetime,,,No,No,,,,,
DOSE_ERA,dose_era_end_date,Yes,datetime,,,No,No,,,,,
CONDITION_ERA,condition_era_id,Yes,integer,,,Yes,No,,,,,
CONDITION_ERA,person_id,Yes,integer,,,No,No,PERSON,PERSON_ID,,,
CONDITION_ERA,condition_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Condition,,
CONDITION_ERA,condition_era_start_date,Yes,datetime,,,No,No,,,,,
CONDITION_ERA,condition_era_end_date,Yes,datetime,,,No,No,,,,,
CONDITION_ERA,condition_occurrence_count,No,integer,,,No,No,,,,,
CONCEPT,concept_id,Yes,integer,,,Yes,No,,,,,
CONCEPT,concept_name,Yes,varchar(255),,,No,No,,,,,
CONCEPT,domain_id,Yes,varchar(20),,,No,Yes,DOMAIN,DOMAIN_ID,,,
CONCEPT,vocabulary_id,Yes,varchar(20),,,No,Yes,VOCABULARY,VOCABULARY_ID,,,
CONCEPT,concept_class_id,Yes,varchar(20),,,No,Yes,CONCEPT_CLASS,CONCEPT_CLASS_ID,,,
CONCEPT,standard_concept,No,varchar(1),,,No,No,,,,,
CONCEPT,concept_code,Yes,varchar(50),,,No,No,,,,,
CONCEPT,valid_start_date,Yes,date,,,No,No,,,,,
CONCEPT,valid_end_date,Yes,date,,,No,No,,,,,
CONCEPT,invalid_reason,No,varchar(1),,,No,No,,,,,
VOCABULARY,vocabulary_id,Yes,varchar(20),,,Yes,No,,,,,
VOCABULARY,vocabulary_name,Yes,varchar(255),,,No,No,,,,,
VOCABULARY,vocabulary_reference,Yes,varchar(255),,,No,No,,,,,
VOCABULARY,vocabulary_version,No,varchar(255),,,No,No,,,,,
VOCABULARY,vocabulary_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DOMAIN,domain_id,Yes,varchar(20),,,Yes,No,,,,,
DOMAIN,domain_name,Yes,varchar(255),,,No,No,,,,,
DOMAIN,domain_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_CLASS,concept_class_id,Yes,varchar(20),,,Yes,No,,,,,
CONCEPT_CLASS,concept_class_name,Yes,varchar(255),,,No,No,,,,,
CONCEPT_CLASS,concept_class_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_RELATIONSHIP,concept_id_1,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_RELATIONSHIP,concept_id_2,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_RELATIONSHIP,relationship_id,Yes,varchar(20),,,No,Yes,RELATIONSHIP,RELATIONSHIP_ID,,,
CONCEPT_RELATIONSHIP,valid_start_date,Yes,date,,,No,No,,,,,
CONCEPT_RELATIONSHIP,valid_end_date,Yes,date,,,No,No,,,,,
CONCEPT_RELATIONSHIP,invalid_reason,No,varchar(1),,,No,No,,,,,
RELATIONSHIP,relationship_id,Yes,varchar(20),,,Yes,No,,,,,
RELATIONSHIP,relationship_name,Yes,varchar(255),,,No,No,,,,,
RELATIONSHIP,is_hierarchical,Yes,varchar(1),,,No,No,,,,,
RELATIONSHIP,defines_ancestry,Yes,varchar(1),,,No,No,,,,,
RELATIONSHIP,reverse_relationship_id,Yes,varchar(20),,,No,No,,,,,
RELATIONSHIP,relationship_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_SYNONYM,concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_SYNONYM,concept_synonym_name,Yes,varchar(1000),,,No,No,,,,,
CONCEPT_SYNONYM,language_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_ANCESTOR,ancestor_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_ANCESTOR,descendant_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
CONCEPT_ANCESTOR,min_levels_of_separation,Yes,integer,,,No,No,,,,,
CONCEPT_ANCESTOR,max_levels_of_separation,Yes,integer,,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,source_code,Yes,varchar(50),,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,source_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SOURCE_TO_CONCEPT_MAP,source_vocabulary_id,Yes,varchar(20),,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,source_code_description,No,varchar(255),,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,target_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
SOURCE_TO_CONCEPT_MAP,target_vocabulary_id,Yes,varchar(20),,,No,Yes,VOCABULARY,VOCABULARY_ID,,,
SOURCE_TO_CONCEPT_MAP,valid_start_date,Yes,date,,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,valid_end_date,Yes,date,,,No,No,,,,,
SOURCE_TO_CONCEPT_MAP,invalid_reason,No,varchar(1),,,No,No,,,,,
DRUG_STRENGTH,drug_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_STRENGTH,ingredient_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_STRENGTH,amount_value,No,float,,,No,No,,,,,
DRUG_STRENGTH,amount_unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_STRENGTH,numerator_value,No,float,,,No,No,,,,,
DRUG_STRENGTH,numerator_unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_STRENGTH,denominator_value,No,float,,,No,No,,,,,
DRUG_STRENGTH,denominator_unit_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DRUG_STRENGTH,box_size,No,integer,,,No,No,,,,,
DRUG_STRENGTH,valid_start_date,Yes,date,,,No,No,,,,,
DRUG_STRENGTH,valid_end_date,Yes,date,,,No,No,,,,,
DRUG_STRENGTH,invalid_reason,No,varchar(1),,,No,No,,,,,
COHORT_DEFINITION,cohort_definition_id,Yes,integer,,,No,No,,,,,
COHORT_DEFINITION,cohort_definition_name,Yes,varchar(255),,,No,No,,,,,
COHORT_DEFINITION,cohort_definition_description,No,varchar(MAX),,,No,No,,,,,
COHORT_DEFINITION,definition_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COHORT_DEFINITION,cohort_definition_syntax,No,varchar(MAX),,,No,No,,,,,
COHORT_DEFINITION,subject_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
COHORT_DEFINITION,cohort_initiation_date,No,date,,,No,No,,,,,
ATTRIBUTE_DEFINITION,attribute_definition_id,Yes,integer,,,No,No,,,,,
ATTRIBUTE_DEFINITION,attribute_name,Yes,varchar(255),,,No,No,,,,,
ATTRIBUTE_DEFINITION,attribute_description,No,varchar(MAX),,,No,No,,,,,
ATTRIBUTE_DEFINITION,attribute_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
ATTRIBUTE_DEFINITION,attribute_syntax,No,varchar(MAX),,,No,No,,,,,
METADATA,metadata_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
METADATA,metadata_type_concept_id,Yes,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
METADATA,name,Yes,varchar(250),,,No,No,,,,,
METADATA,value_as_string,No,varchar(250),,,No,No,,,,,
METADATA,value_as_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
METADATA,metadata_date,No,date,,,No,No,,,,,
METADATA,metadata_datetime,No,datetime,,,No,No,,,,,
CDM_SOURCE,cdm_source_name,Yes,varchar(255),,,No,No,,,,,
CDM_SOURCE,cdm_source_abbreviation,No,varchar(25),,,No,No,,,,,
CDM_SOURCE,cdm_holder,No,varchar(255),,,No,No,,,,,
CDM_SOURCE,source_description,No,varchar(MAX),,,No,No,,,,,
CDM_SOURCE,source_documentation_reference,No,varchar(255),,,No,No,,,,,
CDM_SOURCE,cdm_etl_reference,No,varchar(255),,,No,No,,,,,
CDM_SOURCE,source_release_date,No,date,,,No,No,,,,,
CDM_SOURCE,cdm_release_date,No,date,,,No,No,,,,,
CDM_SOURCE,cdm_version,No,varchar(10),,,No,No,,,,,
CDM_SOURCE,vocabulary_version,No,varchar(20),,,No,No,,,,,
DEATH,person_id,No,integer,,,No,No,,,,,
DEATH,death_date,No,date,,,No,No,,,,,
DEATH,death_datetime,No,datetime,,,No,No,,,,,
DEATH,death_type_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,Type Concept,,
DEATH,cause_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
DEATH,cause_source_value,No,varchar(50),,,No,No,,,,,
DEATH,cause_source_concept_id,No,integer,,,No,Yes,CONCEPT,CONCEPT_ID,,,
