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'));
|
$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) {
|
if ($id > 0) {
|
||||||
$this->db->table($table)->where('id', $id)->update($data);
|
$this->db->table($table)->where('id', $id)->update($data);
|
||||||
$savedId = $id;
|
$savedId = $id;
|
||||||
|
|
|
||||||
|
|
@ -749,20 +749,18 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="border rounded p-2">
|
<div class="border rounded p-2">
|
||||||
<h6 class="mb-2">Drug Allergy / ADR (NABH)</h6>
|
<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="row g-2">
|
||||||
<div class="col-md-4">
|
<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">
|
<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="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>
|
<option value="No Known Drug Allergy" <?= $allergyStatusNoKnown ? 'selected' : '' ?>>No Known Drug Allergy</option>
|
||||||
</select>
|
</select>
|
||||||
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<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">
|
<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 id="drug_allergy_details_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3476,8 +3474,8 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller
|
||||||
var status = (statusEl.value || '').trim();
|
var status = (statusEl.value || '').trim();
|
||||||
var details = detailsEl ? (detailsEl.value || '').trim() : '';
|
var details = detailsEl ? (detailsEl.value || '').trim() : '';
|
||||||
if (status === '') {
|
if (status === '') {
|
||||||
markNabhFieldError(form, '#drug_allergy_status', 'Drug Allergy Status is required as per NABH documentation.');
|
statusEl.value = 'Allergies Not Known';
|
||||||
return false;
|
status = 'Allergies Not Known';
|
||||||
}
|
}
|
||||||
if (status.toLowerCase() === 'known' && details === '') {
|
if (status.toLowerCase() === 'known' && details === '') {
|
||||||
markNabhFieldError(form, '#drug_allergy_details', 'Drug Allergy Details are required when Drug Allergy Status is Known.');
|
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>
|
<datalist id="med_company_suggestions"></datalist>
|
||||||
</div>
|
</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">
|
<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-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>
|
<button type="button" class="btn btn-outline-info btn-sm" id="btn_med_ai_details">Use AI</button>
|
||||||
|
|
@ -224,6 +257,7 @@
|
||||||
function clearForm() {
|
function clearForm() {
|
||||||
$('#med_id').val('0');
|
$('#med_id').val('0');
|
||||||
$('#med_item_name,#med_formulation,#med_genericname,#med_salt_name,#med_dosage_restriction,#med_company_name').val('');
|
$('#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() {
|
function buildMedicinePayload() {
|
||||||
|
|
@ -234,7 +268,14 @@
|
||||||
genericname: ($('#med_genericname').val() || '').trim(),
|
genericname: ($('#med_genericname').val() || '').trim(),
|
||||||
salt_name: ($('#med_salt_name').val() || '').trim(),
|
salt_name: ($('#med_salt_name').val() || '').trim(),
|
||||||
dosage_restriction: ($('#med_dosage_restriction').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_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_dosage_restriction').val(row.dosage_restriction || row.dose_restriction || row.restriction_note || row.restriction || '');
|
||||||
$('#med_company_name').val(row.company_name || '');
|
$('#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) {
|
function loadOne(medId) {
|
||||||
|
|
|
||||||
|
|
@ -482,21 +482,19 @@
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="border rounded p-2">
|
<div class="border rounded p-2">
|
||||||
<h6 class="mb-2">Drug Allergy / ADR (NABH)</h6>
|
<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="row g-2">
|
||||||
<div class="col-md-4">
|
<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 ?? ''))); ?>
|
<?php $allergyStatus = strtolower(trim((string) ($opd_prescription[0]->drug_allergy_status ?? ''))); ?>
|
||||||
<select class="form-select form-select-sm rx-instant" id="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="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>
|
<option value="No Known Drug Allergy" <?= in_array($allergyStatus, ['no known drug allergy', 'none'], true) ? 'selected' : '' ?>>No Known Drug Allergy</option>
|
||||||
</select>
|
</select>
|
||||||
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
<div id="drug_allergy_status_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<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 ?? '') ?>">
|
<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 id="drug_allergy_details_error" class="invalid-feedback d-block" style="display:none;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -2275,14 +2273,11 @@
|
||||||
var allergyStatusNorm = allergyStatus.toLowerCase().replace(/\s+/g, ' ');
|
var allergyStatusNorm = allergyStatus.toLowerCase().replace(/\s+/g, ' ');
|
||||||
|
|
||||||
if (allergyStatus === '') {
|
if (allergyStatus === '') {
|
||||||
var msgStatus = 'Drug Allergy Status is required as per NABH documentation.';
|
allergyStatus = 'Allergies Not Known';
|
||||||
setStatus('error', 'Drug Allergy Status is required');
|
allergyStatusNorm = 'allergies not known';
|
||||||
$('.jsError').removeClass('text-muted text-success').addClass('text-danger').text(msgStatus);
|
if ($('#drug_allergy_status').length) {
|
||||||
markNabhFieldError('#drug_allergy_status', msgStatus);
|
$('#drug_allergy_status').val('Allergies Not Known');
|
||||||
if (typeof done === 'function') {
|
|
||||||
done(false, { update: 0, error_text: msgStatus });
|
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((allergyStatusNorm === 'known' || allergyStatusNorm === 'yes' || allergyStatusNorm === 'present') && allergyDetails === '') {
|
if ((allergyStatusNorm === 'known' || allergyStatusNorm === 'yes' || allergyStatusNorm === 'present') && allergyDetails === '') {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user