Advertisement
Wonkiest29

SQL

Jan 27th, 2025 (edited)
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.18 KB | None | 0 0
  1. CREATE TABLE Patient (
  2.     Patient_ID INT PRIMARY KEY IDENTITY(1,1),
  3.     FirstName VARCHAR(50) NOT NULL,
  4.     LastName VARCHAR(50) NOT NULL,
  5.     DateOfBirth DATE CHECK (DateOfBirth < GETDATE()),
  6.     Gender VARCHAR(10) CHECK (Gender IN ('Male', 'Female', 'Other')),
  7.     ContactNumber VARCHAR(15) UNIQUE NOT NULL,
  8.     Email VARCHAR(100) UNIQUE CHECK (Email LIKE '%_@__%.__%'),
  9.     Address VARCHAR(200) NOT NULL,
  10.     BloodType VARCHAR(5) CHECK (BloodType IN ('A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-')),
  11.     EmergencyContactName VARCHAR(100) NOT NULL,
  12.     EmergencyContactNumber VARCHAR(15) NOT NULL,
  13.     CreatedDate DATETIME DEFAULT GETDATE(),
  14.     UpdatedDate DATETIME DEFAULT GETDATE()
  15. );
  16.  
  17. CREATE TABLE Doctor (
  18.     Doctor_ID INT PRIMARY KEY IDENTITY(1,1),
  19.     FirstName VARCHAR(50) NOT NULL,
  20.     LastName VARCHAR(50) NOT NULL,
  21.     Specialization VARCHAR(100) NOT NULL,
  22.     Department VARCHAR(100) NOT NULL,
  23.     ContactNumber VARCHAR(15) UNIQUE NOT NULL,
  24.     Email VARCHAR(100) UNIQUE CHECK (Email LIKE '%_@__%.__%'),
  25.     Qualification VARCHAR(200) NOT NULL,
  26.     JoiningDate DATE CHECK (JoiningDate <= GETDATE()),
  27.     STATUS VARCHAR(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive', 'On Leave')),
  28.     CreatedDate DATETIME DEFAULT GETDATE(),
  29.     UpdatedDate DATETIME DEFAULT GETDATE()
  30. );
  31.  
  32. CREATE TABLE Appointment (
  33.     Appointment_ID INT PRIMARY KEY IDENTITY(1,1),
  34.     Patient_ID INT NOT NULL,
  35.     Doctor_ID INT NOT NULL,
  36.     AppointmentDate DATE CHECK (AppointmentDate >= GETDATE()),
  37.     AppointmentTime TIME NOT NULL,
  38.     Purpose VARCHAR(200) NOT NULL,
  39.     STATUS VARCHAR(20) CHECK (STATUS IN ('Scheduled', 'Completed', 'Cancelled', 'Pending')),
  40.     CreatedDate DATETIME DEFAULT GETDATE(),
  41.     FOREIGN KEY (Patient_ID) REFERENCES Patient(Patient_ID),
  42.     FOREIGN KEY (Doctor_ID) REFERENCES Doctor(Doctor_ID)
  43. );
  44.  
  45.  
  46. CREATE TABLE Medical_Record (
  47.     Record_ID INT PRIMARY KEY,
  48.     Patient_ID INT,
  49.     Doctor_ID INT,
  50.     DiagnosisDate DATE,
  51.     Diagnosis VARCHAR(500),
  52.     Prescription TEXT,
  53.     Treatment VARCHAR(500),
  54.     Notes TEXT,
  55.     FOREIGN KEY (Patient_ID) REFERENCES Patient(Patient_ID),
  56.     FOREIGN KEY (Doctor_ID) REFERENCES Doctor(Doctor_ID)
  57. );
  58.  
  59. CREATE TABLE Ward (
  60.     Ward_ID INT PRIMARY KEY,
  61.     WardName VARCHAR(50),
  62.     Capacity INT,
  63.     CurrentOccupancy INT,
  64.     WardType VARCHAR(50)
  65. );
  66.  
  67. CREATE TABLE Bed (
  68.     Bed_ID INT PRIMARY KEY,
  69.     Ward_ID INT,
  70.     STATUS VARCHAR(20),
  71.     BedType VARCHAR(50),
  72.     FOREIGN KEY (Ward_ID) REFERENCES Ward(Ward_ID)
  73. );
  74.  
  75. CREATE TABLE Admission (
  76.     Admission_ID INT PRIMARY KEY,
  77.     Patient_ID INT,
  78.     Bed_ID INT,
  79.     AdmissionDate DATE,
  80.     DischargeDate DATE,
  81.     AdmissionReason VARCHAR(500),
  82.     STATUS VARCHAR(20),
  83.     FOREIGN KEY (Patient_ID) REFERENCES Patient(Patient_ID),
  84.     FOREIGN KEY (Bed_ID) REFERENCES Bed(Bed_ID)
  85. );
  86.  
  87. CREATE TABLE Invoice (
  88.     Invoice_ID INT PRIMARY KEY,
  89.     Patient_ID INT,
  90.     TotalAmount DECIMAL(10,2),
  91.     InvoiceDate DATE,
  92.     PaymentStatus VARCHAR(20),
  93.     FOREIGN KEY (Patient_ID) REFERENCES Patient(Patient_ID)
  94. );
  95.  
  96. CREATE TABLE Invoice_Detail (
  97.     InvoiceDetail_ID INT PRIMARY KEY,
  98.     Invoice_ID INT,
  99.     ServiceDescription VARCHAR(200),
  100.     ServiceCost DECIMAL(10,2),
  101.     FOREIGN KEY (Invoice_ID) REFERENCES Invoice(Invoice_ID)
  102. );
  103.  
  104. CREATE TABLE Staff (
  105.     Staff_ID INT PRIMARY KEY,
  106.     FirstName VARCHAR(50),
  107.     LastName VARCHAR(50),
  108.     Department VARCHAR(100),
  109.     POSITION VARCHAR(100),
  110.     ContactNumber VARCHAR(15),
  111.     Email VARCHAR(100),
  112.     HireDate DATE,
  113.     Salary DECIMAL(10,2)
  114. );
  115.  
  116.  
  117. -- drop database "73705_project"
  118.  
  119.  
  120. INSERT INTO Patient (FirstName, LastName, DateOfBirth, Gender, ContactNumber, Email, Address, BloodType, EmergencyContactName, EmergencyContactNumber)
  121. VALUES
  122. ('John', 'Doe', '1980-05-15', 'Male', '555-1234', 'john.doe@email.com', '123 Main St, New York', 'A+', 'Jane Doe', '555-5678'),
  123. ('Emily', 'Smith', '1995-12-20', 'Female', '555-9876', 'emily.smith@email.com', '456 Oak Ave, Chicago', 'B-', 'Michael Smith', '555-4321'),
  124. ('David', 'Johnson', '1975-07-10', 'Male', '555-2468', 'david.johnson@email.com', '789 Pine Rd, Los Angeles', 'O+', 'Sarah Johnson', '555-1357')
  125. ('Alice', 'Williams', '1985-03-22', 'Female', '555-1111', 'alice.williams@email.com', '321 Maple St, Boston', 'A-', 'Bob Williams', '555-2222'),
  126. ('Bob', 'Miller', '1990-07-30', 'Male', '555-3333', 'bob.miller@email.com', '654 Elm St, Seattle', 'B+', 'Alice Miller', '555-4444'),
  127. ('Charlie', 'Davis', '1982-11-11', 'Male', '555-5555', 'charlie.davis@email.com', '987 Birch St, Miami', 'O-', 'Diana Davis', '555-6666'),
  128. ('Diana', 'Garcia', '1978-02-28', 'Female', '555-7777', 'diana.garcia@email.com', '123 Cedar St, Denver', 'AB+', 'Evan Garcia', '555-8888'),
  129. ('Evan', 'Martinez', '1992-09-15', 'Male', '555-9999', 'evan.martinez@email.com', '456 Spruce St, Austin', 'A+', 'Fiona Martinez', '555-0000'),
  130. ('Fiona', 'Hernandez', '1987-06-05', 'Female', '555-1212', 'fiona.hernandez@email.com', '789 Pine St, San Francisco', 'B-', 'George Hernandez', '555-3434');
  131.  
  132.  
  133.  
  134. INSERT INTO Doctor (FirstName, LastName, Specialization, Department, ContactNumber, Email, Qualification, JoiningDate)
  135. VALUES
  136. ('Michael', 'Brown', 'Cardiology', 'Heart Center', '555-7890', 'michael.brown@hospital.com', 'MD, Cardiology', '2010-03-15'),
  137. ('Sarah', 'Wilson', 'Pediatrics', 'Children''s Ward', '555-6543', 'sarah.wilson@hospital.com', 'MD, Pediatrics', '2015-06-20'),
  138. ('Robert', 'Taylor', 'Orthopedics', 'Bone & Joint Center', '555-9012', 'robert.taylor@hospital.com', 'MD, Orthopedic Surgery', '2008-11-10');
  139.  
  140. INSERT INTO Appointment (Patient_ID, Doctor_ID, AppointmentDate, AppointmentTime, Purpose, STATUS)
  141. VALUES
  142. (1, 1, '2024-02-15', '10:00:00', 'Cardiac Check-up', 'Scheduled'),
  143. (2, 2, '2024-02-16', '14:30:00', 'Child Vaccination', 'Pending'),
  144. (3, 3, '2024-02-17', '11:15:00', 'Knee Pain Consultation', 'Scheduled');
  145.  
  146. INSERT INTO Medical_Record (Record_ID, Patient_ID, Doctor_ID, DiagnosisDate, Diagnosis, Prescription, Treatment, Notes)
  147. VALUES
  148. (1, 1, 1, '2024-02-15', 'Mild Hypertension', 'Lisinopril 10mg', 'Blood Pressure Monitoring', 'Lifestyle changes recommended'),
  149. (2, 2, 2, '2024-02-16', 'Routine Vaccination', 'MMR Vaccine', 'Immunization', 'Child is healthy'),
  150. (3, 3, 3, '2024-02-17', 'Knee Ligament Strain', 'Ibuprofen 400mg', 'Physical Therapy', '6 weeks rehabilitation');
  151.  
  152. INSERT INTO Ward (Ward_ID, WardName, Capacity, CurrentOccupancy, WardType)
  153. VALUES
  154. (1, 'Cardiac Ward', 20, 15, 'Intensive Care'),
  155. (2, 'Pediatric Ward', 15, 10, 'General'),
  156. (3, 'Orthopedic Ward', 25, 18, 'Surgical');
  157.  
  158. INSERT INTO Bed (Bed_ID, Ward_ID, STATUS, BedType)
  159. VALUES
  160. (1, 1, 'Occupied', 'ICU'),
  161. (2, 1, 'Available', 'Standard'),
  162. (3, 2, 'Occupied', 'Pediatric'),
  163. (4, 3, 'Available', 'Orthopedic');
  164.  
  165. INSERT INTO Admission (Admission_ID, Patient_ID, Bed_ID, AdmissionDate, DischargeDate, AdmissionReason, STATUS)
  166. VALUES
  167. (1, 1, 1, '2024-02-15', NULL, 'Cardiac Observation', 'Active'),
  168. (2, 2, 3, '2024-02-16', NULL, 'Routine Monitoring', 'Active');
  169.  
  170. INSERT INTO Invoice (Invoice_ID, Patient_ID, TotalAmount, InvoiceDate, PaymentStatus)
  171. VALUES
  172. (1, 1, 1500.00, '2024-02-20', 'Pending'),
  173. (2, 2, 750.00, '2024-02-21', 'Paid');
  174.  
  175. INSERT INTO Invoice_Detail (InvoiceDetail_ID, Invoice_ID, ServiceDescription, ServiceCost)
  176. VALUES
  177. (1, 1, 'Cardiac Consultation', 500.00),
  178. (2, 1, 'ECG Test', 250.00),
  179. (3, 1, 'Medication', 750.00),
  180. (4, 2, 'Pediatric Consultation', 250.00),
  181. (5, 2, 'Vaccination', 500.00);
  182.  
  183. INSERT INTO Staff (Staff_ID, FirstName, LastName, Department, POSITION, ContactNumber, Email, HireDate, Salary)
  184. VALUES
  185. (1, 'Lisa', 'Martinez', 'Nursing', 'Head Nurse', '555-3456', 'lisa.martinez@hospital.com', '2012-05-01', 65000.00),
  186. (2, 'James', 'Anderson', 'Administration', 'Hospital Manager', '555-7890', 'james.anderson@hospital.com', '2010-01-15', 85000.00);
  187.  
  188.  
  189. CREATE PROCEDURE AddPatient
  190.     @FirstName VARCHAR(50),
  191.     @LastName VARCHAR(50),
  192.     @DateOfBirth DATE,
  193.     @Gender VARCHAR(10),
  194.     @ContactNumber VARCHAR(15),
  195.     @Email VARCHAR(100),
  196.     @Address VARCHAR(200),
  197.     @BloodType VARCHAR(5),
  198.     @EmergencyContactName VARCHAR(100),
  199.     @EmergencyContactNumber VARCHAR(15)
  200. AS
  201. BEGIN
  202.     INSERT INTO Patient (FirstName, LastName, DateOfBirth, Gender, ContactNumber, Email, Address, BloodType, EmergencyContactName, EmergencyContactNumber)
  203.     VALUES (@FirstName, @LastName, @DateOfBirth, @Gender, @ContactNumber, @Email, @Address, @BloodType, @EmergencyContactName, @EmergencyContactNumber);
  204. END;
  205.  
  206.  
  207. CREATE PROCEDURE UpdatePatient
  208.     @Patient_ID INT,
  209.     @FirstName VARCHAR(50),
  210.     @LastName VARCHAR(50),
  211.     @DateOfBirth DATE,
  212.     @Gender VARCHAR(10),
  213.     @ContactNumber VARCHAR(15),
  214.     @Email VARCHAR(100),
  215.     @Address VARCHAR(200),
  216.     @BloodType VARCHAR(5),
  217.     @EmergencyContactName VARCHAR(100),
  218.     @EmergencyContactNumber VARCHAR(15)
  219. AS
  220. BEGIN
  221.     UPDATE Patient
  222.     SET FirstName = @FirstName,
  223.         LastName = @LastName,
  224.         DateOfBirth = @DateOfBirth,
  225.         Gender = @Gender,
  226.         ContactNumber = @ContactNumber,
  227.         Email = @Email,
  228.         Address = @Address,
  229.         BloodType = @BloodType,
  230.         EmergencyContactName = @EmergencyContactName,
  231.         EmergencyContactNumber = @EmergencyContactNumber,
  232.         UpdatedDate = GETDATE()
  233.     WHERE Patient_ID = @Patient_ID;
  234. END;
  235.  
  236.  
  237.  
  238. CREATE PROCEDURE DeletePatient
  239.     @Patient_ID INT
  240. AS
  241. BEGIN
  242.     DELETE FROM Patient WHERE Patient_ID = @Patient_ID;
  243. END;
  244.  
  245.  
  246.  
  247.  
  248. CREATE TRIGGER trg_UpdatePatient
  249. ON Patient
  250. AFTER UPDATE
  251. AS
  252. BEGIN
  253.     UPDATE Patient
  254.     SET UpdatedDate = GETDATE()
  255.     WHERE Patient_ID IN (SELECT DISTINCT Patient_ID FROM Inserted);
  256. END;
  257.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement