new updates
Build Curio HMS / build-and-deploy (push) Successful in 48s Details

This commit is contained in:
Deep Koluguri 2026-05-15 01:10:27 -04:00
parent ffbad1ae81
commit bc36de72a7
3 changed files with 875 additions and 228 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,10 +2,10 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dashboard | Curio</title> <title>Dashboard | Curio</title>
<link rel="stylesheet" href="index.css"> <link rel="stylesheet" href="index.css">
<link rel="stylesheet" href="dashboard.css?v=15"> <link rel="stylesheet" href="dashboard.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@600;700&display=swap" rel="stylesheet">
<script src="tenantLoader.js"></script> <script src="tenantLoader.js"></script>
</head> </head>
@ -36,7 +36,7 @@
</div> </div>
</aside> </aside>
<main class="main-content"> <main class="dashboard-main">
<header class="dash-header"> <header class="dash-header">
<div class="search-bar"> <div class="search-bar">
<input type="text" placeholder="Search patients by name or WhatsApp number..."> <input type="text" placeholder="Search patients by name or WhatsApp number...">
@ -51,65 +51,79 @@
</div> </div>
</header> </header>
<!-- DOCTOR ZEN VIEW (Clinical Focus) -->
<div id="doctor-zen-section" class="hidden"> <div id="doctor-zen-section" class="hidden">
<div class="doctor-zen-grid"> <div class="zen-layout">
<!-- Left: Pipeline --> <!-- Left: The Pipeline -->
<aside class="patient-pipeline"> <aside class="zen-pipeline">
<div class="pipeline-header"> <div class="pipeline-header">
<h3>Up Next <span class="badge">4 Waiting</span></h3> <h3>Up Next</h3>
<span class="badge">4 Waiting</span>
</div> </div>
<div id="pipelineList"> <div class="pipeline-list">
<div class="pipeline-card active" onclick="switchPatientContext('Rahul Verma', '#012', 'Viral Fever')"> <div class="pipeline-item next" onclick="switchPatientContext('Anjali Singh', '#013', 'High Fever')">
<span class="patient-id">#012</span> <div class="p-token">#013</div>
<strong>Rahul Verma</strong> <div class="p-info">
<p>Viral Fever Triage</p> <strong>Anjali Singh</strong>
<span class="triage-pill urgent">High Fever</span>
</div>
</div> </div>
<div class="pipeline-card" onclick="switchPatientContext('Anjali Singh', '#013', 'High Fever')"> <div class="pipeline-item" onclick="switchPatientContext('Suresh Kumar', '#014', 'Back Pain')">
<span class="patient-id">#013</span> <div class="p-token">#014</div>
<strong>Anjali Singh</strong> <div class="p-info">
<p>High Fever</p> <strong>Suresh Kumar</strong>
</div> <span class="triage-pill">Back Pain</span>
<div class="pipeline-card" onclick="switchPatientContext('Suresh Kumar', '#014', 'Back Pain')"> </div>
<span class="patient-id">#014</span>
<strong>Suresh Kumar</strong>
<p>Back Pain</p>
</div> </div>
</div> </div>
</aside> </aside>
<!-- Center: Workspace --> <!-- Center: The Workspace -->
<main class="clinical-workspace-area"> <main class="zen-workspace">
<div class="workspace-header"> <header class="workspace-header">
<div class="current-patient"> <div class="current-patient">
<span class="status-indicator">NOW SEEING</span>
<h1>Rahul Verma <small>(28y, Male)</small></h1> <h1>Rahul Verma <small>(28y, Male)</small></h1>
<p class="patient-meta"><span>#012</span><span>Viral Fever Triage</span><span class="visit-timer">08:45</span></p> <div class="patient-meta">
<span>#012</span><span>Viral Fever Triage</span><span class="visit-timer">08:45</span>
</div>
</div> </div>
</div> <div class="workspace-actions">
<select id="scribeLang" class="lang-select">
<div class="workspace-actions"> <option value="en-US">English</option>
<select id="scribeLang" class="btn-zen"> <option value="te-IN">తెలుగు (Telugu)</option>
<option value="en-US">English</option> </select>
<option value="te-IN">తెలుగు (Telugu)</option> <button id="zenScribeBtn" class="btn-scribe" onclick="toggleZenScribe()">🎙️ Start AI Scribe</button>
</select> <button class="btn-secondary" onclick="openHistory()">📂 History</button>
<button id="zenScribeBtn" class="btn-zen" onclick="toggleZenScribe()">🎙️ Start AI Scribe</button> <button class="btn-primary" onclick="openConsultation()">✍️ Start Consultation</button>
<button class="btn-zen" onclick="openHistory()">📂 History</button> </div>
<button class="btn-zen btn-primary-zen" onclick="openConsultation()">✍️ Start Consultation</button> </header>
</div>
<div id="scribeStatus" class="scribe-indicator hidden"> <div id="scribeStatus" class="scribe-indicator hidden">
<span class="dot"></span> AI is listening and transcribing... <span class="dot"></span> AI is listening and transcribing clinical insights...
</div> </div>
<div class="clinical-notes-card"> <div class="zen-grid">
<textarea id="consultationNotes" placeholder="Start typing or use Voice AI..."></textarea> <div class="clinical-workspace-area">
</div> <div class="clinical-notes-card">
<div class="card-header">Consultation Notes</div>
<textarea id="consultationNotes" placeholder="Start typing or use Voice AI..." class="zen-textarea"></textarea>
</div>
<div id="aiSummaryCard" class="summary-card hidden"> <div id="aiSummaryCard" class="summary-card hidden">
<h4>✨ AI Clinical Summary</h4> <div class="card-header">✨ AI Clinical Summary</div>
<div id="summaryText" class="summary-content"></div> <div id="summaryText" class="summary-content"></div>
<div class="summary-actions"> <div class="summary-actions">
<button class="btn-zen" onclick="shareSummary()">📤 Send to Patient</button> <button class="btn-small secondary" onclick="shareSummary()">📤 Send to Patient</button>
<button class="btn-zen" onclick="printSummary()">🖨️ Print</button> <button class="btn-small secondary" onclick="printSummary()">🖨️ Print Summary</button>
</div>
</div>
</div>
<div class="quick-links">
<div class="card-header">Quick References</div>
<button class="btn-small secondary">Diabetes Guidelines</button>
<button class="btn-small secondary">Drug Interaction Checker</button>
</div> </div>
</div> </div>
</main> </main>
@ -383,6 +397,6 @@
</div> </div>
</div> </div>
<script src="dashboard.js?v=15"></script> <script src="dashboard.js?v=11"></script>
</body> </body>
</html> </html>

View File

@ -70,12 +70,6 @@ document.addEventListener("DOMContentLoaded", () => {
// 3. Section Switching Logic // 3. Section Switching Logic
window.showSection = (sectionId) => { window.showSection = (sectionId) => {
// Close sidebar on mobile
const sb = document.getElementById('sidebar');
if (window.innerWidth < 1024 && sb.classList.contains('active')) {
window.toggleSidebar();
}
const sections = ['overview-section', 'patients-section', 'pharmacy-section', 'lab-section', 'doctor-zen-section']; const sections = ['overview-section', 'patients-section', 'pharmacy-section', 'lab-section', 'doctor-zen-section'];
sections.forEach(id => { sections.forEach(id => {
const el = document.getElementById(id); const el = document.getElementById(id);
@ -119,14 +113,13 @@ function updateScribeUI() {
const status = document.getElementById("scribeStatus"); const status = document.getElementById("scribeStatus");
if (isScribing) { if (isScribing) {
btn.innerText = "🛑 Stop AI Scribe"; btn.innerText = "🛑 Stop AI Scribe";
btn.classList.add("active"); // Trigger pulsing animation btn.style.background = "#EF4444";
status.classList.remove("hidden"); status.classList.remove("hidden");
} else { } else {
btn.innerText = "🎙️ Start AI Scribe"; btn.innerText = "🎙️ Start AI Scribe";
btn.classList.remove("active"); btn.style.background = "";
status.classList.add("hidden"); status.classList.add("hidden");
} }
} }
async function startDeepCapture() { async function startDeepCapture() {
@ -207,24 +200,7 @@ window.shareSummary = () => alert("📤 Summary sent to Patient's WhatsApp.");
window.printSummary = () => alert("🖨️ Printing Handover Note..."); window.printSummary = () => alert("🖨️ Printing Handover Note...");
window.toggleSidebar = () => { window.toggleSidebar = () => {
const sb = document.getElementById('sidebar'); const sb = document.getElementById('sidebar');
if (!sb) return; sb.style.display = (sb.style.display === 'flex') ? 'none' : 'flex';
sb.classList.toggle('active');
// Add backdrop
if (sb.classList.contains('active')) {
let backdrop = document.getElementById('sidebar-backdrop');
if (!backdrop) {
backdrop = document.createElement('div');
backdrop.id = 'sidebar-backdrop';
backdrop.style = 'position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,0.5);z-index:900;';
backdrop.onclick = () => window.toggleSidebar();
document.body.appendChild(backdrop);
}
} else {
const backdrop = document.getElementById('sidebar-backdrop');
if (backdrop) backdrop.remove();
}
}; };
// Global Listeners // Global Listeners