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);
$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>
.nursing-workspace-page #nursing_panel_content {
@ -198,13 +222,13 @@ ksort($nurseNames);
</strong>
</div>
<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
</button>
<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
</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
</button>
<button type="button" class="nav-link" data-nursing-tab="nursing_tab_fluid">
@ -398,31 +422,31 @@ ksort($nurseNames);
</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) ?>">
<?= csrf_field() ?>
<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">
<label class="form-label">Nursing Staff (ID / Name)</label>
<select name="recorded_by_nurse_id" class="form-select">
<option value="0">-- Select Nursing Staff --</option>
<?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']) ?>
</option>
<?php endforeach; ?>
</select>
</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-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">Pulse</label><input type="number" class="form-control" name="pulse_rate"></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">SBP</label><input type="number" class="form-control" name="bp_systolic"></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">SpO2 %</label><input type="number" class="form-control" name="spo2"></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-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">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" value="<?= esc($admTempF) ?>"></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" value="<?= esc($admResp) ?>"></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" value="<?= esc($admDbp) ?>"></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" 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"><?= esc($admNote) ?></textarea></div>
<div class="col-md-12"><button type="submit" class="btn btn-primary btn-sm">Save Admission Snapshot</button></div>
</form>
</div>
@ -1412,6 +1436,10 @@ ksort($nurseNames);
targetPane.classList.remove('d-none');
}
if (window.sessionStorage && targetId) {
sessionStorage.setItem('nursing_active_tab_<?= $ipdId ?>', targetId);
}
var contentUrl = button.getAttribute('data-url');
if (contentUrl && targetId === 'nursing_tab_ot') {
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) {
var recordedAtInput = form.querySelector('input[name="recorded_at"]');
var shiftDisplayInput = form.querySelector('.nursing-shift-display');