Improve discharge medication template output
Render class-only discharge medication tables with salt and medicine advice, and persist generic salt data from medicine search.
This commit is contained in:
parent
b264b8fd92
commit
ea28bfa837
|
|
@ -2668,36 +2668,35 @@ class Ipd_discharge extends BaseController
|
|||
|
||||
$drugRows = $this->byIpdRows('ipd_discharge_drug', ['drug_name', 'drug_dose', 'drug_day'], 'id ASC', $ipdId);
|
||||
if (! empty($drugRows)) {
|
||||
$html = '<h4 class="discharge-section-heading">Discharge Medications</h4><ol class="discharge-list">';
|
||||
$html = '<h4 class="discharge-section-heading">Discharge Medications</h4>'
|
||||
. '<table class="discharge-medicine-table">'
|
||||
. '<thead><tr><th>Medicine Name</th><th>Dosage</th><th>Qty</th><th>Day</th></tr></thead>'
|
||||
. '<tbody>';
|
||||
foreach ($drugRows as $row) {
|
||||
$drugName = trim((string) ($row['drug_name'] ?? ''));
|
||||
if ($drugName === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$line = esc($drugName);
|
||||
$dose = trim((string) ($row['drug_dose'] ?? ''));
|
||||
$days = trim((string) ($row['drug_day'] ?? ''));
|
||||
|
||||
if ($dose !== '') {
|
||||
$line .= ' <span class="discharge-remark">' . esc($dose) . '</span>';
|
||||
}
|
||||
if ($days !== '') {
|
||||
$line .= ' <span class="discharge-remark">[' . esc($days) . ' days]</span>';
|
||||
}
|
||||
|
||||
$html .= '<li>' . $line . '</li>';
|
||||
$html .= '<tr>'
|
||||
. '<td>' . esc($drugName) . '</td>'
|
||||
. '<td>' . esc($dose) . '</td>'
|
||||
. '<td></td>'
|
||||
. '<td>' . esc($days) . '</td>'
|
||||
. '</tr>';
|
||||
}
|
||||
$html .= '</ol>';
|
||||
$html .= '</tbody></table>';
|
||||
$sections[] = $html;
|
||||
} else {
|
||||
$medRows = $this->byIpdRows('ipd_discharge_prescrption_prescribed', ['med_name', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'qty', 'no_of_days', 'remark'], 'id ASC', $ipdId);
|
||||
$medRows = $this->byIpdRows('ipd_discharge_prescrption_prescribed', ['med_name', 'med_salt', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'qty', 'no_of_days', 'remark'], 'id ASC', $ipdId);
|
||||
if (! empty($medRows)) {
|
||||
$html = '<h4 class="discharge-section-heading">Discharge Medications</h4>'
|
||||
. '<table class="discharge-medicine-table" border="0" cellpadding="6">'
|
||||
. '<table class="discharge-medicine-table">'
|
||||
. '<thead><tr><th>Medicine Name</th><th>Dosage</th><th>Qty</th><th>Day</th></tr></thead>'
|
||||
. '<tbody>';
|
||||
$sr = 1;
|
||||
foreach ($medRows as $row) {
|
||||
$medName = trim((string) ($row['med_name'] ?? ''));
|
||||
if ($medName === '') {
|
||||
|
|
@ -2729,13 +2728,23 @@ class Ipd_discharge extends BaseController
|
|||
if ($composition !== '') {
|
||||
$html .= '<br><small class="discharge-composition">Composition : ' . esc($composition) . '</small>';
|
||||
}
|
||||
$advice = trim((string) ($row['remark'] ?? ''));
|
||||
if ($advice !== '') {
|
||||
$html .= '<br><span class="discharge-medicine-advice">Medicine Advice: ' . esc($advice) . '</span>';
|
||||
}
|
||||
|
||||
$html .= '</td>'
|
||||
. '<td>' . ($dosageDisplay !== '' ? esc($dosageDisplay) : '-') . '</td>'
|
||||
. '<td>' . esc((string) ($row['qty'] ?? '')) . '</td>'
|
||||
. '<td>' . esc((string) ($row['no_of_days'] ?? '')) . '</td>'
|
||||
. '</tr>';
|
||||
$sr++;
|
||||
|
||||
$saltName = trim((string) ($row['med_salt'] ?? ''));
|
||||
if ($saltName !== '') {
|
||||
$html .= '<tr class="discharge-medicine-salt-row">'
|
||||
. '<td colspan="4" class="discharge-medicine-salt">' . esc($saltName) . '</td>'
|
||||
. '</tr>';
|
||||
}
|
||||
}
|
||||
$html .= '</tbody></table>';
|
||||
$sections[] = $html;
|
||||
|
|
@ -5902,6 +5911,7 @@ class Ipd_discharge extends BaseController
|
|||
$day = trim((string) ($this->request->getPost('new_drug_day') ?? ''));
|
||||
$qty = trim((string) ($this->request->getPost('new_drug_qty') ?? ''));
|
||||
$remark = trim((string) ($this->request->getPost('new_drug_remark') ?? ''));
|
||||
$salt = trim((string) ($this->request->getPost('new_drug_salt') ?? ''));
|
||||
$editId = (int) ($this->request->getPost('drug_edit_id') ?? 0);
|
||||
$editSource = strtolower(trim((string) ($this->request->getPost('drug_edit_source') ?? 'legacy')));
|
||||
|
||||
|
|
@ -5912,6 +5922,7 @@ class Ipd_discharge extends BaseController
|
|||
if ($editSource === 'legacy' && $legacyDrugTable !== null && $this->tableHasColumns($legacyDrugTable, ['id', 'ipd_id'])) {
|
||||
$update = [
|
||||
'med_name' => $name,
|
||||
'med_salt' => $salt,
|
||||
'med_type' => $type,
|
||||
'dosage' => $dose,
|
||||
'dosage_when' => $when,
|
||||
|
|
@ -5971,6 +5982,7 @@ class Ipd_discharge extends BaseController
|
|||
'ipd_id' => $ipdId,
|
||||
'med_id' => 0,
|
||||
'med_name' => $name,
|
||||
'med_salt' => $salt,
|
||||
'med_type' => $type,
|
||||
'dosage' => $dose,
|
||||
'dosage_when' => $when,
|
||||
|
|
@ -6067,6 +6079,7 @@ class Ipd_discharge extends BaseController
|
|||
'ipd_id' => $ipdId,
|
||||
'med_id' => (int) ($row['med_id'] ?? 0),
|
||||
'med_name' => $medName,
|
||||
'med_salt' => trim((string) ($row['med_salt'] ?? $row['genericname'] ?? '')),
|
||||
'med_type' => trim((string) ($row['med_type'] ?? '')),
|
||||
'dosage' => trim((string) ($row['dosage'] ?? '')),
|
||||
'dosage_when' => trim((string) ($row['dosage_when'] ?? '')),
|
||||
|
|
@ -6075,7 +6088,6 @@ class Ipd_discharge extends BaseController
|
|||
'no_of_days' => trim((string) ($row['no_of_days'] ?? '')),
|
||||
'qty' => trim((string) ($row['qty'] ?? '')),
|
||||
'remark' => trim((string) ($row['remark'] ?? '')),
|
||||
'genericname' => trim((string) ($row['genericname'] ?? '')),
|
||||
'update_by' => $userLabel,
|
||||
];
|
||||
if ($this->db->fieldExists('order_id', $legacyDrugTable)) {
|
||||
|
|
@ -6799,9 +6811,9 @@ class Ipd_discharge extends BaseController
|
|||
$diagnosisRows = $this->byIpdRows('ipd_discharge_diagnosis', ['id', 'comp_report', 'comp_remark'], 'id ASC', $ipdId);
|
||||
$courseRows = $this->byIpdRows('ipd_discharge_course', ['id', 'comp_report', 'comp_remark'], 'id ASC', $ipdId);
|
||||
$drugRows = $this->byIpdRows('ipd_discharge_drug', ['id', 'drug_name', 'drug_dose', 'drug_day'], 'id ASC', $ipdId);
|
||||
$legacyDrugRows = $this->byIpdRows('ipd_discharge_prescrption_prescribed', ['id', 'med_name', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'no_of_days', 'qty', 'remark'], 'id ASC', $ipdId);
|
||||
$legacyDrugRows = $this->byIpdRows('ipd_discharge_prescrption_prescribed', ['id', 'med_name', 'med_salt', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'no_of_days', 'qty', 'remark'], 'id ASC', $ipdId);
|
||||
if (empty($legacyDrugRows)) {
|
||||
$legacyDrugRows = $this->byIpdRows('ipd_discharge_prescription_prescribed', ['id', 'med_name', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'no_of_days', 'qty', 'remark'], 'id ASC', $ipdId);
|
||||
$legacyDrugRows = $this->byIpdRows('ipd_discharge_prescription_prescribed', ['id', 'med_name', 'med_salt', 'med_type', 'dosage', 'dosage_when', 'dosage_freq', 'no_of_days', 'qty', 'remark'], 'id ASC', $ipdId);
|
||||
}
|
||||
|
||||
// Load dose master maps for label display
|
||||
|
|
|
|||
|
|
@ -8174,6 +8174,7 @@ class Opd_prescription extends BaseController
|
|||
$daysField = $this->resolveFirstField($fields, ['no_of_days']);
|
||||
$qtyField = $this->resolveFirstField($fields, ['qty']);
|
||||
$remarkField = $this->resolveFirstField($fields, ['remark']);
|
||||
$saltField = $this->resolveFirstField($fields, ['genericname', 'salt_name']);
|
||||
|
||||
if ($idField === null || $nameField === null) {
|
||||
return $this->response->setJSON(['rows' => []]);
|
||||
|
|
@ -8204,9 +8205,12 @@ class Opd_prescription extends BaseController
|
|||
if ($remarkField !== null) {
|
||||
$select .= ',' . $remarkField . ' as remark';
|
||||
}
|
||||
if ($saltField !== null) {
|
||||
$select .= ',' . $saltField . ' as med_salt';
|
||||
}
|
||||
|
||||
$userId = (int) ($this->getCurrentUserId() ?? 0);
|
||||
$cacheKey = 'medicine_search_v2_' . md5(json_encode([
|
||||
$cacheKey = 'medicine_search_v4_' . md5(json_encode([
|
||||
'q' => strtoupper($q),
|
||||
'scope' => $scope,
|
||||
'user' => $userId,
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ if (! empty($legacyDrugRows)) {
|
|||
'id' => (int) ($row['id'] ?? 0),
|
||||
'source' => 'legacy',
|
||||
'med_name' => (string) ($row['med_name'] ?? ''),
|
||||
'med_salt' => (string) ($row['med_salt'] ?? ''),
|
||||
'med_type' => (string) ($row['med_type'] ?? ''),
|
||||
'dosage' => $doseLabel !== '' ? $doseLabel : (string) ($row['dosage'] ?? ''),
|
||||
'dosage_when' => $whenLabel !== '' ? $whenLabel : (string) ($row['dosage_when'] ?? ''),
|
||||
|
|
@ -129,6 +130,7 @@ if (! empty($legacyDrugRows)) {
|
|||
'id' => (int) ($row['id'] ?? 0),
|
||||
'source' => 'classic',
|
||||
'med_name' => (string) ($row['drug_name'] ?? ''),
|
||||
'med_salt' => '',
|
||||
'med_type' => '',
|
||||
'dosage' => (string) ($row['drug_dose'] ?? ''),
|
||||
'dosage_when' => '',
|
||||
|
|
@ -1266,6 +1268,7 @@ $historyFields = [
|
|||
data-id="<?= (int) ($row['id'] ?? 0) ?>"
|
||||
data-source="<?= esc((string) ($row['source'] ?? 'legacy')) ?>"
|
||||
data-med-name="<?= esc((string) ($row['med_name'] ?? '')) ?>"
|
||||
data-med-salt="<?= esc((string) ($row['med_salt'] ?? '')) ?>"
|
||||
data-med-type="<?= esc((string) ($row['med_type'] ?? '')) ?>"
|
||||
data-dose-id="<?= (int) ($row['dosage_id'] ?? 0) ?>"
|
||||
data-dose-when-id="<?= (int) ($row['dosage_when_id'] ?? 0) ?>"
|
||||
|
|
@ -1301,6 +1304,7 @@ $historyFields = [
|
|||
<input type="hidden" id="discharge_med_item_id" value="0">
|
||||
<input type="hidden" id="discharge_med_item_source" value="legacy">
|
||||
<input type="hidden" id="discharge_med_id" value="0">
|
||||
<input type="hidden" id="discharge_med_salt" value="">
|
||||
<div class="row g-2 mb-2">
|
||||
<div class="col-8">
|
||||
<label class="form-label small">Medicine Name (Brand)</label>
|
||||
|
|
@ -4198,6 +4202,9 @@ $historyFields = [
|
|||
if (section.querySelector('#discharge_med_id')) {
|
||||
section.querySelector('#discharge_med_id').value = String(matched.id || '0');
|
||||
}
|
||||
if (section.querySelector('#discharge_med_salt')) {
|
||||
section.querySelector('#discharge_med_salt').value = String(matched.med_salt || '').trim();
|
||||
}
|
||||
// Auto-fill type if empty
|
||||
if (dischargeMedType && dischargeMedType.value.trim() === '') {
|
||||
dischargeMedType.value = String(matched.med_type || '').trim();
|
||||
|
|
@ -4222,6 +4229,9 @@ $historyFields = [
|
|||
if (section.querySelector('#discharge_med_id')) {
|
||||
section.querySelector('#discharge_med_id').value = '0';
|
||||
}
|
||||
if (section.querySelector('#discharge_med_salt')) {
|
||||
section.querySelector('#discharge_med_salt').value = '';
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -4239,6 +4249,9 @@ $historyFields = [
|
|||
if (section.querySelector('#discharge_med_id')) {
|
||||
section.querySelector('#discharge_med_id').value = String(matched.id || '0');
|
||||
}
|
||||
if (section.querySelector('#discharge_med_salt')) {
|
||||
section.querySelector('#discharge_med_salt').value = String(matched.med_salt || '').trim();
|
||||
}
|
||||
|
||||
// Auto-fill Type
|
||||
if (dischargeMedType && dischargeMedType.value.trim() === '') {
|
||||
|
|
@ -4285,6 +4298,9 @@ $historyFields = [
|
|||
if (section.querySelector('#discharge_med_id')) {
|
||||
section.querySelector('#discharge_med_id').value = '0';
|
||||
}
|
||||
if (section.querySelector('#discharge_med_salt')) {
|
||||
section.querySelector('#discharge_med_salt').value = '';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -4554,6 +4570,7 @@ $historyFields = [
|
|||
var rowSource = String($(this).data('source') || row.data('row-source') || 'legacy').trim() || 'legacy';
|
||||
|
||||
var medName = String($(this).data('med-name') || row.find('td:eq(1)').text() || '').trim();
|
||||
var medSalt = String($(this).data('med-salt') || '').trim();
|
||||
var medType = String($(this).data('med-type') || row.find('td:eq(0)').text() || '').trim();
|
||||
var doseId = String($(this).data('dose-id') || '').trim();
|
||||
var whenId = String($(this).data('dose-when-id') || '').trim();
|
||||
|
|
@ -4568,6 +4585,7 @@ $historyFields = [
|
|||
$('#discharge_med_item_id').val(rowId > 0 ? rowId : 0);
|
||||
$('#discharge_med_item_source').val(rowSource);
|
||||
$('#discharge_med_name').val(medName);
|
||||
$('#discharge_med_salt').val(medSalt);
|
||||
$('#discharge_med_type').val(medType);
|
||||
|
||||
if (doseId !== '' && doseId !== '0') {
|
||||
|
|
@ -4638,6 +4656,7 @@ $historyFields = [
|
|||
btnAddMed.dataset.bound = '1';
|
||||
btnAddMed.addEventListener('click', function() {
|
||||
var medName = $('#discharge_med_name').val().trim();
|
||||
var medSalt = $('#discharge_med_salt').val().trim();
|
||||
var medType = $('#discharge_med_type').val().trim();
|
||||
var dosage = $('#discharge_dosage').val();
|
||||
var dosageWhen = $('#discharge_dosage_when').val();
|
||||
|
|
@ -4706,6 +4725,7 @@ $historyFields = [
|
|||
drug_edit_id: editRowId,
|
||||
drug_edit_source: editRowSource,
|
||||
new_drug_name: medName,
|
||||
new_drug_salt: medSalt,
|
||||
new_drug_type: medType,
|
||||
new_drug_dose: dosage,
|
||||
new_drug_when: dosageWhen,
|
||||
|
|
@ -4781,6 +4801,7 @@ $historyFields = [
|
|||
var editBtn = targetRow.querySelector('.btn-edit-discharge-med');
|
||||
if (editBtn) {
|
||||
editBtn.setAttribute('data-med-name', medName);
|
||||
editBtn.setAttribute('data-med-salt', medSalt);
|
||||
editBtn.setAttribute('data-med-type', medType);
|
||||
editBtn.setAttribute('data-dose-id', dosage || '');
|
||||
editBtn.setAttribute('data-dose-when-id', dosageWhen || '');
|
||||
|
|
@ -4795,7 +4816,7 @@ $historyFields = [
|
|||
}
|
||||
|
||||
// Clear form
|
||||
$('#discharge_med_name, #discharge_med_type, #discharge_no_of_days, #discharge_qty, #discharge_remark').val('');
|
||||
$('#discharge_med_name, #discharge_med_salt, #discharge_med_type, #discharge_no_of_days, #discharge_qty, #discharge_remark').val('');
|
||||
$('#discharge_dosage, #discharge_dosage_when, #discharge_dosage_freq, #discharge_dose_where').val('');
|
||||
resetMedicineFormState();
|
||||
$('#discharge_med_name').focus();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user