fix(nursing): pre-fill saved Admission Snapshot fields and persist active workspace tab

This commit is contained in:
DevSoftTech Server 2026-08-28 03:19:44 +05:30
parent 863c17f9bc
commit 9a9dba1f8f

View File

@ -78,6 +78,30 @@ foreach ($entries as $entryRow) {
} }
} }
ksort($nurseNames); ksort($nurseNames);
$latestAdmissionEntry = null;
foreach ($entries as $entryRow) {
if (($entryRow['entry_type'] ?? '') === 'admission') {
$latestAdmissionEntry = $entryRow;
break;
}
}
$admRecordedAt = !empty($latestAdmissionEntry['recorded_at'])
? date('Y-m-d\TH:i', strtotime($latestAdmissionEntry['recorded_at']))
: date('Y-m-d\TH:i');
$admNurseId = (int) ($latestAdmissionEntry['recorded_by_id'] ?? 0);
$admComplaints = (string) ($latestAdmissionEntry['treatment_text'] ?? '');
$admTempF = (isset($latestAdmissionEntry['temperature_c']) && $latestAdmissionEntry['temperature_c'] !== null && $latestAdmissionEntry['temperature_c'] !== '')
? $toFahrenheit($latestAdmissionEntry['temperature_c'])
: '';
$admPulse = (string) ($latestAdmissionEntry['pulse_rate'] ?? '');
$admResp = (string) ($latestAdmissionEntry['resp_rate'] ?? '');
$admSbp = (string) ($latestAdmissionEntry['bp_systolic'] ?? '');
$admDbp = (string) ($latestAdmissionEntry['bp_diastolic'] ?? '');
$admSpo2 = (string) ($latestAdmissionEntry['spo2'] ?? '');
$admWeight = (string) ($latestAdmissionEntry['weight_kg'] ?? '');
$admNote = (string) ($latestAdmissionEntry['general_note'] ?? '');
?> ?>
<style> <style>
.nursing-workspace-page #nursing_panel_content { .nursing-workspace-page #nursing_panel_content {
@ -198,13 +222,13 @@ ksort($nurseNames);
</strong> </strong>
</div> </div>
<div class="p-2" id="nursing_entry_tabs" role="tablist"> <div class="p-2" id="nursing_entry_tabs" role="tablist">
<button type="button" class="nav-link" data-nursing-tab="nursing_tab_admission"> <button type="button" class="nav-link active" data-nursing-tab="nursing_tab_admission">
<i class="bi bi-person-vcard text-primary"></i> Admission Snapshot <i class="bi bi-person-vcard text-primary"></i> Admission Snapshot
</button> </button>
<button type="button" class="nav-link" data-nursing-tab="nursing_tab_history"> <button type="button" class="nav-link" data-nursing-tab="nursing_tab_history">
<i class="bi bi-file-earmark-medical text-info"></i> History &amp; Physical <i class="bi bi-file-earmark-medical text-info"></i> History &amp; Physical
</button> </button>
<button type="button" class="nav-link active" data-nursing-tab="nursing_tab_vitals"> <button type="button" class="nav-link" data-nursing-tab="nursing_tab_vitals">
<i class="bi bi-heart-pulse text-danger"></i> Vitals <i class="bi bi-heart-pulse text-danger"></i> Vitals
</button> </button>
<button type="button" class="nav-link" data-nursing-tab="nursing_tab_fluid"> <button type="button" class="nav-link" data-nursing-tab="nursing_tab_fluid">
@ -398,31 +422,31 @@ ksort($nurseNames);
</div> </div>
</div> </div>
<div class="nursing-tab-pane d-none" id="nursing_tab_admission"> <div class="nursing-tab-pane" id="nursing_tab_admission">
<form class="row g-2 nursing-form" data-save-url="<?= esc($saveUrl) ?>"> <form class="row g-2 nursing-form" data-save-url="<?= esc($saveUrl) ?>">
<?= csrf_field() ?> <?= csrf_field() ?>
<input type="hidden" name="entry_type" value="admission"> <input type="hidden" name="entry_type" value="admission">
<div class="col-md-3"><label class="form-label">Recorded At</label><input type="datetime-local" class="form-control" name="recorded_at" value="<?= date('Y-m-d\\TH:i') ?>"></div> <div class="col-md-3"><label class="form-label">Recorded At</label><input type="datetime-local" class="form-control" name="recorded_at" value="<?= esc($admRecordedAt) ?>"></div>
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label">Nursing Staff (ID / Name)</label> <label class="form-label">Nursing Staff (ID / Name)</label>
<select name="recorded_by_nurse_id" class="form-select"> <select name="recorded_by_nurse_id" class="form-select">
<option value="0">-- Select Nursing Staff --</option> <option value="0">-- Select Nursing Staff --</option>
<?php foreach (($nurse_list ?? []) as $nRow): ?> <?php foreach (($nurse_list ?? []) as $nRow): ?>
<option value="<?= (int) $nRow['id'] ?>"> <option value="<?= (int) $nRow['id'] ?>" <?= $admNurseId === (int)$nRow['id'] ? 'selected' : '' ?>>
<?= esc(($nRow['nurse_code'] ? '[' . $nRow['nurse_code'] . '] ' : '') . $nRow['name']) ?> <?= esc(($nRow['nurse_code'] ? '[' . $nRow['nurse_code'] . '] ' : '') . $nRow['name']) ?>
</option> </option>
<?php endforeach; ?> <?php endforeach; ?>
</select> </select>
</div> </div>
<div class="col-md-12"><label class="form-label">Admission Complaints / Reason</label><textarea class="form-control" name="treatment_text" rows="3" placeholder="Chief complaints and reason for admission"></textarea></div> <div class="col-md-12"><label class="form-label">Admission Complaints / Reason</label><textarea class="form-control" name="treatment_text" rows="3" placeholder="Chief complaints and reason for admission"><?= esc($admComplaints) ?></textarea></div>
<div class="col-md-1"><label class="form-label">Temp °F</label><input type="number" step="0.1" class="form-control" name="temperature_f"></div> <div class="col-md-1"><label class="form-label">Temp °F</label><input type="number" step="0.1" class="form-control" name="temperature_f" value="<?= esc($admTempF) ?>"></div>
<div class="col-md-1"><label class="form-label">Pulse</label><input type="number" class="form-control" name="pulse_rate"></div> <div class="col-md-1"><label class="form-label">Pulse</label><input type="number" class="form-control" name="pulse_rate" value="<?= esc($admPulse) ?>"></div>
<div class="col-md-1"><label class="form-label">Resp</label><input type="number" class="form-control" name="resp_rate"></div> <div class="col-md-1"><label class="form-label">Resp</label><input type="number" class="form-control" name="resp_rate" value="<?= esc($admResp) ?>"></div>
<div class="col-md-1"><label class="form-label">SBP</label><input type="number" class="form-control" name="bp_systolic"></div> <div class="col-md-1"><label class="form-label">SBP</label><input type="number" class="form-control" name="bp_systolic" value="<?= esc($admSbp) ?>"></div>
<div class="col-md-1"><label class="form-label">DBP</label><input type="number" class="form-control" name="bp_diastolic"></div> <div class="col-md-1"><label class="form-label">DBP</label><input type="number" class="form-control" name="bp_diastolic" value="<?= esc($admDbp) ?>"></div>
<div class="col-md-1"><label class="form-label">SpO2 %</label><input type="number" class="form-control" name="spo2"></div> <div class="col-md-1"><label class="form-label">SpO2 %</label><input type="number" class="form-control" name="spo2" value="<?= esc($admSpo2) ?>"></div>
<div class="col-md-1"><label class="form-label">Weight</label><input type="number" step="0.1" class="form-control" name="weight_kg"></div> <div class="col-md-1"><label class="form-label">Weight</label><input type="number" step="0.1" class="form-control" name="weight_kg" value="<?= esc($admWeight) ?>"></div>
<div class="col-md-12"><label class="form-label">Additional Admission Note</label><textarea class="form-control" name="general_note" rows="2"></textarea></div> <div class="col-md-12"><label class="form-label">Additional Admission Note</label><textarea class="form-control" name="general_note" rows="2"><?= esc($admNote) ?></textarea></div>
<div class="col-md-12"><button type="submit" class="btn btn-primary btn-sm">Save Admission Snapshot</button></div> <div class="col-md-12"><button type="submit" class="btn btn-primary btn-sm">Save Admission Snapshot</button></div>
</form> </form>
</div> </div>
@ -1412,6 +1436,10 @@ ksort($nurseNames);
targetPane.classList.remove('d-none'); targetPane.classList.remove('d-none');
} }
if (window.sessionStorage && targetId) {
sessionStorage.setItem('nursing_active_tab_<?= $ipdId ?>', targetId);
}
var contentUrl = button.getAttribute('data-url'); var contentUrl = button.getAttribute('data-url');
if (contentUrl && targetId === 'nursing_tab_ot') { if (contentUrl && targetId === 'nursing_tab_ot') {
load_form_div(contentUrl, 'tab_ot_content'); load_form_div(contentUrl, 'tab_ot_content');
@ -1419,6 +1447,16 @@ ksort($nurseNames);
}); });
}); });
if (window.sessionStorage) {
var savedTab = sessionStorage.getItem('nursing_active_tab_<?= $ipdId ?>');
if (savedTab) {
var savedBtn = document.querySelector('#nursing_entry_tabs [data-nursing-tab="' + savedTab + '"]');
if (savedBtn) {
savedBtn.click();
}
}
}
forms.forEach(function (form) { forms.forEach(function (form) {
var recordedAtInput = form.querySelector('input[name="recorded_at"]'); var recordedAtInput = form.querySelector('input[name="recorded_at"]');
var shiftDisplayInput = form.querySelector('.nursing-shift-display'); var shiftDisplayInput = form.querySelector('.nursing-shift-display');