Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions src/main/java/org/example/fromkhadija/sprint12/DDL.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
-- Disable constraints for clean drop/recreate
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

BEGIN
EXECUTE IMMEDIATE 'DROP TABLE prescription_items CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE visits CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE admissions CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE appointments CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE medicines CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE doctors CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE patients CASCADE CONSTRAINTS';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/

-- 1. Patients Table
CREATE TABLE patients (
patient_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
full_name VARCHAR2(150) NOT NULL,
date_of_birth DATE,
gender VARCHAR2(10),
phone_number VARCHAR2(20),
address VARCHAR2(255),
created_at TIMESTAMP DEFAULT SYSTIMESTAMP
);

-- 2. Doctors Table
CREATE TABLE doctors (
doctor_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
doctor_name VARCHAR2(150) NOT NULL,
specialization VARCHAR2(100),
phone_number VARCHAR2(20),
email VARCHAR2(100)
);

-- 3. Medicines Table
CREATE TABLE medicines (
medicine_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
medicine_name VARCHAR2(150) NOT NULL,
category VARCHAR2(100),
unit_price NUMBER(10,2),
stock_qty NUMBER(10)
);

-- 4. Appointments Table
CREATE TABLE appointments (
appointment_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
patient_id NUMBER REFERENCES patients(patient_id),
doctor_id NUMBER REFERENCES doctors(doctor_id),
appointment_date DATE NOT NULL,
status VARCHAR2(30) DEFAULT 'SCHEDULED',
notes VARCHAR2(500)
);

-- 5. Admissions Table (Admission Form / Report)
CREATE TABLE admissions (
admission_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
patient_id NUMBER REFERENCES patients(patient_id),
admission_date DATE DEFAULT SYSDATE,
discharge_date DATE,
room_number VARCHAR2(20),
condition_desc VARCHAR2(500)
);

-- 6. Clinical Visits Table
CREATE TABLE visits (
visit_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
patient_id NUMBER REFERENCES patients(patient_id),
doctor_id NUMBER REFERENCES doctors(doctor_id),
visit_date DATE DEFAULT SYSDATE,
diagnosis CLOB,
prescription CLOB
);

-- 7. Prescription Items Table
CREATE TABLE prescription_items (
item_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
visit_id NUMBER REFERENCES visits(visit_id),
medicine_id NUMBER REFERENCES medicines(medicine_id),
dosage VARCHAR2(100),
quantity NUMBER(5)
);

COMMIT;
33 changes: 33 additions & 0 deletions src/main/java/org/example/fromkhadija/sprint12/DML.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
-- Insert Sample Patients
INSERT INTO patients (full_name, date_of_birth, gender, phone_number, address)
VALUES ('Fatma Al-Lawati', TO_DATE('1992-05-14', 'YYYY-MM-DD'), 'Female', '+96891112233', 'Muscat');

INSERT INTO patients (full_name, date_of_birth, gender, phone_number, address)
VALUES ('Ahmed Al-Balushi', TO_DATE('1985-11-20', 'YYYY-MM-DD'), 'Male', '+96892223344', 'Seeb');

-- Insert Sample Doctors
INSERT INTO doctors (doctor_name, specialization, phone_number, email)
VALUES ('Dr. Salim Al-Harthy', 'General Medicine', '+96893334455', 'salim.harthy@alnoor.med');

INSERT INTO doctors (doctor_name, specialization, phone_number, email)
VALUES ('Dr. Maryam Al-Zedjali', 'Pediatrics', '+96894445566', 'maryam.zedjali@alnoor.med');

-- Insert Sample Medicines
INSERT INTO medicines (medicine_name, category, unit_price, stock_qty)
VALUES ('Paracetamol 500mg', 'Analgesic', 1.50, 500);

INSERT INTO medicines (medicine_name, category, unit_price, stock_qty)
VALUES ('Amoxicillin 250mg', 'Antibiotic', 4.20, 200);

INSERT INTO medicines (medicine_name, category, unit_price, stock_qty)
VALUES ('Ibuprofen 400mg', 'Anti-inflammatory', 2.00, 350);

-- Insert Sample Appointments
INSERT INTO appointments (patient_id, doctor_id, appointment_date, status, notes)
VALUES (1, 1, SYSDATE + 1, 'SCHEDULED', 'Routine general checkup');

-- Insert Sample Admissions
INSERT INTO admissions (patient_id, admission_date, room_number, condition_desc)
VALUES (2, SYSDATE, 'RM-204', 'Under observation for acute fever');

COMMIT;
Loading
Loading