From f5cbdc4104ab81e38b8125542693bb25c9034b16 Mon Sep 17 00:00:00 2001 From: Daniel Onyejesi Date: Sun, 22 Mar 2026 17:39:04 -0400 Subject: [PATCH] =?UTF-8?q?Fix:=20save/load=20encounters=20=E2=80=94=20hid?= =?UTF-8?q?den=20popovers,=20label=20IDs,=20note=20IDs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CSS: .enc-load-popover.hidden now overrides display:flex (specificity bug caused popovers to always be visible) - resumeEncounter: add domPfxMap to correctly resolve label element IDs (enc_type 'wellvisit' → 'wv-label', 'hospital' → 'hosp-label', etc.) - resumeEncounter: use noteIdMap to find the right output element per tab - resumeEncounter: use enc.enc_type (not tabName) as _savedEncId_ key for consistency with saveFromTab --- public/css/styles.css | 1 + public/js/encounters.js | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/public/css/styles.css b/public/css/styles.css index d3bb74c..0092e1c 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -418,6 +418,7 @@ body{font-family:'Inter',system-ui,sans-serif;background:var(--g50);color:var(-- /* Inline load popover — compact dropdown, right-aligned under Load button */ .enc-load-popover{position:absolute;right:0;top:calc(100% + 4px);width:360px;max-width:calc(100vw - 24px);background:white;border:1px solid var(--g300);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,0.15);z-index:600;display:flex;flex-direction:column;} +.enc-load-popover.hidden{display:none;} .enc-load-popover-inner{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--g200);} .enc-load-search{flex:1;padding:6px 10px;border:1px solid var(--g300);border-radius:6px;font-size:13px;font-family:inherit;} .enc-load-search:focus{outline:none;border-color:var(--blue);} diff --git a/public/js/encounters.js b/public/js/encounters.js index 35fe2c4..ab7f26f 100644 --- a/public/js/encounters.js +++ b/public/js/encounters.js @@ -244,25 +244,36 @@ var tabBtn = document.querySelector('.tab-btn[data-tab="' + tabName + '"]'); if (tabBtn) tabBtn.click(); + // Map enc_type → DOM element prefix + var domPfxMap = { + encounter: 'enc', dictation: 'dict', hospital: 'hosp', chart: 'chart', + wellvisit: 'wv', sickvisit: 'sick', soap: 'soap', milestones: 'ms' + }; + var domPfx = domPfxMap[enc.enc_type] || enc.enc_type; + var noteIdMap = { + encounter: 'enc-hpi-text', dictation: 'dict-hpi-text', + hospital: 'hc-course-text', chart: 'cr-review-text', + wellvisit: 'wv-note-text', sickvisit: 'sick-note-text' + }; + // Fill in data setTimeout(function() { // Fill label - var labelEl = document.getElementById(tabName + '-label') || document.getElementById(enc.enc_type + '-label'); + var labelEl = document.getElementById(domPfx + '-label'); if (labelEl) labelEl.value = enc.label; // Set saved ID so next save updates same record - window['_savedEncId_' + tabName] = enc.id; + window['_savedEncId_' + enc.enc_type] = enc.id; // Call tab-specific handler if (window._encLoadHandlers && window._encLoadHandlers[enc.enc_type]) { window._encLoadHandlers[enc.enc_type](enc); } else { - // Default: fill transcript field if it exists - var transcriptEl = document.getElementById(tabName + '-transcript') || document.getElementById(enc.enc_type + '-transcript'); + // Default: fill transcript and generated note + var transcriptEl = document.getElementById(domPfx + '-transcript'); if (transcriptEl && enc.transcript) transcriptEl.textContent = enc.transcript; - // Fill generated note if (enc.generated_note) { - var noteEl = document.getElementById(enc.enc_type + '-hpi-text') || document.getElementById(tabName + '-hpi-text'); + var noteEl = document.getElementById(noteIdMap[enc.enc_type] || (domPfx + '-hpi-text')); if (noteEl) { noteEl.textContent = enc.generated_note; var outputCard = noteEl.closest('.output-card');