Standardize Relation to Food (When) in IPD discharge to match OPD consult format

This commit is contained in:
DevSoftTech Server 2026-09-22 19:35:44 +05:30
parent 39ff463b57
commit 93a6fdf89e

View File

@ -1468,7 +1468,7 @@ $historyFields = [
<th>Type</th> <th>Type</th>
<th>Medicine</th> <th>Medicine</th>
<th>Dose</th> <th>Dose</th>
<th>When</th> <th>Relation to Food (When)</th>
<th>Freq</th> <th>Freq</th>
<th>Days</th> <th>Days</th>
<th>Remark</th> <th>Remark</th>
@ -5733,17 +5733,22 @@ $historyFields = [
}; };
var dischargeWhenDescMap = { var dischargeWhenDescMap = {
'BF': 'BF -> Before Food', 'BF': 'BF - Before Food',
'AF': 'AF -> After Food', 'AF': 'AF - After Food',
'WF': 'WF -> With Food', 'WF': 'WF - With Food',
'ES': 'ES -> Empty Stomach', 'ES': 'EMPTY STOMACH - MORNING EMPTY STOMACH',
'BBF': 'BBF -> Before Breakfast', 'BB': 'BB - Before Breakfast',
'ABF': 'ABF -> After Breakfast', 'AB': 'AB - After Breakfast',
'BL': 'BL -> Before Lunch', 'BBF': 'BBF - Before Breakfast',
'AL': 'AL -> After Lunch', 'ABF': 'ABF - After Breakfast',
'BD': 'BD -> Before Dinner', 'BL': 'BL - Before Lunch',
'AD': 'AD -> After Dinner', 'AL': 'AL - After Lunch',
'BT': 'BT -> Bed Time' 'BD': 'BD - Before Dinner',
'AD': 'AD - After Dinner',
'BT': 'BT - Bed Time',
'WT': 'WT - With Tea',
'BBATH': 'BBATH - Before Bath',
'EMPTY STOMACH': 'EMPTY STOMACH - MORNING EMPTY STOMACH'
}; };
function renderSelectOptions($select, rows, placeholder, descMap) { function renderSelectOptions($select, rows, placeholder, descMap) {
@ -5751,18 +5756,86 @@ $historyFields = [
(rows || []).forEach(function(row) { (rows || []).forEach(function(row) {
var id = (row && row.id !== undefined) ? String(row.id) : ''; var id = (row && row.id !== undefined) ? String(row.id) : '';
var label = (row && row.label !== undefined) ? String(row.label) : ''; var label = (row && row.label !== undefined) ? String(row.label) : '';
if (!id || !label) { var secLabel = (row && row.secondary_label !== undefined) ? String(row.secondary_label) : '';
var localLabel = (row && row.local_label !== undefined) ? String(row.local_label) : '';
if (!label && !id) {
return; return;
} }
if (!label && id) {
label = id;
}
var val = label;
var displayText = label; var displayText = label;
if (descMap && descMap[label.toUpperCase()]) { if (secLabel && secLabel.toLowerCase() !== label.toLowerCase()) {
displayText = label + ' - ' + secLabel;
} else if (descMap && descMap[label.toUpperCase()]) {
displayText = descMap[label.toUpperCase()]; displayText = descMap[label.toUpperCase()];
} }
html += '<option value="' + $('<div>').text(id).html() + '">' + $('<div>').text(displayText).html() + '</option>'; html += '<option value="' + $('<div>').text(val).html() + '" data-id="' + $('<div>').text(id).html() + '"' + (localLabel ? ' data-local-label="' + $('<div>').text(localLabel).html() + '"' : '') + '>' + $('<div>').text(displayText).html() + '</option>';
}); });
$select.html(html); $select.html(html);
} }
function setDischargeWhenValue(val) {
var $sel = $('#discharge_dosage_when');
if (!$sel.length) return;
var probe = (val || '').toString().trim();
if (!probe || probe === '0' || probe === '-' || probe.toLowerCase() === 'when') {
$sel.val('');
return;
}
var probeLower = probe.toLowerCase();
// 1. Direct value match
$sel.val(probe);
if ($sel.val()) return;
// 2. Case-insensitive value match
var matchedVal = '';
$sel.find('option').each(function() {
var oVal = $(this).val();
if (oVal && oVal.toLowerCase() === probeLower) {
matchedVal = oVal;
return false;
}
});
if (matchedVal) {
$sel.val(matchedVal);
return;
}
// 3. Match by data-id
var $byDataId = $sel.find('option[data-id="' + probe.replace(/"/g, '&quot;') + '"]');
if ($byDataId.length) {
$sel.val($byDataId.val());
return;
}
// 4. Match by option text
$sel.find('option').each(function() {
var oVal = $(this).val();
var oText = $(this).text().trim().toLowerCase();
if (!oVal) return;
if (oText === probeLower || oText.indexOf(probeLower + ' -') === 0 || oText.indexOf(probeLower + ' ->') === 0) {
matchedVal = oVal;
return false;
}
if (probeLower === 'es' && (oVal.toLowerCase() === 'empty stomach' || oText.indexOf('empty stomach') !== -1)) {
matchedVal = oVal;
return false;
}
});
if (matchedVal) {
$sel.val(matchedVal);
return;
}
// 5. Fallback: ensure option and select
ensureDoseOption('#discharge_dosage_when', probe);
$sel.val(probe);
}
window.setDischargeWhenValue = setDischargeWhenValue;
function loadDischargeDoseMasters() { function loadDischargeDoseMasters() {
$.get('<?= base_url('Opd_prescription/rx_group_dose_masters') ?>', function(data) { $.get('<?= base_url('Opd_prescription/rx_group_dose_masters') ?>', function(data) {
doseMasterCache = { doseMasterCache = {
@ -5772,8 +5845,17 @@ $historyFields = [
where: (data && data.where) ? data.where : [] where: (data && data.where) ? data.where : []
}; };
var currentWhen = $('#discharge_dosage_when').val();
renderSelectOptions($('#discharge_dosage_when'), doseMasterCache.when, 'When', dischargeWhenDescMap); renderSelectOptions($('#discharge_dosage_when'), doseMasterCache.when, 'When', dischargeWhenDescMap);
if (currentWhen) {
setDischargeWhenValue(currentWhen);
}
var currentWhere = $('#discharge_dose_where').val();
renderSelectOptions($('#discharge_dose_where'), doseMasterCache.where, 'Route'); renderSelectOptions($('#discharge_dose_where'), doseMasterCache.where, 'Route');
if (currentWhere) {
$('#discharge_dose_where').val(currentWhere);
}
}, 'json').fail(function() { }, 'json').fail(function() {
setMedicineStatus('Unable to load dose masters.', 'error'); setMedicineStatus('Unable to load dose masters.', 'error');
}); });
@ -6269,8 +6351,12 @@ $historyFields = [
var value = matched[mapping[0]]; var value = matched[mapping[0]];
var target = section.querySelector(mapping[1]); var target = section.querySelector(mapping[1]);
if (value && target && target.value === '') { if (value && target && target.value === '') {
ensureDoseOption(target, value); if (mapping[1] === '#discharge_dosage_when') {
target.value = value; setDischargeWhenValue(value);
} else {
ensureDoseOption(target, value);
target.value = value;
}
} }
}); });
@ -6675,8 +6761,12 @@ $historyFields = [
} }
var exists = false; var exists = false;
var valLower = value.toLowerCase();
$(select).find('option').each(function() { $(select).find('option').each(function() {
if ($(this).val() === value) { var oVal = $(this).val();
var oId = String($(this).data('id') || '');
var oText = $(this).text().trim().toLowerCase();
if (oVal === value || (oVal && oVal.toLowerCase() === valLower) || oId === value || oText === valLower) {
exists = true; exists = true;
return false; return false;
} }
@ -6762,23 +6852,7 @@ $historyFields = [
$('#discharge_dosage').val(doseLabel || doseId || ''); $('#discharge_dosage').val(doseLabel || doseId || '');
// Relation to Food (When): If empty or 0, reset dropdown to empty placeholder // Relation to Food (When): If empty or 0, reset dropdown to empty placeholder
if (whenId !== '' && whenId !== '0') { setDischargeWhenValue(whenLabel || whenId);
$('#discharge_dosage_when').val(whenId);
if (!$('#discharge_dosage_when').val() && whenLabel) {
ensureDoseOption('#discharge_dosage_when', whenLabel);
$('#discharge_dosage_when').val(whenLabel);
}
} else if (whenLabel !== '' && whenLabel !== '-' && whenLabel !== '0' && whenLabel !== 'When') {
ensureDoseOption('#discharge_dosage_when', whenLabel);
$('#discharge_dosage_when').val(whenLabel);
if (!$('#discharge_dosage_when').val()) {
$('#discharge_dosage_when option').filter(function() {
return $(this).text().trim().toLowerCase() === whenLabel.toLowerCase();
}).prop('selected', true);
}
} else {
$('#discharge_dosage_when').val('');
}
$('#discharge_dosage_freq').val(freqLabel || freqId || ''); $('#discharge_dosage_freq').val(freqLabel || freqId || '');
@ -6842,7 +6916,9 @@ $historyFields = [
var value = String(btn.getAttribute('data-fill-value') || '').trim(); var value = String(btn.getAttribute('data-fill-value') || '').trim();
var target = targetId ? section.querySelector('#' + targetId) : null; var target = targetId ? section.querySelector('#' + targetId) : null;
if (target) { if (target) {
if (target.tagName.toLowerCase() === 'select') { if (targetId === 'discharge_dosage_when') {
setDischargeWhenValue(value);
} else if (target.tagName.toLowerCase() === 'select') {
// For select elements, set the value or add it if needed // For select elements, set the value or add it if needed
target.value = value; target.value = value;
} else { } else {
@ -6890,7 +6966,7 @@ $historyFields = [
var whenLabel = dosageWhen; var whenLabel = dosageWhen;
if (dosageWhen) { if (dosageWhen) {
var whenRow = doseMasterCache.when.find(function(r) { var whenRow = doseMasterCache.when.find(function(r) {
return String(r.id) === dosageWhen; return String(r.id) === dosageWhen || String(r.label).toLowerCase() === dosageWhen.toLowerCase();
}); });
if (whenRow) whenLabel = whenRow.label; if (whenRow) whenLabel = whenRow.label;
} }