diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 163aab1..83bc903 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -873,6 +873,7 @@ $routes->post('Lab_Admin/pathology_master_add_component', 'Setting\Template::pat $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->match(['get', 'post'], 'setting/template/ipd_document_templates', 'Setting\Template::ipd_document_templates'); diff --git a/app/Controllers/Ipd_discharge.php b/app/Controllers/Ipd_discharge.php index fc839ac..2d3f56e 100644 --- a/app/Controllers/Ipd_discharge.php +++ b/app/Controllers/Ipd_discharge.php @@ -272,7 +272,9 @@ class Ipd_discharge extends BaseController private function getDischargeTemplateRows(): array { - $this->ensureDefaultDischargeTemplateSeeded(); + // Ensure table structure exists, but don't auto-seed templates + // This allows users to delete all templates without them auto-regenerating + $this->ensureDischargeTemplateTable(); if (! $this->db->tableExists('ipd_discharge_templates')) { return []; } diff --git a/app/Controllers/Setting/Template.php b/app/Controllers/Setting/Template.php index d24dd85..e9180fb 100644 --- a/app/Controllers/Setting/Template.php +++ b/app/Controllers/Setting/Template.php @@ -2804,7 +2804,9 @@ HTML; return $resp; } - $this->ensureDefaultDischargeTemplateSeeded(); + // Ensure table structure exists, but don't auto-seed templates + // This allows users to delete all templates without them auto-regenerating + $this->ensureDischargeTemplateTable(); $notice = ''; $noticeType = 'success'; @@ -2966,6 +2968,27 @@ HTML; ]); } + public function discharge_templates_seed() + { + if ($resp = $this->requireAnyPermission(['template.discharge'])) { + return $resp; + } + + // Manually seed default templates (on user request) + $this->ensureDefaultDischargeTemplateSeeded(); + + if ($this->request->isAJAX()) { + return $this->response->setJSON([ + 'update' => 1, + 'error_text' => 'Default templates created successfully.', + 'csrfName' => csrf_token(), + 'csrfHash' => csrf_hash(), + ]); + } + + return redirect()->to(base_url('setting/template/discharge_templates')); + } + public function discharge_template_delete(int $id) { if ($resp = $this->requireAnyPermission(['template.discharge'])) { diff --git a/app/Views/Setting/Template/discharge_templates.php b/app/Views/Setting/Template/discharge_templates.php index 0cfed68..7aef3bc 100644 --- a/app/Views/Setting/Template/discharge_templates.php +++ b/app/Views/Setting/Template/discharge_templates.php @@ -181,7 +181,15 @@ $status = (int) ($edit['status'] ?? 1); - No templates found. + + +
No templates found.
+ +
Creates "Default Discharge Template" and "NABH Compliant Discharge Summary"
+ + @@ -665,5 +673,45 @@ $status = (int) ($edit['status'] ?? 1); openDischargeUrl('', ipdId, 1); }); } + + // Handle "Create Default Templates" button + var createDefaultsBtn = document.getElementById('btn_create_defaults'); + if (createDefaultsBtn) { + createDefaultsBtn.addEventListener('click', function () { + if (!window.confirm('Create 2 default discharge templates?')) { + return; + } + + var formData = new FormData(); + formData.append('', ''); + formData.append('action', 'seed_defaults'); + + fetch('', { + method: 'POST', + body: formData, + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } + }) + .then(function (res) { return res.json(); }) + .then(function (data) { + updateCsrfToken(data); + if (!data || parseInt(data.update || 0, 10) !== 1) { + setNotice('danger', (data && data.error_text) ? data.error_text : 'Failed to create templates.'); + return; + } + + setNotice('success', data.error_text || 'Default templates created successfully.'); + + // Reload page to show new templates + setTimeout(function() { + window.location.reload(); + }, 500); + }) + .catch(function () { + setNotice('danger', 'Network error while creating templates.'); + }); + }); + } })();