169 lines
8.3 KiB
PHP
169 lines
8.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/queue_bootstrap.php';
|
|
qh_boot();
|
|
qh_admin_handle_request();
|
|
|
|
$clinics = qh_fetch_clinics();
|
|
$doctors = qh_fetch_doctors();
|
|
|
|
qh_page_start('admin', 'Admin configuration', 'Configure clinics, doctors, room numbers, and vitals requirements for the queue workflow.');
|
|
?>
|
|
<div class="container-xxl px-3 px-lg-4">
|
|
<section class="page-header-panel mb-4">
|
|
<div>
|
|
<span class="section-kicker">Admin / الإدارة</span>
|
|
<h1 class="section-title-xl mt-2">Clinic and doctor setup.</h1>
|
|
<p class="section-copy mb-0">This first iteration supports bilingual clinic names, a vitals-required flag, doctor-room assignments, and immediate use by reception.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="row g-4 mb-4">
|
|
<div class="col-xl-5">
|
|
<div class="panel-card h-100">
|
|
<h2 class="section-title mb-3">Add clinic / إضافة عيادة</h2>
|
|
<form method="post" class="vstack gap-3">
|
|
<input type="hidden" name="action" value="add_clinic">
|
|
<div>
|
|
<label class="form-label">Code</label>
|
|
<input class="form-control" type="text" name="code" maxlength="10" placeholder="GEN" required>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Name (English)</label>
|
|
<input class="form-control" type="text" name="name_en" placeholder="General Medicine" required>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Name (Arabic)</label>
|
|
<input class="form-control" type="text" name="name_ar" placeholder="الطب العام" required>
|
|
</div>
|
|
<div class="row g-3">
|
|
<div class="col-sm-6">
|
|
<label class="form-label">Sort order</label>
|
|
<input class="form-control" type="number" name="sort_order" value="50" min="1">
|
|
</div>
|
|
<div class="col-sm-6 d-flex align-items-end">
|
|
<div class="form-check form-switch border rounded p-3 w-100 bg-light-subtle">
|
|
<input class="form-check-input" type="checkbox" role="switch" id="requiresVitalsCreate" name="requires_vitals" checked>
|
|
<label class="form-check-label" for="requiresVitalsCreate">Requires vitals first / يتطلب العلامات الحيوية أولاً</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<button class="btn btn-dark" type="submit">Save clinic</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-7">
|
|
<div class="panel-card h-100">
|
|
<h2 class="section-title mb-3">Add doctor / إضافة طبيب</h2>
|
|
<form method="post" class="row g-3 align-items-end">
|
|
<input type="hidden" name="action" value="add_doctor">
|
|
<div class="col-md-6">
|
|
<label class="form-label">Name (English)</label>
|
|
<input class="form-control" type="text" name="name_en" placeholder="Dr. Sarah Malik" required>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">Name (Arabic)</label>
|
|
<input class="form-control" type="text" name="name_ar" placeholder="د. سارة مالك" required>
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label class="form-label">Clinic</label>
|
|
<select class="form-select" name="clinic_id" required>
|
|
<option value="">Choose clinic</option>
|
|
<?php foreach ($clinics as $clinic): ?>
|
|
<option value="<?= qh_h((string) $clinic['id']) ?>"><?= qh_h($clinic['name_en']) ?> / <?= qh_h($clinic['name_ar']) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label">Room</label>
|
|
<input class="form-control" type="text" name="room_number" placeholder="201" required>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">Order</label>
|
|
<input class="form-control" type="number" name="sort_order" value="50" min="1">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<button class="btn btn-dark w-100" type="submit">Save</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-4">
|
|
<div class="col-xl-5">
|
|
<div class="panel-card h-100">
|
|
<h2 class="section-title mb-3">Clinics / العيادات</h2>
|
|
<div class="vstack gap-3">
|
|
<?php foreach ($clinics as $clinic): ?>
|
|
<form method="post" class="list-row-form">
|
|
<input type="hidden" name="action" value="update_clinic">
|
|
<input type="hidden" name="clinic_id" value="<?= qh_h((string) $clinic['id']) ?>">
|
|
<div>
|
|
<div class="fw-semibold"><?= qh_h($clinic['name_en']) ?></div>
|
|
<div class="small text-secondary" lang="ar" dir="rtl"><?= qh_h($clinic['name_ar']) ?></div>
|
|
<div class="small text-secondary mt-1">Code <?= qh_h($clinic['code']) ?></div>
|
|
</div>
|
|
<div class="row g-2 align-items-center mt-1">
|
|
<div class="col-sm-6">
|
|
<label class="form-label small mb-1">Sort order</label>
|
|
<input class="form-control form-control-sm" type="number" name="sort_order" value="<?= qh_h((string) $clinic['sort_order']) ?>" min="1">
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-check form-switch mt-4">
|
|
<input class="form-check-input" type="checkbox" role="switch" id="clinicSwitch<?= qh_h((string) $clinic['id']) ?>" name="requires_vitals" <?= (int) $clinic['requires_vitals'] === 1 ? 'checked' : '' ?>>
|
|
<label class="form-check-label small" for="clinicSwitch<?= qh_h((string) $clinic['id']) ?>">Vitals required</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<button class="btn btn-sm btn-outline-dark mt-3" type="submit">Update clinic</button>
|
|
</form>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-7">
|
|
<div class="panel-card h-100">
|
|
<h2 class="section-title mb-3">Doctors & rooms / الأطباء والغرف</h2>
|
|
<div class="vstack gap-3">
|
|
<?php foreach ($doctors as $doctor): ?>
|
|
<form method="post" class="list-row-form">
|
|
<input type="hidden" name="action" value="update_doctor">
|
|
<input type="hidden" name="doctor_id" value="<?= qh_h((string) $doctor['id']) ?>">
|
|
<div class="d-flex justify-content-between align-items-start flex-wrap gap-3">
|
|
<div>
|
|
<div class="fw-semibold"><?= qh_h($doctor['name_en']) ?></div>
|
|
<div class="small text-secondary" lang="ar" dir="rtl"><?= qh_h($doctor['name_ar']) ?></div>
|
|
</div>
|
|
<span class="room-badge">Current room <?= qh_h($doctor['room_number']) ?></span>
|
|
</div>
|
|
<div class="row g-3 align-items-end mt-1">
|
|
<div class="col-md-5">
|
|
<label class="form-label small">Clinic</label>
|
|
<select class="form-select form-select-sm" name="clinic_id" required>
|
|
<?php foreach ($clinics as $clinic): ?>
|
|
<option value="<?= qh_h((string) $clinic['id']) ?>" <?= (int) $clinic['id'] === (int) $doctor['clinic_id'] ? 'selected' : '' ?>><?= qh_h($clinic['name_en']) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label small">Room</label>
|
|
<input class="form-control form-control-sm" type="text" name="room_number" value="<?= qh_h($doctor['room_number']) ?>" required>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label small">Order</label>
|
|
<input class="form-control form-control-sm" type="number" name="sort_order" value="<?= qh_h((string) $doctor['sort_order']) ?>" min="1">
|
|
</div>
|
|
<div class="col-md-2 d-grid">
|
|
<button class="btn btn-sm btn-outline-dark" type="submit">Save</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php qh_page_end(); ?>
|