OPD/IPD: add dosage defaults to medicine master form; make drug allergy non-mandatory (default: Allergies Not Known)
This commit is contained in:
parent
a5c604b486
commit
e27a69df5d
|
|
@ -2278,6 +2278,12 @@ class Opd_prescription extends BaseController
|
|||
$data[$restrictionField] = trim((string) $this->request->getPost('dosage_restriction'));
|
||||
}
|
||||
|
||||
foreach (['dosage', 'dosage_when', 'dosage_freq', 'dosage_where', 'no_of_days', 'qty', 'remark'] as $dosageField) {
|
||||
if (in_array($dosageField, $fields, true)) {
|
||||
$data[$dosageField] = trim((string) $this->request->getPost($dosageField));
|
||||
}
|
||||
}
|
||||
|
||||
if ($id > 0) {
|
||||
$this->db->table($table)->where('id', $id)->update($data);
|
||||
$savedId = $id;
|
||||
|
|
|
|||
|
|
@ -749,20 +749,18 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller
|
|||
<div class="col-md-12">
|
||||
<div class="border rounded p-2">
|
||||
<h6 class="mb-2">Drug Allergy / ADR (NABH)</h6>
|
||||
<div class="small text-danger mb-2">Required: Drug Allergy Status is mandatory. If status is Known, Drug Allergy Details are mandatory.</div>
|
||||
<div class="row g-2">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label mb-1">Drug Allergy Status <span class="text-danger">*</span></label>
|
||||
<label class="form-label mb-1">Drug Allergy Status</label>
|
||||
<select class="form-select form-select-sm" id="drug_allergy_status" name="drug_allergy_status">
|
||||
<option value="">Select status</option>
|
||||
<option value="Allergies Not Known" <?= ($allergyStatusUnknown || (!$allergyStatusKnown && !$allergyStatusNoKnown)) ? 'selected' : '' ?>>Allergies Not Known</option>
|
||||
<option value="Known" <?= $allergyStatusKnown ? 'selected' : '' ?>>Known</option>
|
||||
<option value="Allergies Not Known" <?= $allergyStatusUnknown ? 'selected' : '' ?>>Allergies Not Known</option>
|
||||
<option value="No Known Drug Allergy" <?= $allergyStatusNoKnown ? 'selected' : '' ?>>No Known Drug Allergy</option>
|
||||
</select>
|
||||
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<label class="form-label mb-1">Drug Allergy Details <span class="text-danger">*</span> <span class="small text-muted">(when status = Known)</span></label>
|
||||
<label class="form-label mb-1">Drug Allergy Details <span class="small text-muted">(when status = Known)</span></label>
|
||||
<input type="text" class="form-control form-control-sm" id="drug_allergy_details" name="drug_allergy_details" value="<?= esc($drugAllergyDetails) ?>" placeholder="e.g. Penicillin rash, NSAID gastritis">
|
||||
<div id="drug_allergy_details_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||
</div>
|
||||
|
|
@ -3476,8 +3474,8 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller
|
|||
var status = (statusEl.value || '').trim();
|
||||
var details = detailsEl ? (detailsEl.value || '').trim() : '';
|
||||
if (status === '') {
|
||||
markNabhFieldError(form, '#drug_allergy_status', 'Drug Allergy Status is required as per NABH documentation.');
|
||||
return false;
|
||||
statusEl.value = 'Allergies Not Known';
|
||||
status = 'Allergies Not Known';
|
||||
}
|
||||
if (status.toLowerCase() === 'known' && details === '') {
|
||||
markNabhFieldError(form, '#drug_allergy_details', 'Drug Allergy Details are required when Drug Allergy Status is Known.');
|
||||
|
|
|
|||
|
|
@ -100,6 +100,39 @@
|
|||
<datalist id="med_company_suggestions"></datalist>
|
||||
</div>
|
||||
|
||||
<hr class="my-2">
|
||||
<div class="small fw-semibold text-muted mb-1">Prescription Defaults <span class="text-info">(auto-fills on consult form)</span></div>
|
||||
<div class="row g-1 mb-2">
|
||||
<div class="col-6">
|
||||
<label class="form-label form-label-sm mb-0">Dose</label>
|
||||
<input type="text" id="med_default_dosage" class="form-control form-control-sm" placeholder="e.g. 1-0-1">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label class="form-label form-label-sm mb-0">When</label>
|
||||
<input type="text" id="med_default_when" class="form-control form-control-sm" placeholder="e.g. AC">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label class="form-label form-label-sm mb-0">Frequency</label>
|
||||
<input type="text" id="med_default_freq" class="form-control form-control-sm" placeholder="e.g. TDS">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label class="form-label form-label-sm mb-0">Route</label>
|
||||
<input type="text" id="med_default_where" class="form-control form-control-sm" placeholder="e.g. ORAL">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label class="form-label form-label-sm mb-0">Days</label>
|
||||
<input type="text" id="med_default_days" class="form-control form-control-sm" placeholder="e.g. 5">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label class="form-label form-label-sm mb-0">Qty</label>
|
||||
<input type="text" id="med_default_qty" class="form-control form-control-sm" placeholder="e.g. 15">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label class="form-label form-label-sm mb-0">Remark</label>
|
||||
<input type="text" id="med_default_remark" class="form-control form-control-sm" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<button type="button" class="btn btn-primary btn-sm" id="btn_med_save">Update</button>
|
||||
<button type="button" class="btn btn-outline-info btn-sm" id="btn_med_ai_details">Use AI</button>
|
||||
|
|
@ -224,6 +257,7 @@
|
|||
function clearForm() {
|
||||
$('#med_id').val('0');
|
||||
$('#med_item_name,#med_formulation,#med_genericname,#med_salt_name,#med_dosage_restriction,#med_company_name').val('');
|
||||
$('#med_default_dosage,#med_default_when,#med_default_freq,#med_default_where,#med_default_days,#med_default_qty,#med_default_remark').val('');
|
||||
}
|
||||
|
||||
function buildMedicinePayload() {
|
||||
|
|
@ -234,7 +268,14 @@
|
|||
genericname: ($('#med_genericname').val() || '').trim(),
|
||||
salt_name: ($('#med_salt_name').val() || '').trim(),
|
||||
dosage_restriction: ($('#med_dosage_restriction').val() || '').trim(),
|
||||
company_name: ($('#med_company_name').val() || '').trim()
|
||||
company_name: ($('#med_company_name').val() || '').trim(),
|
||||
dosage: ($('#med_default_dosage').val() || '').trim(),
|
||||
dosage_when: ($('#med_default_when').val() || '').trim(),
|
||||
dosage_freq: ($('#med_default_freq').val() || '').trim(),
|
||||
dosage_where: ($('#med_default_where').val() || '').trim(),
|
||||
no_of_days: ($('#med_default_days').val() || '').trim(),
|
||||
qty: ($('#med_default_qty').val() || '').trim(),
|
||||
remark: ($('#med_default_remark').val() || '').trim()
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -268,6 +309,13 @@
|
|||
$('#med_salt_name').val(row.salt_name || row.sal_name || row.salt || row.saltname || '');
|
||||
$('#med_dosage_restriction').val(row.dosage_restriction || row.dose_restriction || row.restriction_note || row.restriction || '');
|
||||
$('#med_company_name').val(row.company_name || '');
|
||||
$('#med_default_dosage').val(row.dosage || '');
|
||||
$('#med_default_when').val(row.dosage_when || '');
|
||||
$('#med_default_freq').val(row.dosage_freq || '');
|
||||
$('#med_default_where').val(row.dosage_where || '');
|
||||
$('#med_default_days').val(row.no_of_days || '');
|
||||
$('#med_default_qty').val(row.qty || '');
|
||||
$('#med_default_remark').val(row.remark || '');
|
||||
}
|
||||
|
||||
function loadOne(medId) {
|
||||
|
|
|
|||
|
|
@ -482,21 +482,19 @@
|
|||
<div class="col-md-12">
|
||||
<div class="border rounded p-2">
|
||||
<h6 class="mb-2">Drug Allergy / ADR (NABH)</h6>
|
||||
<div class="small text-danger mb-2">Required: Drug Allergy Status is mandatory. If status is Known, Drug Allergy Details are mandatory.</div>
|
||||
<div class="row g-2">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label mb-1">Drug Allergy Status <span class="text-danger">*</span></label>
|
||||
<label class="form-label mb-1">Drug Allergy Status</label>
|
||||
<?php $allergyStatus = strtolower(trim((string) ($opd_prescription[0]->drug_allergy_status ?? ''))); ?>
|
||||
<select class="form-select form-select-sm rx-instant" id="drug_allergy_status">
|
||||
<option value="">Select status</option>
|
||||
<option value="Allergies Not Known" <?= ($allergyStatus === '' || in_array($allergyStatus, ['allergies not known', 'not known'], true)) ? 'selected' : '' ?>>Allergies Not Known</option>
|
||||
<option value="Known" <?= $allergyStatus === 'known' ? 'selected' : '' ?>>Known</option>
|
||||
<option value="Allergies Not Known" <?= in_array($allergyStatus, ['allergies not known', 'not known'], true) ? 'selected' : '' ?>>Allergies Not Known</option>
|
||||
<option value="No Known Drug Allergy" <?= in_array($allergyStatus, ['no known drug allergy', 'none'], true) ? 'selected' : '' ?>>No Known Drug Allergy</option>
|
||||
</select>
|
||||
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<label class="form-label mb-1">Drug Allergy Details <span class="text-danger">*</span> <span class="small text-muted">(when status = Known)</span></label>
|
||||
<label class="form-label mb-1">Drug Allergy Details <span class="small text-muted">(when status = Known)</span></label>
|
||||
<input type="text" class="form-control form-control-sm rx-instant" id="drug_allergy_details" placeholder="e.g. Penicillin rash, NSAID gastritis" value="<?= esc($opd_prescription[0]->drug_allergy_details ?? '') ?>">
|
||||
<div id="drug_allergy_details_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||
</div>
|
||||
|
|
@ -2275,14 +2273,11 @@
|
|||
var allergyStatusNorm = allergyStatus.toLowerCase().replace(/\s+/g, ' ');
|
||||
|
||||
if (allergyStatus === '') {
|
||||
var msgStatus = 'Drug Allergy Status is required as per NABH documentation.';
|
||||
setStatus('error', 'Drug Allergy Status is required');
|
||||
$('.jsError').removeClass('text-muted text-success').addClass('text-danger').text(msgStatus);
|
||||
markNabhFieldError('#drug_allergy_status', msgStatus);
|
||||
if (typeof done === 'function') {
|
||||
done(false, { update: 0, error_text: msgStatus });
|
||||
allergyStatus = 'Allergies Not Known';
|
||||
allergyStatusNorm = 'allergies not known';
|
||||
if ($('#drug_allergy_status').length) {
|
||||
$('#drug_allergy_status').val('Allergies Not Known');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ((allergyStatusNorm === 'known' || allergyStatusNorm === 'yes' || allergyStatusNorm === 'present') && allergyDetails === '') {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user