Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
-- =============================================
-- Hospital Management System
-- Table Creation Script
-- =============================================

-- 1. DEPARTMENTS
CREATE TABLE DEPARTMENTS (
DEPARTMENT_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
DEPARTMENT_NAME VARCHAR2(100) NOT NULL,
FLOOR_NO NUMBER,
STATUS VARCHAR2(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive'))
);

-- 2. DOCTOR_SPECIALTIES
CREATE TABLE DOCTOR_SPECIALTIES (
SPECIALTY_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
SPECIALTY_NAME VARCHAR2(100) NOT NULL,
STATUS VARCHAR2(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive'))
);

-- 3. MEDICINE_CATEGORIES
CREATE TABLE MEDICINE_CATEGORIES (
CATEGORY_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
CATEGORY_NAME VARCHAR2(100) NOT NULL,
STATUS VARCHAR2(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive'))
);

-- 4. APPOINTMENT_STATUSES
CREATE TABLE APPOINTMENT_STATUSES (
STATUS_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
STATUS_NAME VARCHAR2(50) NOT NULL
);

-- 5. PATIENTS
CREATE TABLE PATIENTS (
PATIENT_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
CIVIL_ID VARCHAR2(20) NOT NULL UNIQUE,
FULL_NAME VARCHAR2(200) NOT NULL,
GENDER VARCHAR2(10) CHECK (GENDER IN ('Male', 'Female')),
DATE_OF_BIRTH DATE,
MOBILE_NO VARCHAR2(20) NOT NULL,
EMAIL VARCHAR2(100),
BLOOD_GROUP VARCHAR2(5) CHECK (BLOOD_GROUP IN ('A+','A-','B+','B-','O+','O-','AB+','AB-')),
ADDRESS VARCHAR2(500),
EMERGENCY_CONTACT_NAME VARCHAR2(200),
EMERGENCY_CONTACT_NO VARCHAR2(20),
CREATED_AT DATE DEFAULT SYSDATE
);

-- 6. DOCTORS
CREATE TABLE DOCTORS (
DOCTOR_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
FULL_NAME VARCHAR2(200) NOT NULL,
DEPARTMENT_ID NUMBER NOT NULL REFERENCES DEPARTMENTS(DEPARTMENT_ID),
SPECIALTY_ID NUMBER NOT NULL REFERENCES DOCTOR_SPECIALTIES(SPECIALTY_ID),
MOBILE_NO VARCHAR2(20),
EMAIL VARCHAR2(100),
CONSULTATION_FEE NUMBER(10,3),
STATUS VARCHAR2(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive'))
);

-- 7. MEDICINES
CREATE TABLE MEDICINES (
MEDICINE_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
MEDICINE_NAME VARCHAR2(200) NOT NULL,
CATEGORY_ID NUMBER REFERENCES MEDICINE_CATEGORIES(CATEGORY_ID),
UNIT VARCHAR2(50),
CURRENT_STOCK NUMBER DEFAULT 0,
REORDER_LEVEL NUMBER DEFAULT 0,
STATUS VARCHAR2(20) DEFAULT 'Active' CHECK (STATUS IN ('Active', 'Inactive'))
);

-- 8. ROOMS
CREATE TABLE ROOMS (
ROOM_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
ROOM_NO VARCHAR2(20) NOT NULL UNIQUE,
ROOM_TYPE VARCHAR2(50) CHECK (ROOM_TYPE IN ('General', 'Private', 'ICU')),
DAILY_RATE NUMBER(10,3),
STATUS VARCHAR2(20) DEFAULT 'Available' CHECK (STATUS IN ('Available', 'Occupied', 'Maintenance'))
);

-- 9. APPOINTMENTS
CREATE TABLE APPOINTMENTS (
APPOINTMENT_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
PATIENT_ID NUMBER NOT NULL REFERENCES PATIENTS(PATIENT_ID),
DOCTOR_ID NUMBER NOT NULL REFERENCES DOCTORS(DOCTOR_ID),
APPOINTMENT_DATE DATE NOT NULL,
APPOINTMENT_TIME VARCHAR2(10),
STATUS_ID NUMBER REFERENCES APPOINTMENT_STATUSES(STATUS_ID),
REASON_FOR_VISIT VARCHAR2(500),
CREATED_AT DATE DEFAULT SYSDATE
);

-- 10. PATIENT_VISITS
CREATE TABLE PATIENT_VISITS (
VISIT_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
APPOINTMENT_ID NUMBER NOT NULL REFERENCES APPOINTMENTS(APPOINTMENT_ID),
PATIENT_ID NUMBER NOT NULL REFERENCES PATIENTS(PATIENT_ID),
DOCTOR_ID NUMBER NOT NULL REFERENCES DOCTORS(DOCTOR_ID),
VISIT_DATE DATE DEFAULT SYSDATE,
SYMPTOMS VARCHAR2(1000),
DIAGNOSIS VARCHAR2(1000),
NOTES VARCHAR2(2000),
FOLLOW_UP_DATE DATE
);

-- 11. PRESCRIPTIONS
CREATE TABLE PRESCRIPTIONS (
PRESCRIPTION_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
VISIT_ID NUMBER NOT NULL REFERENCES PATIENT_VISITS(VISIT_ID),
PATIENT_ID NUMBER NOT NULL REFERENCES PATIENTS(PATIENT_ID),
DOCTOR_ID NUMBER NOT NULL REFERENCES DOCTORS(DOCTOR_ID),
PRESCRIPTION_DATE DATE DEFAULT SYSDATE,
NOTES VARCHAR2(2000)
);

-- 12. PRESCRIPTION_ITEMS
CREATE TABLE PRESCRIPTION_ITEMS (
PRESCRIPTION_ITEM_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
PRESCRIPTION_ID NUMBER NOT NULL REFERENCES PRESCRIPTIONS(PRESCRIPTION_ID),
MEDICINE_ID NUMBER NOT NULL REFERENCES MEDICINES(MEDICINE_ID),
DOSAGE VARCHAR2(100),
FREQUENCY VARCHAR2(100),
DURATION_DAYS NUMBER,
INSTRUCTIONS VARCHAR2(500)
);

-- 13. ADMISSIONS
CREATE TABLE ADMISSIONS (
ADMISSION_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
PATIENT_ID NUMBER NOT NULL REFERENCES PATIENTS(PATIENT_ID),
DOCTOR_ID NUMBER NOT NULL REFERENCES DOCTORS(DOCTOR_ID),
ROOM_ID NUMBER NOT NULL REFERENCES ROOMS(ROOM_ID),
ADMISSION_DATE DATE NOT NULL,
DISCHARGE_DATE DATE,
ADMISSION_REASON VARCHAR2(500),
STATUS VARCHAR2(20) DEFAULT 'Admitted' CHECK (STATUS IN ('Admitted', 'Discharged'))
);
Loading
Loading