Diff of /SQL script.sql [000000] .. [ba27f9]

Switch to unified view

a b/SQL script.sql
1
-- Create database
2
CREATE DATABASE patient_readmission;
3
4
-- Use database
5
USE patient_readmission;
6
7
-- Create patients table
8
CREATE TABLE patients (
9
    patient_id INT PRIMARY KEY,
10
    age INT,
11
    gender VARCHAR(10),
12
    admission_date DATE,
13
    discharge_date DATE
14
);
15
16
-- Create diagnoses table
17
CREATE TABLE diagnoses (
18
    diagnosis_id INT PRIMARY KEY,
19
    patient_id INT,
20
    icd_code VARCHAR(10),
21
    diagnosis_date DATE,
22
    FOREIGN KEY (patient_id) REFERENCES patients(patient_id)
23
);
24
25
-- Create medications table
26
CREATE TABLE medications (
27
    medication_id INT PRIMARY KEY,
28
    patient_id INT,
29
    medication_name VARCHAR(50),
30
    start_date DATE,
31
    end_date DATE,
32
    FOREIGN KEY (patient_id) REFERENCES patients(patient_id)
33
);
34
35
-- Create lab_results table
36
CREATE TABLE lab_results (
37
    lab_result_id INT PRIMARY KEY,
38
    patient_id INT,
39
    lab_test VARCHAR(50),
40
    result_value DECIMAL(10, 2),
41
    result_date DATE,
42
    FOREIGN KEY (patient_id) REFERENCES patients(patient_id)
43
);
44
45
    -- Use window functions to calculate comorbidity index
46
WITH patient_comorbidities AS (
47
    SELECT 
48
        patient_id,
49
        COUNT(DISTINCT icd_code) AS comorbidity_index
50
    FROM 
51
        diagnoses
52
    GROUP BY 
53
        patient_id
54
)
55
SELECT 
56
    p.patient_id,
57
    p.age,
58
    p.gender,
59
    pc.comorbidity_index
60
FROM 
61
    patients p
62
JOIN 
63
    patient_comorbidities pc ON p.patient_id = pc.patient_id;
64
    
65
-- Use common table expressions to calculate medication duration
66
WITH patient_medications AS (
67
    SELECT 
68
        patient_id,
69
        medication_name,
70
        start_date,
71
        end_date,
72
        DATEDIFF(end_date, start_date) AS medication_duration
73
    FROM 
74
        medications
75
)
76
SELECT 
77
    p.patient_id,
78
    p.age,
79
    p.gender,
80
    pm.medication_duration
81
FROM 
82
    patients p
83
JOIN 
84
    patient_medications pm ON p.patient_id = pm.patient_id;
85
    
86
-- Use subqueries to calculate lab result average
87
SELECT 
88
    p.patient_id,
89
    p.age,
90
    p.gender,
91
    (SELECT AVG(result_value) FROM lab_results WHERE patient_id = p.patient_id) AS lab_result_average
92
FROM 
93
    patients p;
94
    
95
-- Use indexing and optimization techniques to improve query performance
96
CREATE INDEX idx_patients_patient_id ON patients (patient_id);
97
CREATE INDEX idx_diagnoses_patient_id ON diagnoses (patient_id);
98
CREATE INDEX idx_medications_patient_id ON medications (patient_id);
99
CREATE INDEX idx_lab_results_patient_id ON lab_results (patient_id);
100
101
CREATE TABLE readmission_risk (
102
    patient_id INT PRIMARY KEY,
103
    readmission_risk INT
104
);
105
    
106
WITH patient_medications AS (
107
    SELECT 
108
        patient_id,
109
        medication_name,
110
        start_date,
111
        end_date,
112
        DATEDIFF(end_date, start_date) AS medication_duration
113
    FROM 
114
        medications
115
),
116
lab_result_averages AS (
117
    SELECT 
118
        patient_id,
119
        AVG(result_value) AS lab_result_average
120
    FROM 
121
        lab_results
122
    GROUP BY 
123
        patient_id
124
)
125
SELECT 
126
    p.patient_id,
127
    p.age,
128
    p.gender,
129
    d.comorbidity_count,
130
    pm.medication_duration,
131
    lra.lab_result_average,
132
    r.risk
133
FROM 
134
    patients p
135
JOIN 
136
    diagnoses d ON p.patient_id = d.patient_id
137
JOIN 
138
    patient_medications pm ON p.patient_id = pm.patient_id
139
JOIN 
140
    lab_result_averages lra ON p.patient_id = lra.patient_id
141
JOIN 
142
    readmission_risk r ON p.patient_id = r.patient_id;
143
    SHOW COLUMNS FROM diagnoses;
144
145
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\patients2.csv" INTO TABLE patients FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
146
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\diagnoses2.csv" INTO TABLE diagnoses FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
147
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\medications2.csv" INTO TABLE medications FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
148
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\lab_results2.csv" INTO TABLE lab_results FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
149
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\readmission_risk2.csv" INTO TABLE readmission_risk FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
150
151
152
153
LOAD DATA INFILE "C:\\Users\\Hp\\Desktop\\IITK\\patient readmission project\\patients2.csv" 
154
REPLACE
155
INTO TABLE patients 
156
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' 
157
LINES TERMINATED BY '\n' 
158
IGNORE 1 ROWS;
159
160
161
select  discharge_date, admission_date, DATEDIFF(discharge_date,admission_date) as duration_admit from patients
162
163