get('/', 'Home::index'); $routes->get('access-denied', 'Home::accessDenied'); $routes->get('dashboard', 'Home::dashboard'); $routes->get('dashboard/opd', 'Home::opdDashboard'); $routes->get('dashboard/ipd', 'Home::ipdDashboard'); $routes->get('dashboard/diagnosis', 'Home::diagnosisDashboard'); $routes->get('my-profile', 'Home::myProfile'); $routes->post('my-profile/save', 'Home::myProfileSave'); $routes->post('my-profile/save-settings', 'Home::myProfileSaveSettings'); $routes->get('speech-test', 'Home::speechTest'); $routes->post('stt-proxy', 'Home::sttProxy'); $routes->get('stt-proxy/health', 'Home::sttProxyHealth'); // Pharmacy (Medical) - phase 1 $routes->get('Medical', 'Medical::index'); $routes->get('Medical/search_customer', 'Medical::search_customer'); $routes->get('Medical/CounterSaleForm', 'Medical::counter_sale_form'); $routes->post('Medical/CounterSaleCreate', 'Medical::counter_sale_create'); $routes->match(['GET', 'POST'], 'Medical/search', 'Medical::search'); $routes->get('Medical/get_drug', 'Medical::get_drug'); $routes->get('Medical/get_batch/(:num)', 'Medical::get_batch/$1'); $routes->get('Medical/check_invoice/(:num)/(:num)/(:num)', 'Medical::check_invoice/$1/$2/$3'); $routes->get('Medical/Invoice_counter_new/(:num)/(:num)/(:num)', 'Medical::Invoice_counter_new/$1/$2/$3'); $routes->get('Medical/invoice_new/(:num)', 'Medical::invoice_new/$1'); $routes->get('Medical/invoice_edit/(:num)', 'Medical::invoice_edit/$1'); $routes->get('Medical/final_invoice/(:num)', 'Medical::final_invoice/$1'); $routes->get('Medical/open_invoice_edit/(:num)', 'Medical::open_invoice_edit/$1'); $routes->match(['GET', 'POST'], 'Medical/edit_invoice_edit/(:num)', 'Medical::edit_invoice_edit/$1'); $routes->post('Medical/patient_info', 'Medical::patient_info'); $routes->post('Medical/ipd_info', 'Medical::ipd_info'); $routes->post('Medical/org_info', 'Medical::org_info'); $routes->post('Medical/update_uhid', 'Medical::update_uhid'); $routes->post('Medical/update_ipd', 'Medical::update_ipd'); $routes->post('Medical/update_org', 'Medical::update_org'); $routes->post('Medical/update_invdate', 'Medical::update_invdate'); $routes->post('Medical/update_name_phone', 'Medical::update_name_phone'); $routes->post('Medical/update_doctor', 'Medical::update_doctor'); $routes->post('Medical/update_cr_status_ipd', 'Medical::update_cr_status_ipd'); $routes->post('Medical/confirm_payment', 'Medical::confirm_payment'); $routes->post('Medical/update_discount', 'Medical::update_discount'); $routes->post('Medical/add_item', 'Medical::add_item'); $routes->post('Medical/remove_item', 'Medical::remove_item'); $routes->post('Medical/update_item_qty', 'Medical::update_item_qty'); $routes->post('Medical/add_remove_item', 'Medical::add_remove_item'); $routes->post('Medical/go_final', 'Medical::go_final'); $routes->match(['GET', 'POST'], 'Medical/getInvoiceTable', 'Medical::getInvoiceTable'); $routes->get('Medical/invoice_print/(:num)', 'Medical::invoice_print/$1'); $routes->get('Medical/invoice_print/(:num)/(:num)', 'Medical::invoice_print/$1/$2'); $routes->get('Medical/Invoice_Med_Draft', 'Medical::Invoice_Med_Draft'); $routes->get('Medical/list_med_inv/(:num)', 'Medical::list_med_inv/$1'); $routes->get('Medical/list_med_orginv/(:num)', 'Medical::list_med_orginv/$1'); $routes->get('Medical/list_med_orginv/(:num)/(:num)', 'Medical::list_med_orginv/$1/$2'); $routes->post('Medical/lock_ipd/(:num)/(:num)', 'Medical::lock_ipd/$1/$2'); $routes->get('Medical/med_return/(:num)', 'Medical::med_return/$1'); $routes->get('Medical/med_return_new/(:num)', 'Medical::med_return_new/$1'); $routes->get('Medical/med_cash_payment/(:num)', 'Medical::med_cash_payment/$1'); $routes->post('Medical/group_confirm_payment', 'Medical::group_confirm_payment'); $routes->post('Medical/update_group_discount/(:num)', 'Medical::update_group_discount/$1'); $routes->get('Medical/ipd_print/(:num)/(:segment)', 'Medical::ipd_print/$1/$2'); $routes->get('Medical/list_org_ipd', 'Medical::list_org_ipd'); $routes->get('Medical/list_org', 'Medical::list_org'); $routes->get('Medical/main_store', 'Medical::main_store'); $routes->get('Medical/main_store_link/(:segment)', 'Medical::main_store_placeholder/$1'); $routes->get('Medical/SupplierList', 'Medical::supplier_list'); $routes->get('Medical/SupplierListSub', 'Medical::supplier_list_sub'); $routes->get('Medical/SupplierEdit/(:num)', 'Medical::supplier_edit/$1'); $routes->post('Medical/SupplierUpdate', 'Medical::supplier_update'); $routes->get('product_master/company_master_list', 'Medical::company_master_list'); $routes->get('product_master/CompanyListSub', 'Medical::company_list_sub'); $routes->get('product_master/CompanyListData', 'Medical::company_list_data'); $routes->get('product_master/CompanyEdit/(:num)', 'Medical::company_edit/$1'); $routes->post('product_master/CompanyUpdate', 'Medical::company_update'); $routes->get('product_master/formulation_master_list', 'Medical::formulation_master_list'); $routes->get('product_master/FormulationListSub', 'Medical::formulation_list_sub'); $routes->get('product_master/FormulationListData', 'Medical::formulation_list_data'); $routes->get('product_master/FormulationEdit/(:num)', 'Medical::formulation_edit/$1'); $routes->post('product_master/FormulationUpdate', 'Medical::formulation_update'); $routes->get('product_master/short_formulation_master_list', 'Medical::short_formulation_master_list'); $routes->get('product_master/ShortFormulationListSub', 'Medical::short_formulation_list_sub'); $routes->get('product_master/ShortFormulationListData', 'Medical::short_formulation_list_data'); $routes->get('product_master/ShortFormulationEdit/(:num)', 'Medical::short_formulation_edit/$1'); $routes->post('product_master/ShortFormulationUpdate', 'Medical::short_formulation_update'); $routes->post('product_master/SyncDrugMasters', 'Medical::sync_drug_masters'); $routes->post('product_master/RebuildDrugMasters', 'Medical::rebuild_drug_masters'); $routes->get('Product_master/company_master_list', 'Medical::company_master_list'); $routes->get('Product_master/CompanyListSub', 'Medical::company_list_sub'); $routes->get('Product_master/CompanyListData', 'Medical::company_list_data'); $routes->get('Product_master/CompanyEdit/(:num)', 'Medical::company_edit/$1'); $routes->post('Product_master/CompanyUpdate', 'Medical::company_update'); $routes->get('Product_master/formulation_master_list', 'Medical::formulation_master_list'); $routes->get('Product_master/FormulationListSub', 'Medical::formulation_list_sub'); $routes->get('Product_master/FormulationListData', 'Medical::formulation_list_data'); $routes->get('Product_master/FormulationEdit/(:num)', 'Medical::formulation_edit/$1'); $routes->post('Product_master/FormulationUpdate', 'Medical::formulation_update'); $routes->get('Product_master/short_formulation_master_list', 'Medical::short_formulation_master_list'); $routes->get('Product_master/ShortFormulationListSub', 'Medical::short_formulation_list_sub'); $routes->get('Product_master/ShortFormulationListData', 'Medical::short_formulation_list_data'); $routes->get('Product_master/ShortFormulationEdit/(:num)', 'Medical::short_formulation_edit/$1'); $routes->post('Product_master/ShortFormulationUpdate', 'Medical::short_formulation_update'); $routes->post('Product_master/SyncDrugMasters', 'Medical::sync_drug_masters'); $routes->post('Product_master/RebuildDrugMasters', 'Medical::rebuild_drug_masters'); $routes->get('product_master/medicine_category', 'Medical::medicine_category'); $routes->get('product_master/medicine_category_edit/(:num)', 'Medical::medicine_category_edit/$1'); $routes->get('product_master/medicine_category_Sub', 'Medical::medicine_category_sub'); $routes->post('product_master/medicine_category_Update', 'Medical::medicine_category_update'); $routes->get('Product_master/medicine_category', 'Medical::medicine_category'); $routes->get('Product_master/medicine_category_edit/(:num)', 'Medical::medicine_category_edit/$1'); $routes->get('Product_master/medicine_category_Sub', 'Medical::medicine_category_sub'); $routes->post('Product_master/medicine_category_Update', 'Medical::medicine_category_update'); $routes->get('product_master/drug_master_list', 'Medical::drug_master_list'); $routes->post('product_master/Product_search', 'Medical::product_search'); $routes->get('product_master/drug_terminology_autocomplete', 'Medical::drug_terminology_autocomplete'); $routes->get('product_master/drug_terminology_detail', 'Medical::drug_terminology_detail'); $routes->get('product_master/Product_edit/(:num)', 'Medical::product_edit/$1'); $routes->post('product_master/product_master_update/(:num)', 'Medical::product_master_update/$1'); $routes->get('Product_master/drug_master_list', 'Medical::drug_master_list'); $routes->post('Product_master/Product_search', 'Medical::product_search'); $routes->get('Product_master/drug_terminology_autocomplete', 'Medical::drug_terminology_autocomplete'); $routes->get('Product_master/drug_terminology_detail', 'Medical::drug_terminology_detail'); $routes->get('Product_master/Product_edit/(:num)', 'Medical::product_edit/$1'); // Pharmacy Procurement: Purchase Orders (PO) & GRN $routes->get('Medical/purchase_orders', 'MedicalProcurement::po_list'); $routes->get('Medical/po_new', 'MedicalProcurement::po_new'); $routes->post('Medical/po_create', 'MedicalProcurement::po_create'); $routes->get('Medical/po_edit/(:num)', 'MedicalProcurement::po_edit/$1'); $routes->post('Medical/po_status/(:num)', 'MedicalProcurement::po_status/$1'); $routes->get('Medical/po_print/(:num)', 'MedicalProcurement::po_print/$1'); $routes->get('Medical/po_reorder_items/(:num)', 'MedicalProcurement::po_reorder_items/$1'); $routes->get('Medical/grn_list', 'MedicalProcurement::grn_list'); $routes->get('Medical/grn_new', 'MedicalProcurement::grn_new'); $routes->get('Medical/grn_new/(:num)', 'MedicalProcurement::grn_new/$1'); $routes->post('Medical/grn_create', 'MedicalProcurement::grn_create'); $routes->get('Medical/grn_edit/(:num)', 'MedicalProcurement::grn_edit/$1'); $routes->post('Medical/grn_post_inventory/(:num)', 'MedicalProcurement::grn_post_inventory/$1'); $routes->get('Medical/grn_print/(:num)', 'MedicalProcurement::grn_print/$1'); $routes->get('Medical/Purchase', 'Medical::purchase'); $routes->post('Medical/PurchaseInvoice', 'Medical::purchase_invoice'); $routes->get('Medical/PurchaseNew', 'Medical::purchase_new'); $routes->post('Medical/CreatePurchase', 'Medical::create_purchase'); $routes->get('Medical/PurchaseMasterEdit/(:num)', 'Medical::purchase_master_edit/$1'); $routes->post('Medical/UpdatePurchase', 'Medical::update_purchase'); $routes->get('Medical/UpdatePurchaseInvoiceStatus/(:num)/(:num)', 'Medical::update_purchase_invoice_status/$1/$2'); $routes->post('Medical/purchase_invoice_delete/(:num)', 'Medical::purchase_invoice_delete/$1'); $routes->get('Medical/PurchaseInvoiceEdit/(:num)', 'Medical::purchase_invoice_edit/$1'); $routes->get('Medical/purchase_invoice_item_list/(:num)', 'Medical::purchase_invoice_item_list/$1'); $routes->get('Medical/purchase_invoice_item_list_old/(:num)', 'Medical::purchase_invoice_item_list_old/$1'); $routes->post('Medical/purchase_invoice_item_edit/(:num)/(:num)', 'Medical::purchase_invoice_item_edit/$1/$2'); $routes->post('Medical/purchase_invoice_item_delete/(:num)/(:num)', 'Medical::purchase_invoice_item_delete/$1/$2'); $routes->post('Medical/purchase_update_stock/(:num)', 'Medical::purchase_update_stock/$1'); $routes->post('Medical/purchase_update_stock/(:num)/(:num)', 'Medical::purchase_update_stock/$1/$2'); $routes->get('Medical/challan_invoice/(:num)', 'Medical::challan_invoice/$1'); $routes->post('Medical/challan_item_to_purchase/(:num)/(:num)', 'Medical::challan_item_to_purchase/$1/$2'); $routes->post('Medical/challan_item_return/(:num)', 'Medical::challan_item_return/$1'); $routes->get('Medical/get_drug_master', 'Medical::get_drug_master'); $routes->get('Medical/Purchase_return', 'Medical::purchase_return'); $routes->get('Medical/PurchaseReturnNew', 'Medical::purchase_return_new'); $routes->post('Medical/PurchaseReturnInvoice', 'Medical::purchase_return_invoice'); $routes->post('Medical/CreatePurchaseReturn', 'Medical::create_purchase_return'); $routes->get('Medical/PurchaseReturnInvoiceEdit/(:num)', 'Medical::purchase_return_invoice_edit/$1'); $routes->get('Medical/PurchaseReturn_invoice_item_list/(:num)', 'Medical::purchase_return_invoice_item_list/$1'); $routes->get('Medical/Purchase_Invoice_product/(:num)', 'Medical::purchase_invoice_product/$1'); $routes->match(['GET', 'POST'], 'Medical/Purchase_Invoice_old/(:num)', 'Medical::purchase_invoice_old/$1'); $routes->post('Medical/remove_item_invoice/(:num)', 'Medical::purchase_return_remove_item_invoice/$1'); $routes->get('Medical/print_purchase_return/(:num)', 'Medical::print_purchase_return/$1'); $routes->get('Medical/store_stock', 'Medical::store_stock'); $routes->post('Medical/store_stock_result', 'Medical::store_stock_result'); $routes->get('Medical/stock_result_excel/(:segment)/(:segment)/(:segment)', 'Medical::stock_result_excel/$1/$2/$3'); $routes->get('Medical/stock_result_excel_3/(:segment)/(:segment)/(:segment)/(:segment)', 'Medical::stock_result_excel_3/$1/$2/$3/$4'); $routes->get('Medical/stock_details', 'Medical::stock_details'); $routes->post('Medical/store_stock_result_datewise', 'Medical::store_stock_result_datewise'); $routes->get('Medical/store_stock_result_datewise_excel/(:segment)/(:segment)/(:segment)', 'Medical::store_stock_result_datewise_excel/$1/$2/$3'); $routes->get('Medical_backpanel/store_stock', 'Medical::store_stock'); $routes->get('Medical_backpanel/stock', 'Medical::store_stock'); $routes->get('Medical_backpanel/Stock', 'Medical::store_stock'); $routes->get('Medical_backpanel/Purchase_return', 'Medical::purchase_return'); $routes->get('Medical_backpanel/PurchaseReturnNew', 'Medical::purchase_return_new'); $routes->post('Medical_backpanel/PurchaseReturnInvoice', 'Medical::purchase_return_invoice'); $routes->post('Medical_backpanel/CreatePurchaseReturn', 'Medical::create_purchase_return'); $routes->get('Medical_backpanel/PurchaseReturnInvoiceEdit/(:num)', 'Medical::purchase_return_invoice_edit/$1'); $routes->get('Medical_backpanel/PurchaseReturn_invoice_item_list/(:num)', 'Medical::purchase_return_invoice_item_list/$1'); $routes->get('Medical_backpanel/Purchase_Invoice_product/(:num)', 'Medical::purchase_invoice_product/$1'); $routes->match(['GET', 'POST'], 'Medical_backpanel/Purchase_Invoice_old/(:num)', 'Medical::purchase_invoice_old/$1'); $routes->post('Medical_backpanel/add_remove_item', 'Medical::purchase_return_add_remove_item'); $routes->post('Medical_backpanel/remove_item_invoice/(:num)', 'Medical::purchase_return_remove_item_invoice/$1'); $routes->get('Medical_backpanel/get_drug', 'Medical::get_drug'); $routes->get('Medical_backpanel/get_batch/(:num)', 'Medical::get_batch/$1'); $routes->get('Medical_Print/print_purchase_return/(:num)', 'Medical::print_purchase_return/$1'); $routes->get('Medical_backpanel/Report_Med_patient', 'Medical::report_med_patient'); $routes->get('Medical_backpanel/drug_patient_distribute/(:segment)/(:segment)/(:segment)/(:segment)', 'Medical::drug_patient_distribute/$1/$2/$3/$4'); $routes->get('Medical_backpanel/Print_bill_on_uhid', 'Medical::print_bill_on_uhid'); $routes->get('Medical_backpanel/uhid_report/(:segment)/(:segment)', 'Medical::uhid_report/$1/$2'); $routes->get('Medical_backpanel/SupplierAccount', 'Medical::supplier_account'); $routes->get('Medical_backpanel/invoice_item_log', 'Medical::invoice_item_log'); $routes->match(['GET', 'POST'], 'Medical_backpanel/invoice_item_log_data', 'Medical::invoice_item_log_data'); $routes->get('Medical_backpanel/stock_details', 'Medical::stock_details'); $routes->get('Medical_backpanel/Expire_stock', 'Medical::expire_stock'); $routes->get('Medical_backpanel/Expire_stock_pdf', 'Medical::expire_stock_pdf'); $routes->get('Medical_backpanel/stocktransfer', 'Medical::stocktransfer'); $routes->get('Medical_backpanel/merge_product', 'Medical::merge_product'); $routes->get('Medical_backpanel/Med_old_invoice', 'Medical::Invoice_Med_Draft'); $routes->get('Medical_backpanel/Report_IPD_CreditBills', 'Medical::report_ipd_credit_bills'); $routes->get('Medical_backpanel/Org_Bills', 'Medical::org_bills'); $routes->get('Medical_backpanel/Org_Bills_Report/(:segment)/(:segment)', 'Medical::org_bills_report/$1/$2'); $routes->get('Medical_backpanel/Org_Bills_Report/(:segment)/(:segment)/(:num)', 'Medical::org_bills_report/$1/$2/$3'); $routes->post('Medical_backpanel/store_Stock_result', 'Medical::store_stock_result'); $routes->post('Medical_backpanel/Stock_qty_result', 'Medical::store_stock_result'); $routes->post('Medical_backpanel/store_Stock_result_datewise', 'Medical::store_stock_result_datewise'); $routes->get('Medical_backpanel/store_Stock_result_datewise_excel/(:segment)/(:segment)/(:segment)', 'Medical::store_stock_result_datewise_excel/$1/$2/$3'); $routes->get('Medical_backpanel/Stock_result_excel/(:segment)/(:segment)/(:segment)', 'Medical::stock_result_excel/$1/$2/$3'); $routes->get('Medical_backpanel/Stock_result_excel_3/(:segment)/(:segment)/(:segment)/(:segment)', 'Medical::stock_result_excel_3/$1/$2/$3/$4'); $routes->get('Medical/expire_stock', 'Medical::expire_stock'); $routes->get('Medical/expire_stock_pdf', 'Medical::expire_stock_pdf'); $routes->get('Medical/stocktransfer', 'Medical::stocktransfer'); $routes->get('Medical/merge_product', 'Medical::merge_product'); $routes->post('Medical/product_info/(:num)', 'Medical::product_info/$1'); $routes->post('Medical/product_merged', 'Medical::product_merged'); $routes->post('Medical/ssno_info/(:num)', 'Medical::ssno_info/$1'); $routes->post('Medical/ssno_transfer', 'Medical::ssno_transfer'); $routes->get('Medical/admin_action_logs/(:segment)', 'Medical::admin_action_logs/$1'); $routes->get('Medical_Report/purchase_invoice_report', 'Medical::purchase_invoice_report'); $routes->get('Medical_Report/ipd_discharge', 'Medical::ipd_discharge'); $routes->get('Medical_Report/Report_6_data/(:segment)', 'Medical::report_6_data/$1'); $routes->get('Medical_Report/Report_6_data/(:segment)/(:num)', 'Medical::report_6_data/$1/$2'); $routes->get('Medical_Report/Report_1', 'Medical::report_1'); $routes->get('Medical_Report/Report_1_data/(:segment)', 'Medical::report_1_data/$1'); $routes->get('Medical_Report/Report_1_data/(:segment)/(:num)', 'Medical::report_1_data/$1/$2'); $routes->get('Medical_Report/Report_2', 'Medical::report_2'); $routes->get('Medical_Report/Report_2_data/(:segment)/(:num)', 'Medical::report_2_data/$1/$2'); $routes->get('Medical_Report/Report_2_data/(:segment)/(:num)/(:num)', 'Medical::report_2_data/$1/$2/$3'); $routes->get('Medical_Report/Report_2_short_data/(:segment)/(:num)', 'Medical::report_2_data/$1/$2'); $routes->get('Medical_Report/Report_2_short_data/(:segment)/(:num)/(:num)', 'Medical::report_2_data/$1/$2/$3'); $routes->get('Medical_Report/Report_Payment_Recieved', 'Medical::report_payment_recieved'); $routes->get('Medical_Report/Report_Payment_Recieved_data/(:segment)/(:segment)', 'Medical::report_payment_recieved_data/$1/$2'); $routes->get('Medical_Report/Report_Payment_Recieved_data/(:segment)/(:segment)/(:num)', 'Medical::report_payment_recieved_data/$1/$2/$3'); $routes->get('Medical_Report/Report_daily_med_sale', 'Medical::report_daily_med_sale'); $routes->get('Medical_Report/Report_daily_med_sale_data/(:segment)', 'Medical::report_daily_med_sale_data/$1'); $routes->get('Medical_Report/Report_daily_med_sale_data/(:segment)/(:num)', 'Medical::report_daily_med_sale_data/$1/$2'); $routes->get('Medical_Report/Report_daily_med_sale_doc', 'Medical::report_daily_med_sale_doc'); $routes->get('Medical_Report/Report_daily_med_sale_doc_data/(:segment)/(:segment)', 'Medical::report_daily_med_sale_doc_data/$1/$2'); $routes->get('Medical_Report/Report_daily_med_sale_doc_data/(:segment)/(:segment)/(:num)', 'Medical::report_daily_med_sale_doc_data/$1/$2/$3'); $routes->get('Medical_Report/Report_company_med_sale', 'Medical::report_company_med_sale'); $routes->get('Medical_Report/Report_company_med_sale_data/(:segment)/(:num)', 'Medical::report_company_med_sale_data/$1/$2'); $routes->get('Medical_Report/Report_company_med_sale_data/(:segment)/(:num)/(:num)', 'Medical::report_company_med_sale_data/$1/$2/$3'); $routes->get('Medical_Report/Short_medicine', 'Medical::short_medicine'); $routes->get('Medical_Report/Short_medicine_data/(:segment)/(:segment)', 'Medical::short_medicine_data/$1/$2'); $routes->get('Medical_Report/Short_medicine_data/(:segment)/(:segment)/(:num)', 'Medical::short_medicine_data/$1/$2/$3'); $routes->get('Medical_Report/Report_4', 'Medical::report_4'); $routes->get('Medical_Report/Report_4_data/(:segment)', 'Medical::report_4_data/$1'); $routes->get('Medical_Report/Report_4_data/(:segment)/(:num)', 'Medical::report_4_data/$1/$2'); $routes->get('Medical_Report/Report_IPD_CreditBills', 'Medical::report_ipd_credit_bills'); $routes->get('Medical_Report/Report_IPD_Credit_data/(:segment)/(:num)', 'Medical::report_ipd_credit_data/$1/$2'); $routes->get('Medical_Report/Report_IPD_Credit_data/(:segment)/(:num)/(:num)', 'Medical::report_ipd_credit_data/$1/$2/$3'); $routes->get('Medical_Report/Org_Bills', 'Medical::org_bills'); $routes->get('Medical_Report/Org_Bills_Report/(:segment)/(:segment)', 'Medical::org_bills_report/$1/$2'); $routes->get('Medical_Report/Org_Bills_Report/(:segment)/(:segment)/(:num)', 'Medical::org_bills_report/$1/$2/$3'); $routes->get('Medical_Report/Lost_medicine', 'Medical::master_report/lost-medicine'); $routes->get('Medical_Report/Report_2_OPD_Pending', 'Medical::master_report/opd-cash-pending'); $routes->get('Medical_Report/Report_2_OPD_Pending_Paid', 'Medical::master_report/opd-old-balance-paid'); $routes->get('Medical_Report/Report_5', 'Medical::report_5'); $routes->get('Medical_Report/Report_5_data/(:segment)', 'Medical::report_5_data/$1'); $routes->get('Medical_Report/Report_5_data/(:segment)/(:num)', 'Medical::report_5_data/$1/$2'); $routes->get('Medical_Report/Report_5_HSNdata/(:segment)', 'Medical::report_5_hsndata/$1'); $routes->get('Medical_Report/Report_5_HSNdata/(:segment)/(:num)', 'Medical::report_5_hsndata/$1/$2'); $routes->get('Medical_Report/Report_3', 'Medical::report_3'); $routes->get('Medical_Report/Report_3_data/(:segment)', 'Medical::report_3_data/$1'); $routes->get('Medical_Report/Report_3_data/(:segment)/(:num)', 'Medical::report_3_data/$1/$2'); $routes->get('Medical_Report/Report_3_GSTR1/(:segment)', 'Medical::report_3_gstr1/$1'); $routes->get('Medical_Report/Report_7', 'Medical::master_report/bank-ledger'); $routes->get('Medical_Report/Report_gst_1', 'Medical::report_gst_1'); $routes->get('Medical_Report/purchase_invoice_data_pdf/(:segment)/(:num)', 'Medical::purchase_invoice_data_pdf/$1/$2'); $routes->get('Medical_Report/purchase_invoice_data_pdf/(:segment)/(:num)/(:num)', 'Medical::purchase_invoice_data_pdf/$1/$2/$3'); $routes->get('Medical_Report/purchase_invoice_pdf/(:segment)/(:num)', 'Medical::purchase_invoice_pdf/$1/$2'); $routes->get('Medical_Report/purchase_invoice_pdf_gst/(:segment)/(:num)', 'Medical::purchase_invoice_pdf_gst/$1/$2'); $routes->get('Medical_Report/purchase_invoice_data/(:segment)/(:num)', 'Medical::purchase_invoice_data/$1/$2'); $routes->get('Medical_Report/purchase_invoice_data/(:segment)/(:num)/(:num)', 'Medical::purchase_invoice_data/$1/$2/$3'); $routes->get('Medical_Report/purchase_gstr2b/(:segment)/(:num)', 'Medical::purchase_gstr2b/$1/$2'); $routes->get('Medical_Report/purchase_gstr3b/(:segment)/(:num)', 'Medical::purchase_gstr3b/$1/$2'); $routes->get('Medical/supplier_account', 'Medical::supplier_account'); $routes->get('Medical/supplier_account_led/(:num)', 'Medical::supplier_account_led/$1'); $routes->post('Medical/supplier_account_ledger_data/(:num)', 'Medical::supplier_account_ledger_data/$1'); $routes->get('Medical/supplier_account_ledger_pdf/(:num)/(:segment)/(:segment)', 'Medical::supplier_account_ledger_pdf/$1/$2/$3'); $routes->get('Medical/supplier_account_add_entry/(:num)', 'Medical::supplier_account_add_entry/$1'); $routes->post('Medical/supplier_account_add_entry/(:num)', 'Medical::supplier_account_add_entry/$1'); $routes->get('Medical/supplier_account_edit_entry/(:num)', 'Medical::supplier_account_edit_entry/$1'); $routes->post('Medical/supplier_account_edit_entry/(:num)', 'Medical::supplier_account_edit_entry/$1'); $routes->get('Medical/invoice_item_log', 'Medical::invoice_item_log'); $routes->match(['GET', 'POST'], 'Medical/invoice_item_log_data', 'Medical::invoice_item_log_data'); $routes->get('Medical/credit_payout_request', 'Medical::credit_payout_request'); $routes->post('Medical/credit_payout_pool_datatable', 'Medical::credit_payout_pool_datatable'); $routes->post('Medical/credit_payout_requests_datatable', 'Medical::credit_payout_requests_datatable'); $routes->post('Medical/credit_payout_request_create', 'Medical::credit_payout_request_create'); $routes->get('Medical/master', 'Medical::master'); $routes->get('Medical/master_report/med-payment-edit', 'Payment_Medical::index'); $routes->get('Medical/master_report/(:segment)', 'Medical::master_report/$1'); $routes->get('Medical/master_link/(:segment)', 'Medical::master_link/$1'); $routes->get('Payment_Medical', 'Payment_Medical::index'); $routes->get('Payment_Medical/payment_log', 'Payment_Medical::payment_log'); $routes->match(['GET', 'POST'], 'Payment_Medical/payment_log_data', 'Payment_Medical::payment_log_data'); $routes->post('Payment_Medical/payment_record', 'Payment_Medical::payment_record'); $routes->post('Payment_Medical/change_to_bank', 'Payment_Medical::change_to_bank'); $routes->post('Payment_Medical/change_to_cash', 'Payment_Medical::change_to_cash'); $routes->post('Payment_Medical/update_amount', 'Payment_Medical::update_amount'); $routes->post('Payment_Medical/change_user', 'Payment_Medical::change_user'); $paymentEditFilter = ['filter' => 'permission:finance.payment.edit']; $routes->get('Payment', 'Payment::index', $paymentEditFilter); $routes->post('Payment/payment_record', 'Payment::paymentRecord', $paymentEditFilter); $routes->post('Payment/change_to_bank', 'Payment::changeToBank', $paymentEditFilter); $routes->post('Payment/change_to_cash', 'Payment::changeToCash', $paymentEditFilter); $routes->post('Payment/change_user', 'Payment::changeUser', $paymentEditFilter); $routes->post('Payment/change_amount', 'Payment::changeAmount', $paymentEditFilter); $routes->post('Payment/update_amount', 'Payment::changeAmount', $paymentEditFilter); $routes->get('finance/payment-edit', 'Payment::index', $paymentEditFilter); // Finance & Accounting SOP - Phase 1 $routes->get('Finance', 'Finance::index'); $routes->get('Finance/index', 'Finance::index'); $routes->get('finance', 'Finance::index'); $routes->get('finance/index', 'Finance::index'); $routes->get('Finance/cashbook', 'Finance::cashbookAccounts'); $routes->get('Finance/cashbook/accounts', 'Finance::cashbookAccounts'); $routes->get('billing/cash-submission', 'Finance::cashbookBilling'); $routes->get('billing/cash-submission/create', 'Finance::cashbookBilling'); $routes->get('Finance/cash_transactions_table', 'Finance::cashTransactionsTable'); $routes->get('Finance/scroll_table', 'Finance::scrollTable'); $routes->get('Finance/payment_selection_table', 'Finance::paymentSelectionTable'); $routes->get('Finance/scroll_items_table', 'Finance::scrollItemsTable'); $routes->get('Finance/bank_deposits', 'Finance::bankDeposits'); $routes->get('Finance/bank_deposits_table', 'Finance::bankDepositsTable'); $routes->get('Finance/bank_audit', 'Finance::bankAudit'); $routes->get('Finance/medical_store_credit_account', 'Finance::medicalStoreCreditAccount'); $routes->get('Finance/medical_store_requests_table', 'Finance::medicalStoreRequestsTable'); $routes->get('Finance/medical_store_dashboard_card', 'Finance::medicalStoreDashboardCard'); $routes->get('Finance/medical_store_request_detail/(:num)', 'Finance::medicalStoreRequestDetail/$1'); $routes->get('Finance/medical_store_request_lines_table', 'Finance::medicalStoreRequestLinesTable'); $routes->post('Finance/medical_store_request_review', 'Finance::medicalStoreRequestReview'); $routes->post('Finance/medical_store_request_approve', 'Finance::medicalStoreRequestApprove'); $routes->post('Finance/medical_store_request_reject', 'Finance::medicalStoreRequestReject'); $routes->post('Finance/medical_store_payment_create', 'Finance::medicalStorePaymentCreate'); $routes->get('Finance/payout/opd-consult', 'Finance::payoutOpdConsult'); $routes->get('Finance/payout/opd-consult-summary', 'Finance::payoutOpdConsultSummary'); $routes->get('Finance/payout/opd-consult-drafts-table', 'Finance::payoutOpdConsultDraftsTable'); $routes->post('Finance/payout/opd-consult-draft-create', 'Finance::payoutOpdConsultDraftCreate'); $routes->post('Finance/payout/opd-consult-draft-update', 'Finance::payoutOpdConsultDraftUpdate'); $routes->post('Finance/payout/opd-consult-draft-delete', 'Finance::payoutOpdConsultDraftDelete'); $routes->get('Finance/bank_audit_direct_payments_table', 'Finance::bankAuditDirectPaymentsTable'); $routes->get('Finance/bank_statement_entries_table', 'Finance::bankStatementEntriesTable'); $routes->get('Finance/bank_settlement_entries_table', 'Finance::bankSettlementEntriesTable'); $routes->get('Finance/bank_settlement_linked_payments_table', 'Finance::bankSettlementLinkedPaymentsTable'); $routes->get('Finance/bank_settlement_linked_payments_export', 'Finance::bankSettlementLinkedPaymentsExport'); $routes->get('Finance/bank_pos_settlements_table', 'Finance::bankPosSettlementsTable'); $routes->post('Finance/cash_transaction_create', 'Finance::cashTransactionCreate'); $routes->post('Finance/fetch_payments_for_period', 'Finance::fetchPaymentsForPeriod'); $routes->post('Finance/scroll_create', 'Finance::scrollCreate'); $routes->post('Finance/scroll_accept', 'Finance::scrollAccept'); $routes->post('Finance/scroll_verify', 'Finance::scrollVerify'); $routes->post('Finance/bank_deposit_create', 'Finance::bankDepositCreate'); $routes->post('Finance/bank_deposit_status_update', 'Finance::bankDepositStatusUpdate'); $routes->post('Finance/bank_statement_entry_create', 'Finance::bankStatementEntryCreate'); $routes->post('Finance/bank_reconcile_match', 'Finance::bankReconcileMatch'); $routes->post('Finance/bank_reconcile_batch_match', 'Finance::bankReconcileBatchMatch'); $routes->post('Finance/bank_settlement_create', 'Finance::bankSettlementCreate'); $routes->post('Finance/bank_settlement_match_statement', 'Finance::bankSettlementMatchStatement'); $routes->post('Finance/bank_reconcile_unmatch', 'Finance::bankReconcileUnmatch'); $routes->post('Finance/bank_pos_settlement_create', 'Finance::bankPosSettlementCreate'); $routes->post('Finance/bank_pos_settlement_accept', 'Finance::bankPosSettlementAccept'); service('auth')->routes($routes); $routes->get('auth/session-status', 'AuthSession::status'); // Hospital Stock Management (Storestock) $routes->get('Storestock', 'Storestock::index'); $routes->get('Storestock/Indent_List', 'Storestock::indent_list'); $routes->match(['GET', 'POST'], 'Storestock/getIndentTable', 'Storestock::getIndentTable'); $routes->get('Storestock/new_indent', 'Storestock::new_indent'); $routes->post('Storestock/Indent_create/(:num)', 'Storestock::indent_create/$1'); $routes->get('Storestock/Indent_show/(:num)', 'Storestock::indent_show/$1'); $routes->get('Storestock/Indent_Items_list/(:num)', 'Storestock::indent_items_list/$1'); $routes->post('Storestock/add_item/(:num)', 'Storestock::add_item/$1'); $routes->get('Storestock/get_drug', 'Storestock::get_drug'); $routes->get('Storestock/final_invoice/(:num)', 'Storestock::final_invoice/$1'); $routes->get('Storestock/print_single_indent/(:num)', 'Storestock::print_single_indent/$1'); $routes->get('Storestock/store_stock', 'Storestock::store_stock'); $routes->post('Storestock/store_Stock_result', 'Storestock::store_stock_result'); $routes->match(['GET', 'POST'], 'Storestock/get_product_stock/(:num)', 'Storestock::get_product_stock/$1'); $routes->get('Storestock/Report_2', 'Storestock::report_2'); $routes->get('Storestock/main_store', 'Storestock::main_store'); $routes->get('Storestock/Purchase', 'Storestock::Purchase'); $routes->match(['GET', 'POST'], 'Storestock/PurchaseInvoice', 'Storestock::PurchaseInvoice'); $routes->get('Storestock/PurchaseNew', 'Storestock::PurchaseNew'); $routes->post('Storestock/CreatePurchase', 'Storestock::CreatePurchase'); $routes->get('Storestock/PurchaseMasterEdit/(:num)', 'Storestock::PurchaseMasterEdit/$1'); $routes->get('Storestock/PurchaseInvoiceEdit/(:num)', 'Storestock::PurchaseInvoiceEdit/$1'); $routes->post('Storestock/UpdatePurchase', 'Storestock::UpdatePurchase'); $routes->get('Storestock/UpdatePurchaseInvoiceStatus/(:num)/(:num)', 'Storestock::UpdatePurchaseInvoiceStatus/$1/$2'); $routes->post('Storestock/purchase_invoice_delete/(:num)', 'Storestock::purchase_invoice_delete/$1'); $routes->get('Storestock/print_purchase/(:num)', 'Storestock::print_purchase/$1'); $routes->get('Storestock/Purchase_return', 'Storestock::Purchase_return'); $routes->get('Storestock/PurchaseReturnNew', 'Storestock::PurchaseReturnNew'); $routes->match(['GET', 'POST'], 'Storestock/PurchaseReturnInvoice', 'Storestock::PurchaseReturnInvoice'); $routes->get('Storestock/PurchaseReturnInvoiceEdit/(:num)', 'Storestock::PurchaseReturnInvoiceEdit/$1'); $routes->get('Storestock/PurchaseReturn_invoice_item_list/(:num)', 'Storestock::PurchaseReturn_invoice_item_list/$1'); $routes->post('Storestock/create_purchase_return', 'Storestock::create_purchase_return'); $routes->post('Storestock/add_remove_item', 'Storestock::add_remove_item'); $routes->post('Storestock/remove_item_invoice/(:num)', 'Storestock::remove_item_invoice/$1'); $routes->get('Storestock/print_purchase_return/(:num)', 'Storestock::print_purchase_return/$1'); // Legacy compatibility: Lab_Admin & setting/template routes $routes->get('Lab_Admin/report_list', 'Setting\Template::report_list'); $routes->get('setting/template/report_list', 'Setting\Template::report_list'); $routes->get('Lab_Admin/reportedit_load', 'Setting\Template::reportedit_load'); $routes->get('setting/template/reportedit_load', 'Setting\Template::reportedit_load'); $routes->get('Lab_Admin/reportedit_load/(:num)', 'Setting\Template::reportedit_load/$1'); $routes->get('setting/template/reportedit_load/(:num)', 'Setting\Template::reportedit_load/$1'); $routes->post('Lab_Admin/report_update', 'Setting\Template::report_update'); $routes->post('setting/template/report_update', 'Setting\Template::report_update'); $routes->post('Lab_Admin/report_insert', 'Setting\Template::report_insert'); $routes->post('setting/template/report_insert', 'Setting\Template::report_insert'); $routes->get('Lab_Admin/report_ultrasound_list/(:num)', 'Setting\Template::report_ultrasound_list/$1'); $routes->get('setting/template/report_ultrasound_list/(:num)', 'Setting\Template::report_ultrasound_list/$1'); $routes->get('Lab_Admin/reportedit_ultrasound_load/(:num)', 'Setting\Template::reportedit_ultrasound_load/$1'); $routes->get('setting/template/reportedit_ultrasound_load/(:num)', 'Setting\Template::reportedit_ultrasound_load/$1'); $routes->get('Lab_Admin/reportedit_ultrasound_load/(:num)/(:num)', 'Setting\Template::reportedit_ultrasound_load/$1/$2'); $routes->get('setting/template/reportedit_ultrasound_load/(:num)/(:num)', 'Setting\Template::reportedit_ultrasound_load/$1/$2'); $routes->post('Lab_Admin/report_ultrasound_update/(:num)', 'Setting\Template::report_ultrasound_update/$1'); $routes->post('setting/template/report_ultrasound_update/(:num)', 'Setting\Template::report_ultrasound_update/$1'); $routes->post('Lab_Admin/report_ultrasound_insert/(:num)', 'Setting\Template::report_ultrasound_insert/$1'); $routes->post('setting/template/report_ultrasound_insert/(:num)', 'Setting\Template::report_ultrasound_insert/$1'); // Legacy compatibility: some IPD charge screens still refresh via old IpdNew URL. $routes->get('IpdNew/show_ipd_items/(:num)', 'Billing\\Ipd::panelTab/$1/ipd-charges'); $routes->get('IpdNew/show_ipd_items/(:num)/(:num)', 'Billing\\Ipd::panelTab/$1/ipd-charges'); // Legacy compatibility: patient profile still calls old new-IPD URL. $routes->get('IpdNew/admit', 'Billing\\Ipd::admit'); $routes->get('IpdNew/addipd/(:num)', 'Billing\\Ipd::legacyAddIpd/$1'); $routes->post('IpdNew/AddNew', 'Billing\\Ipd::legacyAddNew'); $routes->post('IpdNew/addnew', 'Billing\\Ipd::legacyAddNew'); $routes->get('IpdNew/ipd_panel/(:num)', 'Billing\\Ipd::panel/$1'); $routes->get('IpdNew/show_ipd_form/(:num)', 'Billing\\Ipd::showIpdForm/$1/1'); $routes->get('IpdNew/show_ipd_form/(:num)/(:num)', 'Billing\\Ipd::showIpdForm/$1/$2'); $routes->get('ipdNew/show_ipd_form/(:num)', 'Billing\\Ipd::showIpdForm/$1/1'); $routes->get('ipdNew/show_ipd_form/(:num)/(:num)', 'Billing\\Ipd::showIpdForm/$1/$2'); // Legacy compatibility: old discharge summary links should open current discharge tab. $routes->get('Ipd_discharge/search_patient', 'Ipd_discharge::search_patient', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/search_patient_ajax', 'Ipd_discharge::search_patient_ajax', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/debug_ipd_fields/(:num)', 'Ipd_discharge::debug_ipd_fields/$1', ['filter' => 'permission:admin.access,admin.settings']); $routes->get('Ipd_discharge/debug_discharge_html/(:num)', 'Ipd_discharge::debug_discharge_html/$1', ['filter' => 'permission:admin.access,admin.settings']); $routes->get('Ipd_discharge/debug_mpdf_input/(:num)/(:num)', 'Ipd_discharge::debug_mpdf_input/$1/$2', ['filter' => 'permission:template.discharge,ipd_discharge.view,billing.access']); $routes->get('Ipd_discharge/placeholder_preview', 'Ipd_discharge::placeholder_preview', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/placeholder_preview/(:num)', 'Ipd_discharge::placeholder_preview/$1', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->match(['GET', 'POST'], 'Ipd_discharge/ipd_select/(:num)', 'Ipd_discharge::ipd_select/$1', ['filter' => 'permission:ipd_discharge.manage']); $routes->match(['GET', 'POST'], 'Ipd_discharge/ipd_select/(:num)/(:num)', 'Ipd_discharge::ipd_select/$1/$2', ['filter' => 'permission:ipd_discharge.manage']); $routes->get('Ipd_discharge/section_past_data', 'Ipd_discharge::section_past_data', ['filter' => 'permission:ipd_discharge.manage']); $routes->get('Ipd_discharge/section_template_list', 'Ipd_discharge::section_template_list', ['filter' => 'permission:ipd_discharge.manage']); $routes->post('Ipd_discharge/section_template_save', 'Ipd_discharge::section_template_save', ['filter' => 'permission:ipd_discharge.manage']); $routes->post('Ipd_discharge/section_template_remove', 'Ipd_discharge::section_template_remove', ['filter' => 'permission:ipd_discharge.manage']); $routes->get('Ipd_discharge/surgery_master_lookup', 'Ipd_discharge::surgery_master_lookup', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->get('Ipd_discharge/surgery_master_list', 'Ipd_discharge::surgery_master_list', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->post('Ipd_discharge/surgery_master_save', 'Ipd_discharge::surgery_master_save', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->post('Ipd_discharge/surgery_master_delete', 'Ipd_discharge::surgery_master_delete', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->get('Ipd_discharge/course_master_lookup', 'Ipd_discharge::course_master_lookup', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->get('Ipd_discharge/course_master_list', 'Ipd_discharge::course_master_list', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->post('Ipd_discharge/course_master_save', 'Ipd_discharge::course_master_save', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->post('Ipd_discharge/course_master_delete', 'Ipd_discharge::course_master_delete', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->get('Ipd_discharge/diagnosis_icd_lookup', 'Ipd_discharge::diagnosis_icd_lookup', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->post('Ipd_discharge/diagnosis_icd_seed_starter', 'Ipd_discharge::diagnosis_icd_seed_starter', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->post('Ipd_discharge/update_complaint_field', 'Ipd_discharge::update_complaint_field', ['filter' => 'permission:ipd_discharge.manage']); $routes->get('Ipd_discharge/dietary_master_list', 'Ipd_discharge::dietary_master_list', ['filter' => 'permission:ipd_discharge.manage,ipd_discharge.master.manage']); $routes->post('Ipd_discharge/dietary_master_save', 'Ipd_discharge::dietary_master_save', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->post('Ipd_discharge/dietary_master_delete', 'Ipd_discharge::dietary_master_delete', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->match(['GET', 'POST'], 'Ipd_discharge/preview_discharge_report/(:num)', 'Ipd_discharge::preview_discharge_report/$1', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/show_discharge/(:num)', 'Ipd_discharge::show_discharge/$1', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/show_discharge/(:num)/(:num)', 'Ipd_discharge::show_discharge/$1/$2', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); $routes->get('Ipd_discharge/show_file3/(:num)', 'Ipd_discharge::show_file3/$1', ['filter' => 'permission:ipd_discharge.view,ipd_discharge.manage']); // Legacy CI3 compatibility links for IPD bill print modes. $routes->get('ipdNew/ipd_complete_invoice/(:num)', 'Billing\\Ipd::billPrint/$1/1'); $routes->get('ipdNew/ipd_complete_invoice/(:num)/(:num)', 'Billing\\Ipd::billPrint/$1/$2'); $routes->get('IpdNew/ipd_complete_invoice/(:num)', 'Billing\\Ipd::billPrint/$1/1'); $routes->get('IpdNew/ipd_complete_invoice/(:num)/(:num)', 'Billing\\Ipd::billPrint/$1/$2'); $routes->get('setup/db-tools', 'Setup::dbTools'); $routes->post('setup/db-tools/generate', 'Setup::generateMigrations'); $routes->post('setup/db-tools/export-master-schema', 'Setup::exportMasterSchema'); $routes->post('setup/db-tools/export-master-seed', 'Setup::exportMasterSeedData'); $routes->post('setup/db-tools/schema-sync', 'Setup::schemaSync'); $routes->post('setup/db-tools/schema-sync-step', 'Setup::schemaSyncStep'); $routes->post('setup/db-tools/repair-auth-schema', 'Setup::repairAuthSchema'); $routes->post('setup/db-tools/prepare-filesystem', 'Setup::prepareFilesystem'); $routes->post('setup/db-tools/ensure-admin', 'Setup::ensureAdminLogin'); $routes->post('setup/db-tools/complete', 'Setup::complete'); $routes->get('ipd/ot/(:num)', 'IpdOt::panel/$1', ['filter' => 'permission:ipd_ot.view,ipd_ot.examination.manage']); $routes->get('ipd/ot/(:num)/examination/(:segment)', 'IpdOt::examination/$1/$2', ['filter' => 'permission:ipd_ot.view,ipd_ot.examination.manage']); $routes->post('ipd/ot/(:num)/examination/(:segment)', 'IpdOt::saveExamination/$1/$2', ['filter' => 'permission:ipd_ot.examination.manage']); $routes->get('ipd/ot/(:num)/request', 'IpdOt::requestForm/$1', ['filter' => 'permission:ipd_ot.request.manage']); $routes->post('ipd/ot/(:num)/requests', 'IpdOt::createCase/$1', ['filter' => 'permission:ipd_ot.request.manage']); $routes->get('ot/queue', 'IpdOt::queue', ['filter' => 'permission:ipd_ot.view,ipd_ot.schedule.manage,ipd_ot.status.manage,ipd_ot.postop.manage']); $routes->get('ot/cases/(:num)', 'IpdOt::caseForm/$1', ['filter' => 'permission:ipd_ot.view,ipd_ot.schedule.manage,ipd_ot.status.manage,ipd_ot.postop.manage']); $routes->post('ot/cases/(:num)', 'IpdOt::updateCase/$1', ['filter' => 'permission:ipd_ot.schedule.manage,ipd_ot.status.manage']); $routes->get('ot/cases/(:num)/postop', 'IpdOt::postopForm/$1', ['filter' => 'permission:ipd_ot.view,ipd_ot.postop.manage']); $routes->post('ot/cases/(:num)/postop', 'IpdOt::savePostop/$1', ['filter' => 'permission:ipd_ot.postop.manage']); $routes->group('billing', function($routes) { $routes->get('ipd', 'Billing\\Ipd::index'); $routes->get('ipd/admit', 'Billing\\Ipd::admit'); $routes->match(['GET', 'POST'], 'ipd/search-patient-admit', 'Billing\\Ipd::searchPatientForAdmit'); $routes->get('ipd/current-admission', 'Billing\\Ipd::currentAdmission'); $routes->get('ipd/invoices', 'Billing\\Ipd::ipdInvoices'); $routes->post('ipd/list', 'Billing\\Ipd::getIpdTable'); $routes->get('ipd/panel/(:num)', 'Billing\\Ipd::panel/$1'); $routes->get('ipd/panel/(:num)/tab/(:segment)', 'Billing\\Ipd::panelTab/$1/$2'); $routes->post('ipd/convert-to-ipd', 'Billing\\Ipd::convertToIpd'); $routes->get('ipd/available-ipd-beds', 'Billing\\Ipd::getAvailableIpdBeds'); $routes->post('ipd/panel/(:num)/admission', 'Billing\Ipd::updateAdmission/$1'); $routes->post('ipd/panel/(:num)/diagnosis/include/(:num)', 'Billing\\Ipd::updateDiagnosisChargeInclude/$1/$2'); $routes->post('ipd/panel/(:num)/discharge/update', 'Billing\\Ipd::updateDischargeProcess/$1'); $routes->post('ipd/panel/(:num)/discharge/discount/(:num)', 'Billing\\Ipd::updateDischargeDiscount/$1/$2'); $routes->post('ipd/panel/(:num)/discharge/charge/(:num)', 'Billing\\Ipd::updateDischargeCharge/$1/$2'); $routes->post('ipd/panel/(:num)/discharge/toggle-status', 'Billing\\Ipd::updateDischargeToggleStatus/$1'); $routes->get('ipd/bill-print/(:num)', 'Billing\\Ipd::billPrint/$1'); $routes->get('ipd/bill-print/(:num)/(:num)', 'Billing\\Ipd::billPrint/$1/$2'); $routes->get('ipd/show-form/(:num)', 'Billing\\Ipd::showIpdForm/$1/1'); $routes->get('ipd/show-form/(:num)/(:num)', 'Billing\\Ipd::showIpdForm/$1/$2'); $routes->post('ipd/charge/add/(:num)', 'Billing\\Ipd::addIpdCharge/$1'); $routes->post('ipd/charge/update/(:num)', 'Billing\\Ipd::updateIpdCharge/$1'); $routes->post('ipd/charge/delete/(:num)', 'Billing\\Ipd::deleteIpdCharge/$1'); $routes->post('ipd/bedside-charge/add/(:num)', 'Billing\\Ipd::addBedsideCharge/$1', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('ipd/doctor-visit/add/(:num)', 'Billing\\Ipd::addDoctorVisitCharge/$1', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('ipd/nursing-charge/update/(:num)/(:num)', 'Billing\\Ipd::updateNursingCharge/$1/$2', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('ipd/nursing-charge/delete/(:num)/(:num)', 'Billing\\Ipd::deleteNursingCharge/$1/$2', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('ipd/charge/package/(:num)', 'Billing\\Ipd::updateIpdChargePackage/$1'); $routes->post('ipd/package/add/(:num)', 'Billing\\Ipd::addIpdPackage/$1'); $routes->get('ipd/medical-bill/(:num)/(:num)', 'Billing\\Ipd::medicalBillDetails/$1/$2'); $routes->post('ipd/medical-bill/credit-type/(:num)', 'Billing\\Ipd::updateMedicalBillCreditType/$1'); $routes->get('ipd/panel/(:num)/ayushman/search', 'Billing\Ipd::searchAyushmanPackages/$1'); $routes->post('ipd/panel/(:num)/ayushman/map/(:num)', 'Billing\Ipd::saveAyushmanPackageMapping/$1/$2'); $routes->post('ipd/panel/(:num)/ayushman/checklist', 'Billing\Ipd::saveAyushmanChecklist/$1'); $routes->get('ipd/panel/(:num)/ayushman/claim-sheet', 'Billing\Ipd::ayushmanClaimSheet/$1'); $routes->get('ipd/panel/(:num)/ayushman/claim-sheet/(:num)', 'Billing\Ipd::ayushmanClaimSheet/$1/$2'); $routes->post('ipd/package/update/(:num)', 'Billing\\Ipd::updateIpdPackage/$1'); $routes->post('ipd/package/delete/(:num)', 'Billing\\Ipd::deleteIpdPackage/$1'); $routes->get('ipd/payment/modal/(:num)', 'Billing\\Ipd::loadPaymentModal/$1'); $routes->get('ipd/payment/deduction-modal/(:num)', 'Billing\\Ipd::loadDeductionModal/$1'); $routes->get('ipd/payment/tpa-modal/(:num)', 'Billing\\Ipd::loadTpaPaymentModal/$1'); $routes->post('ipd/payment/confirm', 'Billing\\Ipd::confirmPayment'); $routes->post('ipd/payment/deduct', 'Billing\\Ipd::deductPayment'); $routes->post('ipd/payment/tpa', 'Billing\\Ipd::tpaPayment'); $routes->get('ipd/payment/receipt/(:num)/(:num)', 'Billing\\Ipd::ipdCashPrintPdf/$1/$2'); $routes->get('ipd/payment/pdf-receipt/(:num)/(:num)', 'Billing\\Ipd::pdfPaymentReceipt/$1/$2'); $routes->get('ipd/cash-balance', 'Billing\\Ipd::cashBalance'); $routes->get('ipd/cash-balance/report', 'Billing\\Ipd::cashBalanceReport'); $routes->get('ipd/cash-balance/export', 'Billing\\Ipd::cashBalanceExport'); $routes->get('patient', 'Patient::index'); $routes->get('patient/search_opd', 'Patient::search_opd'); $routes->post('patient/create', 'Patient::create'); $routes->post('patient/search', 'Patient::search'); $routes->get('patient/search_ajax', 'Patient::search_ajax'); $routes->post('patient/search_adv', 'Patient::search_adv'); $routes->post('patient/abha_fetch_profile', 'Patient::abha_fetch_profile'); $routes->post('patient/check_abha_unique', 'Patient::check_abha_unique'); $routes->post('patient/check_aadhaar_unique', 'Patient::check_aadhaar_unique'); $routes->post('patient/abha_aadhaar_generate_otp', 'Patient::abhaAadhaarGenerateOtp'); $routes->post('patient/abha_aadhaar_verify_otp', 'Patient::abhaAadhaarVerifyOtp'); $routes->post('patient/abha_mobile_generate_otp', 'Patient::abhaMobileGenerateOtp'); $routes->post('patient/abha_mobile_verify_otp', 'Patient::abhaMobileVerifyOtp'); $routes->get('patient/person_record/(:num)', 'Patient::person_record/$1'); $routes->get('patient/person_record/(:num)/(:num)', 'Patient::person_record/$1/$2'); $routes->get('patient/show_cards/(:num)', 'Patient::show_cards/$1'); $routes->get('patient/show_cards/(:num)/(:num)', 'Patient::show_cards/$1/$2'); $routes->get('patient/show_profile_image/(:num)', 'Patient::show_profile_image/$1'); $routes->get('patient/show_profile_image/(:num)/(:num)', 'Patient::show_profile_image/$1/$2'); $routes->get('patient/show_profile_opd/(:num)', 'Patient::show_profile_opd/$1'); $routes->get('patient/show_profile_opd/(:num)/(:num)', 'Patient::show_profile_opd/$1/$2'); $routes->get('patient/abdm_documents/(:num)', 'Patient::abdm_documents/$1'); $routes->get('patient/abdm_records_pdf/(:num)', 'Patient::abdm_records_pdf/$1'); $routes->get('patient/abdm_document_detail/(:num)/(:num)', 'Patient::abdm_document_detail/$1/$2'); $routes->get('patient/abdm_content_request/(:num)', 'Patient::abdm_content_request/$1'); $routes->get('patient/abdm_content_auto_flow/(:num)', 'Patient::abdm_content_auto_flow/$1'); $routes->get('patient/abdm_content_fetch_only/(:num)', 'Patient::abdm_content_fetch_only/$1'); $routes->get('patient/abdm_consent_detail/(:num)', 'Patient::abdm_consent_detail/$1'); $routes->get('patient/abdm_consent_requests/(:num)', 'Patient::abdm_consent_requests/$1'); $routes->get('patient/abdm_check_live_status/(:num)', 'Patient::abdm_check_live_status/$1'); $routes->post('patient/abdm_content_request_custom/(:num)', 'Patient::abdm_content_request_custom/$1'); $routes->get('patient/abdm_timeline/(:num)', 'Patient::abdm_timeline/$1'); $routes->get('DoctorDocument/wellness_record_fhir_preview', 'DoctorDocument::wellness_record_fhir_preview'); $routes->get('DoctorDocument/wellness_record_fhir_preview/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1'); $routes->get('DoctorDocument/wellness_record_fhir_preview/(:num)/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1/$2'); $routes->post('patient/generate_wellness_fhir/(:num)', 'Patient::generate_wellness_fhir/$1'); $routes->post('patient/generate_wellness_fhir/(:num)/(:num)', 'Patient::generate_wellness_fhir/$1/$2'); $routes->post('billing/patient/generate_wellness_fhir/(:num)', 'Patient::generate_wellness_fhir/$1'); $routes->post('billing/patient/generate_wellness_fhir/(:num)/(:num)', 'Patient::generate_wellness_fhir/$1/$2'); $routes->post('patient/generate_fhir_for_file/(:num)', 'Patient::generate_fhir_for_file/$1'); $routes->post('patient/generate_fhir_bundle_for_all_files/(:num)', 'Patient::generate_fhir_bundle_for_all_files/$1'); $routes->post('billing/patient/generate_fhir_for_file/(:num)', 'Patient::generate_fhir_for_file/$1'); $routes->post('billing/patient/generate_fhir_bundle_for_all_files/(:num)', 'Patient::generate_fhir_bundle_for_all_files/$1'); $routes->post('patient/save_profile_image/(:num)', 'Patient::save_profile_image/$1'); $routes->match(['GET', 'POST'], 'patient/patient_file_upload/(:num)', 'Patient::patient_file_upload/$1'); $routes->get('patient/patient_file_list/(:num)', 'Patient::patient_file_list/$1'); $routes->match(['GET', 'POST'], 'patient/upload_patient_doc/(:num)', 'Patient::upload_patient_doc/$1'); $routes->match(['GET', 'POST'], 'patient/delete_patient_doc/(:num)', 'Patient::delete_patient_doc/$1'); $routes->get('patient/city', 'Patient::city'); $routes->get('patient/district_list', 'Patient::district_list'); $routes->get('patient/get_name', 'Patient::get_name'); $routes->post('patient/update', 'Patient::update'); $routes->post('patient/update_aadhar', 'Patient::update_aadhar'); $routes->post('patient/update_abha', 'Patient::update_abha'); $routes->post('patient/update_card', 'Patient::update_card'); $routes->get('case/newcase/(:num)/(:num)', 'Billing\\CaseMaster::newcase/$1/$2'); $routes->get('case/newcase/(:num)/(:num)/(:num)', 'Billing\\CaseMaster::newcase/$1/$2/$3'); $routes->get('case/open_case/(:num)', 'Billing\\CaseMaster::open_case/$1'); $routes->get('case/open_case/(:num)/(:num)', 'Billing\\CaseMaster::open_case/$1/$2'); $routes->post('case/create', 'Billing\\CaseMaster::create'); $routes->post('case/update', 'Billing\\CaseMaster::update'); $routes->get('case/addPathTest/(:num)', 'Billing\\CaseMaster::addPathTest/$1'); $routes->post('case/search', 'Billing\\CaseMaster::search'); $routes->get('case/search_all', 'Billing\\CaseMaster::search_all'); $routes->get('case/case_invoice/(:segment)', 'Billing\\CaseMaster::case_invoice/$1'); $routes->get('case/case_invoice/(:segment)/(:num)/(:num)/(:num)', 'Billing\\CaseMaster::case_invoice/$1/$2/$3/$4'); $routes->get('case/case_invoice_ipd/(:num)', 'Billing\\CaseMaster::case_invoice_ipd/$1'); $routes->post('case/ORG_info', 'Billing\\CaseMaster::ORG_info'); $routes->post('case/update_itemrateqty', 'Billing\\CaseMaster::update_itemrateqty'); $routes->post('case/update_status', 'Billing\\CaseMaster::update_status'); $routes->post('case/org_contingent_update', 'Billing\\CaseMaster::org_contingent_update'); $routes->get('case/case_invoice_print/(:num)', 'Billing\\CaseMaster::case_invoice_print/$1'); $routes->post('case/getCaseTable', 'Billing\\CaseMaster::getCaseTable'); $routes->get('case/contingent_bill/(:num)', 'Billing\\CaseMaster::contingent_bill/$1'); $routes->get('case/contingent_bill/(:num)/(:num)', 'Billing\\CaseMaster::contingent_bill/$1/$2'); $routes->get('case/create_contingent_bill/(:num)', 'Billing\\CaseMaster::create_contingent_bill/$1'); $routes->post('case/org_confirm_payment', 'Billing\\CaseMaster::org_confirm_payment'); $routes->get('case/org_payment_request', 'Billing\\CaseMaster::org_payment_request'); $routes->get('case/load_model_box/(:segment)', 'Billing\\CaseMaster::load_model_box/$1'); $routes->post('case/payment_request', 'Billing\\CaseMaster::payment_request'); $routes->post('case/refund_request', 'Billing\\CaseMaster::refund_request'); $routes->get('charges/add/(:num)', 'Billing\\Charges::add/$1'); $routes->get('charges/add/(:num)/(:num)', 'Billing\\Charges::add/$1/$2'); $routes->get('charges/add/(:num)/(:num)/(:num)', 'Billing\\Charges::add/$1/$2/$3'); $routes->get('charges/edit/(:num)', 'Billing\\Charges::edit/$1'); $routes->match(['GET', 'POST'], 'charges/list-by-type', 'Billing\\Charges::listByType'); $routes->match(['GET', 'POST'], 'charges/item/(:num)', 'Billing\\Charges::item/$1'); $routes->match(['GET', 'POST'], 'charges/update-refer', 'Billing\\Charges::updateReferDoc'); $routes->post('charges/confirm-payment', 'Billing\\Charges::confirm_payment'); $routes->post('charges/cancel-invoice/(:num)', 'Billing\\Charges::cancel_invoice/$1'); $routes->post('charges/update-correction', 'Billing\\Charges::update_correction_charges'); $routes->get('charges/show/(:num)', 'Billing\\Charges::show/$1'); $routes->get('charges/print_invoice/(:num)/(:num)', 'Billing\\Charges::print_invoice/$1/$2'); $routes->match(['GET', 'POST'], 'charges/delete', 'Billing\\Charges::delete'); $routes->match(['GET', 'POST'], 'charges/update-discount', 'Billing\\Charges::updateDiscount'); }); $routes->get('ipd/patient', 'IpdPatient::index', ['filter' => 'permission:ipd_nursing.view']); $routes->get('ipd/patient/workspace/(:num)', 'IpdPatient::workspace/$1', ['filter' => 'permission:ipd_nursing.view']); $routes->post('ipd/patient/nursing/save/(:num)', 'IpdPatient::saveNursingEntry/$1', ['filter' => 'permission:ipd_nursing.record.manage']); $routes->post('ipd/patient/history/save/(:num)', 'IpdPatient::saveAdmissionHistory/$1', ['filter' => 'permission:ipd_nursing.record.manage']); $routes->post('ipd/patient/nursing/scan/(:num)', 'IpdPatient::scanNursingPaper/$1', ['filter' => 'permission:ipd_nursing.record.manage']); $routes->post('ipd/patient/nursing/scan-save/(:num)', 'IpdPatient::saveScannedNursingEntries/$1', ['filter' => 'permission:ipd_nursing.record.manage']); $routes->get('ipd/patient/nursing/print/(:num)', 'IpdPatient::nursingChartPrint/$1', ['filter' => 'permission:ipd_nursing.view']); $routes->post('ipd/patient/bed/transfer/(:num)', 'IpdPatient::bedTransfer/$1', ['filter' => 'permission:ipd_nursing.bed.transfer']); $routes->get('nursing-bedside-items', 'Setting\\NursingBedsideItems::index', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->get('nursing-bedside-items/(:num)', 'Setting\\NursingBedsideItems::get/$1', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('nursing-bedside-items/save', 'Setting\\NursingBedsideItems::save', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->get('nursing-bedside-items/insurance/(:num)', 'Setting\\NursingBedsideItems::insuranceList/$1', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('nursing-bedside-items/insurance/add', 'Setting\\NursingBedsideItems::insuranceAdd', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->post('nursing-bedside-items/insurance/remove', 'Setting\\NursingBedsideItems::insuranceRemove', ['filter' => 'permission:ipd_nursing.charge.manage']); $routes->get('Opd/addopd/(:num)', 'Opd::addopd/$1'); $routes->get('Opd/addopd/(:num)/(:num)', 'Opd::addopd/$1/$2'); $routes->get('opd/appointment', 'Opd::appointment', ['filter' => 'permission:doctor_work.appointment.view,doctor_work.access']); $routes->get('opd/appointment/(:segment)', 'Opd::appointment/$1', ['filter' => 'permission:doctor_work.appointment.view,doctor_work.access']); $routes->get('Opd/get_appointment_data', 'Opd::get_appointment_data'); $routes->get('Opd/get_appointment_data/(:segment)', 'Opd::get_appointment_data/$1'); $routes->get('Opd/get_appointment_list/(:num)', 'Opd::get_appointment_list/$1'); $routes->get('Opd/get_appointment_list/(:num)/(:segment)', 'Opd::get_appointment_list/$1/$2'); $routes->get('Opd/get_appointment_digest/(:num)', 'Opd::get_appointment_digest/$1'); $routes->get('Opd/get_appointment_digest/(:num)/(:segment)', 'Opd::get_appointment_digest/$1/$2'); $routes->get('Opd/get_appointment_live_rows/(:num)', 'Opd::get_appointment_live_rows/$1'); $routes->get('Opd/get_appointment_live_rows/(:num)/(:segment)', 'Opd::get_appointment_live_rows/$1/$2'); $routes->match(['GET', 'POST'], 'Opd/opd_status/(:num)/(:num)', 'Opd::opd_status/$1/$2'); $routes->post('Opd/showfee', 'Opd::showfee'); $routes->post('Opd/confirm_opd', 'Opd::confirm_opd'); $routes->post('Opd/confirm_payment', 'Opd::confirm_payment'); $routes->post('Opd/update_doc_date/(:num)', 'Opd::update_doc_date/$1'); $routes->post('Opd/opd_discount_update/(:num)', 'Opd::opd_discount_update/$1'); $routes->post('Opd/opd_cancel/(:num)', 'Opd::opd_cancel/$1'); $routes->match(['GET', 'POST'], 'Opd/opd_load_doc/(:num)', 'Opd::opd_load_doc/$1'); $routes->match(['GET', 'POST'], 'Opd/opd_file_list/(:num)', 'Opd::opd_file_list/$1'); $routes->match(['GET', 'POST'], 'Opd/opd_file_last_list', 'Opd::opd_file_last_list'); $routes->match(['GET', 'POST'], 'Opd/opd_file_last_list/(:num)', 'Opd::opd_file_last_list/$1'); $routes->match(['GET', 'POST'], 'Opd/save_image/(:num)', 'Opd::save_image/$1'); $routes->post('Opd/scan_ai_process_file', 'Opd::scan_ai_process_file'); // Legacy CI3 uploads fallback: serves files from project-root uploads/ when missing from public/uploads/ $routes->get('uploads/(:any)', 'Opd::serve_legacy_upload/$1'); $routes->post('Opd/scan_ai_assist', 'Opd::scan_ai_assist'); $routes->match(['GET', 'POST'], 'Opd/opd_file_hide/(:num)', 'Opd::opd_file_hide/$1'); $routes->match(['GET', 'POST'], 'Opd/opd_file_delete/(:num)', 'Opd::opd_file_delete/$1'); $routes->get('Opd/invoice/(:num)', 'Opd::invoice/$1'); $routes->get('Opd/invoice_print/(:num)', 'Opd::invoice_print/$1'); $routes->get('Opd/opd_lettre_print/(:num)', 'Opd::opd_lettre_print/$1'); $routes->get('Opd/opd_lettre_pdf/(:num)', 'Opd::opd_lettre_pdf/$1'); $routes->get('Opd/opd_lettre_html', 'Opd::opd_lettre_html'); $routes->get('Opd/opd_lettre_html/(:num)', 'Opd::opd_lettre_html/$1'); $routes->get('Opd/print_template_builder', 'Opd::print_template_builder'); $routes->post('Opd/print_template_save', 'Opd::print_template_save'); $routes->post('Opd/print_template_rename', 'Opd::print_template_rename'); $routes->post('Opd/print_template_delete', 'Opd::print_template_delete'); $routes->match(['GET', 'POST'], 'Opd/paper_print_settings', 'Opd::paper_print_settings'); $routes->get('opd_print/invoice_print_pdf/(:num)', 'Opd::invoice_print_pdf/$1'); $routes->get('opd_print/opd_PDF_print/(:num)', 'Opd::opd_pdf_print/$1'); $routes->get('opd_print/opd_Cont_print/(:num)', 'Opd::opd_cont_print/$1'); $routes->get('opd_print/opd_blank_print/(:num)', 'Opd::opd_blank_print/$1'); $routes->get('opd_print/opd_day_care/(:num)/(:num)', 'Opd::opd_day_care/$1/$2'); $routes->get('opd_print/opd_day_care/(:num)', 'Opd::opd_day_care/$1'); $routes->get('Opd_print/opd_day_care/(:num)/(:num)', 'Opd::opd_day_care/$1/$2'); $routes->get('Opd_print/opd_day_care/(:num)', 'Opd::opd_day_care/$1'); $routes->get('Opd/opd_day_care/(:num)/(:num)', 'Opd::opd_day_care/$1/$2'); $routes->get('Opd/opd_day_care/(:num)', 'Opd::opd_day_care/$1'); $routes->get('Opd_prescription/Prescription/(:num)', 'Opd_prescription::Prescription/$1'); $routes->match(['GET', 'POST'], 'Opd_prescription/create_opd_queue/(:num)', 'Opd_prescription::create_opd_queue/$1'); $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'); $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->get('AbdmGateway/scan_share_lookup_status/(:num)', 'AbdmGateway::scanShareLookupStatus/$1', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/scan_share_resolve_patient/(:num)', 'AbdmGateway::scanShareResolvePatient/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/scan_share_link_patient/(:num)', 'AbdmGateway::scanShareLinkPatient/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/scan_share_lookup_result_callback', 'AbdmGateway::scanShareLookupResultCallback'); $routes->post('AbdmGateway/consent_request', 'AbdmGateway::consentRequest', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/consent_callback', 'AbdmGateway::consentCallback'); $routes->post('AbdmGateway/hip_consent_notify_callback', 'AbdmGateway::hipConsentNotifyCallback'); $routes->post('api/v3/hiu/consent/on-notify', 'AbdmGateway::hipConsentNotifyCallback'); $routes->post('api/v3/hiu/consent/on_notify', 'AbdmGateway::hipConsentNotifyCallback'); $routes->post('api/v3/hiu/consent/notify', 'AbdmGateway::hipConsentNotifyCallback'); $routes->post('AbdmGateway/consent_revoked_callback', 'AbdmGateway::consentRevokedCallback'); $routes->post('AbdmGateway/record_linked_callback', 'AbdmGateway::recordLinkedCallback'); // ABDM M3 HIU (HMS -> Gateway) $routes->get('AbdmHiu', 'AbdmHiu::index', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/patient_request_list_data', 'AbdmHiu::patientRequestListData', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/documents', 'AbdmHiu::documents', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/patient_lookup', 'AbdmHiu::patientLookup', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/documents_list', 'AbdmHiu::documentsList', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/document_detail/(:num)', 'AbdmHiu::documentDetail/$1', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/timeline', 'AbdmHiu::timeline', ['filter' => $abdmPermFilter]); $routes->get('AbdmHiu/poll_summary', 'AbdmHiu::pollSummary', ['filter' => $abdmPermFilter]); $routes->post('AbdmHiu/consent_request', 'AbdmHiu::consentRequest', ['filter' => $abdmPermFilter]); $routes->post('AbdmHiu/consent_request_status', 'AbdmHiu::consentRequestStatus', ['filter' => $abdmPermFilter]); $routes->post('AbdmHiu/consent_reconcile', 'AbdmHiu::consentReconcile', ['filter' => $abdmPermFilter]); $routes->post('AbdmHiu/data_fetch', 'AbdmHiu::dataFetch', ['filter' => $abdmPermFilter]); $routes->post('AbdmHiu/consent_update_callback', 'AbdmHiu::consentUpdateWebhook'); $routes->post('AbdmHiu/health_information_on_request_callback', 'AbdmHiu::healthInformationOnRequestWebhook'); $routes->post('AbdmHiu/health_information_data_push_callback', 'AbdmHiu::healthInformationDataPushWebhook'); $routes->post('api/v3/hiu/consent/request', 'AbdmHiu::consentRequest', ['filter' => $abdmPermFilter]); $routes->post('api/v3/hiu/consent/request/status', 'AbdmHiu::consentRequestStatus', ['filter' => $abdmPermFilter]); $routes->post('api/v3/hiu/consent/on-update', 'AbdmHiu::consentUpdateWebhook'); $routes->post('api/v3/hiu/consent/on_update', 'AbdmHiu::consentUpdateWebhook'); $routes->post('api/v3/hiu/health-information/on-request', 'AbdmHiu::healthInformationOnRequestWebhook'); $routes->post('api/v3/hiu/health-information/on_request', 'AbdmHiu::healthInformationOnRequestWebhook'); $routes->post('api/v3/hiu/data/push', 'AbdmHiu::healthInformationDataPushWebhook'); $routes->post('api/v1/hiu/consent/status', 'AbdmHiu::consentRequestStatus', ['filter' => $abdmPermFilter]); $routes->post('api/v1/hiu/data/fetch', 'AbdmHiu::dataFetch', ['filter' => $abdmPermFilter]); // HMS M2 adapter endpoints (Gateway -> HMS) - keep lowercase v1 path $routes->get('api/v1/abdm/gateway/health', 'AbdmGateway::m2GatewayHealth'); $routes->post('api/v1/abdm/gateway/discovery/care-contexts', 'AbdmGateway::m2DiscoveryCareContexts'); $routes->post('api/v1/abdm/gateway/health-information/fetch', 'AbdmGateway::m2HealthInformationFetch'); $routes->post('api/v1/abdm/gateway/consent/upsert', 'AbdmGateway::m2ConsentUpsert'); $routes->post('api/v1/abdm/gateway/link/status', 'AbdmGateway::m2LinkStatus'); // ABDM M2 compatibility endpoints (Gateway -> HMS) $routes->post('records/discover', 'AbdmGateway::recordsDiscover'); $routes->post('records/link/init', 'AbdmGateway::m2LinkInit'); $routes->post('records/link/confirm', 'AbdmGateway::m2LinkConfirm'); $routes->post('api/v1/abdm/gateway/link/init', 'AbdmGateway::m2LinkInit'); $routes->post('api/v1/abdm/gateway/link/confirm', 'AbdmGateway::m2LinkConfirm'); $routes->post('v3/hip/patient/care-context/discover', 'AbdmGateway::recordsDiscover'); $routes->post('v3/hip/link/patient/care-context/init', 'AbdmGateway::m2LinkInit'); $routes->post('v3/hip/link/patient/care-context/confirm', 'AbdmGateway::m2LinkConfirm'); // ABDM M3: On-Demand FHIR Health Record Fetch by Bridge $routes->post('records/fetch', 'AbdmGateway::recordsFetch'); $routes->post('records/data', 'AbdmGateway::recordsFetch'); // Fallback alias $routes->get('records/fetch/(:any)', 'AbdmGateway::recordsFetch/$1'); $routes->post('records/fetch/(:any)', 'AbdmGateway::recordsFetch/$1'); $routes->post('AbdmGateway/share_prescription_bundle', 'AbdmGateway::sharePrescriptionBundle', ['filter' => $abdmPermFilter]); // SNOMED Coding Panel $routes->get('AbdmCodingPanel', 'AbdmCodingPanel::index', ['filter' => $abdmPermFilter]); $routes->get('AbdmCodingPanel/review/(:num)', 'AbdmCodingPanel::review/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmCodingPanel/confirm', 'AbdmCodingPanel::confirm', ['filter' => $abdmPermFilter]); $routes->post('AbdmCodingPanel/reject', 'AbdmCodingPanel::reject', ['filter' => $abdmPermFilter]); $routes->post('AbdmCodingPanel/correct', 'AbdmCodingPanel::correct', ['filter' => $abdmPermFilter]); $routes->post('AbdmCodingPanel/mark_fhir_ready', 'AbdmCodingPanel::markFhirReady', ['filter' => $abdmPermFilter]); $routes->get('AbdmCodingPanel/tip_check', 'AbdmCodingPanel::tipCheck'); $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/shareDiagnosisReportBundle', 'AbdmGateway::shareDiagnosisReportBundle', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/diagnosis_report_fhir_preview', 'AbdmGateway::diagnosisReportFhirPreview', ['filter' => $abdmPermFilter]); $routes->match(['GET', 'POST'], 'AbdmGateway/ipd_discharge_fhir_preview', 'AbdmGateway::ipdDischargeFhirPreview', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/save_ipd_discharge_fhir', 'AbdmGateway::saveIpdDischargeFhir', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/immunization_fhir_preview', 'AbdmGateway::immunizationFhirPreview', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/share_immunization_bundle', 'AbdmGateway::shareImmunizationBundle', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/share_wellness_bundle', 'AbdmGateway::shareWellnessBundle', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/share_health_document_bundle', 'AbdmGateway::shareHealthDocumentBundle', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/share_invoice_bundle', 'AbdmGateway::shareInvoiceBundle', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/invoice_fhir_preview', 'AbdmGateway::invoiceFhirPreview', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/share_invoice_source_bundle', 'AbdmGateway::shareInvoiceSourceBundle', ['filter' => $abdmPermFilter]); $routes->post('AbdmTaskBoard/perform_action', 'AbdmTaskBoard::performAction', ['filter' => $abdmPermFilter]); $routes->post('AbdmTaskBoard/performAction', 'AbdmTaskBoard::performAction', ['filter' => $abdmPermFilter]); $routes->get('Immunization', 'Immunization::index', ['filter' => 'permission:doctor_work.immunization.access']); $routes->get('Immunization/schedule_master', 'Immunization::scheduleMaster', ['filter' => 'permission:doctor_work.immunization.schedule-manage']); $routes->post('Immunization/sync_uip_master', 'Immunization::syncUipMaster', ['filter' => 'permission:doctor_work.immunization.schedule-manage']); $routes->post('Immunization/update_schedule/(:num)', 'Immunization::updateSchedule/$1', ['filter' => 'permission:doctor_work.immunization.schedule-manage']); $routes->get('Immunization/schedule', 'Immunization::schedule', ['filter' => 'permission:doctor_work.immunization.access']); $routes->get('Immunization/patient/(:num)', 'Immunization::patient/$1', ['filter' => 'permission:doctor_work.immunization.access']); $routes->post('Immunization/generate_patient_schedule/(:num)', 'Immunization::generatePatientSchedule/$1', ['filter' => 'permission:doctor_work.immunization.record-manage']); $routes->post('Immunization/complete/(:num)', 'Immunization::complete/$1', ['filter' => 'permission:doctor_work.immunization.record-manage']); $routes->post('AbdmGateway/push_health_record', 'AbdmGateway::pushHealthRecord', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/health_records_list', 'AbdmGateway::healthRecordsList', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/bridge_record_status/(:num)', 'AbdmGateway::bridgeRecordStatus/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/bridge_record_share/(:num)', 'AbdmGateway::bridgeRecordShare/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/bridge_record_link_share/(:num)', 'AbdmGateway::bridgeRecordLinkShare/$1', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/bridge_record_workflow_status/(:num)', 'AbdmGateway::bridgeRecordWorkflowStatus/$1', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/opd_running_token_status', 'AbdmGateway::opdRunningTokenStatus', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/gateway_status', 'AbdmGateway::gatewayStatus', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/bridge_records_list', 'AbdmGateway::bridgeRecordsList', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/hip_link_token', 'AbdmGateway::hipLinkToken', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/hip_link_carecontext', 'AbdmGateway::hipLinkCareContext', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/hip_patient_links', 'AbdmGateway::hipPatientLinks', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/hip_link_notify', 'AbdmGateway::hipLinkNotify', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/hip_sms_notify', 'AbdmGateway::hipSmsNotify', ['filter' => $abdmPermFilter]); $routes->get('AbdmGateway/hip_patient_care_contexts', 'AbdmGateway::hipPatientCareContexts', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/hip_patient_care_contexts', 'AbdmGateway::hipPatientCareContexts', ['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'); // M1 ABHA OTP flows (sync — requires eatria_bridge connector) $routes->post('AbdmGateway/abha_aadhaar_generate_otp', 'AbdmGateway::abhaAadhaarGenerateOtp', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/abha_aadhaar_verify_otp', 'AbdmGateway::abhaAadhaarVerifyOtp', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/abha_mobile_generate_otp', 'AbdmGateway::abhaMobileGenerateOtp', ['filter' => $abdmPermFilter]); $routes->post('AbdmGateway/abha_mobile_verify_otp', 'AbdmGateway::abhaMobileVerifyOtp', ['filter' => $abdmPermFilter]); // ABHA creation wizard — billing/patient ABHA Create tab $routes->post('abha/create/initiate', 'Abha::initiate', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/verify_otp', 'Abha::verifyOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/communication', 'Abha::communication', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/verify_comm_otp', 'Abha::verifyCommOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/mobile/search', 'Abha::findMobileSearch', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/mobile/request-otp', 'Abha::findMobileRequestOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/mobile/verify-otp', 'Abha::findMobileVerifyOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/mobile/select-account', 'Abha::selectAccount', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/aadhaar/request-otp', 'Abha::findAadhaarRequestOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/find/aadhaar/verify-otp', 'Abha::findAadhaarVerifyOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/confirm_patient', 'Abha::confirmPatient', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/address', 'Abha::address', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/create/address_suggestions', 'Abha::addressSuggestions', ['filter' => 'permission:abdm.abha.create']); $routes->get('abha/card/(:segment)', 'Abha::card/$1', ['filter' => 'permission:abdm.abha.create']); $routes->get('abha/hospital-card/(:num)', 'Abha::hospitalCard/$1', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/register/card', 'Abha::fetchOfficialCard', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/register/validate', 'Abha::validateAbha', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/register/qr_scan', 'Abha::qrScan', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/register/login/request-otp', 'Abha::loginRequestOtp', ['filter' => 'permission:abdm.abha.create']); $routes->post('abha/register/login/verify-otp', 'Abha::loginVerifyOtp', ['filter' => 'permission:abdm.abha.create']); $routes->get('abha/register/facility_qr', 'Abha::facilityQr', ['filter' => 'permission:abdm.abha.create']); $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]); // ABHA Filter & FHIR Inspector $routes->get('AbdmFhirInspector', 'AbdmFhirInspector::index', ['filter' => $abdmPermFilter]); $routes->get('AbdmFhirInspector/patient_data', 'AbdmFhirInspector::patientData', ['filter' => $abdmPermFilter]); $routes->get('AbdmFhirInspector/gateway_check', 'AbdmFhirInspector::gatewayCheck', ['filter' => $abdmPermFilter]); $routes->get('AbdmFhirInspector/preview_bundle', 'AbdmFhirInspector::previewBundle', ['filter' => $abdmPermFilter]); // ABDM Bridge Log viewer $routes->get('AbdmBridgeLog', 'AbdmBridgeLog::index', ['filter' => 'permission:abdm.access,abdm.taskboard.access,abdm.gateway.use,abdm.bridge_log.view']); $routes->get('AbdmBridgeLog/list', 'AbdmBridgeLog::list', ['filter' => 'permission:abdm.access,abdm.taskboard.access,abdm.gateway.use,abdm.bridge_log.view']); $routes->get('AbdmBridgeLog/detail/(:num)', 'AbdmBridgeLog::detail/$1', ['filter' => 'permission:abdm.access,abdm.taskboard.access,abdm.gateway.use,abdm.bridge_log.view']); $routes->get('AbdmSync/summary', 'AbdmSync::summary', ['filter' => $abdmPermFilter]); $routes->post('AbdmSync/replay_dead/(:num)', 'AbdmSync::replayDead/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmSync/enqueue_patient', 'AbdmSync::enqueuePatient', ['filter' => $abdmPermFilter]); $routes->post('AbdmSync/enqueue_record', 'AbdmSync::enqueueRecord', ['filter' => $abdmPermFilter]); // OPD Queue (ABDM Scan & Share + Walk-in tokens) $routes->get('AbdmOpdQueue', 'AbdmOpdQueue::index', ['filter' => $abdmPermFilter]); $routes->get('AbdmOpdQueue/list', 'AbdmOpdQueue::list', ['filter' => $abdmPermFilter]); $routes->get('AbdmOpdQueue/fetch', 'AbdmOpdQueue::fetchQueue', ['filter' => $abdmPermFilter]); $routes->post('AbdmOpdQueue/token', 'AbdmOpdQueue::createToken', ['filter' => $abdmPermFilter]); $routes->post('AbdmOpdQueue/token_status/(:num)', 'AbdmOpdQueue::updateTokenStatus/$1', ['filter' => $abdmPermFilter]); $routes->post('AbdmOpdQueue/process_token/(:num)', 'AbdmOpdQueue::processScannedToken/$1', ['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'); $routes->get('Opd_prescription/fhir_bundle_history/(:num)/(:num)', 'Opd_prescription::fhir_bundle_history/$1/$2'); $routes->get('Opd_prescription/fhir_bundle_preview/(:num)', 'Opd_prescription::fhir_bundle_preview/$1'); $routes->get('Opd_prescription/fhir_bundle_preview/(:num)/(:num)', 'Opd_prescription::fhir_bundle_preview/$1/$2'); $routes->post('Opd_prescription/fhir_bundle_submit', 'Opd_prescription::fhir_bundle_submit'); $routes->get('Opd_prescription/fhir_bundle_regenerate', 'Opd_prescription::fhir_bundle_regenerate_manual'); $routes->post('Opd_prescription/fhir_bundle_regenerate', 'Opd_prescription::fhir_bundle_regenerate'); $routes->post('Opd_prescription/fhir_complaint_recode', 'Opd_prescription::fhir_complaint_recode'); $routes->post('Opd_prescription/fhir_diagnosis_recode', 'Opd_prescription::fhir_diagnosis_recode'); $routes->get('Opd_prescription/complaints_search', 'Opd_prescription::complaints_search'); $routes->get('Opd_prescription/complaints_extract', 'Opd_prescription::complaints_extract'); $routes->get('Opd_prescription/section_recent_entries', 'Opd_prescription::section_recent_entries'); $routes->get('Opd_prescription/provisional_diagnosis_search', 'Opd_prescription::provisional_diagnosis_search'); $routes->get('Opd_prescription/diagnosis_search', 'Opd_prescription::provisional_diagnosis_search'); $routes->get('Opd_prescription/finding_exam_search', 'Opd_prescription::finding_exam_search'); $routes->get('Opd_prescription/get_complaints', 'Opd_prescription::get_complaints'); $routes->get('Opd_prescription/get_disease', 'Opd_prescription::get_disease'); $routes->get('Opd_prescription/get_finding_exam', 'Opd_prescription::get_finding_exam'); $routes->post('Opd_prescription/autotype_keyword_save', 'Opd_prescription::autotype_keyword_save'); $routes->get('Opd_prescription/autotype_keyword_list', 'Opd_prescription::autotype_keyword_list'); $routes->post('Opd_prescription/autotype_keyword_update', 'Opd_prescription::autotype_keyword_update'); $routes->post('Opd_prescription/autotype_keyword_remove', 'Opd_prescription::autotype_keyword_remove'); $routes->post('Opd_prescription/complaints_parse', 'Opd_prescription::complaints_parse'); $routes->post('Opd_prescription/complaints_ai_draft', 'Opd_prescription::complaints_ai_draft'); $routes->post('Opd_prescription/clinical_autotype', 'Opd_prescription::clinical_autotype'); $routes->post('Opd_prescription/ai_full_draft', 'Opd_prescription::ai_full_draft'); $routes->post('Opd_prescription/local_clinical_assist', 'Opd_prescription::local_clinical_assist'); $routes->post('Opd_prescription/section_template_save', 'Opd_prescription::section_template_save'); $routes->post('Opd_prescription/section_template_track_usage', 'Opd_prescription::section_template_track_usage'); $routes->get('Opd_prescription/section_template_list', 'Opd_prescription::section_template_list'); $routes->get('Opd_prescription/section_past_data', 'Opd_prescription::section_past_data'); $routes->get('Opd_prescription/template_workspace', 'Opd_prescription::template_workspace', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('doctor_work/document_workspace', 'DoctorDocument::workspace', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('doctor_work/patient_search', 'DoctorDocument::patient_search', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); // Legacy-compatible doctor document templates and issue flow. $routes->get('Doc_Admin/doc_list', 'DoctorDocument::doc_list', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Doc_Admin/docedit_load', 'DoctorDocument::docedit_load', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Doc_Admin/docedit_load/(:num)', 'DoctorDocument::docedit_load/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Doc_Admin/report_insert', 'DoctorDocument::report_insert', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Doc_Admin/report_update', 'DoctorDocument::report_update', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Doc_Admin/doc_input_list/(:num)', 'DoctorDocument::doc_input_list/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Doc_Admin/input_parameter_load/(:num)/(:num)', 'DoctorDocument::input_parameter_load/$1/$2', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Doc_Admin/input_parameter_add', 'DoctorDocument::input_parameter_add', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Doc_Admin/input_parameter_edit', 'DoctorDocument::input_parameter_edit', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/open_by_key', 'DoctorDocument::open_by_key', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/p_doc_record/(:num)', 'DoctorDocument::p_doc_record/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Document_Patient/create_doc', 'DoctorDocument::create_doc', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/re_create_doc/(:num)', 'DoctorDocument::re_create_doc/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/Pre_Data/(:num)', 'DoctorDocument::Pre_Data/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Document_Patient/Entry_Update', 'DoctorDocument::Entry_Update', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Document_Patient/update_doc_field/(:num)', 'DoctorDocument::update_doc_field/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/load_doc/(:num)', 'DoctorDocument::load_doc/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->post('Document_Patient/update_doc', 'DoctorDocument::update_doc', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/create_final/(:num)/(:num)', 'DoctorDocument::create_final/$1/$2', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Document_Patient/create_final/(:num)', 'DoctorDocument::create_final/$1', ['filter' => 'permission:doctor_work.template_workspace.access,doctor_work.access']); $routes->get('Opd_prescription/clinical_template_monitor', 'Opd_prescription::clinical_template_monitor'); $routes->get('Opd_prescription/clinical_template_usage_analytics', 'Opd_prescription::clinical_template_usage_analytics'); $routes->get('Opd_prescription/clinical_template_doctors', 'Opd_prescription::clinical_template_doctors'); $routes->post('Opd_prescription/clinical_template_update', 'Opd_prescription::clinical_template_update'); $routes->get('Opd_prescription/rx_group_panel', 'Opd_prescription::rx_group_panel', ['filter' => 'permission:doctor_work.rx_group.manage,doctor_work.access']); $routes->get('Opd_prescription/save_rx_group_list', 'Opd_prescription::save_rx_group_list'); $routes->get('Opd_prescription/save_rx_group_list/(:num)', 'Opd_prescription::save_rx_group_list/$1'); $routes->get('Opd_prescription/save_rx_group_edit/(:num)', 'Opd_prescription::save_rx_group_edit/$1'); $routes->get('Opd_prescription/rx_group_data', 'Opd_prescription::rx_group_data'); $routes->get('Opd_prescription/rx_group_get/(:num)', 'Opd_prescription::rx_group_get/$1'); $routes->post('Opd_prescription/rx_group_save', 'Opd_prescription::rx_group_save'); $routes->post('Opd_prescription/rx_group_apply_to_session', 'Opd_prescription::rx_group_apply_to_session'); $routes->get('Opd_prescription/rx_group_medicine/(:num)', 'Opd_prescription::rx_group_medicine/$1'); $routes->get('Opd_prescription/rx_group_medicine_list/(:num)', 'Opd_prescription::rx_group_medicine_list/$1'); $routes->get('Opd_prescription/rx_group_medicine_get/(:num)', 'Opd_prescription::rx_group_medicine_get/$1'); $routes->post('Opd_prescription/rx_group_medicine_save/(:num)', 'Opd_prescription::rx_group_medicine_save/$1'); $routes->post('Opd_prescription/rx_group_medicine_remove/(:num)', 'Opd_prescription::rx_group_medicine_remove/$1'); $routes->post('Opd_prescription/rx_group_delete/(:num)', 'Opd_prescription::rx_group_delete/$1'); $routes->get('Opd_prescription/rx_group_medicine_suggest', 'Opd_prescription::rx_group_medicine_suggest'); $routes->get('Opd_prescription/rx_group_generic_suggest', 'Opd_prescription::rx_group_generic_suggest'); $routes->get('Opd_prescription/rx_group_dose_masters', 'Opd_prescription::rx_group_dose_masters'); $routes->get('Opd_prescription/opd_medicince', 'Opd_prescription::opd_medicince', ['filter' => 'permission:doctor_work.medicine.manage,doctor_work.access']); $routes->get('Opd_prescription/opd_medicince_edit/(:num)', 'Opd_prescription::opd_medicince_edit/$1'); $routes->get('Opd_prescription/opd_medicince_data', 'Opd_prescription::opd_medicince_data'); $routes->get('Opd_prescription/opd_medicince_export', 'Opd_prescription::opd_medicince_export'); $routes->get('Opd_prescription/opd_medicince_company_suggest', 'Opd_prescription::opd_medicince_company_suggest'); $routes->get('Opd_prescription/opd_medicince_get/(:num)', 'Opd_prescription::opd_medicince_get/$1'); $routes->get('Opd_prescription/opd_medicince_snomed_lookup', 'Opd_prescription::opd_medicince_snomed_lookup'); $routes->post('Opd_prescription/opd_medicince_save', 'Opd_prescription::opd_medicince_save'); $routes->post('Opd_prescription/opd_medicince_ai_details', 'Opd_prescription::opd_medicince_ai_details'); $routes->post('Opd_prescription/opd_medicince_remove/(:num)', 'Opd_prescription::opd_medicince_remove/$1'); $routes->get('Opd_prescription/opd_medicince_duplicate_report', 'Opd_prescription::opd_medicince_duplicate_report'); $routes->post('Opd_prescription/opd_medicince_merge_duplicates', 'Opd_prescription::opd_medicince_merge_duplicates'); $routes->post('Opd_prescription/opd_medicince_autofix_duplicates', 'Opd_prescription::opd_medicince_autofix_duplicates'); $routes->get('Opd_prescription/opd_advice', 'Opd_prescription::opd_advice', ['filter' => 'permission:doctor_work.advice.manage,doctor_work.access']); $routes->get('Opd_prescription/opd_advice_edit/(:num)', 'Opd_prescription::opd_advice_edit/$1'); $routes->get('Opd_prescription/opd_advice_data', 'Opd_prescription::opd_advice_data'); $routes->get('Opd_prescription/opd_advice_get/(:num)', 'Opd_prescription::opd_advice_get/$1'); $routes->post('Opd_prescription/opd_advice_save', 'Opd_prescription::opd_advice_save'); $routes->post('Opd_prescription/opd_advice_translate_ai', 'Opd_prescription::opd_advice_translate_ai'); $routes->post('Opd_prescription/opd_advice_remove/(:num)', 'Opd_prescription::opd_advice_remove/$1'); $routes->post('Opd_prescription/scan_text_extract', 'Opd_prescription::scan_text_extract'); $routes->get('Opd_prescription/patient_scan_history/(:num)', 'Opd_prescription::patient_scan_history/$1'); $routes->get('Opd_prescription/advice_search', 'Opd_prescription::advice_search'); $routes->get('Opd_prescription/advice_list/(:num)', 'Opd_prescription::advice_list/$1'); $routes->get('Opd_prescription/advice_list/(:num)/(:num)', 'Opd_prescription::advice_list/$1/$2'); $routes->post('Opd_prescription/advice_add', 'Opd_prescription::advice_add'); $routes->post('Opd_prescription/advice_remove/(:num)', 'Opd_prescription::advice_remove/$1'); $routes->get('Opd_prescription/investigation_search', 'Opd_prescription::investigation_search'); $routes->get('Opd_prescription/investigation_shortcuts', 'Opd_prescription::investigation_shortcuts'); $routes->get('Opd_prescription/debug_investigation_fields', 'Opd_prescription::debug_investigation_fields'); $routes->get('Opd_prescription/investigation_list/(:num)', 'Opd_prescription::investigation_list/$1'); $routes->get('Opd_prescription/investigation_list/(:num)/(:num)', 'Opd_prescription::investigation_list/$1/$2'); $routes->post('Opd_prescription/investigation_add', 'Opd_prescription::investigation_add'); $routes->post('Opd_prescription/investigation_add_bulk', 'Opd_prescription::investigation_add_bulk'); $routes->post('Opd_prescription/investigation_remove/(:num)', 'Opd_prescription::investigation_remove/$1'); $routes->post('Opd_prescription/investigation_remove_bulk', 'Opd_prescription::investigation_remove_bulk'); $routes->get('Opd_prescription/opd_invest_master', 'Opd_prescription::opd_invest_master', ['filter' => 'permission:doctor_work.medicine.manage,doctor_work.access']); $routes->get('Opd_prescription/opd_invest_master_specs', 'Opd_prescription::opd_invest_master_specs'); $routes->get('Opd_prescription/opd_invest_master_data', 'Opd_prescription::opd_invest_master_data'); $routes->get('Opd_prescription/opd_invest_snomed_search', 'Opd_prescription::opd_invest_snomed_search'); $routes->get('Opd_prescription/opd_invest_master_get/(:num)', 'Opd_prescription::opd_invest_master_get/$1'); $routes->post('Opd_prescription/opd_invest_master_save', 'Opd_prescription::opd_invest_master_save'); $routes->post('Opd_prescription/opd_invest_master_remove/(:num)', 'Opd_prescription::opd_invest_master_remove/$1'); $routes->post('Opd_prescription/opd_invest_master_toggle_fav/(:num)', 'Opd_prescription::opd_invest_master_toggle_fav/$1'); $routes->post('Opd_prescription/opd_invest_master_backfill_category', 'Opd_prescription::opd_invest_master_backfill_category'); $routes->get('Opd_prescription/opd_invest_shortcuts_manager', 'Opd_prescription::opd_invest_shortcuts_manager', ['filter' => 'permission:doctor_work.medicine.manage,doctor_work.access']); $routes->get('Opd_prescription/opd_invest_shortcuts_all', 'Opd_prescription::opd_invest_shortcuts_all'); $routes->post('Opd_prescription/opd_invest_shortcuts_save_item', 'Opd_prescription::opd_invest_shortcuts_save_item'); $routes->get('Opd_prescription/opd_invest_profile_master', 'Opd_prescription::opd_invest_profile_master', ['filter' => 'permission:doctor_work.medicine.manage,doctor_work.access']); $routes->get('Opd_prescription/opd_invest_profile_master_list', 'Opd_prescription::opd_invest_profile_master_list'); $routes->get('Opd_prescription/opd_invest_profile_master_data', 'Opd_prescription::opd_invest_profile_master_data'); $routes->get('Opd_prescription/opd_invest_profile_master_get/(:num)', 'Opd_prescription::opd_invest_profile_master_get/$1'); $routes->post('Opd_prescription/opd_invest_profile_master_save', 'Opd_prescription::opd_invest_profile_master_save'); $routes->post('Opd_prescription/opd_invest_profile_master_remove/(:num)', 'Opd_prescription::opd_invest_profile_master_remove/$1'); // Clinical Master (Complaints + Diagnosis) $routes->get('Opd_prescription/clinical_master_workspace', 'Opd_prescription::clinical_master_workspace', ['filter' => 'permission:doctor_work.medicine.manage,doctor_work.access']); $routes->get('Opd_prescription/complaints_master_data', 'Opd_prescription::complaints_master_data'); $routes->get('Opd_prescription/complaints_master_get/(:num)', 'Opd_prescription::complaints_master_get/$1'); $routes->post('Opd_prescription/complaints_master_save', 'Opd_prescription::complaints_master_save'); $routes->post('Opd_prescription/complaints_master_remove/(:num)', 'Opd_prescription::complaints_master_remove/$1'); $routes->get('Opd_prescription/disease_master_data', 'Opd_prescription::disease_master_data'); $routes->get('Opd_prescription/disease_master_get/(:num)', 'Opd_prescription::disease_master_get/$1'); $routes->post('Opd_prescription/disease_master_save', 'Opd_prescription::disease_master_save'); $routes->post('Opd_prescription/disease_master_remove/(:num)', 'Opd_prescription::disease_master_remove/$1'); $routes->get('Opd_prescription/medicine_search', 'Opd_prescription::medicine_search'); $routes->get('Opd_prescription/medicine_substitutes', 'Opd_prescription::medicine_substitutes'); $routes->get('Opd_prescription/medicine_list/(:num)', 'Opd_prescription::medicine_list/$1'); $routes->get('Opd_prescription/vitals_get/(:num)', 'Opd_prescription::vitals_get/$1'); $routes->post('Opd_prescription/vitals_save', 'Opd_prescription::vitals_save'); $routes->post('Opd_prescription/medicine_add', 'Opd_prescription::medicine_add'); $routes->post('Opd_prescription/medicine_favorite_toggle', 'Opd_prescription::medicine_favorite_toggle'); $routes->post('Opd_prescription/medicine_update/(:num)', 'Opd_prescription::medicine_update/$1'); $routes->post('Opd_prescription/medicine_remove/(:num)', 'Opd_prescription::medicine_remove/$1'); // Legacy OPD prescription endpoints (old URLs, old data access) $routes->get('Opd_prescription/vital_data/(:num)', 'Opd_prescription::vital_data/$1'); $routes->get('Opd_prescription/get_remark/(:num)', 'Opd_prescription::get_remark/$1'); $routes->get('Opd_prescription/patient_remark/(:num)', 'Opd_prescription::patient_remark/$1'); $routes->get('Opd_prescription/show_profile_opd/(:num)', 'Opd_prescription::show_profile_opd/$1'); $routes->get('Opd_prescription/show_profile_opd/(:num)/(:num)', 'Opd_prescription::show_profile_opd/$1/$2'); $routes->get('Opd_prescription/show_old_Prescribed/(:num)/(:num)', 'Opd_prescription::show_old_Prescribed/$1/$2'); $routes->get('Opd_prescription/show_medical_item/(:num)', 'Opd_prescription::show_medical_item/$1'); $routes->get('Opd_prescription/prescribed_dose/(:num)/(:num)', 'Opd_prescription::prescribed_dose/$1/$2'); $routes->get('Invoice/list_req_payment', 'Invoice::list_req_payment', ['filter' => 'permission:billing.payment_request.view,billing.payment_request.manage']); $routes->get('Invoice/opdlist', 'Invoice::opdlist', ['filter' => 'permission:billing.access,billing.opd.edit']); $routes->get('Invoice/chargeslist', 'Invoice::chargeslist', ['filter' => 'permission:billing.charges.view,billing.access']); $routes->post('Invoice/getRequestTable', 'Invoice::getRequestTable', ['filter' => 'permission:billing.payment_request.view,billing.payment_request.manage']); $routes->get('Invoice/payment_form/(:num)', 'Invoice::payment_form/$1', ['filter' => 'permission:billing.payment_request.view,billing.payment_request.manage']); $routes->post('Invoice/req_payment_process', 'Invoice::req_payment_process', ['filter' => 'permission:billing.payment_request.manage']); $routes->get('Invoice/print_org_payment_invoice/(:num)', 'Invoice::print_org_payment_invoice/$1', ['filter' => 'permission:billing.payment_request.view,billing.payment_request.manage']); $routes->get('Invoice/list_refund', 'Invoice::list_refund', ['filter' => 'permission:billing.refund.view,billing.refund.manage']); $routes->post('Invoice/getRefundTable', 'Invoice::getRefundTable', ['filter' => 'permission:billing.refund.view,billing.refund.manage']); $routes->get('Invoice/refund_form/(:num)', 'Invoice::refund_form/$1', ['filter' => 'permission:billing.refund.view,billing.refund.manage']); $routes->post('Invoice/refund_process', 'Invoice::refund_process', ['filter' => 'permission:billing.refund.manage']); $routes->get('Lab_Admin/report_list', 'Setting\Template::report_list'); $routes->get('Lab_Admin/report_ultrasound_list/(:num)', 'Setting\Template::report_ultrasound_list/$1'); $routes->get('Lab_Admin/report_test_list/(:num)', 'Setting\Template::report_test_list/$1'); $routes->get('Lab_Admin/test_search_page/(:num)', 'Setting\Template::test_search_page/$1'); $routes->get('Lab_Admin/test_parameter_load/(:num)/(:num)', 'Setting\Template::test_parameter_load/$1/$2'); $routes->post('Lab_Admin/test_parameter_edit', 'Setting\Template::test_parameter_edit'); $routes->post('Lab_Admin/test_parameter_add', 'Setting\Template::test_parameter_add'); $routes->post('Lab_Admin/test_parameter_option_add', 'Setting\Template::test_parameter_option_add'); $routes->post('Lab_Admin/remove_test_option/(:num)/(:num)', 'Setting\Template::remove_test_option/$1/$2'); $routes->post('Lab_Admin/change_sort/(:num)/(:num)/(:num)/(:num)/(:num)', 'Setting\Template::change_sort/$1/$2/$3/$4/$5'); $routes->post('Lab_Admin/change_sort_item/(:num)/(:num)/(:num)/(:num)/(:num)', 'Setting\Template::change_sort_item/$1/$2/$3/$4/$5'); $routes->get('Lab_Admin/reportedit_load/(:num)', 'Setting\Template::reportedit_load/$1'); $routes->get('Lab_Admin/reportedit_ultrasound_load/(:num)/(:num)', 'Setting\Template::reportedit_ultrasound_load/$1/$2'); $routes->get('Lab_Admin/print_pdf_create/(:num)/(:num)/(:num)', 'Diagnosis::printPdfCreate/$1/$2/$3'); $routes->get('Lab_Admin/print_pdf_create/(:num)/(:num)/(:num)/(:num)', 'Diagnosis::printPdfCreate/$1/$2/$3/$4'); $routes->post('Lab_Admin/report_update', 'Setting\Template::report_update'); $routes->post('Lab_Admin/report_insert', 'Setting\Template::report_insert'); $routes->post('Lab_Admin/report_delete/(:num)', 'Setting\Template::report_delete/$1'); $routes->post('Lab_Admin/report_ultrasound_insert/(:num)', 'Setting\Template::report_ultrasound_insert/$1'); $routes->post('Lab_Admin/report_ultrasound_update/(:num)', 'Setting\Template::report_ultrasound_update/$1'); $routes->post('Lab_Admin/report_ultrasound_delete/(:num)/(:num)', 'Setting\Template::report_ultrasound_delete/$1/$2'); $routes->post('Lab_Admin/add_test_repo/(:num)/(:num)', 'Setting\Template::add_test_repo/$1/$2'); $routes->post('Lab_Admin/remove_test_item/(:num)/(:num)', 'Setting\Template::remove_test_item/$1/$2'); $routes->post('Lab_Admin/test_item_search', 'Setting\Template::test_item_search'); // LOINC Mapping Admin $routes->get('Lab_Admin/loinc_panel', 'Setting\Template::loincPanel'); $routes->post('Lab_Admin/loinc_sync', 'Setting\Template::loincSync'); $routes->post('Lab_Admin/loinc_update', 'Setting\Template::loincUpdate'); $routes->get('Lab_Admin/pathology_masters_search', 'Setting\Template::pathologyMastersSearch'); $routes->get('Lab_Admin/pathology_component_masters_search', 'Setting\Template::pathologyComponentMastersSearch'); $routes->get('Lab_Admin/pathology_master_template', 'Setting\Template::pathologyMasterTemplate'); $routes->post('Lab_Admin/pathology_master_apply_panel', 'Setting\Template::pathologyMasterApplyPanel'); $routes->post('Lab_Admin/pathology_master_add_component', 'Setting\Template::pathologyMasterAddComponent'); $routes->get('Lab_Admin/pathology_bridge_debug', 'Setting\Template::pathologyBridgeDebug'); $routes->match(['GET', 'POST'], 'setting/template/discharge_templates', 'Setting\Template::discharge_templates'); $routes->post('setting/template/discharge_templates_seed', 'Setting\Template::discharge_templates_seed'); $routes->get('setting/template/discharge_template_get/(:num)', 'Setting\Template::discharge_template_get/$1'); $routes->match(['GET', 'POST'], 'setting/template/discharge_templates/delete/(:num)', 'Setting\Template::discharge_template_delete/$1'); $routes->get('Ipd_discharge/print_template_builder', 'Ipd_discharge::print_template_builder', ['filter' => 'permission:template.discharge,ipd_discharge.manage']); $routes->post('Ipd_discharge/discharge_template_rename_ajax', 'Ipd_discharge::discharge_template_rename_ajax', ['filter' => 'permission:template.discharge,ipd_discharge.manage']); $routes->post('Ipd_discharge/discharge_template_set_abdm_ajax', 'Ipd_discharge::discharge_template_set_abdm_ajax', ['filter' => 'permission:template.discharge,ipd_discharge.manage']); $routes->post('Ipd_discharge/discharge_template_set_default_ajax', 'Ipd_discharge::discharge_template_set_default_ajax', ['filter' => 'permission:template.discharge,ipd_discharge.manage']); $routes->match(['GET', 'POST'], 'setting/template/ipd_document_templates', 'Setting\Template::ipd_document_templates'); $routes->get('setting/template/ipd_document_templates/delete/(:num)', 'Setting\Template::ipd_document_template_delete/$1'); $routes->match(['GET', 'POST'], 'setting/template/diagnosis_print_settings', 'Setting\Template::diagnosis_print_settings'); $routes->match(['GET', 'POST'], 'setting/template/diagnosis_print_settings/(:num)', 'Setting\Template::diagnosis_print_settings/$1'); $routes->match(['GET', 'POST'], 'setting/template/document_print_settings', 'Setting\Template::document_print_settings'); $routes->get('Opdcase/addopd/(:num)', 'Opdcase::addopd/$1'); $routes->post('Opdcase/showfee', 'Opdcase::showfee'); $routes->post('Opdcase/confirm_opd', 'Opdcase::confirm_opd'); $routes->get('Opdcase/invoice/(:num)', 'Opd::invoice/$1'); $routes->get('Report', 'Report::index', ['filter' => 'permission:reports.access']); $routes->get('Report/index', 'Report::index', ['filter' => 'permission:reports.access']); $routes->get('report', 'Report::index', ['filter' => 'permission:reports.access']); $routes->get('report/index', 'Report::index', ['filter' => 'permission:reports.access']); $reportsCollectionFilter = 'permission:reports.collection.view,reports.access'; $routes->get('Report/collection_report', 'Report::collection_report', ['filter' => $reportsCollectionFilter]); $routes->get('Report/report_opd_total', 'Report::report_opd_total', ['filter' => $reportsCollectionFilter]); $routes->get('Report/opd_total_data/(:segment)/(:segment)/(:segment)/(:segment)', 'Report::opd_total_data/$1/$2/$3/$4', ['filter' => $reportsCollectionFilter]); $routes->get('Report/opd_total_data/(:segment)/(:segment)/(:segment)/(:segment)/(:num)', 'Report::opd_total_data/$1/$2/$3/$4/$5', ['filter' => $reportsCollectionFilter]); $routes->get('Report/report_opd_patient_list', 'Report::report_opd_patient_list', ['filter' => $reportsCollectionFilter]); $routes->get('Report/opd_patient_list_data/(:segment)/(:segment)/(:segment)', 'Report::opd_patient_list_data/$1/$2/$3', ['filter' => $reportsCollectionFilter]); $routes->get('Report/opd_patient_list_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::opd_patient_list_data/$1/$2/$3/$4', ['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)/(: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)/(:segment)', 'Report::report_total_payment_total_amount_show/$1/$2/$3/$4', ['filter' => $reportsCollectionFilter]); $routes->get('Report/report_total_payment_total_amount_show/(:segment)/(:segment)/(:segment)/(:segment)/(:num)', 'Report::report_total_payment_total_amount_show/$1/$2/$3/$4/$5', ['filter' => $reportsCollectionFilter]); $routes->get('Report/old_payment_received_report', 'Report::old_payment_received_report', ['filter' => $reportsCollectionFilter]); $routes->get('Report/old_payment_received_report_data', 'Report::old_payment_received_report_data', ['filter' => $reportsCollectionFilter]); $routes->get('Report/old_payment_received_report_data/(:segment)', 'Report::old_payment_received_report_data/$1', ['filter' => $reportsCollectionFilter]); $routes->get('Report/old_payment_received_report_data/(:segment)/(:num)', 'Report::old_payment_received_report_data/$1/$2', ['filter' => $reportsCollectionFilter]); $reportsIpdCensusFilter = 'permission:reports.ipd_census.view'; $routes->get('Report/ipd_census_report', 'Report::ipd_census_report', ['filter' => $reportsIpdCensusFilter]); $routes->get('Report/ipd_census_data/(:segment)/(:segment)/(:segment)/(:segment)', 'Report::ipd_census_data/$1/$2/$3/$4', ['filter' => $reportsIpdCensusFilter]); $routes->get('Report/ipd_census_data/(:segment)/(:segment)/(:segment)/(:segment)/(:num)', 'Report::ipd_census_data/$1/$2/$3/$4/$5', ['filter' => $reportsIpdCensusFilter]); $reportsIpdSurgeryFilter = 'permission:reports.ipd_surgery.view'; $routes->get('Report/ipd_surgery_report', 'Report::ipd_surgery_report', ['filter' => $reportsIpdSurgeryFilter]); $routes->get('Report/ipd_surgery_data/(:segment)/(:segment)/(:segment)', 'Report::ipd_surgery_data/$1/$2/$3', ['filter' => $reportsIpdSurgeryFilter]); $routes->get('Report/ipd_surgery_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::ipd_surgery_data/$1/$2/$3/$4', ['filter' => $reportsIpdSurgeryFilter]); $routes->get('Report/billing_operations_report', 'Report::billing_operations_report', ['filter' => 'permission:reports.billing_operations.view']); $routes->get('Report/billing_operations_report_data/(:segment)/(:segment)', 'Report::billing_operations_report_data/$1/$2', ['filter' => 'permission:reports.billing_operations.view']); $routes->get('Report/billing_operations_report_data/(:segment)/(:segment)/(:num)', 'Report::billing_operations_report_data/$1/$2/$3', ['filter' => 'permission:reports.billing_operations.view']); $routes->get('Report/document_list', 'Report::document_list', ['filter' => 'permission:reports.document_issue.view']); $routes->get('Report/document_list_data/(:segment)/(:num)', 'Report::document_list_data/$1/$2', ['filter' => 'permission:reports.document_issue.view']); $routes->get('Report/document_list_data/(:segment)/(:num)/(:num)', 'Report::document_list_data/$1/$2/$3', ['filter' => 'permission:reports.document_issue.view']); // Legacy Report5 compatibility for Document Issue Report. $routes->get('Report5/document_list', 'Report::document_list', ['filter' => 'permission:reports.document_issue.view']); $routes->get('Report5/document_list_data/(:segment)/(:num)', 'Report::document_list_data/$1/$2', ['filter' => 'permission:reports.document_issue.view']); $routes->get('Report5/document_list_data/(:segment)/(:num)/(:num)', 'Report::document_list_data/$1/$2/$3', ['filter' => 'permission:reports.document_issue.view']); $routes->get('Report/diagnosis_report', 'Report::diagnosis_report', ['filter' => 'permission:diagnosis.report.view,diagnosis.access']); $routes->get('Report/diagnosis_report_data/(:segment)', 'Report::diagnosis_report_data/$1', ['filter' => 'permission:diagnosis.report.view,diagnosis.access']); $routes->get('Report/diagnosis_report_data/(:segment)/(:segment)', 'Report::diagnosis_report_data/$1/$2', ['filter' => 'permission:diagnosis.report.view,diagnosis.access']); $routes->get('Report/diagnosis_report_data/(:segment)/(:segment)/(:segment)', 'Report::diagnosis_report_data/$1/$2/$3', ['filter' => 'permission:diagnosis.report.view,diagnosis.access']); $routes->get('Report/reconciliation_mismatch_report', 'Report::reconciliation_mismatch_report'); $routes->get('Report/reconciliation_mismatch_report/(:segment)', 'Report::reconciliation_mismatch_report/$1'); $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 $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', ['filter' => $reportsInsuranceFilter]); $routes->get('Report4/echs_opd_list_main', 'Report::echs_opd_list_main', ['filter' => $reportsInsuranceFilter]); $routes->get('Report4/echs_ipd_list_data/(:segment)/(:segment)/(:segment)', 'Report::echs_ipd_list_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]); $routes->get('Report4/echs_ipd_list_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::echs_ipd_list_data/$1/$2/$3/$4', ['filter' => $reportsInsuranceFilter]); $routes->get('Report4/echs_opd_list_data/(:segment)/(:segment)/(:segment)', 'Report::echs_opd_list_data/$1/$2/$3', ['filter' => $reportsInsuranceFilter]); $routes->get('Report4/echs_opd_list_data/(:segment)/(:segment)/(:segment)/(:num)', 'Report::echs_opd_list_data/$1/$2/$3/$4', ['filter' => $reportsInsuranceFilter]); // Organization Packing Routes $routes->get('org-packing', 'OrgPacking::index'); $routes->post('org-packing/search', 'OrgPacking::search'); $routes->get('org-packing/create', 'OrgPacking::create'); $routes->post('org-packing/store', 'OrgPacking::store'); $routes->get('org-packing/edit/(:num)', 'OrgPacking::edit/$1'); $routes->post('org-packing/update/(:num)', 'OrgPacking::update/$1'); $routes->post('org-packing/add-case/(:num)/(:num)', 'OrgPacking::addCase/$1/$2'); $routes->post('org-packing/remove-case/(:num)/(:num)', 'OrgPacking::removeCase/$1/$2'); $routes->get('org-packing/print/(:num)', 'OrgPacking::printList/$1'); // API endpoint for Select2 case search $routes->post('api/search-org-cases', 'OrgPacking::searchCases'); // Diagnosis Routes $routes->get('diagnosis', 'Diagnosis::index', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/pathology', 'Diagnosis::pathology', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/biopsy', 'Diagnosis::biopsy', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/ultrasound', 'Diagnosis::ultrasound', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/echo', 'Diagnosis::echo', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/xray', 'Diagnosis::xray', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/mri', 'Diagnosis::mri', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/ctscan', 'Diagnosis::ctscan', ['filter' => 'permission:diagnosis.access']); $routes->post('diagnosis/search-lab', 'Diagnosis::searchLab'); $routes->post('diagnosis/search-lab-srno', 'Diagnosis::searchLabBySrno'); $routes->post('diagnosis/search-lab-labno', 'Diagnosis::searchLabByLabno'); $routes->get('diagnosis/test-data', 'Diagnosis::testData'); $routes->get('diagnosis/select-lab-invoice/(:num)/(:num)', 'Diagnosis::selectLabInvoicePath/$1/$2'); $routes->get('diagnosis/lab-date-show/(:num)/(:num)', 'Diagnosis::labDateShow/$1/$2'); $routes->get('diagnosis/test-list/(:num)/(:num)', 'Diagnosis::testList/$1/$2'); $routes->get('diagnosis/edit-test-data/(:num)', 'Diagnosis::editTestData/$1'); $routes->post('diagnosis/update-test-value', 'Diagnosis::updateTestValue'); $routes->post('diagnosis/create-report/(:num)', 'Diagnosis::createReport/$1'); $routes->post('diagnosis/create-report-xray/(:num)', 'Diagnosis::createReportXray/$1'); $routes->get('diagnosis/open-report-editor/(:num)', 'Diagnosis::openReportEditorPage/$1'); $routes->get('diagnosis/show-report-final/(:num)', 'Diagnosis::showReportFinal/$1'); $routes->get('diagnosis/show-report-final-xray/(:num)', 'Diagnosis::showReportFinalXray/$1'); $routes->get('diagnosis/print-single-report/(:num)', 'Diagnosis::printSingleReport/$1'); $routes->post('diagnosis/final-update/(:num)', 'Diagnosis::finalUpdate/$1'); $routes->post('diagnosis/final-update-xray/(:num)', 'Diagnosis::finalUpdateXray/$1'); $routes->post('diagnosis/confirm-report/(:num)', 'Diagnosis::confirmReport/$1'); $routes->post('diagnosis/confirm-report-xray/(:num)', 'Diagnosis::confirmReportXray/$1'); // Editor JS compatibility aliases $routes->post('diagnosis/update-report/(:num)', 'Diagnosis::finalUpdateXray/$1'); $routes->post('diagnosis/report-verify/(:num)', 'Diagnosis::confirmReportXray/$1'); $routes->match(['GET', 'POST'], 'diagnosis/get-template-xray/(:num)', 'Diagnosis::getTemplateXray/$1'); $routes->post('diagnosis/remove-test/(:num)', 'Diagnosis::removeTest/$1'); $routes->post('diagnosis/update-combine-report', 'Diagnosis::updateCombineReport'); $routes->post('diagnosis/report-compile/(:num)/(:num)', 'Diagnosis::reportCompile/$1/$2'); $routes->get('diagnosis/compiled-pdf-links/(:num)/(:num)', 'Diagnosis::compiledPdfLinks/$1/$2'); $routes->post('diagnosis/upload-report-file', 'Diagnosis::uploadReportFile'); $routes->get('diagnosis/report-file-list/(:num)/(:num)', 'Diagnosis::reportFileList/$1/$2'); $routes->get('diagnosis/report-file-list/(:num)/(:num)/(:num)', 'Diagnosis::reportFileList/$1/$2/$3'); $routes->get('diagnosis/imaging-upload-gallery/(:num)/(:num)/(:num)', 'Diagnosis::imagingUploadGallery/$1/$2/$3'); $routes->get('diagnosis/imaging-dicom-preview/(:num)', 'Diagnosis::imagingDicomPreview/$1'); $routes->post('diagnosis/imaging-ai-diagnosis/(:num)', 'Diagnosis::imagingAiDiagnosis/$1'); $routes->get('diagnosis/select-lab-radiology/(:num)/(:num)', 'Diagnosis::selectLabRadiology/$1/$2'); $routes->get('diagnosis/print-pdf-create/(:num)/(:num)/(:num)', 'Diagnosis::printPdfCreate/$1/$2/$3'); $routes->get('diagnosis/print-pdf-create/(:num)/(:num)/(:num)/(:num)', 'Diagnosis::printPdfCreate/$1/$2/$3/$4'); $routes->post('diagnosis/sample-collection/(:num)/(:num)', 'Diagnosis::sampleCollection/$1/$2'); $routes->post('diagnosis/update-lab-timing', 'Diagnosis::updateLabTiming'); $routes->post('diagnosis/update-lab-no/(:num)', 'Diagnosis::updateLabNo/$1'); $routes->post('diagnosis/ai-extract-report-values', 'Diagnosis::aiExtractLabReportValues'); $routes->get('diagnosis/ai-extracted-values/(:num)/(:num)', 'Diagnosis::aiExtractedValues/$1/$2'); $routes->post('diagnosis/ai-verify-extracted-values/(:num)', 'Diagnosis::aiVerifyExtractedValues/$1'); // Legacy Lab_Report compatibility $routes->get('Lab_Report/lab_master', 'Diagnosis::labMaster'); $routes->get('Lab_Report/lab_path/(:num)', 'Diagnosis::labPathLegacy/$1'); $routes->post('Lab_Report/search_lab_4/(:num)', 'Diagnosis::searchLab/$1'); $routes->post('Lab_Report/search_lab_4_srno/(:num)', 'Diagnosis::searchLabBySrno/$1'); $routes->post('Lab_Report/search_lab_4_labno/(:num)', 'Diagnosis::searchLabByLabno/$1'); $routes->get('Lab_Report/select_lab_invoice/(:num)/(:num)', 'Diagnosis::selectLabInvoicePath/$1/$2'); $routes->get('Lab_Report/select_lab_invoice_path/(:num)/(:num)', 'Diagnosis::selectLabInvoicePath/$1/$2'); $routes->get('Lab_Report/lab_date_show/(:num)/(:num)', 'Diagnosis::labDateShow/$1/$2'); $routes->get('Lab_Report/test_list/(:num)/(:num)', 'Diagnosis::testList/$1/$2'); $routes->get('Lab_Report/xray_test_list/(:num)/(:num)', 'Diagnosis::testList/$1/$2'); $routes->get('Lab_Report/lab_tab_1_process/(:num)/(:num)', 'Diagnosis::labTab1Process/$1/$2'); $routes->get('Lab_Report/report_file_list/(:num)/(:num)', 'Diagnosis::reportFileList/$1/$2'); $routes->get('Lab_Report/report_file_list/(:num)/(:num)/(:num)', 'Diagnosis::reportFileList/$1/$2/$3'); $routes->get('Lab_Report/imaging_upload_gallery/(:num)/(:num)/(:num)', 'Diagnosis::imagingUploadGallery/$1/$2/$3'); $routes->post('Lab_Report/imaging_ai_diagnosis/(:num)', 'Diagnosis::imagingAiDiagnosis/$1'); $routes->get('Lab_Report/select_lab_radiology/(:num)/(:num)', 'Diagnosis::selectLabRadiology/$1/$2'); $routes->match(['GET', 'POST'], 'Lab_Report/create_report_xray/(:num)', 'Diagnosis::createReportXray/$1'); $routes->get('Lab_Report/show_report_final/(:num)', 'Diagnosis::showReportFinalXray/$1'); $routes->match(['GET', 'POST'], 'Lab_Report/get_template_xray/(:num)', 'Diagnosis::getTemplateXray/$1'); $routes->match(['GET', 'POST'], 'Lab_Report/Final_Update_xray/(:num)', 'Diagnosis::finalUpdateXray/$1'); $routes->match(['GET', 'POST'], 'Lab_Report/confirm_report_xray/(:num)', 'Diagnosis::confirmReportXray/$1'); // Legacy URL compatibility $routes->get('Ocasemaster/newcase/(:num)/(:num)', 'Billing\\CaseMaster::newcase/$1/$2'); $routes->get('Ocasemaster/newcase/(:num)/(:num)/(:num)', 'Billing\\CaseMaster::newcase/$1/$2/$3'); $routes->get('Ocasemaster/open_case/(:num)', 'Billing\\CaseMaster::open_case/$1'); $routes->get('Ocasemaster/open_case/(:num)/(:num)', 'Billing\\CaseMaster::open_case/$1/$2'); $routes->post('Ocasemaster/create', 'Billing\\CaseMaster::create'); $routes->post('Ocasemaster/update', 'Billing\\CaseMaster::update'); $routes->get('Ocasemaster/addPathTest/(:num)', 'Billing\\CaseMaster::addPathTest/$1'); $routes->post('Orgcase/search', 'Billing\\CaseMaster::search'); $routes->get('Orgcase/search_all', 'Billing\\CaseMaster::search_all'); $routes->get('Orgcase/case_invoice/(:segment)', 'Billing\\CaseMaster::case_invoice/$1'); $routes->get('Orgcase/case_invoice/(:segment)/(:num)/(:num)/(:num)', 'Billing\\CaseMaster::case_invoice/$1/$2/$3/$4'); $routes->get('Orgcase/case_invoice_ipd/(:num)', 'Billing\\CaseMaster::case_invoice_ipd/$1'); $routes->post('Orgcase/ORG_info', 'Billing\\CaseMaster::ORG_info'); $routes->post('Orgcase/update_itemrateqty', 'Billing\\CaseMaster::update_itemrateqty'); $routes->post('Orgcase/update_status', 'Billing\\CaseMaster::update_status'); $routes->post('Orgcase/org_contingent_update', 'Billing\\CaseMaster::org_contingent_update'); $routes->get('Orgcase/case_invoice_print/(:num)', 'Billing\\CaseMaster::case_invoice_print/$1'); $routes->post('Orgcase/getCaseTable', 'Billing\\CaseMaster::getCaseTable'); $routes->get('Orgcase/contingent_bill/(:num)', 'Billing\\CaseMaster::contingent_bill/$1'); $routes->get('Orgcase/contingent_bill/(:num)/(:num)', 'Billing\\CaseMaster::contingent_bill/$1/$2'); $routes->get('Orgcase/create_contingent_bill/(:num)', 'Billing\\CaseMaster::create_contingent_bill/$1'); $routes->post('Orgcase/org_confirm_payment', 'Billing\\CaseMaster::org_confirm_payment'); $routes->get('Orgcase/org_payment_request', 'Billing\\CaseMaster::org_payment_request'); $routes->get('Orgcase/load_model_box/(:segment)', 'Billing\\CaseMaster::load_model_box/$1'); $routes->post('Orgcase/payment_request', 'Billing\\CaseMaster::payment_request'); $routes->post('Orgcase/refund_request', 'Billing\\CaseMaster::refund_request'); $routes->get('Patient/person_record/(:num)', 'Patient::person_record/$1'); $routes->get('Patient/person_record/(:num)/(:num)', 'Patient::person_record/$1/$2'); $routes->get('Patient/show_cards/(:num)', 'Patient::show_cards/$1'); $routes->get('Patient/show_cards/(:num)/(:num)', 'Patient::show_cards/$1/$2'); $routes->post('Patient/update_card', 'Patient::update_card'); $routes->post('Patient/update_aadhar', 'Patient::update_aadhar'); $routes->post('Patient/create', 'Patient::create'); $routes->post('Patient/check_abha_unique', 'Patient::check_abha_unique'); $routes->post('Patient/check_aadhaar_unique', 'Patient::check_aadhaar_unique'); $routes->post('OcasePathLap/list_pathtest_bytype', 'OcasePathLap::list_pathtest_bytype'); $routes->post('OcasePathLap/get_echs_id', 'OcasePathLap::get_echs_id'); $routes->post('OcasePathLap/update_refer_doc', 'OcasePathLap::update_refer_doc'); $routes->get('OcasePathLap/showinvoice/(:num)', 'OcasePathLap::showinvoice/$1'); $routes->post('OcasePathLap/showitem/(:num)', 'OcasePathLap::showitem/$1'); $routes->post('OcasePathLap/confirm_payment', 'OcasePathLap::confirm_payment'); $routes->get('OcasePathLap/invoice_print/(:num)', 'OcasePathLap::invoice_print/$1'); $routes->get('OcasePathLap/addPathTest/(:num)/(:num)', 'Billing\\CaseMaster::addPathTest/$1'); $routes->group('setting', static function($routes) { $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', ['filter' => $settingsAdminFilter]); $routes->get('admin/user-management/new', 'Setting\\UserManagement::create', ['filter' => 'permission:users.create,users.manage-admins']); $routes->post('admin/user-management/new', 'Setting\\UserManagement::store', ['filter' => ['permission:users.create,users.manage-admins', 'csrf']]); $routes->get('admin/user-management/edit/(:num)', 'Setting\\UserManagement::edit/$1', ['filter' => 'permission:users.edit,users.manage-admins']); $routes->post('admin/user-management/edit/(:num)', 'Setting\\UserManagement::update/$1', ['filter' => ['permission:users.edit,users.manage-admins', 'csrf']]); $routes->get('admin/user-management/reset-password/(:num)', 'Setting\\UserManagement::resetPasswordForm/$1', ['filter' => 'permission:users.edit,users.manage-admins']); $routes->post('admin/user-management/reset-password/(:num)', 'Setting\\UserManagement::resetPassword/$1', ['filter' => ['permission:users.edit,users.manage-admins', 'csrf']]); $routes->get('admin/user-management/permissions', 'Setting\\UserManagement::permissions', ['filter' => 'permission:users.manage-admins']); $routes->post('admin/user-management/permissions', 'Setting\\UserManagement::savePermissions', ['filter' => ['permission:users.manage-admins', 'csrf']]); $routes->get('admin/user-management/sessions', 'Setting\\UserManagement::sessions', ['filter' => 'permission:users.edit,users.manage-admins']); $routes->post('admin/user-management/sessions/force-logout/(:num)', 'Setting\\UserManagement::forceLogout/$1', ['filter' => ['permission:users.edit,users.manage-admins', 'csrf']]); $routes->post('admin/user-management/delete/(:num)', 'Setting\\UserManagement::delete/$1', ['filter' => ['permission:users.delete,users.manage-admins', 'csrf']]); $routes->post('admin/user-management/toggle-status/(:num)', 'Setting\\UserManagement::toggleStatus/$1', ['filter' => ['permission:users.edit,users.manage-admins', 'csrf']]); $routes->get('admin/roles', 'Setting\\RoleManagement::index', ['filter' => 'permission:users.manage-admins']); $routes->get('admin/roles/new', 'Setting\\RoleManagement::create', ['filter' => 'permission:users.manage-admins']); $routes->post('admin/roles', 'Setting\\RoleManagement::store', ['filter' => ['permission:users.manage-admins', 'csrf']]); $routes->get('admin/roles/edit/(:num)', 'Setting\\RoleManagement::edit/$1', ['filter' => 'permission:users.manage-admins']); $routes->post('admin/roles/edit/(:num)', 'Setting\\RoleManagement::update/$1', ['filter' => ['permission:users.manage-admins', 'csrf']]); $routes->post('admin/roles/status/(:num)', 'Setting\\RoleManagement::status/$1', ['filter' => ['permission:users.manage-admins', 'csrf']]); $routes->post('admin/roles/delete/(:num)', 'Setting\\RoleManagement::delete/$1', ['filter' => ['permission:users.manage-admins', 'csrf']]); $routes->get('admin/ai-settings', 'Setting\\AiSettings::index'); $routes->post('admin/ai-settings/save', 'Setting\\AiSettings::save'); $routes->post('admin/ai-settings/test', 'Setting\\AiSettings::test'); $routes->post('admin/ai-settings/usage', 'Setting\\AiSettings::usage'); $routes->get('admin/abdm-gateway', 'Setting\\AbdmGatewaySettings::index', ['filter' => $settingsAdminFilter]); $routes->post('admin/abdm-gateway/save', 'Setting\\AbdmGatewaySettings::save', ['filter' => $settingsAdminFilter]); $routes->post('admin/abdm-gateway/test', 'Setting\\AbdmGatewaySettings::testConnection', ['filter' => $settingsAdminFilter]); $routes->get('admin/abdm-report-doctors', 'Setting\\AbdmReportDoctorSettings::index', ['filter' => $settingsAdminFilter]); $routes->post('admin/abdm-report-doctors/save', 'Setting\\AbdmReportDoctorSettings::save', ['filter' => $settingsAdminFilter]); $routes->get('admin/ipd-examination-fields', 'Setting\IpdExaminationFields::index', ['filter' => 'permission:ipd_discharge.master.manage']); $routes->post('admin/ipd-examination-fields/save', 'Setting\IpdExaminationFields::save', ['filter' => ['permission:ipd_discharge.master.manage', 'csrf']]); $routes->post('admin/ipd-examination-fields/toggle/(:num)', 'Setting\IpdExaminationFields::toggle/$1', ['filter' => ['permission:ipd_discharge.master.manage', 'csrf']]); $routes->get('admin/hospital-profile', 'Setting\\HospitalProfile::index'); $routes->get('admin/system-ops', 'SystemOps::index', ['filter' => $settingsAdminFilter]); $routes->get('admin/system-ops/panel', 'SystemOps::panel', ['filter' => $settingsAdminFilter]); $routes->get('admin/system-ops/diagnose', 'SystemOps::diagnose', ['filter' => $settingsAdminFilter]); $routes->post('admin/system-ops/updateDirect', 'SystemOps::updateDirect', ['filter' => $settingsAdminFilter]); $routes->post('admin/hospital-profile/save', 'Setting\\HospitalProfile::save'); $routes->post('admin/hospital-profile/delete-logo', 'Setting\\HospitalProfile::deleteLogo'); $routes->post('admin/hospital-profile/reset', 'Setting\\HospitalProfile::reset'); $routes->get('admin/doctor', 'Setting\\Doctor::index'); $routes->get('admin/doctor/new', 'Setting\\Doctor::create'); $routes->post('admin/doctor/new', 'Setting\\Doctor::store'); $routes->get('admin/doctor/(:num)', 'Setting\\Doctor::doctorRecord/$1'); $routes->post('admin/doctor/update', 'Setting\\Doctor::updateRecord'); $routes->post('admin/doctor/spec', 'Setting\\Doctor::doctorRecordSpec'); $routes->post('admin/doctor/fee/add', 'Setting\\Doctor::addFee'); $routes->post('admin/doctor/fee/remove', 'Setting\\Doctor::removeFee'); $routes->post('admin/doctor/ipd-fee/add', 'Setting\\Doctor::addIpdFee'); $routes->post('admin/doctor/ipd-fee/remove', 'Setting\\Doctor::removeIpdFee'); $routes->post('admin/doctor/regenerate-device-code', 'Setting\\Doctor::regenerateDeviceCode'); $routes->get('admin/doctor/specs', 'Setting\\Doctor::specs'); $routes->post('admin/doctor/specs/create', 'Setting\\Doctor::storeSpec'); $routes->post('admin/doctor/specs/update', 'Setting\\Doctor::updateSpec'); $routes->post('admin/doctor/specs/delete', 'Setting\\Doctor::deleteSpec'); $routes->get('admin/doctor/ipd-fee-types', 'Setting\\Doctor::ipdFeeTypes'); $routes->post('admin/doctor/ipd-fee-types/create', 'Setting\\Doctor::storeIpdFeeType'); $routes->post('admin/doctor/ipd-fee-types/update', 'Setting\\Doctor::updateIpdFeeType'); $routes->post('admin/doctor/ipd-fee-types/delete', 'Setting\\Doctor::deleteIpdFeeType'); $routes->get('admin/insurance', 'Setting\\Insurance::index'); $routes->get('admin/insurance/new', 'Setting\\Insurance::create'); $routes->post('admin/insurance/new', 'Setting\\Insurance::store'); $routes->get('admin/insurance/(:num)', 'Setting\\Insurance::record/$1'); $routes->post('admin/insurance/update', 'Setting\\Insurance::update'); $routes->get('admin/bank', 'Setting\\Bank::index'); $routes->post('admin/bank/create', 'Setting\\Bank::createBank'); $routes->post('admin/bank/create-with-source', 'Setting\\Bank::createBankWithSource'); $routes->post('admin/bank/update', 'Setting\\Bank::updateBank'); $routes->post('admin/bank/delete', 'Setting\\Bank::deleteBank'); $routes->get('admin/bank/sources/(:num)', 'Setting\\Bank::sources/$1'); $routes->post('admin/bank/source/create', 'Setting\\Bank::createSource'); $routes->post('admin/bank/source/update', 'Setting\\Bank::updateSource'); $routes->post('admin/bank/source/delete', 'Setting\\Bank::deleteSource'); $routes->get('admin/medical-bank', 'Setting\\MedicalBank::index'); $routes->post('admin/medical-bank/create', 'Setting\\MedicalBank::createBank'); $routes->post('admin/medical-bank/create-with-source', 'Setting\\MedicalBank::createBankWithSource'); $routes->post('admin/medical-bank/update', 'Setting\\MedicalBank::updateBank'); $routes->post('admin/medical-bank/delete', 'Setting\\MedicalBank::deleteBank'); $routes->get('admin/medical-bank/sources/(:num)', 'Setting\\MedicalBank::sources/$1'); $routes->post('admin/medical-bank/source/create', 'Setting\\MedicalBank::createSource'); $routes->post('admin/medical-bank/source/update', 'Setting\\MedicalBank::updateSource'); $routes->post('admin/medical-bank/source/delete', 'Setting\\MedicalBank::deleteSource'); $routes->get('admin/reffer', 'Setting\\Reffer::index'); $routes->get('admin/reffer/new', 'Setting\\Reffer::create'); $routes->post('admin/reffer/save', 'Setting\\Reffer::store'); $routes->get('admin/reffer/(:num)', 'Setting\\Reffer::edit/$1'); $routes->post('admin/reffer/update/(:num)', 'Setting\\Reffer::update/$1'); $routes->post('admin/reffer/activate/(:num)/(:num)', 'Setting\\Reffer::activate/$1/$2'); $routes->get('admin/reffer/types', 'Setting\\Reffer::typeList'); $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/nurse', 'Setting\\Nurse::index'); $routes->post('admin/nurse/save', 'Setting\\Nurse::save'); $routes->post('admin/nurse/regenerate-device-code', 'Setting\\Nurse::regenerate_device_code'); $routes->post('admin/nurse/regenerate-device-code/(:num)', 'Setting\\Nurse::regenerate_device_code/$1'); $routes->post('admin/nurse/delete', 'Setting\\Nurse::delete'); $routes->post('admin/nurse/delete/(:num)', 'Setting\\Nurse::delete/$1'); $routes->get('admin/nurse/list_json', 'Setting\\Nurse::list_json'); $routes->get('admin/nursing-station', 'Setting\\NursingStation::index'); $routes->post('admin/nursing-station/save', 'Setting\\NursingStation::save'); $routes->post('admin/nursing-station/delete', 'Setting\\NursingStation::delete'); $routes->get('admin/nursing-station/list_json', 'Setting\\NursingStation::list_json'); $routes->get('admin/opd-queue-tv', 'Setting\\OpdQueueSetting::index'); $routes->post('admin/opd-queue-tv/save', 'Setting\\OpdQueueSetting::save'); $routes->post('admin/opd-queue-tv/upload-banner', 'Setting\\OpdQueueSetting::uploadBanner'); $routes->post('admin/opd-queue-tv/delete-banner', 'Setting\\OpdQueueSetting::deleteBanner'); $routes->get('admin/medical-store', 'Setting\\MedicalStoreAdmin::index'); $routes->post('admin/medical-store/save', 'Setting\\MedicalStoreAdmin::save'); $routes->post('admin/medical-store/delete', 'Setting\\MedicalStoreAdmin::delete'); $routes->post('admin/medical-store/generate-otp', 'Setting\\MedicalStoreAdmin::generateOtp'); $routes->post('admin/medical-store/regenerate-key', 'Setting\\MedicalStoreAdmin::regenerateSecurityKey'); $routes->post('admin/medical-store/revoke-device', 'Setting\\MedicalStoreAdmin::revokeDevice'); $routes->post('admin/medical-store/import-excel', 'Setting\\MedicalStoreAdmin::importExcel'); $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'); $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]); $routes->get('admin/hospital-stock/masters', 'Setting\\HospitalStock::masters', ['filter' => $stockPermFilter]); $routes->get('admin/hospital-stock/indents', 'Setting\\HospitalStock::indents', ['filter' => $stockPermFilter]); $routes->get('admin/hospital-stock/purchase', 'Setting\\HospitalStock::purchase', ['filter' => $stockPermFilter]); $routes->get('admin/hospital-stock/reports', 'Setting\\HospitalStock::reports', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/category/save', 'Setting\\HospitalStock::saveCategory', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/category/update', 'Setting\\HospitalStock::updateCategory', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/category/delete', 'Setting\\HospitalStock::deleteCategory', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/item/save', 'Setting\\HospitalStock::saveItem', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/item/update', 'Setting\\HospitalStock::updateItem', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/item/delete', 'Setting\\HospitalStock::deleteItem', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/supplier/save', 'Setting\\HospitalStock::saveSupplier', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/supplier/update', 'Setting\\HospitalStock::updateSupplier', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/supplier/delete', 'Setting\\HospitalStock::deleteSupplier', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/indent/create', 'Setting\\HospitalStock::createIndent', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/indent/approve', 'Setting\\HospitalStock::approveIndent', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/indent/issue', 'Setting\\HospitalStock::issueIndent', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/po/create', 'Setting\\HospitalStock::createPurchaseOrder', ['filter' => $stockPermFilter]); $routes->post('admin/hospital-stock/po/receive', 'Setting\\HospitalStock::receivePurchaseOrder', ['filter' => $stockPermFilter]); $routes->get('admin/hospital-stock/report/department-consumption', 'Setting\\HospitalStock::reportDepartmentConsumption', ['filter' => $stockPermFilter]); $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', ['filter' => $settingsChargesFilter]); }); $routes->group('item', ['filter' => 'permission:billing.items.view,billing.items.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'Item::search'); $routes->get('search-itemtype', 'Item::searchItemType'); $routes->get('search-adv/(:num)', 'Item::searchAdv/$1'); $routes->get('search-print/(:num)', 'Item::searchPrint/$1'); $routes->get('export-excel/(:num)', 'Item::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item-record/(:num)', 'Item::itemRecord/$1'); $routes->get('itemtype-record/(:num)', 'Item::itemTypeRecord/$1'); $routes->get('add', 'Item::addRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->get('add-type', 'Item::addItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('create', 'Item::createRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('update', 'Item::updateRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('create-type', 'Item::createItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('update-type', 'Item::updateItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('insurance/add', 'Item::addInsuranceItemRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('insurance/remove', 'Item::removeInsuranceItem', ['filter' => 'permission:billing.items.manage,admin.settings']); }); $routes->group('item-ipd', ['filter' => 'permission:billing.items.view,billing.items.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'ItemIpd::search'); $routes->get('search-itemtype', 'ItemIpd::searchItemType'); $routes->get('search-adv/(:num)', 'ItemIpd::searchAdv/$1'); $routes->get('search-print/(:num)', 'ItemIpd::searchPrint/$1'); $routes->get('export-excel/(:num)', 'ItemIpd::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item-record/(:num)', 'ItemIpd::itemRecord/$1'); $routes->get('itemtype-record/(:num)', 'ItemIpd::itemTypeRecord/$1'); $routes->get('add', 'ItemIpd::addRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->get('add-type', 'ItemIpd::addItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('create', 'ItemIpd::createRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('update', 'ItemIpd::updateRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('create-type', 'ItemIpd::createItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('update-type', 'ItemIpd::updateItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('delete-type', 'ItemIpd::deleteItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('change-sort-type', 'ItemIpd::changeItemTypeSort', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('insurance/add', 'ItemIpd::addInsuranceItemRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('insurance/remove', 'ItemIpd::removeInsuranceItem', ['filter' => 'permission:billing.items.manage,admin.settings']); }); $routes->group('package', ['filter' => 'permission:billing.packages.view,billing.packages.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'Package::search'); $routes->get('search-itemtype', 'Package::searchItemType'); $routes->get('search-adv/(:num)', 'Package::searchAdv/$1'); $routes->get('search-print/(:num)', 'Package::searchPrint/$1'); $routes->get('export-excel/(:num)', 'Package::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item-record/(:num)', 'Package::itemRecord/$1'); $routes->get('itemtype-record/(:num)', 'Package::itemTypeRecord/$1'); $routes->get('add', 'Package::addRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->get('add-type', 'Package::addItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('create', 'Package::createRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('update', 'Package::updateRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('create-type', 'Package::createItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('update-type', 'Package::updateItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('insurance/add', 'Package::addInsuranceItemRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('insurance/remove', 'Package::removeInsuranceItem', ['filter' => 'permission:billing.packages.manage,admin.settings']); }); $routes->group('Package', ['filter' => 'permission:billing.packages.view,billing.packages.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'Package::search'); $routes->get('search_itemtype', 'Package::searchItemType'); $routes->get('search_adv/(:num)', 'Package::searchAdv/$1'); $routes->get('search_print/(:num)', 'Package::searchPrint/$1'); $routes->get('export-excel/(:num)', 'Package::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item_record/(:num)', 'Package::itemRecord/$1'); $routes->get('itemtype_record/(:num)', 'Package::itemTypeRecord/$1'); $routes->get('AddRecord', 'Package::addRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->get('AddItemTypeRecord', 'Package::addItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('CreateRecord', 'Package::createRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('UpdateRecord', 'Package::updateRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('CreateItemTypeRecord', 'Package::createItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('UpdateItemTypeRecord', 'Package::updateItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('AddInsuranceItemRecord', 'Package::addInsuranceItemRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('remove_record_item', 'Package::removeInsuranceItem', ['filter' => 'permission:billing.packages.manage,admin.settings']); }); $routes->group('IPD_Package', ['filter' => 'permission:billing.packages.view,billing.packages.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'Package::search'); $routes->get('search_itemtype', 'Package::searchItemType'); $routes->get('search_adv/(:num)', 'Package::searchAdv/$1'); $routes->get('search_print/(:num)', 'Package::searchPrint/$1'); $routes->get('export-excel/(:num)', 'Package::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item_record/(:num)', 'Package::itemRecord/$1'); $routes->get('itemtype_record/(:num)', 'Package::itemTypeRecord/$1'); $routes->get('AddRecord', 'Package::addRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->get('AddItemTypeRecord', 'Package::addItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('CreateRecord', 'Package::createRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('UpdateRecord', 'Package::updateRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('CreateItemTypeRecord', 'Package::createItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('UpdateItemTypeRecord', 'Package::updateItemTypeRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('AddInsuranceItemRecord', 'Package::addInsuranceItemRecord', ['filter' => 'permission:billing.packages.manage,admin.settings']); $routes->post('remove_record_item', 'Package::removeInsuranceItem', ['filter' => 'permission:billing.packages.manage,admin.settings']); }); $routes->group('Item_IPD', ['filter' => 'permission:billing.items.view,billing.items.manage,billing.access,settings.charges.access,admin.settings'], static function($routes) { $routes->get('search', 'ItemIpd::search'); $routes->get('search_itemtype', 'ItemIpd::searchItemType'); $routes->get('search_adv/(:num)', 'ItemIpd::searchAdv/$1'); $routes->get('search_print/(:num)', 'ItemIpd::searchPrint/$1'); $routes->get('export-excel/(:num)', 'ItemIpd::exportExcel/$1'); $routes->match(['GET', 'POST'], 'item_record/(:num)', 'ItemIpd::itemRecord/$1'); $routes->get('itemtype_record/(:num)', 'ItemIpd::itemTypeRecord/$1'); $routes->get('AddRecord', 'ItemIpd::addRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->get('AddItemTypeRecord', 'ItemIpd::addItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('CreateRecord', 'ItemIpd::createRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('UpdateRecord', 'ItemIpd::updateRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('CreateItemTypeRecord', 'ItemIpd::createItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('UpdateItemTypeRecord', 'ItemIpd::updateItemTypeRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('change_sort_itemtype', 'ItemIpd::changeItemTypeSort', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('AddInsuranceItemRecord', 'ItemIpd::addInsuranceItemRecord', ['filter' => 'permission:billing.items.manage,admin.settings']); $routes->post('remove_record_item', 'ItemIpd::removeInsuranceItem', ['filter' => 'permission:billing.items.manage,admin.settings']); }); // Doctor Document & Patient Document routes $routes->get('DoctorDocument', 'DoctorDocument::index'); $routes->get('DoctorDocument/index', 'DoctorDocument::index'); $routes->get('DoctorDocument/workspace', 'DoctorDocument::workspace'); $routes->get('DoctorDocument/search_ipd_patient', 'DoctorDocument::search_ipd_patient'); $routes->post('DoctorDocument/upload_ipd_nabh_document', 'DoctorDocument::upload_ipd_nabh_document'); $routes->post('DoctorDocument/push_ipd_nabh_to_abdm', 'DoctorDocument::push_ipd_nabh_to_abdm'); $routes->get('DoctorDocument/health_document_fhir_preview/(:num)', 'DoctorDocument::health_document_fhir_preview/$1'); $routes->get('DoctorDocument/wellness_record_fhir_preview', 'DoctorDocument::wellness_record_fhir_preview'); $routes->get('DoctorDocument/wellness_record_fhir_preview/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1'); $routes->get('DoctorDocument/wellness_record_fhir_preview/(:num)/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1/$2'); $routes->get('Document_Patient', 'DoctorDocument::index'); $routes->get('Document_Patient/index', 'DoctorDocument::index'); $routes->get('Document_Patient/workspace', 'DoctorDocument::workspace'); $routes->get('Document_Patient/search_ipd_patient', 'DoctorDocument::search_ipd_patient'); $routes->post('Document_Patient/upload_ipd_nabh_document', 'DoctorDocument::upload_ipd_nabh_document'); $routes->post('Document_Patient/push_ipd_nabh_to_abdm', 'DoctorDocument::push_ipd_nabh_to_abdm'); $routes->get('Document_Patient/health_document_fhir_preview/(:num)', 'DoctorDocument::health_document_fhir_preview/$1'); $routes->get('Document_Patient/wellness_record_fhir_preview', 'DoctorDocument::wellness_record_fhir_preview'); $routes->get('Document_Patient/wellness_record_fhir_preview/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1'); $routes->get('Document_Patient/wellness_record_fhir_preview/(:num)/(:num)', 'DoctorDocument::wellness_record_fhir_preview/$1/$2'); /* * -------------------------------------------------------------------- * Dedicated PWA Apps & RESTful API Routes (Isolated Architecture) * -------------------------------------------------------------------- */ // Dedicated PWA Web App Endpoints (Serves React PWAs without touching standard CI4 web views) $routes->get('app', 'Api\v1\NursingApi::hubIndex'); $routes->get('app/nursing', 'Api\v1\NursingApi::pwaIndex'); $routes->get('app/nursing/(:any)', 'Api\v1\NursingApi::pwaIndex'); $routes->get('app/doctor', 'Api\v1\DoctorApi::pwaIndex'); $routes->get('app/doctor/(:any)', 'Api\v1\DoctorApi::pwaIndex'); $routes->match(['GET', 'HEAD'], 'app/queue', 'Api\v1\DoctorApi::queueIndex'); $routes->match(['GET', 'HEAD'], 'app/queue/sw.js', 'Api\v1\DoctorApi::queueSw'); $routes->match(['GET', 'HEAD'], 'app/queue/manifest.json', 'Api\v1\DoctorApi::queueManifest'); $routes->match(['GET', 'HEAD'], 'app/queue/(:any)', 'Api\v1\DoctorApi::queueIndex'); // Dedicated RESTful JSON API v1 Group for React PWAs & Mobile Apps $routes->group('api/v1', ['namespace' => 'App\Controllers\Api\v1', 'filter' => 'apiAuth'], static function ($routes) { // Live TV Queue Display API $routes->get('opd/queue/live', 'DoctorApi::liveQueueDisplay'); // Nursing PWA APIs $routes->get('nursing/beds', 'NursingApi::beds'); $routes->get('nursing/nurses', 'NursingApi::nurses'); $routes->post('nursing/auth/verify-pin', 'NursingApi::verifyPin'); $routes->post('nursing/auth/set-pin', 'NursingApi::setPin'); $routes->get('nursing/workspace/(:num)', 'NursingApi::workspace/$1'); $routes->post('nursing/entry/save/(:num)', 'NursingApi::saveEntry/$1'); $routes->get('nursing/opd/list', 'NursingApi::opdList'); $routes->post('nursing/opd/vitals/save/(:num)', 'NursingApi::saveOpdVitals/$1'); $routes->post('nursing/opd/scan/save/(:num)', 'NursingApi::saveOpdScan/$1'); $routes->post('nursing/ipd/scan/save/(:num)', 'NursingApi::saveIpdScan/$1'); $routes->get('nursing/patient/search', 'NursingApi::searchPatient'); $routes->post('nursing/patient/wellness/save', 'NursingApi::savePatientWellness'); $routes->get('nursing/patient/wellness/history/(:num)', 'NursingApi::getPatientWellnessHistory/$1'); $routes->post('nursing/patient/document/save', 'NursingApi::savePatientDocument'); // Doctor PWA APIs $routes->get('doctor/list', 'DoctorApi::doctors'); $routes->post('doctor/auth/verify-pin', 'DoctorApi::verifyPin'); $routes->post('doctor/auth/set-pin', 'DoctorApi::setPin'); $routes->get('doctor/opd/list/(:num)', 'DoctorApi::opdList/$1'); $routes->get('doctor/opd/prescription/(:num)', 'DoctorApi::getOpdPrescription/$1'); $routes->post('doctor/opd/prescription/save/(:num)', 'DoctorApi::saveOpdPrescription/$1'); $routes->get('doctor/ipd/list/(:num)', 'DoctorApi::ipdList/$1'); $routes->get('doctor/ipd/workspace/(:num)', 'DoctorApi::patientWorkspace/$1'); $routes->post('doctor/ipd/treatment/save/(:num)', 'DoctorApi::saveTreatmentNote/$1'); // Medical Store PWA APIs $routes->get('medical-store/stores', 'MedicalStoreApi::stores'); $routes->post('medical-store/stores/save', 'MedicalStoreApi::saveStore'); $routes->get('medical-store/patient/search', 'MedicalStoreApi::searchPatient'); $routes->get('medical-store/patient/history', 'MedicalStoreApi::patientHistory'); $routes->get('medical-store/patient/prescription/(:segment)/(:num)', 'MedicalStoreApi::getPrescription/$1/$2'); $routes->get('medical-store/items/search', 'MedicalStoreApi::searchItems'); $routes->get('medical-store/items/search-master', 'MedicalStoreApi::searchMasterItems'); $routes->get('medical-store/items/master-support-data', 'MedicalStoreApi::getMasterSupportData'); $routes->post('medical-store/items/save-master', 'MedicalStoreApi::saveProductMaster'); $routes->post('medical-store/stock/opening', 'MedicalStoreApi::saveOpeningStock'); $routes->get('medical-store/stock/list', 'MedicalStoreApi::stockList'); $routes->get('medical-store/stock/alerts', 'MedicalStoreApi::stockAlerts'); $routes->post('medical-store/sales/save', 'MedicalStoreApi::saveSale'); $routes->get('medical-store/sales/list', 'MedicalStoreApi::salesList'); $routes->post('medical-store/sales/update', 'MedicalStoreApi::updateSale'); $routes->get('medical-store/sales/invoice/(:num)', 'MedicalStoreApi::getInvoice/$1'); $routes->get('medical-store/sales/invoice-pdf/(:num)', 'MedicalStoreApi::invoicePdf/$1'); $routes->get('medical-store/sales/recent', 'MedicalStoreApi::recentSales'); $routes->get('medical-store/suppliers', 'MedicalStoreApi::suppliers'); $routes->post('medical-store/suppliers/save', 'MedicalStoreApi::saveSupplier'); $routes->post('medical-store/suppliers/delete', 'MedicalStoreApi::deleteSupplier'); $routes->get('medical-store/suppliers/ledger-summary', 'MedicalStoreApi::getSupplierLedgerSummary'); $routes->get('medical-store/suppliers/ledger/(:num)', 'MedicalStoreApi::getSupplierLedger/$1'); $routes->post('medical-store/suppliers/record-payment', 'MedicalStoreApi::saveSupplierPayment'); // Purchase Orders & Inward Bill $routes->get('medical-store/purchase-orders', 'MedicalStoreApi::getPurchaseOrders'); $routes->get('medical-store/purchase-orders/(:num)', 'MedicalStoreApi::getPurchaseOrderDetail/$1'); $routes->post('medical-store/purchase-orders/save', 'MedicalStoreApi::savePurchaseOrder'); $routes->post('medical-store/purchase-orders/cancel', 'MedicalStoreApi::cancelPurchaseOrder'); $routes->get('medical-store/purchases', 'MedicalStoreApi::getPurchases'); $routes->get('medical-store/purchase/(:num)', 'MedicalStoreApi::getPurchaseDetail/$1'); $routes->post('medical-store/purchase/save', 'MedicalStoreApi::savePurchase'); $routes->post('medical-store/purchase/update', 'MedicalStoreApi::updatePurchase'); $routes->post('medical-store/purchase/payment', 'MedicalStoreApi::saveSupplierPayment'); $routes->get('medical-store/supplier-challans/(:num)', 'MedicalStoreApi::getSupplierChallans/$1'); $routes->get('medical-store/product-purchase-history/(:num)', 'MedicalStoreApi::getProductPurchaseHistory/$1'); // Short Items / Deficiency & Reorder Book $routes->get('medical-store/stock/short-items', 'MedicalStoreApi::getShortItems'); $routes->post('medical-store/stock/flag-short-item', 'MedicalStoreApi::flagShortItem'); $routes->post('medical-store/transfer/request', 'MedicalStoreApi::requestTransfer'); $routes->post('medical-store/transfer/dispatch', 'MedicalStoreApi::dispatchTransfer'); $routes->post('medical-store/transfer/receive', 'MedicalStoreApi::receiveTransfer'); $routes->get('medical-store/accounting/supplier-ledger/(:num)', 'MedicalStoreApi::getSupplierLedger/$1'); $routes->get('medical-store/accounting/patient-ledger/(:segment)', 'MedicalStoreApi::getPatientLedger/$1'); $routes->get('medical-store/accounting/daybook', 'MedicalStoreApi::getDaybook'); $routes->get('medical-store/accounting/gst-report', 'MedicalStoreApi::getGstReport'); $routes->get('medical-store/accounting/bank-reconciliation', 'MedicalStoreApi::getBankReconciliation'); $routes->post('medical-store/accounting/reconcile-bank', 'MedicalStoreApi::reconcileBank'); $routes->get('medical-store/compliance/schedule-h1-register', 'MedicalStoreApi::getScheduleH1Register'); $routes->post('medical-store/device/verify', 'MedicalStoreApi::verifyDevice'); $routes->post('medical-store/device/check', 'MedicalStoreApi::checkDeviceStatus'); $routes->post('medical-store/stock/import-excel', 'MedicalStoreApi::importExcel'); $routes->get('medical-store/abdm/bundle/(:num)', 'MedicalStoreApi::getAbdmBundle/$1'); $routes->post('medical-store/abdm/link-abha', 'MedicalStoreApi::linkAbha'); $routes->get('medical-store/returns/lookup-invoice', 'MedicalStoreApi::lookupInvoiceForReturn'); $routes->get('medical-store/returns/recent', 'MedicalStoreApi::recentReturns'); $routes->get('medical-store/returns/credit-note/(:num)', 'MedicalStoreApi::getCreditNoteInvoice/$1'); // Stock Audit & Physical Reconciliation $routes->post('medical-store/stock/reconcile', 'MedicalStoreApi::reconcileStock'); $routes->get('medical-store/stock/audit-list', 'MedicalStoreApi::getStockAuditList'); $routes->post('medical-store/stock/batch-reconcile', 'MedicalStoreApi::batchReconcileStock'); // Dedicated Medical Store User Management & Operator Session $routes->get('medical-store/users', 'MedicalStoreApi::getStoreUsers'); $routes->post('medical-store/users/save', 'MedicalStoreApi::saveStoreUser'); $routes->post('medical-store/users/switch-operator', 'MedicalStoreApi::switchOperator'); // Staff & Customer Credit Accounts & Ledgers $routes->get('medical-store/credit/accounts', 'MedicalStoreApi::getCreditAccounts'); $routes->post('medical-store/credit/save-account', 'MedicalStoreApi::saveCreditAccount'); $routes->get('medical-store/credit/ledger/(:num)', 'MedicalStoreApi::getCreditLedger/$1'); $routes->post('medical-store/credit/record-payment', 'MedicalStoreApi::recordCreditPayment'); // Mobile Rack Collector & Draft Bills $routes->post('medical-store/drafts/save', 'MedicalStoreApi::saveDraftBill'); $routes->get('medical-store/drafts/list', 'MedicalStoreApi::getDraftBills'); $routes->post('medical-store/drafts/cancel', 'MedicalStoreApi::cancelDraftBill'); $routes->post('medical-store/drafts/convert', 'MedicalStoreApi::convertDraftBill'); // Mobile Dashboard & Analytics $routes->get('medical-store/mobile/dashboard', 'MedicalStoreApi::getMobileDashboardData'); // Server Network Info & QR Pairing $routes->get('medical-store/server-info', 'MedicalStoreApi::getServerNetworkInfo'); // Purchase Invoice Photo Upload & Verification $routes->post('medical-store/purchase/upload-photo', 'MedicalStoreApi::uploadPurchasePhoto'); $routes->post('medical-store/purchase/verify', 'MedicalStoreApi::verifyPurchase'); }); // Dedicated Direct Store Links (e.g. /MedicalStore/storeA, /MedicalStore/storeB) $routes->get('MedicalStore', 'Api\v1\MedicalStoreApi::pwaIndex'); $routes->get('MedicalStore/(:any)', 'Api\v1\MedicalStoreApi::pwaIndex/$1'); $routes->get('app/medical-store', 'Api\v1\MedicalStoreApi::pwaIndex'); $routes->get('app/medical-store/(:any)', 'Api\v1\MedicalStoreApi::pwaIndex/$1');