-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdatabase.sql
126 lines (117 loc) · 3.63 KB
/
database.sql
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
DROP SCHEMA IF EXISTS Phase3; -- take this line out
CREATE database Phase3;
USE Phase3;
CREATE TABLE PERSON (
Person_id VARCHAR(10) PRIMARY KEY,
FName text,
MName text,
SName text,
Date_of_birth DATE,
Phone_number VARCHAR(15),
Gender CHAR(1),
Address VARCHAR(255),
Email VARCHAR(100),
CHECK(REGEXP_LIKE(Person_id, '^P-[0-9]{3}$'))
);
CREATE TABLE HEALTHCARE_PROFESSIONAL (
Person_id VARCHAR(10),
Employee_id VARCHAR(10) PRIMARY KEY,
Specialization VARCHAR(100),
Department VARCHAR(100),
Working_hours VARCHAR(50),
Start_date DATE,
FOREIGN KEY(Person_id) REFERENCES PERSON(Person_id),
CHECK(REGEXP_LIKE(Employee_id, '^EMP-[0-9]{3}$'))
);
CREATE TABLE PATIENT (
Person_id VARCHAR(10),
Patient_id VARCHAR(10) PRIMARY KEY,
Medical_history TEXT,
FOREIGN KEY(Person_id) REFERENCES PERSON(Person_id),
CHECK(REGEXP_LIKE(Patient_id, '^PT-[0-9]{5}$'))
);
CREATE TABLE ALLERGENS (
Allergen VARCHAR(50) PRIMARY KEY
);
INSERT INTO ALLERGENS (Allergen)
VALUES
('Peanuts'),
('Tree-Nuts'),
('Dairy'),
('Eggs'),
('Shellfish'),
('Fish'),
('Soy'),
('Wheat'),
('Sesame');
CREATE TABLE MEDICAL_RECORD (
Record_id VARCHAR(10) PRIMARY KEY,
Patient_id VARCHAR(10) NOT NULL,
Employee_id VARCHAR(10) NOT NULL,
Current_medications TEXT,
Allergies VARCHAR(50),
Treatment_history TEXT,
Lab_results TEXT,
Past_Diagnoses TEXT,
FOREIGN KEY(Patient_id) REFERENCES PATIENT(Patient_id),
FOREIGN KEY(Employee_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);
CREATE TABLE INSURANCE_INFORMATION (
Insurance_id VARCHAR(10) PRIMARY KEY,
Patient_id VARCHAR(10),
Amount DECIMAL(10, 2),
Insurance_company VARCHAR(100),
Patient_insurance VARCHAR(100),
FOREIGN KEY(Patient_id) REFERENCES PATIENT(Patient_id)
);
CREATE TABLE BILLING (
Billing_id VARCHAR(10) PRIMARY KEY,
Patient_id VARCHAR(10),
Insurance_id VARCHAR(10),
Payment_method VARCHAR(50),
Itemized_costs TEXT,
Date DATE,
FOREIGN KEY(Patient_id) REFERENCES PATIENT(Patient_id),
FOREIGN KEY(Insurance_id) REFERENCES INSURANCE_INFORMATION(Insurance_id)
);
CREATE TABLE APPOINTMENT (
Appointment_id VARCHAR(10) PRIMARY KEY,
Patient_id VARCHAR(10),
Employee_id VARCHAR(10),
Purpose VARCHAR(255),
Date DATE,
Time TIME,
FOREIGN KEY(Patient_id) REFERENCES PATIENT(Patient_id),
FOREIGN KEY(Employee_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);
CREATE TABLE TREATMENT (
Treatment_id VARCHAR(10) PRIMARY KEY,
Recipient_id VARCHAR(10),
Employee_id_prescriber VARCHAR(10),
Employee_id_conductor VARCHAR(10),
Outcome VARCHAR(255),
End_date DATE,
Start_date DATE,
Description TEXT,
Pharmacy VARCHAR(100),
FOREIGN KEY(Recipient_id) REFERENCES PATIENT(Patient_id),
FOREIGN KEY(Employee_id_prescriber) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id),
FOREIGN KEY(Employee_id_conductor) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id),
CHECK(Start_date < End_date)
);
CREATE TABLE DOCTOR (
Employee_doctor_id VARCHAR(10) PRIMARY KEY,
FOREIGN KEY(Employee_doctor_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);
CREATE TABLE TECHNICIAN (
Employee_tech_id VARCHAR(10) PRIMARY KEY,
FOREIGN KEY(Employee_tech_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);
CREATE TABLE NURSE (
Employee_nurse_id VARCHAR(10) PRIMARY KEY,
FOREIGN KEY(Employee_nurse_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);
CREATE TABLE ADMINISTRATIVE_STAFF (
Employee_admin_id VARCHAR(10) PRIMARY KEY,
FOREIGN KEY(Employee_admin_id) REFERENCES HEALTHCARE_PROFESSIONAL(Employee_id)
);