-
Notifications
You must be signed in to change notification settings - Fork 0
/
sql_table_creation.py
150 lines (134 loc) · 4.81 KB
/
sql_table_creation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import os
import sqlalchemy
from dotenv import load_dotenv
from sqlalchemy import create_engine
load_dotenv()
### drop the old tables that do not start with production_
def droppingFunction_limited(dbList, db_source):
for table in dbList:
if table.startswith('production_') == False:
db_source.execute(f'drop table {table}')
print(f'dropped table {table}')
else:
print(f'kept table {table}')
def droppingFunction_all(dbList, db_source):
for table in dbList:
db_source.execute(f'drop table {table}')
print(f'dropped table {table} succesfully!')
else:
print(f'kept table {table}')
MYSQL_HOSTNAME = os.getenv("MYSQL_HOSTNAME_AZURE")
MYSQL_USER = os.getenv("MYSQL_USER_AZURE")
MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD_AZURE")
MYSQL_DATABASE = os.getenv("MYSQL_DATABASE_AZURE")
connection_string = f'mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOSTNAME}:3306/{MYSQL_DATABASE}'
connection_string
db_azure = create_engine(connection_string)
### show tables from databases
tableNames_azure = db_azure.table_names()
# reoder tables: production_patient_conditions, production_patient_medications, production_medications, production_patients, production_conditions
tableNames_azure = ['patients','patient_conditions','patient_medications','patient_treatments_procedures','social_determinants','treatments_procedures','conditions','medications','patient_medications_ibfk_1']
# ### delete everything
#droppingFunction_all(tableNames_azure, db_azure)
### show tables from databases
tableNames_azure = db_azure.table_names()
print(tableNames_azure)
table_patients = """
create table if not exists patients (
id int auto_increment,
mrn varchar(255) default null unique,
first_name varchar(255) default null,
last_name varchar(255) default null,
zip_code varchar(255) default null,
dob varchar(255) default null,
gender varchar(255) default null,
contact_mobile varchar(255) default null,
contact_home varchar(255) default null,
PRIMARY KEY (id)
);
"""
table_patient_conditions = """
create table if not exists patient_conditions (
id int auto_increment,
mrn varchar(255) default null,
icd10_code varchar(255) default null,
PRIMARY KEY (id),
FOREIGN KEY (mrn) REFERENCES patients(mrn) ON DELETE CASCADE,
FOREIGN KEY (icd10_code) REFERENCES conditions(icd10_code) ON DELETE CASCADE
);
"""
table_patient_medications = """
create table if not exists patient_medications (
id int auto_increment,
mrn varchar(255) default null,
med_ndc varchar(255) default null,
PRIMARY KEY (id),
FOREIGN KEY (mrn) REFERENCES patients(mrn) ON DELETE CASCADE,
FOREIGN KEY (med_ndc) REFERENCES medications(med_ndc) ON DELETE CASCADE
);
"""
table_patient_treatments_procedures = """
create table if not exists patient_treatments_procedures (
id int auto_increment,
mrn varchar(255) default null,
cpt varchar(255) default null,
PRIMARY KEY (id),
FOREIGN KEY (mrn) REFERENCES patients(mrn) ON DELETE CASCADE,
FOREIGN KEY (cpt) REFERENCES treatment_procedures(cpt) ON DELETE CASCADE
);
"""
table_social_determinants = """
create table if not exists social_determinants (
id int auto_increment,
loinc varchar(255) null unique,
description varchar(255) default null,
PRIMARY KEY (id)
);
"""
table_medications = """
create table if not exists medications (
id int auto_increment,
med_ndc varchar(255) default null unique,
med_human_name varchar(255) default null,
med_is_dangerous varchar(255) default null,
PRIMARY KEY (id)
);
"""
table_conditions = """
create table if not exists conditions (
id int auto_increment,
icd10_code varchar(255) default null unique,
icd10_description varchar(255) default null,
PRIMARY KEY (id)
);
"""
table_treatments_procedures = """
create table if not exists treatment_procedures (
id int auto_increment,
cpt varchar(255) null unique,
description varchar(255) default null,
PRIMARY KEY (id)
);
"""
table_patient_social_determinants = """
create table if not exists patient_social_determinants (
id int auto_increment,
mrn varchar(255) default null,
loinc varchar(255) default null,
PRIMARY KEY (id),
FOREIGN KEY (mrn) REFERENCES patients(mrn) ON DELETE CASCADE,
FOREIGN KEY (loinc) REFERENCES social_determinants(loinc) ON DELETE CASCADE
);
"""
db_azure.execute(table_patients)
db_azure.execute(table_patient_conditions)
db_azure.execute(table_patient_medications)
db_azure.execute(table_patient_treatments_procedures)
db_azure.execute(table_social_determinants)
db_azure.execute(table_medications)
db_azure.execute(table_conditions)
db_azure.execute(table_treatments_procedures)
db.execute(table_patient_social_determinants)
# get tables from db_azure
azure_tables = db_azure.table_names()
print (azure_tables)