Skip to content

Commit b4d867c

Browse files
2 parents 766171a + d2dddc5 commit b4d867c

14 files changed

+2131
-4
lines changed

extras/v53_v54_conversion/README.txt

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
README
3+
------
4+
5+
v5.3 to v5.4 CDM conversion
6+
7+
NOTES
8+
-----
9+
10+
The *_v53_to_v54_migration.sql scripts are SQL scripts that migrate a v5.3 CDM to a v5.4 CDM.
11+
The changes implemented are found here: http://ohdsi.github.io/CommonDataModel/cdm54Changes.html.
12+
Please replace @cdmDatabaseSchema with your schema name.
13+
Links to database documentation are included in each script to facilitate debugging.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
-- http://ohdsi.github.io/CommonDataModel/cdm54Changes.html
2+
-- BigQuery SQL references:
3+
-- https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#creating_a_new_table_from_an_existing_table
4+
-- https://cloud.google.com/bigquery/docs/manually-changing-schemas
5+
-- https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#alter_column_set_data_type_statement
6+
-- https://cloud.google.com/bigquery/docs/managing-tables#renaming-table
7+
--
8+
9+
-- VISIT_OCCURRENCE
10+
-- admitting_source_concept_id -> admitted_from_concept_id
11+
-- admitting_source_value -> admitted_from_source_value
12+
-- discharge_to_concept_id -> discharged_to_concept_id
13+
-- discharge_to_source_value -> discharged_to_source_value
14+
15+
alter table @cdmDatabaseSchema.visit_occurrence rename to visit_occurrence_old;
16+
create table @cdmDatabaseSchema.visit_occurrence
17+
as
18+
select * EXCEPT(admitting_source_concept_id,admitting_source_value,discharge_to_concept_id,discharge_to_source_value),
19+
admitting_source_concept_id as admitted_from_concept_id,
20+
admitting_source_value as admitted_from_source_value,
21+
discharge_to_concept_id as discharged_to_concept_id,
22+
discharge_to_source_value as discharged_to_source_value
23+
from visit_occurrence_old;
24+
25+
--
26+
-- VISIT_DETAIL
27+
-- admitting_source_concept_id -> admitted_from_concept_id
28+
-- admitting_source_value -> admitted_from_source_value
29+
-- discharge_to_concept_id -> discharged_to_concept_id
30+
-- discharge_to_source_value -> discharged_to_source_value
31+
-- visit_detail_parent_id -> parent_visit_detail_id
32+
33+
alter table @cdmDatabaseSchema.visit_detail rename to visit_detail_old;
34+
create table @cdmDatabaseSchema.visit_occurrence
35+
as
36+
select * EXCEPT(admitting_source_concept_id,admitting_source_value,discharge_to_concept_id,discharge_to_source_value,visit_detail_parent_id),
37+
admitting_source_concept_id as admitted_from_concept_id,
38+
admitting_source_value as admitted_from_source_value,
39+
discharge_to_concept_id as discharged_to_concept_id,
40+
discharge_to_source_value as discharged_to_source_value,
41+
visit_detail_parent_id as parent_visit_detail_id
42+
from visit_detail_old;
43+
44+
-- PROCEDURE_OCCURRENCE
45+
-- + Procedure_end_date
46+
-- + Procedure_end_datetime
47+
48+
alter table @cdmDatabaseSchema.procedure_occurrence add column procedure_end_date date;
49+
alter table @cdmDatabaseSchema.procedure_occurrence add column procedure_end_datetime datetime;
50+
51+
-- DEVICE_EXPOSURE
52+
-- Unique_device_id -> Changed to varchar(255) (already a STRING on bigquery)
53+
-- + Production_id
54+
-- + Unit_concept_id
55+
-- + Unit_source_value
56+
-- + Unit_source_concept_id
57+
58+
alter table @cdmDatabaseSchema.device_exposure add column production_id int64;
59+
alter table @cdmDatabaseSchema.device_exposure add column unit_concept_id int64;
60+
alter table @cdmDatabaseSchema.device_exposure add column unit_source_value string;
61+
alter table @cdmDatabaseSchema.device_exposure add column unit_source_concept_id int64;
62+
63+
-- MEASUREMENT
64+
-- + Unit_source_concept_id
65+
-- + Measurement_event_id
66+
-- + Meas_event_field_concept_id
67+
68+
alter table @cdmDatabaseSchema.measurement add column unit_source_concept_id int64;
69+
alter table @cdmDatabaseSchema.measurement add column measurement_event_id int64;
70+
alter table @cdmDatabaseSchema.measurement add column meas_event_field_concept_id int64;
71+
72+
-- OBSERVATION
73+
-- + Value_source_value
74+
-- + Observation_event_id
75+
-- + Obs_event_field_concept_id
76+
77+
alter table @cdmDatabaseSchema.observation add column value_source_value string;
78+
alter table @cdmDatabaseSchema.observation add column observation_event_id int64;
79+
alter table @cdmDatabaseSchema.observation add column obs_event_field_concept_id int64;
80+
81+
-- NOTE
82+
-- + Note_event_id
83+
-- + Note_event_field_concept_id
84+
85+
alter table @cdmDatabaseSchema.note add column note_event_id int64;
86+
alter table @cdmDatabaseSchema.note add column note_event_field_concept_id int64;
87+
88+
-- LOCATION
89+
-- + Country_concept_id
90+
-- + Country_source_value
91+
-- + Latitude
92+
-- + Longitude
93+
94+
alter table @cdmDatabaseSchema.location add column country_concept_id int64;
95+
alter table @cdmDatabaseSchema.location add column country_source_value string;
96+
alter table @cdmDatabaseSchema.location add column latitude float64;
97+
alter table @cdmDatabaseSchema.location add column longitude float64;
98+
99+
-- EPISODE
100+
create table @cdmDatabaseSchema.episode (
101+
episode_id INT64 not null,
102+
person_id INT64 not null,
103+
episode_concept_id INT64 not null,
104+
episode_start_date date not null,
105+
episode_start_datetime datetime null,
106+
episode_end_date date null,
107+
episode_end_datetime datetime null,
108+
episode_parent_id INT64,
109+
episode_number INT64,
110+
episode_object_concept_id INT64 not null,
111+
episode_type_concept_id INT64 not null,
112+
episode_source_value STRING,
113+
episode_source_concept_id INT64 );
114+
115+
-- EPISODE_EVENT
116+
CREATE TABLE @cdmDatabaseSchema.EPISODE_EVENT (
117+
episode_id int64 NOT NULL,
118+
event_id int64 NOT NULL,
119+
episode_event_field_concept_id int64 NOT NULL );
120+
121+
122+
-- METADATA
123+
-- + Metadata_id
124+
-- + Value_as_number
125+
126+
alter table @cdmDatabaseSchema.metadata add column metadata_id int64;
127+
alter table @cdmDatabaseSchema.metadata add column value_as_number float64;
128+
129+
-- CDM_SOURCE
130+
-- Cdm_source_name -> Mandatory field
131+
-- Cdm_source_abbreviation -> Mandatory field
132+
-- Cdm_holder -> Mandatory field
133+
-- Source_release_date -> Mandatory field
134+
-- Cdm_release_date -> Mandatory field
135+
-- + Cdm_version_concept_id
136+
137+
alter table @cdmDatabaseSchema.cdm_source rename to cdm_source_v53;
138+
139+
CREATE TABLE @cdmDatabaseSchema.cdm_source (
140+
cdm_source_name string NOT NULL,
141+
cdm_source_abbreviation string NOT NULL,
142+
cdm_holder string NOT NULL,
143+
source_description string NULL,
144+
source_documentation_reference string NULL,
145+
cdm_etl_reference string NULL,
146+
source_release_date datetime NOT NULL,
147+
cdm_release_date datetime NOT NULL,
148+
cdm_version string NULL,
149+
cdm_version_concept_id int64 NOT NULL,
150+
vocabulary_version string NOT NULL );
151+
152+
insert into @cdmDatabaseSchema.cdm_source
153+
select cdm_source_name,cdm_source_abbreviation,cdm_holder,
154+
source_description,source_documentation_reference,cdm_etl_reference,
155+
source_release_date,cdm_release_date,'5.4',
156+
756265,vocabulary_version
157+
from @cdmDatabaseSchema.cdm_source_v53;
158+
159+
160+
-- VOCABULARY
161+
-- Vocabulary_reference -> Non-mandatory field
162+
-- Vocabulary_version -> Non-mandatory field
163+
alter table @cdmDatabaseSchema.vocabulary rename to vocabulary_v53;
164+
165+
CREATE TABLE @cdmDatabaseSchema.vocabulary (
166+
vocabulary_id string NOT NULL,
167+
vocabulary_name string NOT NULL,
168+
vocabulary_reference string NULL,
169+
vocabulary_version string NULL,
170+
vocabulary_concept_id int64 NOT NULL );
171+
172+
insert into @cdmDatabaseSchema.vocabulary
173+
select vocabulary_id,vocabulary_name,vocabulary_reference,
174+
vocabulary_version, vocabulary_concept_id
175+
from @cdmDatabaseSchema.vocabulary_v53;
176+
177+
178+
-- ATTRIBUTE_DEFINITION
179+
drop table @cdmDatabaseSchema.attribute_definition;
180+
181+
-- COHORT
182+
CREATE TABLE @cdmDatabaseSchema.cohort (
183+
cohort_definition_id int64 NOT NULL,
184+
subject_id int64 NOT NULL,
185+
cohort_start_date datetime NOT NULL,
186+
cohort_end_date datetime NOT NULL );
187+
188+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
-- http://ohdsi.github.io/CommonDataModel/cdm54Changes.html
2+
-- Impala SQL references:
3+
-- https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_alter_table.html
4+
--
5+
-- VISIT_OCCURRENCE
6+
-- admitting_source_concept_id -> admitted_from_concept_id
7+
-- admitting_source_value -> admitted_from_source_value
8+
-- discharge_to_concept_id -> discharged_to_concept_id
9+
-- discharge_to_source_value -> discharged_to_source_value
10+
11+
alter table @cdmDatabaseSchema.visit_occurrence change admitting_source_concept_id admitted_from_concept_id int;
12+
alter table @cdmDatabaseSchema.visit_occurrence change admitting_source_value admitted_from_source_value int;
13+
alter table @cdmDatabaseSchema.visit_occurrence change discharge_to_concept_id discharged_to_concept_id int;
14+
alter table @cdmDatabaseSchema.visit_occurrence change discharge_to_source_value discharged_to_source_value int;
15+
16+
--
17+
-- VISIT_DETAIL
18+
-- admitting_source_concept_id -> admitted_from_concept_id
19+
-- admitting_source_value -> admitted_from_source_value
20+
-- discharge_to_concept_id -> discharged_to_concept_id
21+
-- discharge_to_source_value -> discharged_to_source_value
22+
-- visit_detail_parent_id -> parent_visit_detail_id
23+
24+
alter table @cdmDatabaseSchema.visit_detail change admitting_source_concept_id admitted_from_concept_id int;
25+
alter table @cdmDatabaseSchema.visit_detail change admitting_source_value admitted_from_source_value int;
26+
alter table @cdmDatabaseSchema.visit_detail change discharge_to_concept_id discharged_to_concept_id int;
27+
alter table @cdmDatabaseSchema.visit_detail change discharge_to_source_value discharged_to_source_value int;
28+
alter table @cdmDatabaseSchema.visit_detail change visit_detail_parent_id parent_visit_detail_id int;
29+
30+
-- PROCEDURE_OCCURRENCE
31+
-- + Procedure_end_date
32+
-- + Procedure_end_datetime
33+
34+
alter table @cdmDatabaseSchema.procedure_occurrence add columns (procedure_end_date timestamp);
35+
alter table @cdmDatabaseSchema.procedure_occurrence add columns (procedure_end_datetime timestamp);
36+
37+
-- DEVICE_EXPOSURE
38+
-- Unique_device_id -> Changed to varchar(255)
39+
-- + Production_id
40+
-- + Unit_concept_id
41+
-- + Unit_source_value
42+
-- + Unit_source_concept_id
43+
44+
alter table @cdmDatabaseSchema.device_exposure change unique_device_id unique_device_id varchar(300);
45+
alter table @cdmDatabaseSchema.device_exposure add columns (production_id int);
46+
alter table @cdmDatabaseSchema.device_exposure add columns (unit_concept_id int);
47+
alter table @cdmDatabaseSchema.device_exposure add columns (unit_source_value int);
48+
alter table @cdmDatabaseSchema.device_exposure add columns (unit_source_concept_id int);
49+
50+
-- MEASUREMENT
51+
-- + Unit_source_concept_id
52+
-- + Measurement_event_id
53+
-- + Meas_event_field_concept_id
54+
55+
alter table @cdmDatabaseSchema.measurement add columns (unit_source_concept_id int);
56+
alter table @cdmDatabaseSchema.measurement add columns (measurement_event_id int);
57+
alter table @cdmDatabaseSchema.measurement add columns (meas_event_field_concept_id int);
58+
59+
-- OBSERVATION
60+
-- + Value_source_value
61+
-- + Observation_event_id
62+
-- + Obs_event_field_concept_id
63+
64+
alter table @cdmDatabaseSchema.observation add columns (value_source_value varchar(50));
65+
alter table @cdmDatabaseSchema.observation add columns (observation_event_id int);
66+
alter table @cdmDatabaseSchema.observation add columns (obs_event_field_concept_id int);
67+
68+
-- NOTE
69+
-- + Note_event_id
70+
-- + Note_event_field_concept_id
71+
72+
alter table @cdmDatabaseSchema.note add columns (note_event_id int);
73+
alter table @cdmDatabaseSchema.note add columns (note_event_field_concept_id int);
74+
75+
-- LOCATION
76+
-- + Country_concept_id
77+
-- + Country_source_value
78+
-- + Latitude
79+
-- + Longitude
80+
81+
alter table @cdmDatabaseSchema.location add columns (country_concept_id int);
82+
alter table @cdmDatabaseSchema.location add columns (country_source_value varchar(80));
83+
alter table @cdmDatabaseSchema.location add columns (latitude float);
84+
alter table @cdmDatabaseSchema.location add columns (longitude float);
85+
86+
-- EPISODE
87+
CREATE TABLE @cdmDatabaseSchema.EPISODE (
88+
episode_id int,
89+
person_id int,
90+
episode_concept_id int,
91+
episode_start_date timestamp,
92+
episode_start_datetime TIMESTAMP,
93+
episode_end_date timestamp,
94+
episode_end_datetime timestamp,
95+
episode_parent_id int,
96+
episode_number int,
97+
episode_object_concept_id int,
98+
episode_type_concept_id int,
99+
episode_source_value varchar(50),
100+
episode_source_concept_id int );
101+
102+
-- EPISODE_EVENT
103+
CREATE TABLE @cdmDatabaseSchema.EPISODE_EVENT (
104+
episode_id int,
105+
event_id int,
106+
episode_event_field_concept_id int );
107+
108+
109+
-- METADATA
110+
-- + Metadata_id
111+
-- + Value_as_number
112+
113+
alter table @cdmDatabaseSchema.metadata add columns (metadata_id int);
114+
alter table @cdmDatabaseSchema.metadata add columns (value_as_number float);
115+
116+
-- CDM_SOURCE
117+
-- Cdm_source_name -> Mandatory field
118+
-- Cdm_source_abbreviation -> Mandatory field
119+
-- Cdm_holder -> Mandatory field
120+
-- Source_release_date -> Mandatory field
121+
-- Cdm_release_date -> Mandatory field
122+
-- + Cdm_version_concept_id
123+
124+
alter table @cdmDatabaseSchema.cdm_source rename to cdm_source_v53;
125+
126+
CREATE TABLE @cdmDatabaseSchema.cdm_source (
127+
cdm_source_name varchar(255),
128+
cdm_source_abbreviation varchar(25),
129+
cdm_holder varchar(255),
130+
source_description varchar(max),
131+
source_documentation_reference varchar(255),
132+
cdm_etl_reference varchar(255),
133+
source_release_date timestamp,
134+
cdm_release_date timestamp,
135+
cdm_version varchar(10),
136+
cdm_version_concept_id int,
137+
vocabulary_version varchar(20));
138+
139+
insert into @cdmDatabaseSchema.cdm_source
140+
select cdm_source_name,cdm_source_abbreviation,cdm_holder,
141+
source_description,source_documentation_reference,cdm_etl_reference,
142+
source_release_date,cdm_release_date,'5.4',
143+
756265,vocabulary_version
144+
from @cdmDatabaseSchema.cdm_source_v53;
145+
146+
147+
-- VOCABULARY
148+
-- Vocabulary_reference -> Non-mandatory field
149+
-- Vocabulary_version -> Non-mandatory field
150+
151+
alter table @cdmDatabaseSchema.vocabulary rename to vocabulary_v53;
152+
153+
CREATE TABLE @cdmDatabaseSchema.vocabulary (
154+
vocabulary_id varchar(20),
155+
vocabulary_name varchar(255),
156+
vocabulary_reference varchar(255),
157+
vocabulary_version varchar(255),
158+
vocabulary_concept_id int );
159+
160+
insert into @cdmDatabaseSchema.vocabulary
161+
select vocabulary_id,vocabulary_name,vocabulary_reference,
162+
vocabulary_version, vocabulary_concept_id
163+
from @cdmDatabaseSchema.vocabulary_v53;
164+
165+
166+
-- ATTRIBUTE_DEFINITION
167+
drop table @cdmDatabaseSchema.attribute_definition;
168+
169+
-- COHORT
170+
CREATE TABLE @cdmDatabaseSchema.cohort (
171+
cohort_definition_id int,
172+
subject_id int,
173+
cohort_start_date timestamp,
174+
cohort_end_date timestamp );
175+
176+

0 commit comments

Comments
 (0)