/********************************************************************************* # Copyright 2019 Observational Health Data Sciences and Informatics # # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ********************************************************************************/ /************************ ####### # # ####### ###### ##### ###### # # ##### ### # # ## ## # # # # # # # # ## ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ###### # # # # # # # # ###### # # # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # ### # # ####### # # ####### # ##### ###### # # ## ##### ### ### snowflake script to create OMOP common data model version 6.0 last revised: 05-Aug-2019 Authors: Kathryn Watson *************************/ /************************ Standardized vocabulary ************************/ CREATE TABLE concept ( concept_id INTEGER NOT NULL , concept_name VARCHAR NOT NULL , domain_id VARCHAR NOT NULL , vocabulary_id VARCHAR NOT NULL , concept_class_id VARCHAR NOT NULL , standard_concept VARCHAR NULL , concept_code VARCHAR NOT NULL , valid_start_date DATE NOT NULL , valid_end_date DATE NOT NULL , invalid_reason VARCHAR NULL ) ; CREATE TABLE vocabulary ( vocabulary_id VARCHAR NOT NULL, vocabulary_name VARCHAR NOT NULL, vocabulary_reference VARCHAR NOT NULL, vocabulary_version VARCHAR NULL, vocabulary_concept_id INTEGER NOT NULL ) ; CREATE TABLE domain ( domain_id VARCHAR NOT NULL, domain_name VARCHAR NOT NULL, domain_concept_id INTEGER NOT NULL ) ; CREATE TABLE concept_class ( concept_class_id VARCHAR NOT NULL, concept_class_name VARCHAR NOT NULL, concept_class_concept_id INTEGER NOT NULL ) ; CREATE TABLE concept_relationship ( concept_id_1 INTEGER NOT NULL, concept_id_2 INTEGER NOT NULL, relationship_id VARCHAR NOT NULL, valid_start_date DATE NOT NULL, valid_end_date DATE NOT NULL, invalid_reason VARCHAR NULL ) ; CREATE TABLE relationship ( relationship_id VARCHAR NOT NULL, relationship_name VARCHAR NOT NULL, is_hierarchical VARCHAR NOT NULL, defines_ancestry VARCHAR NOT NULL, reverse_relationship_id VARCHAR NOT NULL, relationship_concept_id INTEGER NOT NULL ) ; CREATE TABLE concept_synonym ( concept_id INTEGER NOT NULL, concept_synonym_name VARCHAR NOT NULL, language_concept_id INTEGER NOT NULL ) ; CREATE TABLE concept_ancestor ( ancestor_concept_id INTEGER NOT NULL, descendant_concept_id INTEGER NOT NULL, min_levels_of_separation INTEGER NOT NULL, max_levels_of_separation INTEGER NOT NULL ) ; CREATE TABLE source_to_concept_map ( source_code VARCHAR NOT NULL, source_concept_id INTEGER NOT NULL, source_vocabulary_id VARCHAR NOT NULL, source_code_description VARCHAR NULL, target_concept_id INTEGER NOT NULL, target_vocabulary_id VARCHAR NOT NULL, valid_start_date DATE NOT NULL, valid_end_date DATE NOT NULL, invalid_reason VARCHAR NULL ) ; CREATE TABLE drug_strength ( drug_concept_id INTEGER NOT NULL, ingredient_concept_id INTEGER NOT NULL, amount_value FLOAT NULL, amount_unit_concept_id INTEGER NULL, numerator_value FLOAT NULL, numerator_unit_concept_id INTEGER NULL, denominator_value FLOAT NULL, denominator_unit_concept_id INTEGER NULL, box_size INTEGER NULL, valid_start_date DATE NOT NULL, valid_end_date DATE NOT NULL, invalid_reason VARCHAR NULL ) ; /************************** Standardized meta-data ***************************/ CREATE TABLE cdm_source ( cdm_source_name VARCHAR NOT NULL , cdm_source_abbreviation VARCHAR NULL , cdm_holder VARCHAR NULL , source_description VARCHAR NULL , source_documentation_reference VARCHAR NULL , cdm_etl_reference VARCHAR NULL , source_release_date DATE NULL , cdm_release_date DATE NULL , cdm_version VARCHAR NULL , vocabulary_version VARCHAR NULL ) ; CREATE TABLE metadata ( metadata_concept_id INTEGER NOT NULL , metadata_type_concept_id INTEGER NOT NULL , name VARCHAR NOT NULL , value_as_string VARCHAR NULL , value_as_concept_id INTEGER NULL , metadata_date DATE NULL , metadata_datetime TIMESTAMP NULL ) ; INSERT INTO metadata (metadata_concept_id, metadata_type_concept_id, name, value_as_string, value_as_concept_id, metadata_date, metadata_datetime) --Added cdm version record VALUES (0,0,'CDM Version', '6.0',0,NULL,NULL) ; /************************ Standardized clinical data ************************/ CREATE TABLE person ( person_id INTEGER NOT NULL , gender_concept_id INTEGER NOT NULL , year_of_birth INTEGER NOT NULL , month_of_birth INTEGER NULL, day_of_birth INTEGER NULL, birth_datetime TIMESTAMP NULL, death_datetime TIMESTAMP NULL, race_concept_id INTEGER NOT NULL, ethnicity_concept_id INTEGER NOT NULL, location_id INTEGER NULL, provider_id INTEGER NULL, care_site_id INTEGER NULL, person_source_value VARCHAR NULL, gender_source_value VARCHAR NULL, gender_source_concept_id INTEGER NOT NULL, race_source_value VARCHAR NULL, race_source_concept_id INTEGER NOT NULL, ethnicity_source_value VARCHAR NULL, ethnicity_source_concept_id INTEGER NOT NULL ) ; CREATE TABLE observation_period ( observation_period_id INTEGER NOT NULL , person_id INTEGER NOT NULL , observation_period_start_date DATE NOT NULL , observation_period_end_date DATE NOT NULL , period_type_concept_id INTEGER NOT NULL ) ; CREATE TABLE specimen ( specimen_id INTEGER NOT NULL , person_id INTEGER NOT NULL , specimen_concept_id INTEGER NOT NULL , specimen_type_concept_id INTEGER NOT NULL , specimen_date DATE NULL , specimen_datetime TIMESTAMP NOT NULL , quantity FLOAT NULL , unit_concept_id INTEGER NULL , anatomic_site_concept_id INTEGER NOT NULL , disease_status_concept_id INTEGER NOT NULL , specimen_source_id VARCHAR NULL , specimen_source_value VARCHAR NULL , unit_source_value VARCHAR NULL , anatomic_site_source_value VARCHAR NULL , disease_status_source_value VARCHAR NULL ) ; CREATE TABLE visit_occurrence ( visit_occurrence_id INTEGER NOT NULL , person_id INTEGER NOT NULL , visit_concept_id INTEGER NOT NULL , visit_start_date DATE NULL , visit_start_datetime TIMESTAMP NOT NULL , visit_end_date DATE NULL , visit_end_datetime TIMESTAMP NOT NULL , visit_type_concept_id INTEGER NOT NULL , provider_id INTEGER NULL, care_site_id INTEGER NULL, visit_source_value VARCHAR NULL, visit_source_concept_id INTEGER NOT NULL , admitted_from_concept_id INTEGER NOT NULL , admitted_from_source_value VARCHAR NULL , discharge_to_source_value VARCHAR NULL , discharge_to_concept_id INTEGER NOT NULL , preceding_visit_occurrence_id INTEGER NULL ) ; CREATE TABLE visit_detail ( visit_detail_id INTEGER NOT NULL , person_id INTEGER NOT NULL , visit_detail_concept_id INTEGER NOT NULL , visit_detail_start_date DATE NULL , visit_detail_start_datetime TIMESTAMP NOT NULL , visit_detail_end_date DATE NULL , visit_detail_end_datetime TIMESTAMP NOT NULL , visit_detail_type_concept_id INTEGER NOT NULL , provider_id INTEGER NULL , care_site_id INTEGER NULL , discharge_to_concept_id INTEGER NOT NULL , admitted_from_concept_id INTEGER NOT NULL , admitted_from_source_value VARCHAR NULL , visit_detail_source_value VARCHAR NULL , visit_detail_source_concept_id INTEGER NOT NULL , discharge_to_source_value VARCHAR NULL , preceding_visit_detail_id INTEGER NULL , visit_detail_parent_id INTEGER NULL , visit_occurrence_id INTEGER NOT NULL ) ; CREATE TABLE procedure_occurrence ( procedure_occurrence_id INTEGER NOT NULL , person_id INTEGER NOT NULL , procedure_concept_id INTEGER NOT NULL , procedure_date DATE NULL , procedure_datetime TIMESTAMP NOT NULL , procedure_type_concept_id INTEGER NOT NULL , modifier_concept_id INTEGER NOT NULL , quantity INTEGER NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , procedure_source_value VARCHAR NULL , procedure_source_concept_id INTEGER NOT NULL , modifier_source_value VARCHAR NULL ) ; CREATE TABLE drug_exposure ( drug_exposure_id INTEGER NOT NULL , person_id INTEGER NOT NULL , drug_concept_id INTEGER NOT NULL , drug_exposure_start_date DATE NULL , drug_exposure_start_datetime TIMESTAMP NOT NULL , drug_exposure_end_date DATE NULL , drug_exposure_end_datetime TIMESTAMP NOT NULL , verbatim_end_date DATE NULL , drug_type_concept_id INTEGER NOT NULL , stop_reason VARCHAR NULL , refills INTEGER NULL , quantity FLOAT NULL , days_supply INTEGER NULL , sig VARCHAR NULL , route_concept_id INTEGER NOT NULL , lot_number VARCHAR NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , drug_source_value VARCHAR NULL , drug_source_concept_id INTEGER NOT NULL , route_source_value VARCHAR NULL , dose_unit_source_value VARCHAR NULL ) ; CREATE TABLE device_exposure ( device_exposure_id INTEGER NOT NULL , person_id INTEGER NOT NULL , device_concept_id INTEGER NOT NULL , device_exposure_start_date DATE NULL , device_exposure_start_datetime TIMESTAMP NOT NULL , device_exposure_end_date DATE NULL , device_exposure_end_datetime TIMESTAMP NULL , device_type_concept_id INTEGER NOT NULL , unique_device_id VARCHAR NULL , quantity INTEGER NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , device_source_value VARCHAR NULL , device_source_concept_id INTEGER NOT NULL ) ; CREATE TABLE condition_occurrence ( condition_occurrence_id INTEGER NOT NULL , person_id INTEGER NOT NULL , condition_concept_id INTEGER NOT NULL , condition_start_date DATE NULL , condition_start_datetime TIMESTAMP NOT NULL , condition_end_date DATE NULL , condition_end_datetime TIMESTAMP NULL , condition_type_concept_id INTEGER NOT NULL , condition_status_concept_id INTEGER NOT NULL , stop_reason VARCHAR NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , condition_source_value VARCHAR NULL , condition_source_concept_id INTEGER NOT NULL , condition_status_source_value VARCHAR NULL ) ; CREATE TABLE measurement ( measurement_id INTEGER NOT NULL , person_id INTEGER NOT NULL , measurement_concept_id INTEGER NOT NULL , measurement_date DATE NULL , measurement_datetime TIMESTAMP NOT NULL , measurement_time VARCHAR NULL, measurement_type_concept_id INTEGER NOT NULL , operator_concept_id INTEGER NULL , value_as_number FLOAT NULL , value_as_concept_id INTEGER NULL , unit_concept_id INTEGER NULL , range_low FLOAT NULL , range_high FLOAT NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , measurement_source_value VARCHAR NULL , measurement_source_concept_id INTEGER NOT NULL , unit_source_value VARCHAR NULL , value_source_value VARCHAR NULL ) ; CREATE TABLE note ( note_id INTEGER NOT NULL , person_id INTEGER NOT NULL , note_event_id INTEGER NULL , note_event_field_concept_id INTEGER NOT NULL , note_date DATE NULL , note_datetime TIMESTAMP NOT NULL , note_type_concept_id INTEGER NOT NULL , note_class_concept_id INTEGER NOT NULL , note_title VARCHAR NULL , note_text VARCHAR NULL , encoding_concept_id INTEGER NOT NULL , language_concept_id INTEGER NOT NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , note_source_value VARCHAR NULL ) ; CREATE TABLE note_nlp ( note_nlp_id INTEGER NOT NULL , note_id INTEGER NOT NULL , section_concept_id INTEGER NOT NULL , snippet VARCHAR NULL , "offset" VARCHAR NULL , lexical_variant VARCHAR NOT NULL , note_nlp_concept_id INTEGER NOT NULL , nlp_system VARCHAR NULL , nlp_date DATE NOT NULL , nlp_datetime TIMESTAMP NULL , term_exists VARCHAR NULL , term_temporal VARCHAR NULL , term_modifiers VARCHAR NULL , note_nlp_source_concept_id INTEGER NOT NULL ) ; CREATE TABLE observation ( observation_id INTEGER NOT NULL , person_id INTEGER NOT NULL , observation_concept_id INTEGER NOT NULL , observation_date DATE NULL , observation_datetime TIMESTAMP NOT NULL , observation_type_concept_id INTEGER NOT NULL , value_as_number FLOAT NULL , value_as_string VARCHAR NULL , value_as_concept_id INTEGER NULL , qualifier_concept_id INTEGER NULL , unit_concept_id INTEGER NULL , provider_id INTEGER NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , observation_source_value VARCHAR NULL , observation_source_concept_id INTEGER NOT NULL , unit_source_value VARCHAR NULL , qualifier_source_value VARCHAR NULL , observation_event_id INTEGER NULL , obs_event_field_concept_id INTEGER NOT NULL , value_as_datetime TIMESTAMP NULL ) ; CREATE TABLE survey_conduct --Table added ( survey_conduct_id INTEGER NOT NULL , person_id INTEGER NOT NULL , survey_concept_id INTEGER NOT NULL , survey_start_date DATE NULL , survey_start_datetime TIMESTAMP NULL , survey_end_date DATE NULL , survey_end_datetime TIMESTAMP NOT NULL , provider_id INTEGER NULL , assisted_concept_id INTEGER NOT NULL , respondent_type_concept_id INTEGER NOT NULL , timing_concept_id INTEGER NOT NULL , collection_method_concept_id INTEGER NOT NULL , assisted_source_value VARCHAR NULL , respondent_type_source_value VARCHAR NULL , timing_source_value VARCHAR NULL , collection_method_source_value VARCHAR NULL , survey_source_value VARCHAR NULL , survey_source_concept_id INTEGER NOT NULL , survey_source_identifier VARCHAR NULL , validated_survey_concept_id INTEGER NOT NULL , validated_survey_source_value VARCHAR NULL , survey_version_number VARCHAR NULL , visit_occurrence_id INTEGER NULL , visit_detail_id INTEGER NULL , response_visit_occurrence_id INTEGER NULL ) ; CREATE TABLE fact_relationship ( domain_concept_id_1 INTEGER NOT NULL , fact_id_1 INTEGER NOT NULL , domain_concept_id_2 INTEGER NOT NULL , fact_id_2 INTEGER NOT NULL , relationship_concept_id INTEGER NOT NULL ) ; /************************ Standardized health system data ************************/ CREATE TABLE location ( location_id INTEGER NOT NULL , address_1 VARCHAR NULL , address_2 VARCHAR NULL , city VARCHAR NULL , state VARCHAR NULL , zip VARCHAR NULL , county VARCHAR NULL , country VARCHAR NULL , location_source_value VARCHAR NULL , latitude FLOAT NULL , longitude FLOAT NULL ) ; CREATE TABLE location_history --Table added ( location_history_id INTEGER NOT NULL , location_id INTEGER NOT NULL , relationship_type_concept_id INTEGER NOT NULL , domain_id VARCHAR NOT NULL , entity_id INTEGER NOT NULL , start_date DATE NOT NULL , end_date DATE NULL ) ; CREATE TABLE care_site ( care_site_id INTEGER NOT NULL , care_site_name VARCHAR NULL , place_of_service_concept_id INTEGER NOT NULL , location_id INTEGER NULL , care_site_source_value VARCHAR NULL , place_of_service_source_value VARCHAR NULL ) ; CREATE TABLE provider ( provider_id INTEGER NOT NULL , provider_name VARCHAR NULL , NPI VARCHAR NULL , DEA VARCHAR NULL , specialty_concept_id INTEGER NOT NULL , care_site_id INTEGER NULL , year_of_birth INTEGER NULL , gender_concept_id INTEGER NULL , provider_source_value VARCHAR NULL , specialty_source_value VARCHAR NULL , specialty_source_concept_id INTEGER NOT NULL , gender_source_value VARCHAR NULL , gender_source_concept_id INTEGER NOT NULL ) ; /************************ Standardized health economics ************************/ CREATE TABLE payer_plan_period ( payer_plan_period_id INTEGER NOT NULL , person_id INTEGER NOT NULL , contract_person_id INTEGER NULL , payer_plan_period_start_date DATE NOT NULL , payer_plan_period_end_date DATE NOT NULL , payer_concept_id INTEGER NOT NULL , plan_concept_id INTEGER NOT NULL , contract_concept_id INTEGER NOT NULL , sponsor_concept_id INTEGER NOT NULL , stop_reason_concept_id INTEGER NOT NULL , payer_source_value VARCHAR NULL , payer_source_concept_id INTEGER NOT NULL , plan_source_value VARCHAR NULL , plan_source_concept_id INTEGER NOT NULL , contract_source_value VARCHAR NULL , contract_source_concept_id INTEGER NOT NULL , sponsor_source_value VARCHAR NULL , sponsor_source_concept_id INTEGER NOT NULL , family_source_value VARCHAR NULL , stop_reason_source_value VARCHAR NULL , stop_reason_source_concept_id INTEGER NOT NULL ) ; CREATE TABLE cost ( cost_id INTEGER NOT NULL , person_id INTEGER NOT NULL, cost_event_id INTEGER NOT NULL , cost_event_field_concept_id INTEGER NOT NULL , cost_concept_id INTEGER NOT NULL , cost_type_concept_id INTEGER NOT NULL , currency_concept_id INTEGER NOT NULL , cost FLOAT NULL , incurred_date DATE NOT NULL , billed_date DATE NULL , paid_date DATE NULL , revenue_code_concept_id INTEGER NOT NULL , drg_concept_id INTEGER NOT NULL , cost_source_value VARCHAR NULL , cost_source_concept_id INTEGER NOT NULL , revenue_code_source_value VARCHAR NULL , drg_source_value VARCHAR NULL , payer_plan_period_id INTEGER NULL ) ; /************************ Standardized derived elements ************************/ CREATE TABLE drug_era ( drug_era_id INTEGER NOT NULL , person_id INTEGER NOT NULL , drug_concept_id INTEGER NOT NULL , drug_era_start_datetime TIMESTAMP NOT NULL , drug_era_end_datetime TIMESTAMP NOT NULL , drug_exposure_count INTEGER NULL , gap_days INTEGER NULL ) ; CREATE TABLE dose_era ( dose_era_id INTEGER NOT NULL , person_id INTEGER NOT NULL , drug_concept_id INTEGER NOT NULL , unit_concept_id INTEGER NOT NULL , dose_value FLOAT NOT NULL , dose_era_start_datetime TIMESTAMP NOT NULL , dose_era_end_datetime TIMESTAMP NOT NULL ) ; CREATE TABLE condition_era ( condition_era_id INTEGER NOT NULL , person_id INTEGER NOT NULL , condition_concept_id INTEGER NOT NULL , condition_era_start_datetime TIMESTAMP NOT NULL , condition_era_end_datetime TIMESTAMP NOT NULL , condition_occurrence_count INTEGER NULL ) ;