Add ABDM and left-menu permission controls with route filters

This commit is contained in:
DevSoftTech Server 2026-04-07 04:33:50 +05:30
parent 5bae9088f3
commit 1987b4856b
3 changed files with 234 additions and 125 deletions

View File

@ -118,6 +118,12 @@ class AuthGroups extends ShieldAuthGroups
'billing.ipd.admission.edit' => 'Can edit IPD admission details (date, mode, department, refer, doctors, contact, clinical notes)',
'billing.ipd.bill.print' => 'Can print IPD bill variants',
'billing.ipd.discharge.edit' => 'Can edit IPD discharge process details (discount, extra charges, status, date, time)',
'settings.bed_status.view' => 'Can view bed status and bed management screens',
'settings.charges.access' => 'Can access charges settings',
'reports.access' => 'Can access reports section',
'reports.collection.view' => 'Can view collection reports',
'reports.insurance_credit.view' => 'Can view insurance credit reports',
'reports.nabh_audit.view' => 'Can view NABH audit report',
'finance.access' => 'Can access finance module',
'finance.vendor.manage' => 'Can manage finance vendors',
'finance.po.manage' => 'Can manage purchase orders',
@ -156,6 +162,9 @@ class AuthGroups extends ShieldAuthGroups
'hospital_stock.issue' => 'Can issue stock against approved indents',
'hospital_stock.purchase.manage' => 'Can create/receive purchase orders',
'hospital_stock.report.view' => 'Can view stock reports and alerts',
'abdm.access' => 'Can access ABDM module',
'abdm.taskboard.access' => 'Can access ABDM task board',
'abdm.gateway.use' => 'Can run ABDM gateway actions from UI',
];
/**
@ -173,12 +182,19 @@ class AuthGroups extends ShieldAuthGroups
'beta.*',
'billing.*',
'opd.doctor-panel.access',
'settings.bed_status.view',
'settings.charges.access',
'reports.access',
'reports.collection.view',
'reports.insurance_credit.view',
'reports.nabh_audit.view',
'finance.*',
'diagnosis.*',
'doctor_work.*',
'pharmacy.*',
'template.*',
'hospital_stock.*',
'abdm.*',
],
'admin' => [
'admin.access',
@ -188,12 +204,19 @@ class AuthGroups extends ShieldAuthGroups
'beta.access',
'billing.*',
'opd.doctor-panel.access',
'settings.bed_status.view',
'settings.charges.access',
'reports.access',
'reports.collection.view',
'reports.insurance_credit.view',
'reports.nabh_audit.view',
'finance.*',
'diagnosis.*',
'doctor_work.*',
'pharmacy.*',
'template.*',
'hospital_stock.*',
'abdm.*',
],
'developer' => [
'admin.access',
@ -203,12 +226,19 @@ class AuthGroups extends ShieldAuthGroups
'beta.access',
'billing.*',
'opd.doctor-panel.access',
'settings.bed_status.view',
'settings.charges.access',
'reports.access',
'reports.collection.view',
'reports.insurance_credit.view',
'reports.nabh_audit.view',
'finance.*',
'diagnosis.*',
'doctor_work.*',
'pharmacy.*',
'template.*',
'hospital_stock.*',
'abdm.*',
],
'stock_manager' => [
'hospital_stock.access',

View File

@ -509,20 +509,21 @@ $routes->match(['get', 'post'], 'Opd_prescription/create_opd_queue/(:num)', 'Opd
$routes->get('Opd_prescription/opd_prescription_print/(:num)/(:num)', 'Opd_prescription::opd_prescription_print/$1/$2');
$routes->get('Opd_prescription/opd_prescription_print/(:num)/(:num)/(:num)', 'Opd_prescription::opd_prescription_print/$1/$2/$3');
$routes->post('Opd_prescription/opd_prescription_save', 'Opd_prescription::opd_prescription_save');
$routes->post('AbdmGateway/abha_validate', 'AbdmGateway::abhaValidate');
$routes->post('AbdmGateway/scan_share_lookup', 'AbdmGateway::scanShareLookup');
$routes->post('AbdmGateway/consent_request', 'AbdmGateway::consentRequest');
$abdmPermFilter = 'permission:abdm.access,abdm.taskboard.access,abdm.gateway.use';
$routes->post('AbdmGateway/abha_validate', 'AbdmGateway::abhaValidate', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/scan_share_lookup', 'AbdmGateway::scanShareLookup', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/consent_request', 'AbdmGateway::consentRequest', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/consent_callback', 'AbdmGateway::consentCallback');
$routes->post('AbdmGateway/share_prescription_bundle', 'AbdmGateway::sharePrescriptionBundle');
$routes->post('AbdmGateway/share_ipd_discharge_bundle', 'AbdmGateway::shareIpdDischargeBundle');
$routes->post('AbdmGateway/share_diagnosis_report_bundle', 'AbdmGateway::shareDiagnosisReportBundle');
$routes->post('AbdmGateway/nhcx_claim_create', 'AbdmGateway::nhcxClaimCreate');
$routes->post('AbdmGateway/nhcx_claim_status_request', 'AbdmGateway::nhcxClaimStatusRequest');
$routes->post('AbdmGateway/share_prescription_bundle', 'AbdmGateway::sharePrescriptionBundle', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/share_ipd_discharge_bundle', 'AbdmGateway::shareIpdDischargeBundle', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/share_diagnosis_report_bundle', 'AbdmGateway::shareDiagnosisReportBundle', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/nhcx_claim_create', 'AbdmGateway::nhcxClaimCreate', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/nhcx_claim_status_request', 'AbdmGateway::nhcxClaimStatusRequest', ['filter' => $abdmPermFilter]);
$routes->post('AbdmGateway/nhcx_claim_status_callback', 'AbdmGateway::nhcxClaimStatusCallback');
$routes->get('AbdmTaskBoard', 'AbdmTaskBoard::index');
$routes->get('AbdmTaskBoard/list', 'AbdmTaskBoard::list');
$routes->post('AbdmTaskBoard/perform_action', 'AbdmTaskBoard::performAction');
$routes->post('AbdmTaskBoard/mark_status', 'AbdmTaskBoard::markStatus');
$routes->get('AbdmTaskBoard', 'AbdmTaskBoard::index', ['filter' => $abdmPermFilter]);
$routes->get('AbdmTaskBoard/list', 'AbdmTaskBoard::list', ['filter' => $abdmPermFilter]);
$routes->post('AbdmTaskBoard/perform_action', 'AbdmTaskBoard::performAction', ['filter' => $abdmPermFilter]);
$routes->post('AbdmTaskBoard/mark_status', 'AbdmTaskBoard::markStatus', ['filter' => $abdmPermFilter]);
$routes->get('Opd_prescription/fhir_bundle/(:num)', 'Opd_prescription::fhir_bundle/$1');
$routes->get('Opd_prescription/fhir_bundle/(:num)/(:num)', 'Opd_prescription::fhir_bundle/$1/$2');
$routes->get('Opd_prescription/fhir_bundle_history/(:num)', 'Opd_prescription::fhir_bundle_history/$1');
@ -705,13 +706,14 @@ $routes->get('Report/index', 'Report::index');
$routes->get('report', 'Report::index');
$routes->get('report/index', 'Report::index');
$routes->get('Report/collection_report', 'Report::collection_report');
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_app_show/$1/$2/$3');
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_app_show/$1/$2/$3/$4');
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_app_show/$1/$2/$3/$4');
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_app_show/$1/$2/$3/$4/$5');
$routes->get('Report/report_total_payment_total_amount_show/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_total_amount_show/$1/$2/$3');
$routes->get('Report/report_total_payment_total_amount_show/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_total_amount_show/$1/$2/$3/$4');
$reportsCollectionFilter = 'permission:reports.collection.view,reports.access';
$routes->get('Report/collection_report', 'Report::collection_report', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_app_show/$1/$2/$3', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_app_show/$1/$2/$3/$4', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_app_show/$1/$2/$3/$4', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_app_show/(:segment)/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_app_show/$1/$2/$3/$4/$5', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_total_amount_show/(:segment)/(:segment)/(:segment)', 'Report::report_total_payment_total_amount_show/$1/$2/$3', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/report_total_payment_total_amount_show/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_total_amount_show/$1/$2/$3/$4', ['filter' => $reportsCollectionFilter]);
$routes->get('Report/billing_operations_report', 'Report::billing_operations_report');
$routes->get('Report/billing_operations_report_data/(:segment)/(:segment)', 'Report::billing_operations_report_data/$1/$2');
@ -732,27 +734,29 @@ $routes->get('Report/diagnosis_report_data/(:segment)/(:segment)', 'Report::diag
$routes->get('Report/diagnosis_report_data/(:segment)/(:segment)/(:segment)', 'Report::diagnosis_report_data/$1/$2/$3');
$routes->get('Report/diagnosis_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::diagnosis_report_data/$1/$2/$3/$4');
$routes->get('Report/nabh_audit_report', 'Report::nabh_audit_report');
$routes->get('Report/nabh_audit_report_data/(:segment)/(:segment)/(:segment)', 'Report::nabh_audit_report_data/$1/$2/$3');
$routes->get('Report/nabh_audit_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::nabh_audit_report_data/$1/$2/$3/$4');
$reportsNabhFilter = 'permission:reports.nabh_audit.view,reports.access';
$routes->get('Report/nabh_audit_report', 'Report::nabh_audit_report', ['filter' => $reportsNabhFilter]);
$routes->get('Report/nabh_audit_report_data/(:segment)/(:segment)/(:segment)', 'Report::nabh_audit_report_data/$1/$2/$3', ['filter' => $reportsNabhFilter]);
$routes->get('Report/nabh_audit_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::nabh_audit_report_data/$1/$2/$3/$4', ['filter' => $reportsNabhFilter]);
// Insurance Credit Reports
$routes->get('Report/insurance_credit_main', 'Report::insurance_credit_main');
$routes->get('Report/insurance_opd_report', 'Report::insurance_opd_report');
$routes->get('Report/insurance_opd_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_opd_report_data/$1/$2/$3');
$routes->get('Report/insurance_opd_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_opd_report_data/$1/$2/$3/$4');
$routes->get('Report/insurance_ipd_report', 'Report::insurance_ipd_report');
$routes->get('Report/insurance_ipd_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_ipd_report_data/$1/$2/$3');
$routes->get('Report/insurance_ipd_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_ipd_report_data/$1/$2/$3/$4');
$routes->get('Report/insurance_combined_report', 'Report::insurance_combined_report');
$routes->get('Report/insurance_combined_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_combined_report_data/$1/$2/$3');
$routes->get('Report/insurance_combined_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_combined_report_data/$1/$2/$3/$4');
$routes->get('Report/ayushman_unmapped_report', 'Report::ayushman_unmapped_report');
$routes->get('Report/ayushman_unmapped_report_data/(:segment)', 'Report::ayushman_unmapped_report_data/$1');
$routes->get('Report/ayushman_unmapped_report_data/(:segment)/(:num)', 'Report::ayushman_unmapped_report_data/$1/$2');
$routes->get('Report/ayushman_case_dashboard', 'Report::ayushman_case_dashboard');
$routes->get('Report/ayushman_case_dashboard_data/(:segment)/(:segment)', 'Report::ayushman_case_dashboard_data/$1/$2');
$routes->get('Report/ayushman_case_dashboard_data/(:segment)/(:segment)/(:num)', 'Report::ayushman_case_dashboard_data/$1/$2/$3');
$reportsInsuranceFilter = 'permission:reports.insurance_credit.view,reports.access';
$routes->get('Report/insurance_credit_main', 'Report::insurance_credit_main', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_opd_report', 'Report::insurance_opd_report', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_opd_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_opd_report_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_opd_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_opd_report_data/$1/$2/$3/$4', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_ipd_report', 'Report::insurance_ipd_report', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_ipd_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_ipd_report_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_ipd_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_ipd_report_data/$1/$2/$3/$4', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_combined_report', 'Report::insurance_combined_report', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_combined_report_data/(:segment)/(:segment)/(:segment)', 'Report::insurance_combined_report_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/insurance_combined_report_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::insurance_combined_report_data/$1/$2/$3/$4', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_unmapped_report', 'Report::ayushman_unmapped_report', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_unmapped_report_data/(:segment)', 'Report::ayushman_unmapped_report_data/$1', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_unmapped_report_data/(:segment)/(:num)', 'Report::ayushman_unmapped_report_data/$1/$2', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_case_dashboard', 'Report::ayushman_case_dashboard', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_case_dashboard_data/(:segment)/(:segment)', 'Report::ayushman_case_dashboard_data/$1/$2', ['filter' => $reportsInsuranceFilter]);
$routes->get('Report/ayushman_case_dashboard_data/(:segment)/(:segment)/(:num)', 'Report::ayushman_case_dashboard_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]);
// Legacy Report4 compatibility for Insurance Case reports
$routes->get('Report4/echs_ipd_list_main', 'Report::echs_ipd_list_main');
@ -896,7 +900,10 @@ $routes->get('OcasePathLap/invoice_print/(:num)', 'OcasePathLap::invoice_print/$
$routes->get('OcasePathLap/addPathTest/(:num)/(:num)', 'Billing\\CaseMaster::addPathTest/$1');
$routes->group('setting', static function($routes) {
$routes->get('admin', 'Setting\\Admin::index');
$settingsAdminFilter = 'permission:admin.access,admin.settings';
$settingsBedFilter = 'permission:settings.bed_status.view,admin.settings,admin.access';
$settingsChargesFilter = 'permission:settings.charges.access,admin.settings,admin.access';
$routes->get('admin', 'Setting\\Admin::index', ['filter' => $settingsAdminFilter]);
$routes->get('admin/user-management', 'Setting\\UserManagement::index');
$routes->get('admin/user-management/new', 'Setting\\UserManagement::create');
$routes->post('admin/user-management/new', 'Setting\\UserManagement::store');
@ -965,26 +972,26 @@ $routes->group('setting', static function($routes) {
$routes->post('admin/reffer/types/create', 'Setting\\Reffer::storeType');
$routes->post('admin/reffer/types/update', 'Setting\\Reffer::updateType');
$routes->post('admin/reffer/types/delete', 'Setting\\Reffer::deleteType');
$routes->get('admin/bed-management', 'Setting\\BedManagement::index');
$routes->get('admin/departments', 'Setting\\BedManagement::departments');
$routes->post('admin/departments/save', 'Setting\\BedManagement::saveDepartment');
$routes->post('admin/departments/delete', 'Setting\\BedManagement::deleteDepartment');
$routes->get('admin/wards', 'Setting\\BedManagement::wards');
$routes->get('admin/bed-status', 'Setting\\BedManagement::bedStatus');
$routes->post('admin/wards/save', 'Setting\\BedManagement::saveWard');
$routes->post('admin/wards/delete', 'Setting\\BedManagement::deleteWard');
$routes->get('admin/bed-categories', 'Setting\\BedManagement::categories');
$routes->post('admin/bed-categories/save', 'Setting\\BedManagement::saveCategory');
$routes->post('admin/bed-categories/delete', 'Setting\\BedManagement::deleteCategory');
$routes->get('admin/beds', 'Setting\\BedManagement::beds');
$routes->post('admin/beds/save', 'Setting\\BedManagement::saveBed');
$routes->post('admin/beds/delete', 'Setting\\BedManagement::deleteBed');
$routes->get('admin/bed-maintenance', 'Setting\\BedManagement::maintenance');
$routes->post('admin/bed-maintenance/save', 'Setting\\BedManagement::saveMaintenance');
$routes->post('admin/bed-maintenance/delete', 'Setting\\BedManagement::deleteMaintenance');
$routes->get('admin/bed-assignments', 'Setting\\BedManagement::assignmentHistory');
$routes->post('admin/bed-assignments/save', 'Setting\\BedManagement::saveAssignment');
$routes->post('admin/bed-assignments/delete', 'Setting\\BedManagement::deleteAssignment');
$routes->get('admin/bed-management', 'Setting\\BedManagement::index', ['filter' => $settingsBedFilter]);
$routes->get('admin/departments', 'Setting\\BedManagement::departments', ['filter' => $settingsBedFilter]);
$routes->post('admin/departments/save', 'Setting\\BedManagement::saveDepartment', ['filter' => $settingsBedFilter]);
$routes->post('admin/departments/delete', 'Setting\\BedManagement::deleteDepartment', ['filter' => $settingsBedFilter]);
$routes->get('admin/wards', 'Setting\\BedManagement::wards', ['filter' => $settingsBedFilter]);
$routes->get('admin/bed-status', 'Setting\\BedManagement::bedStatus', ['filter' => $settingsBedFilter]);
$routes->post('admin/wards/save', 'Setting\\BedManagement::saveWard', ['filter' => $settingsBedFilter]);
$routes->post('admin/wards/delete', 'Setting\\BedManagement::deleteWard', ['filter' => $settingsBedFilter]);
$routes->get('admin/bed-categories', 'Setting\\BedManagement::categories', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-categories/save', 'Setting\\BedManagement::saveCategory', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-categories/delete', 'Setting\\BedManagement::deleteCategory', ['filter' => $settingsBedFilter]);
$routes->get('admin/beds', 'Setting\\BedManagement::beds', ['filter' => $settingsBedFilter]);
$routes->post('admin/beds/save', 'Setting\\BedManagement::saveBed', ['filter' => $settingsBedFilter]);
$routes->post('admin/beds/delete', 'Setting\\BedManagement::deleteBed', ['filter' => $settingsBedFilter]);
$routes->get('admin/bed-maintenance', 'Setting\\BedManagement::maintenance', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-maintenance/save', 'Setting\\BedManagement::saveMaintenance', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-maintenance/delete', 'Setting\\BedManagement::deleteMaintenance', ['filter' => $settingsBedFilter]);
$routes->get('admin/bed-assignments', 'Setting\\BedManagement::assignmentHistory', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-assignments/save', 'Setting\\BedManagement::saveAssignment', ['filter' => $settingsBedFilter]);
$routes->post('admin/bed-assignments/delete', 'Setting\\BedManagement::deleteAssignment', ['filter' => $settingsBedFilter]);
$stockPermFilter = 'permission:hospital_stock.access,hospital_stock.master.manage,hospital_stock.indent.create,hospital_stock.indent.approve,hospital_stock.issue,hospital_stock.purchase.manage,hospital_stock.report.view';
$routes->get('admin/hospital-stock', 'Setting\\HospitalStock::index', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/dashboard', 'Setting\\HospitalStock::dashboard', ['filter' => $stockPermFilter]);
@ -1010,7 +1017,7 @@ $routes->group('setting', static function($routes) {
$routes->get('admin/hospital-stock/report/monthly-issue', 'Setting\\HospitalStock::reportMonthlyIssue', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/report/near-expiry', 'Setting\\HospitalStock::reportNearExpiry', ['filter' => $stockPermFilter]);
$routes->get('template', 'Setting\\Template::index');
$routes->get('charges', 'Setting\\Charges::index');
$routes->get('charges', 'Setting\\Charges::index', ['filter' => $settingsChargesFilter]);
});
$routes->group('item', static function($routes) {

View File

@ -115,6 +115,64 @@ if ($user && method_exists($user, 'can')) {
if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
$canDiagnosis = $user->inGroup('superadmin', 'admin', 'developer');
}
$canAbdm = false;
if ($user && method_exists($user, 'can')) {
$canAbdm = $user->can('abdm.access')
|| $user->can('abdm.taskboard.access')
|| $user->can('abdm.gateway.use')
|| $user->can('abdm.*');
}
if (! $canAbdm && $user && method_exists($user, 'inGroup')) {
$canAbdm = $user->inGroup('superadmin', 'admin', 'developer');
}
$canBedStatus = false;
if ($user && method_exists($user, 'can')) {
$canBedStatus = $user->can('settings.bed_status.view')
|| $user->can('admin.settings')
|| $user->can('admin.access');
}
if (! $canBedStatus && $user && method_exists($user, 'inGroup')) {
$canBedStatus = $user->inGroup('superadmin', 'admin', 'developer');
}
$canReports = false;
if ($user && method_exists($user, 'can')) {
$canReports = $user->can('reports.access')
|| $user->can('reports.collection.view')
|| $user->can('reports.insurance_credit.view')
|| $user->can('reports.nabh_audit.view')
|| $user->can('diagnosis.report.view')
|| $user->can('diagnosis.access');
}
if (! $canReports && $user && method_exists($user, 'inGroup')) {
$canReports = $user->inGroup('superadmin', 'admin', 'developer');
}
$canAdminPanel = false;
if ($user && method_exists($user, 'can')) {
$canAdminPanel = $user->can('admin.access')
|| $user->can('admin.settings');
}
if (! $canAdminPanel && $user && method_exists($user, 'inGroup')) {
$canAdminPanel = $user->inGroup('superadmin', 'admin', 'developer');
}
$canChargesSettings = false;
if ($user && method_exists($user, 'can')) {
$canChargesSettings = $user->can('settings.charges.access')
|| $user->can('admin.settings')
|| $user->can('admin.access');
}
if (! $canChargesSettings && $user && method_exists($user, 'inGroup')) {
$canChargesSettings = $user->inGroup('superadmin', 'admin', 'developer');
}
?>
<ul class="sidebar-nav" id="sidebar-nav">
<li class="nav-item">
@ -123,12 +181,14 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
<span>Dashboard</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin/bed-status') ?>','Bed Status');">
<i class="bi bi-geo-alt"></i>
<span>Bed Status</span>
</a>
</li>
<?php if ($canBedStatus) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin/bed-status') ?>','Bed Status');">
<i class="bi bi-geo-alt"></i>
<span>Bed Status</span>
</a>
</li>
<?php } ?>
<?php if ($canBilling) { ?>
<li class="nav-heading">Billing</li>
@ -226,13 +286,15 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
</a>
</li>
<?php } ?>
<li class="nav-heading">In-Patient & Nursing Care</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('/ipd/patient') ?>','IPD Patient List')">
<i class="bi bi-person-vcard"></i>
<span>IPD Patient List</span>
</a>
</li>
<?php if ($canIpdBilling) { ?>
<li class="nav-heading">In-Patient & Nursing Care</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('/ipd/patient') ?>','IPD Patient List')">
<i class="bi bi-person-vcard"></i>
<span>IPD Patient List</span>
</a>
</li>
<?php } ?>
<?php if ($canDoctorWork) { ?>
<li class="nav-heading">Doctor's Work</li>
@ -305,42 +367,46 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
</li>
<?php } ?>
<li class="nav-heading">ABDM</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('AbdmTaskBoard') ?>','ABDM Task Board')">
<i class="bi bi-shield-check"></i>
<span>ABDM Task Board</span>
</a>
</li>
<li class="nav-heading">Reports</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/collection_report') ?>','Collection Report')">
<i class="bi bi-graph-up"></i>
<span>Collection Report</span>
</a>
</li>
<?php if ($canDiagnosis) { ?>
<?php if ($canAbdm) { ?>
<li class="nav-heading">ABDM</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/diagnosis_report') ?>','Diagnosis Report')">
<i class="bi bi-activity"></i>
<span>Diagnosis Report</span>
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('AbdmTaskBoard') ?>','ABDM Task Board')">
<i class="bi bi-shield-check"></i>
<span>ABDM Task Board</span>
</a>
</li>
<?php } ?>
<?php if ($canReports) { ?>
<li class="nav-heading">Reports</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/collection_report') ?>','Collection Report')">
<i class="bi bi-graph-up"></i>
<span>Collection Report</span>
</a>
</li>
<?php if ($canDiagnosis) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/diagnosis_report') ?>','Diagnosis Report')">
<i class="bi bi-activity"></i>
<span>Diagnosis Report</span>
</a>
</li>
<?php } ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/insurance_credit_main') ?>','Insurance Credit')">
<i class="bi bi-file-medical"></i>
<span>Insurance Credit </span>
</a>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/nabh_audit_report') ?>','NABH Audit Report')">
<i class="bi bi-clipboard2-check"></i>
<span>NABH Audit Report</span>
</a>
</li>
<?php } ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/insurance_credit_main') ?>','Insurance Credit')">
<i class="bi bi-file-medical"></i>
<span>Insurance Credit </span>
</a>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Report/nabh_audit_report') ?>','NABH Audit Report')">
<i class="bi bi-clipboard2-check"></i>
<span>NABH Audit Report</span>
</a>
</li>
<?php if ($canDiagnosis) { ?>
@ -388,26 +454,32 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
</a>
</li>
<?php } ?>
<li class="nav-heading">Admin & Settings</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin') ?>','Admin Panel')">
<i class="bi bi-gear"></i>
<span>Admin</span>
</a>
</li>
<?php if ($canTemplate) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/template') ?>','Template')">
<i class="bi bi-palette"></i>
<span>Template</span>
</a>
</li>
<?php if ($canAdminPanel || $canTemplate || $canChargesSettings) { ?>
<li class="nav-heading">Admin & Settings</li>
<?php if ($canAdminPanel) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin') ?>','Admin Panel')">
<i class="bi bi-gear"></i>
<span>Admin</span>
</a>
</li>
<?php } ?>
<?php if ($canTemplate) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/template') ?>','Template')">
<i class="bi bi-palette"></i>
<span>Template</span>
</a>
</li>
<?php } ?>
<?php if ($canChargesSettings) { ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/charges') ?>','Charges')">
<i class="bi bi-tags"></i>
<span>Charges</span>
</a>
</li>
<?php } ?>
<?php } ?>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/charges') ?>','Charges')">
<i class="bi bi-tags"></i>
<span>Charges</span>
</a>
</li>
</ul>