From ad248577201508655ee612e73d3a857791653033 Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Tue, 31 Mar 2026 03:31:26 +0530 Subject: [PATCH] feat: align consult Rx medicine controls with Rx-Group Add/Edit masters - consult form medicine Dose/When/Freq changed to dropdowns from dose masters - added Where dropdown in consult medicine editor and table display - consult now loads options from Opd_prescription/rx_group_dose_masters - medicine add/update payload now includes dosage_where - medicine list now returns dosage_where_label for readable table output - edit mode supports existing values not present in current master set - quick chips now map into select options (with safe fallback) --- app/Controllers/Opd_prescription.php | 6 + app/Views/billing/opd_prescription_basic.php | 134 +++++++++++++++++-- 2 files changed, 127 insertions(+), 13 deletions(-) diff --git a/app/Controllers/Opd_prescription.php b/app/Controllers/Opd_prescription.php index 72ee6ac..8441c37 100644 --- a/app/Controllers/Opd_prescription.php +++ b/app/Controllers/Opd_prescription.php @@ -3921,11 +3921,13 @@ class Opd_prescription extends BaseController $doseMap = $this->getDoseMasterLabelMap('opd_dose_shed', ['dose_shed_id', 'id'], ['dose_show_sign', 'dose_sign', 'dose_sign_desc', 'name']); $whenMap = $this->getDoseMasterLabelMap('opd_dose_when', ['dose_when_id', 'id'], ['dose_sign', 'dose_sign_desc', 'name']); $freqMap = $this->getDoseMasterLabelMap('opd_dose_frequency', ['dose_freq_id', 'id'], ['dose_sign', 'dose_sign_desc', 'name']); + $whereMap = $this->getDoseMasterLabelMap('opd_dose_where', ['dose_where_id', 'id'], ['dose_sign', 'dose_sign_desc', 'name']); foreach ($rows as &$row) { $row['dosage_label'] = $this->resolveDoseMasterLabel($row['dosage'] ?? '', $doseMap); $row['dosage_when_label'] = $this->resolveDoseMasterLabel($row['dosage_when'] ?? '', $whenMap); $row['dosage_freq_label'] = $this->resolveDoseMasterLabel($row['dosage_freq'] ?? '', $freqMap); + $row['dosage_where_label'] = $this->resolveDoseMasterLabel($row['dosage_where'] ?? '', $whereMap); } unset($row); @@ -3985,6 +3987,9 @@ class Opd_prescription extends BaseController if (in_array('dosage_freq', $fields, true)) { $insert['dosage_freq'] = trim((string) $this->request->getPost('dosage_freq')); } + if (in_array('dosage_where', $fields, true)) { + $insert['dosage_where'] = trim((string) $this->request->getPost('dosage_where')); + } if (in_array('no_of_days', $fields, true)) { $insert['no_of_days'] = trim((string) $this->request->getPost('no_of_days')); } @@ -4180,6 +4185,7 @@ class Opd_prescription extends BaseController 'dosage' => trim((string) $this->request->getPost('dosage')), 'dosage_when' => trim((string) $this->request->getPost('dosage_when')), 'dosage_freq' => trim((string) $this->request->getPost('dosage_freq')), + 'dosage_where' => trim((string) $this->request->getPost('dosage_where')), 'no_of_days' => trim((string) $this->request->getPost('no_of_days')), 'qty' => trim((string) $this->request->getPost('qty')), 'remark' => strtoupper(trim((string) $this->request->getPost('remark'))), diff --git a/app/Views/billing/opd_prescription_basic.php b/app/Views/billing/opd_prescription_basic.php index ed2fec6..a911c1e 100644 --- a/app/Views/billing/opd_prescription_basic.php +++ b/app/Views/billing/opd_prescription_basic.php @@ -762,13 +762,19 @@
- +
- +
- +
@@ -778,7 +784,12 @@
-
+
+ +
+
@@ -817,10 +828,10 @@ - + - +
MedicineTypeDoseWhenFreqDaysQtyRemarkActionMedicineTypeDoseWhenFreqWhereDaysQtyRemarkAction
No medicine added
No medicine added
@@ -987,6 +998,7 @@ var investigationBatchActive = false; var activeMedicineScope = 'active'; var medicineSuggestRows = []; + var medicineDoseMasterCache = { dose: [], when: [], freq: [], where: [] }; var investigationProfiles = { cardiac: ['ECG', 'Lipid Profile', 'CBC'], viral_infection: ['CBC', 'LFT', 'KFT'] @@ -1023,6 +1035,84 @@ }, 'json'); } + function renderMedicineMasterSelectOptions($select, rows, placeholder) { + var html = '