devsofttech_hms_ci4/app/Views/Setting/Admin/index.php
DevSoftTech Server 0628f8f813 feat: ABDM OPD Queue + ABHA Register flow + patient ABHA search fix
ABDM OPD Queue (today):
- New EAtriaBridgeConnector: opdQueueFetch/opdTokenCreate/opdTokenUpdateStatus + patch() helper
- New AbdmOpdQueue controller: index/list/fetchQueue/createToken/updateTokenStatus/processScannedToken
  - fetchQueue syncs gateway tokens into abdm_opd_tokens (local DB) and enriches with HMS patient data
  - processScannedToken auto-finds/creates patient_master record from ABHA scan data, marks token CALLED
- New migration: abdm_opd_tokens table (gateway_token_id, source, status, patient_id, opd_id, processed_at)
- New view: abdm/opd_queue.php - reception screen with auto-refresh 30s, HMS Patient column (green row when OPD registered)
- Sidebar: ABDM OPD Queue nav link added
- Routes: AbdmOpdQueue with abdmPermFilter

ABHA Register tab (earlier this session):
- New Abha controller: initiate/verifyOtp/communication/verifyCommOtp/validateAbha/card + autoCreateOrFindPatient
- New views: abha/card.php, partials/abha_create_panel.php, partials/abha_otp_modal.php
- Patient_V.php: ABHA Register tab with 4-method wizard (ABHA number, QR scan, facility QR, mobile OTP)

Patient ABHA search fix:
- Patient::search() now detects ABHA column (abha_id/abha_no/abha/abha_address) and searches by it

ABDM Bridge infrastructure:
- EAtriaBridgeConnector: new connector for e-atria.in ABDM bridge gateway
- AbdmConnectorFactory/Interface updated
- AbdmGatewaySettings controller + view
- SNOMED/CSNOTK terminology service skeleton
- Finance payout OPD consult views
- Migration: AddAbdmPushFieldsToOpdAndPatient, CreateSnomedCoreTables
- Docs: abdm/ API specs, architecture, gateway guides
2026-05-16 04:21:31 +05:30

131 lines
5.2 KiB
PHP

<section class="content">
<div class="pagetitle">
<h1>Admin Panel</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item">Dashboard</li>
<li class="breadcrumb-item active">Admin</li>
</ol>
</nav>
</div>
<style>
.admin-tiles {
margin-top: 12px;
}
.admin-tile {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
padding: 18px 12px;
border: 1px solid #e3e6ea;
border-radius: 8px;
background: #ffffff;
color: #374151;
text-decoration: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
min-height: 90px;
}
.admin-tile:hover {
border-color: #cfd6de;
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
transform: translateY(-2px);
}
.admin-tile i {
font-size: 22px;
color: #0d6efd;
}
.admin-tile span {
font-weight: 600;
font-size: 13px;
text-align: center;
}
</style>
<div class="row g-3 admin-tiles">
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/doctor') ?>','maindiv','Doctor Master');">
<i class="bi bi-person-badge"></i>
<span>Doctor Master</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/user-management') ?>','maindiv','User Management');">
<i class="bi bi-people"></i>
<span>User Management</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/ai-settings') ?>','maindiv','AI Settings');">
<i class="bi bi-cpu"></i>
<span>AI Settings</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/healthplix-settings') ?>','maindiv','HealthPlix Integration');">
<i class="bi bi-link-45deg"></i>
<span>HealthPlix Integration</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/abdm-gateway') ?>','maindiv','ABDM Gateway Config');">
<i class="bi bi-hdd-network" style="color:#0d6efd"></i>
<span>ABDM Gateway</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/hospital-profile') ?>','maindiv','Hospital Profile');">
<i class="bi bi-building"></i>
<span>Hospital Profile</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/insurance') ?>','maindiv','Insurance Master');">
<i class="bi bi-shield-check"></i>
<span>Insurance Master</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/reffer') ?>','maindiv','Referral Admin');">
<i class="bi bi-share"></i>
<span>Referral Admin</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/bank') ?>','maindiv','Bank & Payment Sources');">
<i class="bi bi-bank"></i>
<span>Bank & Payment</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/medical-bank') ?>','maindiv','Medical Bank & Payment Sources');">
<i class="bi bi-credit-card-2-front"></i>
<span>Medical Bank</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('setting/admin/bed-management') ?>','maindiv','Bed Management');">
<i class="bi bi-hospital"></i>
<span>Bed Management</span>
</a>
</div>
<div class="col-6 col-md-2 col-lg-2">
<a class="admin-tile" href="javascript:load_form_div('<?= base_url('Storestock') ?>','maindiv','Hospital Stock');">
<i class="bi bi-box-seam"></i>
<span>Hospital Stock</span>
</a>
</div>
</div>
<hr/>
<div class="row mt-4">
<div class="col-12" id="maindiv"></div>
</div>
</section>