fix ui issues
Build Curio HMS / build-and-deploy (push) Successful in 47s
Details
Build Curio HMS / build-and-deploy (push) Successful in 47s
Details
This commit is contained in:
parent
dfd09f554c
commit
abb3f7424b
|
|
@ -1,4 +1,4 @@
|
||||||
/* --- DASHBOARD STYLES --- */
|
/* --- DASHBOARD STYLES --- */
|
||||||
:root {
|
:root {
|
||||||
/* Dashboard specific overrides if any */
|
/* Dashboard specific overrides if any */
|
||||||
}
|
}
|
||||||
|
|
@ -1581,25 +1581,68 @@ body.zen-mode-active .dash-header {
|
||||||
/* Compact Sidebar Rail */
|
/* Compact Sidebar Rail */
|
||||||
.sidebar.compact-rail {
|
.sidebar.compact-rail {
|
||||||
width: 70px;
|
width: 70px;
|
||||||
|
padding: 2.5rem 0.5rem;
|
||||||
|
align-items: center;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
.sidebar.compact-rail .logo {
|
||||||
|
padding-left: 0;
|
||||||
|
margin-bottom: 3.5rem;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
.sidebar.compact-rail .logo-text,
|
.sidebar.compact-rail .logo-text,
|
||||||
.sidebar.compact-rail nav a span:not(:first-child),
|
.sidebar.compact-rail .user-profile .info,
|
||||||
.sidebar.compact-rail .user-profile .info {
|
.sidebar.compact-rail .nav-text {
|
||||||
display: none;
|
display: none !important;
|
||||||
}
|
}
|
||||||
.sidebar.compact-rail a {
|
.sidebar.compact-rail .side-nav {
|
||||||
font-size: 0;
|
width: 100%;
|
||||||
color: transparent;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.sidebar.compact-rail a span {
|
.sidebar.compact-rail .side-nav a {
|
||||||
font-size: 1rem;
|
justify-content: center;
|
||||||
color: white;
|
width: 44px;
|
||||||
display: inline-block;
|
height: 44px;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 12px;
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
.sidebar.compact-rail .side-nav a span {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.sidebar.compact-rail .user-profile {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.sidebar.compact-rail .logout-btn {
|
||||||
|
justify-content: center;
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.sidebar.compact-rail .logout-btn span {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
.sidebar.compact-rail + .dashboard-main {
|
.sidebar.compact-rail + .dashboard-main {
|
||||||
margin-left: 70px;
|
margin-left: 70px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar.compact-rail + .dashboard-main { margin-left: 70px; }
|
@media (min-width: 1025px) {
|
||||||
|
.zen-workspace-soap {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.soap-container {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
|
|
@ -20,14 +20,14 @@
|
||||||
<span class="logo-text" data-tenant-name>Curio</span>
|
<span class="logo-text" data-tenant-name>Curio</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="side-nav" id="sideNav">
|
<nav class="side-nav" id="sideNav">
|
||||||
<a href="#" data-section="overview" class="active"><span>ðŸ </span> Overview</a>
|
<a href="#" data-section="overview" class="active"><span>ðŸ </span> <span class="nav-text">Overview</span></a>
|
||||||
<a href="#" data-section="queue"><span>👥</span> Queue</a>
|
<a href="#" data-section="queue"><span>👥</span> <span class="nav-text">Queue</span></a>
|
||||||
<a href="#" data-section="patients"><span>📂</span> Patients</a>
|
<a href="#" data-section="patients"><span>📂</span> <span class="nav-text">Patients</span></a>
|
||||||
<a href="#" data-section="pharmacy"><span>💊</span> Pharmacy</a>
|
<a href="#" data-section="pharmacy"><span>💊</span> <span class="nav-text">Pharmacy</span></a>
|
||||||
<a href="#" data-section="lab"><span>🔬</span> Lab</a>
|
<a href="#" data-section="lab"><span>🔬</span> <span class="nav-text">Lab</span></a>
|
||||||
<a href="billing.html" data-section="billing" data-external><span>💳</span> Billing & Accounts</a>
|
<a href="billing.html" data-section="billing" data-external><span>💳</span> <span class="nav-text">Billing & Accounts</span></a>
|
||||||
<a href="staff.html" data-section="staff" data-external><span>👔</span> Staff & Payroll</a>
|
<a href="staff.html" data-section="staff" data-external><span>👔</span> <span class="nav-text">Staff & Payroll</span></a>
|
||||||
<a href="#" data-section="settings"><span>âš™ï¸</span> Settings</a>
|
<a href="#" data-section="settings"><span>âš™ï¸ </span> <span class="nav-text">Settings</span></a>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="user-profile">
|
<div class="user-profile">
|
||||||
<div class="avatar">DS</div>
|
<div class="avatar">DS</div>
|
||||||
|
|
@ -35,9 +35,10 @@
|
||||||
<strong>Dr. Sharma</strong>
|
<strong>Dr. Sharma</strong>
|
||||||
<span>Cardiologist</span>
|
<span>Cardiologist</span>
|
||||||
<div style="font-size: 0.65rem; color: #94a3b8; margin-top: 0.25rem;">Build: 1.4.0-ZEN</div>
|
<div style="font-size: 0.65rem; color: #94a3b8; margin-top: 0.25rem;">Build: 1.4.0-ZEN</div>
|
||||||
<a href="login.html" class="logout-btn"><span>🚪</span> Logout</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<a href="login.html" class="logout-btn"><span>🚪</span> <span class="nav-text">Logout</span></a>
|
||||||
|
<textarea id="consultationNotes" style="position: absolute; width: 1px; height: 1px; opacity: 0.01; pointer-events: none;"></textarea>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<main class="dashboard-main">
|
<main class="dashboard-main">
|
||||||
|
|
@ -116,7 +117,7 @@
|
||||||
<!-- Left: Full-Height Queue (15%) -->
|
<!-- Left: Full-Height Queue (15%) -->
|
||||||
<aside class="zen-pipeline full-height" id="zenPipeline">
|
<aside class="zen-pipeline full-height" id="zenPipeline">
|
||||||
<div class="pipeline-header">
|
<div class="pipeline-header">
|
||||||
<h3>Queue <small>(Ctrl+Q)</small></h3>
|
<h3>Up Next <small>(Ctrl+Q)</small></h3>
|
||||||
<span class="badge">4 Waiting</span>
|
<span class="badge">4 Waiting</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="pipeline-list">
|
<div class="pipeline-list">
|
||||||
|
|
|
||||||
91
dashboard.js
91
dashboard.js
|
|
@ -368,37 +368,88 @@ async function processWithWhisper(blob) {
|
||||||
|
|
||||||
|
|
||||||
function generateSummary(isTelugu = false) {
|
function generateSummary(isTelugu = false) {
|
||||||
const notes = document.getElementById("consultationNotes").value;
|
const soapS = document.getElementById("soap-s")?.value || "";
|
||||||
if (!notes) return;
|
const soapO = document.getElementById("soap-o")?.value || "";
|
||||||
|
const soapA = document.getElementById("soap-a")?.value || "";
|
||||||
|
const soapP = document.getElementById("soap-p")?.value || "";
|
||||||
|
|
||||||
|
const combinedNotes = [soapS, soapO, soapA, soapP].filter(Boolean).join("\n");
|
||||||
|
|
||||||
|
const notesEl = document.getElementById("consultationNotes");
|
||||||
|
if (notesEl) notesEl.value = combinedNotes;
|
||||||
|
|
||||||
const summary = isTelugu
|
const summary = isTelugu
|
||||||
? "📝 [TRANSLATED] CLINICAL SUMMARY: Patient presents in Telugu. Dry cough and fatigue noted. Recommended fluids and rest."
|
? "📝 [TRANSLATED] CLINICAL SUMMARY: Patient presents in Telugu. Dry cough and fatigue noted. Recommended fluids and rest."
|
||||||
: "📋 CLINICAL SUMMARY: Patient presents with persistent dry cough. Recommended hydration and follow-up.";
|
: "📋 CLINICAL SUMMARY: Patient presents with persistent dry cough. Recommended hydration and follow-up.";
|
||||||
|
|
||||||
document.getElementById("summaryText").innerText = summary;
|
const summaryTextEl = document.getElementById("summaryText");
|
||||||
document.getElementById("aiSummaryCard").classList.remove("hidden");
|
if (summaryTextEl) summaryTextEl.innerText = summary;
|
||||||
patientDataStore[currentPatientId] = { notes, summary };
|
|
||||||
|
const summaryCard = document.getElementById("aiSummaryCard");
|
||||||
|
if (summaryCard) summaryCard.classList.remove("hidden");
|
||||||
|
|
||||||
|
if (currentPatientId) {
|
||||||
|
patientDataStore[currentPatientId] = {
|
||||||
|
notes: combinedNotes,
|
||||||
|
soapS,
|
||||||
|
soapO,
|
||||||
|
soapA,
|
||||||
|
soapP,
|
||||||
|
summary
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.switchPatientContext = (name, token, triage) => {
|
window.switchPatientContext = (name, token, triage) => {
|
||||||
if (currentPatientId) patientDataStore[currentPatientId].notes = document.getElementById("consultationNotes").value;
|
if (currentPatientId) {
|
||||||
isScribing = false; updateScribeUI();
|
const notesVal = document.getElementById("consultationNotes")?.value || "";
|
||||||
|
const soapS = document.getElementById("soap-s")?.value || "";
|
||||||
|
const soapO = document.getElementById("soap-o")?.value || "";
|
||||||
|
const soapA = document.getElementById("soap-a")?.value || "";
|
||||||
|
const soapP = document.getElementById("soap-p")?.value || "";
|
||||||
|
const summary = document.getElementById("summaryText")?.innerText || "";
|
||||||
|
|
||||||
|
patientDataStore[currentPatientId] = {
|
||||||
|
notes: notesVal,
|
||||||
|
soapS,
|
||||||
|
soapO,
|
||||||
|
soapA,
|
||||||
|
soapP,
|
||||||
|
summary
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
isScribing = false;
|
||||||
|
updateScribeUI();
|
||||||
currentPatientId = token;
|
currentPatientId = token;
|
||||||
|
|
||||||
const data = patientDataStore[token] || { notes: "", summary: "" };
|
const data = patientDataStore[token] || { notes: "", soapS: "", soapO: "", soapA: "", soapP: "", summary: "" };
|
||||||
document.getElementById("consultationNotes").value = data.notes;
|
|
||||||
document.getElementById("summaryText").innerText = data.summary;
|
|
||||||
if (data.summary) document.getElementById("aiSummaryCard").classList.remove("hidden");
|
|
||||||
else document.getElementById("aiSummaryCard").classList.add("hidden");
|
|
||||||
|
|
||||||
const patientHeading = document.querySelector(".patient-identity h1");
|
const notesEl = document.getElementById("consultationNotes");
|
||||||
if (patientHeading) patientHeading.innerHTML = `${name} <small>(32y, Female)</small>`;
|
if (notesEl) notesEl.value = data.notes || "";
|
||||||
|
|
||||||
const metaPills = document.querySelectorAll(".patient-identity .meta-pills");
|
const sField = document.getElementById("soap-s");
|
||||||
if (metaPills[1]) {
|
const oField = document.getElementById("soap-o");
|
||||||
metaPills[1].innerHTML = `
|
const aField = document.getElementById("soap-a");
|
||||||
<span class="pill triage">${token}</span>
|
const pField = document.getElementById("soap-p");
|
||||||
<span class="pill time">${triage}</span>
|
|
||||||
`;
|
if (sField) sField.value = data.soapS || "";
|
||||||
|
if (oField) oField.value = data.soapO || "";
|
||||||
|
if (aField) aField.value = data.soapA || "";
|
||||||
|
if (pField) pField.value = data.soapP || "";
|
||||||
|
|
||||||
|
const summaryTextEl = document.getElementById("summaryText");
|
||||||
|
if (summaryTextEl) summaryTextEl.innerText = data.summary || "";
|
||||||
|
|
||||||
|
const summaryCard = document.getElementById("aiSummaryCard");
|
||||||
|
if (summaryCard) {
|
||||||
|
if (data.summary) summaryCard.classList.remove("hidden");
|
||||||
|
else summaryCard.classList.add("hidden");
|
||||||
|
}
|
||||||
|
|
||||||
|
const patientHeading = document.querySelector(".patient-identity-row h1");
|
||||||
|
if (patientHeading) {
|
||||||
|
patientHeading.innerHTML = `${name} <small>(28y, M)</small>`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue