38960-vm/init_db.php
2026-03-04 04:25:27 +00:00

162 lines
6.7 KiB
PHP

<?php
require 'db/config.php';
try {
$db = db();
// Create tables
$sql = "
CREATE TABLE IF NOT EXISTS departments (
id INT AUTO_INCREMENT PRIMARY KEY,
name_en VARCHAR(255) NOT NULL,
name_ar VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS doctors (
id INT AUTO_INCREMENT PRIMARY KEY,
name_en VARCHAR(255) NOT NULL,
name_ar VARCHAR(255) NOT NULL,
specialization_en VARCHAR(255),
specialization_ar VARCHAR(255),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS insurance_companies (
id INT AUTO_INCREMENT PRIMARY KEY,
name_en VARCHAR(255) NOT NULL,
name_ar VARCHAR(255) NOT NULL,
email VARCHAR(255),
phone VARCHAR(50),
contact_info TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS patients (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
phone VARCHAR(50),
dob DATE,
gender VARCHAR(10),
blood_group VARCHAR(5),
address TEXT,
insurance_company_id INT NULL,
policy_number VARCHAR(100) NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (insurance_company_id) REFERENCES insurance_companies(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS appointments (
id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT,
doctor_id INT,
appointment_date DATETIME,
status ENUM('Scheduled', 'Completed', 'Cancelled') DEFAULT 'Scheduled',
reason TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (patient_id) REFERENCES patients(id) ON DELETE CASCADE,
FOREIGN KEY (doctor_id) REFERENCES doctors(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS visits (
id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT,
doctor_id INT,
appointment_id INT NULL,
visit_date DATETIME DEFAULT CURRENT_TIMESTAMP,
weight VARCHAR(50),
blood_pressure VARCHAR(50),
heart_rate VARCHAR(50),
temperature VARCHAR(50),
symptoms TEXT,
diagnosis TEXT,
treatment_plan TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (patient_id) REFERENCES patients(id) ON DELETE CASCADE,
FOREIGN KEY (doctor_id) REFERENCES doctors(id) ON DELETE CASCADE,
FOREIGN KEY (appointment_id) REFERENCES appointments(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS provisional_reports (
id INT AUTO_INCREMENT PRIMARY KEY,
visit_id INT,
report_type VARCHAR(255),
findings TEXT,
recommendations TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (visit_id) REFERENCES visits(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS bills (
id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT,
visit_id INT NULL,
total_amount DECIMAL(10, 2) DEFAULT 0.00,
insurance_covered DECIMAL(10, 2) DEFAULT 0.00,
patient_payable DECIMAL(10, 2) DEFAULT 0.00,
status ENUM('Pending', 'Paid') DEFAULT 'Pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (patient_id) REFERENCES patients(id) ON DELETE CASCADE,
FOREIGN KEY (visit_id) REFERENCES visits(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS bill_items (
id INT AUTO_INCREMENT PRIMARY KEY,
bill_id INT,
description VARCHAR(255),
amount DECIMAL(10, 2),
FOREIGN KEY (bill_id) REFERENCES bills(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
";
$db->exec($sql);
// Migration for existing tables
try {
$db->exec("ALTER TABLE insurance_companies ADD COLUMN IF NOT EXISTS email VARCHAR(255)");
$db->exec("ALTER TABLE insurance_companies ADD COLUMN IF NOT EXISTS phone VARCHAR(50)");
} catch (Exception $e) {}
try {
$db->exec("ALTER TABLE patients ADD COLUMN IF NOT EXISTS insurance_company_id INT NULL");
$db->exec("ALTER TABLE patients ADD COLUMN IF NOT EXISTS policy_number VARCHAR(100) NULL");
$db->exec("ALTER TABLE patients ADD CONSTRAINT fk_patient_insurance FOREIGN KEY (insurance_company_id) REFERENCES insurance_companies(id) ON DELETE SET NULL");
} catch (Exception $e) {}
try {
$db->exec("ALTER TABLE bills ADD COLUMN IF NOT EXISTS insurance_covered DECIMAL(10, 2) DEFAULT 0.00");
$db->exec("ALTER TABLE bills ADD COLUMN IF NOT EXISTS patient_payable DECIMAL(10, 2) DEFAULT 0.00");
} catch (Exception $e) {}
// Seed departments
$stmt = $db->query("SELECT COUNT(*) FROM departments");
if ($stmt->fetchColumn() == 0) {
$db->exec("INSERT INTO departments (id, name_en, name_ar) VALUES
(1, 'Cardiology', 'قسم القلب'),
(2, 'Pediatrics', 'طب الأطفال'),
(3, 'Emergency', 'الطوارئ'),
(4, 'Neurology', 'الأعصاب')");
}
// Seed doctors
$stmt = $db->query("SELECT COUNT(*) FROM doctors");
if ($stmt->fetchColumn() == 0) {
$db->exec("INSERT INTO doctors (id, name_en, name_ar, specialization_en, specialization_ar, department_id) VALUES
(1, 'Dr. Ahmed Ali', 'د. أحمد علي', 'Cardiologist', 'طبيب قلب', 1),
(2, 'Dr. Sarah Smith', 'د. سارة سميث', 'Pediatrician', 'طبيب أطفال', 2),
(3, 'Dr. John Doe', 'د. جون دو', 'Neurologist', 'طبيب أعصاب', 4)");
}
// Seed insurance companies
$stmt = $db->query("SELECT COUNT(*) FROM insurance_companies");
if ($stmt->fetchColumn() == 0) {
$db->exec("INSERT INTO insurance_companies (name_en, name_ar, contact_info) VALUES
('Bupa Arabia', 'بوبا العربية', '920000456'),
('Tawuniya', 'التعاونية', '920019990'),
('MedGulf', 'ميدغلف', '8004414444')");
}
echo "Database setup completed successfully.";
} catch (PDOException $e) {
die("Database setup failed: " . $e->getMessage());
}