This commit is contained in:
2026-03-21 19:30:13 +08:00
parent 7520b7e2a0
commit 557e25d187
100 changed files with 16990 additions and 18914 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

250
010/006.html Normal file

File diff suppressed because one or more lines are too long

View File

@@ -202,17 +202,19 @@
.form-group label { display: block; margin-bottom: 5px; font-weight: bold; color: #333; }
.form-group input, .form-group select { width: 100%; padding: 8px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; font-size:14px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border-width: 0; }
</style>
</head>
<body bgcolor="#e6e6e6" text="#000000" link="#000080" vlink="#800080" alink="#FF0000">
<!-- Add Drug Modal -->
<div id="drug-modal" class="modal-overlay">
<div id="drug-modal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="drug-modal-title">
<div class="modal-box">
<h3 style="margin-top:0; color:var(--primary); border-bottom:1px solid #eee; padding-bottom:10px;">New Order</h3>
<h3 id="drug-modal-title" style="margin-top:0; color:var(--primary); border-bottom:1px solid #eee; padding-bottom:10px;">New Order</h3>
<div class="form-group">
<label>Drug Name</label>
<select id="modal-drug-name" onchange="updateDrugSpecs()">
<label for="modal-drug-name">Drug Name</label>
<select id="modal-drug-name" onchange="updateDrugSpecs()" aria-label="Select drug name">
<option value="">-- Select --</option>
<option value="Aspirin">Aspirin Enteric-coated Tablets</option>
<option value="Atorvastatin">Atorvastatin Calcium Tablets</option>
@@ -225,14 +227,14 @@
</select>
</div>
<div class="form-group">
<label>Spec & Package</label>
<input type="text" id="modal-drug-spec" readonly style="background:#f5f5f5; color:#666;">
<label for="modal-drug-spec">Spec & Package</label>
<input type="text" id="modal-drug-spec" readonly style="background:#f5f5f5; color:#666;" aria-label="Drug specification">
</div>
<div class="form-group">
<label>Dosage</label>
<label for="modal-drug-dose">Dosage</label>
<div style="display:flex; gap:10px;">
<input type="text" id="modal-drug-dose" placeholder="Dose (e.g. 100mg)">
<select id="modal-drug-freq" style="width:140px;">
<input type="text" id="modal-drug-dose" placeholder="Dose (e.g. 100mg)" aria-label="Drug dosage">
<select id="modal-drug-freq" style="width:140px;" aria-label="Frequency">
<option value="qd">qd (once daily)</option>
<option value="bid">bid (twice daily)</option>
<option value="tid">tid (3 times daily)</option>
@@ -243,8 +245,8 @@
</div>
</div>
<div class="form-group">
<label>Route</label>
<select id="modal-drug-route">
<label for="modal-drug-route">Route</label>
<select id="modal-drug-route" aria-label="Administration route">
<option value="PO">PO (Oral)</option>
<option value="IV">IV (Intravenous)</option>
<option value="IH">IH (Hypodermic)</option>
@@ -252,49 +254,74 @@
</select>
</div>
<div style="text-align:right; margin-top:20px; padding-top:10px; border-top:1px solid #eee;">
<button type="button" onclick="closeModal()" style="padding:8px 15px; margin-right:10px; background:white; border:1px solid #ccc; border-radius:4px; cursor:pointer;">Cancel</button>
<button type="button" onclick="confirmAddDrug()" style="padding:8px 15px; background:var(--primary); color:white; border:none; border-radius:4px; cursor:pointer;">Confirm</button>
<button type="button" onclick="closeModal()" style="padding:8px 15px; margin-right:10px; background:white; border:1px solid #ccc; border-radius:4px; cursor:pointer;" aria-label="Cancel">Cancel</button>
<button type="button" onclick="confirmAddDrug()" style="padding:8px 15px; background:var(--primary); color:white; border:none; border-radius:4px; cursor:pointer;" aria-label="Confirm add drug">Confirm</button>
</div>
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirm-modal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="confirm-title">
<div class="modal-box" style="width:400px;">
<h3 id="confirm-title" style="margin-top:0; color:var(--primary); border-bottom:1px solid #eee; padding-bottom:10px;">Confirm Action</h3>
<div id="confirm-message" style="padding:15px 0; color:#333; line-height:1.6;"></div>
<div style="text-align:right; margin-top:20px; padding-top:10px; border-top:1px solid #eee;">
<button type="button" onclick="closeConfirmModal()" style="padding:8px 15px; margin-right:10px; background:white; border:1px solid #ccc; border-radius:4px; cursor:pointer;" aria-label="Cancel">Cancel</button>
<button type="button" id="confirm-btn" onclick="executeConfirm()" style="padding:8px 15px; background:var(--danger); color:white; border:none; border-radius:4px; cursor:pointer;" aria-label="Confirm">Confirm</button>
</div>
</div>
</div>
<!-- Input Modal -->
<div id="input-modal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="input-title">
<div class="modal-box" style="width:400px;">
<h3 id="input-title" style="margin-top:0; color:var(--primary); border-bottom:1px solid #eee; padding-bottom:10px;">Enter Information</h3>
<div id="input-message" style="padding:10px 0; color:#333; font-size:13px;"></div>
<input type="text" id="input-field" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; margin:15px 0; box-sizing:border-box;" aria-label="Input field">
<div style="text-align:right; margin-top:20px; padding-top:10px; border-top:1px solid #eee;">
<button type="button" onclick="closeInputModal()" style="padding:8px 15px; margin-right:10px; background:white; border:1px solid #ccc; border-radius:4px; cursor:pointer;" aria-label="Cancel">Cancel</button>
<button type="button" id="input-btn" onclick="executeInput()" style="padding:8px 15px; background:var(--primary); color:white; border:none; border-radius:4px; cursor:pointer;" aria-label="Submit">Submit</button>
</div>
</div>
</div>
<div id="toast-container"></div>
<table width="100%" border="1" bgcolor="#ffcccc" cellpadding="5">
<table width="100%" border="1" bgcolor="#ffcccc" cellpadding="5" role="region" aria-label="System broadcast">
<tr>
<td align="center">
<font color="red"><b>Broadcast:</b> Attention all departments, emergency meeting on insurance cost control at 3 PM in the Admin Building.</font>
<span style="color:red;"><strong>Broadcast:</strong> Attention all departments, emergency meeting on insurance cost control at 3 PM in the Admin Building.</span>
<br>
<font size="2">Posted: 2025-12-22 08:30</font>
<span style="font-size:12px;">Posted: 2025-12-22 08:30</span>
</td>
</tr>
</table>
<br>
<table width="100%" border="0" bgcolor="#008080" cellpadding="10">
<table width="100%" border="0" bgcolor="#008080" cellpadding="10" role="banner">
<tr>
<td width="50%">
<font color="white" size="5"><b>City General Hospital - Doctor Station</b></font>
<h1 style="color:white; font-size:20px; margin:0;"><strong>City General Hospital - Doctor Station</strong></h1>
</td>
<td width="50%" align="right">
<font color="white">
User: <b>Dr. Li (Attending)</b> | Dept: Cardiology<br>
<a href="javascript:void(0)" onclick="modifyPassword()" style="color:yellow">[Change Pwd]</a>
<a href="javascript:void(0)" onclick="logout()" style="color:white">[Logout]</a>
</font>
<span style="color:white;">
User: <strong>Dr. Li (Attending)</strong> | Dept: Cardiology<br>
<button onclick="modifyPassword()" style="background:none; border:none; color:yellow; cursor:pointer; text-decoration:underline;" aria-label="Change password">[Change Pwd]</button>
<button onclick="logout()" style="background:none; border:none; color:white; cursor:pointer; text-decoration:underline;" aria-label="Logout">[Logout]</button>
</span>
</td>
</tr>
</table>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#343a40">
<table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#343a40" role="navigation" aria-label="Module navigation">
<tr>
<td style="display:flex; padding:0;">
<div class="nav-item active" onclick="switchModule(this, 'clinic')">Outpatient</div>
<div class="nav-item" onclick="switchModule(this, 'inpatient')">Inpatient</div>
<div class="nav-item" onclick="switchModule(this, 'surgery')">Surgery</div>
<div class="nav-item" onclick="switchModule(this, 'lab')">Lab Results</div>
<div class="nav-item" onclick="switchModule(this, 'pharmacy')">Pharmacy</div>
<div class="nav-item" onclick="switchModule(this, 'admin')">Order Admin</div>
<button class="nav-item active" onclick="switchModule(this, 'clinic')" role="menuitem" aria-current="page" aria-label="Outpatient module">Outpatient</button>
<button class="nav-item" onclick="switchModule(this, 'inpatient')" role="menuitem" aria-label="Inpatient module">Inpatient</button>
<button class="nav-item" onclick="switchModule(this, 'surgery')" role="menuitem" aria-label="Surgery module">Surgery</button>
<button class="nav-item" onclick="switchModule(this, 'lab')" role="menuitem" aria-label="Lab results module">Lab Results</button>
<button class="nav-item" onclick="switchModule(this, 'pharmacy')" role="menuitem" aria-label="Pharmacy module">Pharmacy</button>
<button class="nav-item" onclick="switchModule(this, 'admin')" role="menuitem" aria-label="Order admin module">Order Admin</button>
</td>
</tr>
</table>
@@ -590,6 +617,63 @@
}, 3000);
}
// -------------------------------------------------------------------------
// Custom Modal Functions
// -------------------------------------------------------------------------
let confirmCallback = null;
let inputCallback = null;
function showConfirm(message, callback) {
confirmCallback = callback;
document.getElementById('confirm-message').innerText = message;
document.getElementById('confirm-modal').classList.add('show');
}
function closeConfirmModal() {
document.getElementById('confirm-modal').classList.remove('show');
confirmCallback = null;
}
function executeConfirm() {
if(confirmCallback) {
confirmCallback();
}
closeConfirmModal();
}
function showInput(message, callback) {
inputCallback = callback;
document.getElementById('input-message').innerText = message;
document.getElementById('input-field').value = '';
document.getElementById('input-modal').classList.add('show');
document.getElementById('input-field').focus();
}
function closeInputModal() {
document.getElementById('input-modal').classList.remove('show');
inputCallback = null;
}
function executeInput() {
const value = document.getElementById('input-field').value;
if(inputCallback) {
inputCallback(value);
}
closeInputModal();
}
// Allow Enter key to submit input modal
document.addEventListener('DOMContentLoaded', () => {
const inputField = document.getElementById('input-field');
if(inputField) {
inputField.addEventListener('keypress', (e) => {
if(e.key === 'Enter' && document.getElementById('input-modal').classList.contains('show')) {
executeInput();
}
});
}
});
function switchModule(el, moduleName) {
// Toggle active state in Nav
document.querySelectorAll('.nav-item').forEach(item => item.classList.remove('active'));
@@ -615,10 +699,10 @@
}
function logout() {
if(confirm("Are you sure you want to logout Current User (Dr. Zhang)?")) {
showConfirm("Are you sure you want to logout Current User (Dr. Zhang)?", () => {
showToast("Logging out...", "info");
setTimeout(() => location.reload(), 1000);
}
});
}
function openOA() { showToast("Opening OA System..."); }
@@ -855,11 +939,12 @@
}
function removeOrder(orderId) {
if(!confirm("Are you sure you want to delete this order?")) return;
const p = PATIENTS.find(x => x.id === currentPatientId);
p.orders = p.orders.filter(o => o.id !== orderId);
renderOrders();
showToast("Order Deleted");
showConfirm("Are you sure you want to delete this order?", () => {
const p = PATIENTS.find(x => x.id === currentPatientId);
p.orders = p.orders.filter(o => o.id !== orderId);
renderOrders();
showToast("Order Deleted");
});
}
function signOrder() {
@@ -871,12 +956,13 @@
return;
}
const pin = prompt(`Signing ${drafts.length} orders for patient [${p.name}].\n\nPlease enter E-Signature PIN (any input):`);
if(pin) {
drafts.forEach(o => o.status = 'signed');
showToast("Orders Signed & Sent to Pharmacy.", "success");
renderOrders();
}
showInput(`Signing ${drafts.length} orders for patient [${p.name}].\n\nPlease enter E-Signature PIN:`, (pin) => {
if(pin) {
drafts.forEach(o => o.status = 'signed');
showToast("Orders Signed & Sent to Pharmacy.", "success");
renderOrders();
}
});
}
function voidOrder() {
@@ -903,24 +989,25 @@
}
function restockDrug(drugName) {
if(confirm(`Send restock request for [${drugName}]?`)) {
showConfirm(`Send restock request for [${drugName}]?`, () => {
showToast("Restock request sent to Supply Chain", "success");
}
});
}
function batchApproveOrders() {
if(confirm("Batch approve these 3 orders?")) {
showConfirm("Batch approve these 3 orders?", () => {
showToast("Batch Approval Complete", "success");
document.getElementById('admin-task-area').innerHTML = '<p style="color:green;">All pending tasks completed.</p>';
}
});
}
function batchRejectOrders() {
const reason = prompt("Enter Rejection Reason:");
if(reason) {
showToast(`3 Orders Rejected. Reason: ${reason}`, "info");
document.getElementById('admin-task-area').innerHTML = '<p style="color:green;">All pending tasks completed.</p>';
}
showInput("Enter Rejection Reason:", (reason) => {
if(reason) {
showToast(`3 Orders Rejected. Reason: ${reason}`, "info");
document.getElementById('admin-task-area').innerHTML = '<p style="color:green;">All pending tasks completed.</p>';
}
});
}
console.log("HIS System Loaded. Interface modernized.");

View File

@@ -8,14 +8,18 @@
"grounding_area": ""
},
"step-3": {
"query": "返回门诊医生工作站",
"query": "确认补货申请",
"grounding_area": ""
},
"step-4": {
"query": "在左侧的候诊列表中,找到并点击选择 VIP 患者 Mr. Wang",
"query": "返回门诊医生工作站",
"grounding_area": ""
},
"step-5": {
"query": "在左侧的候诊列表中,找到并点击选择 VIP 患者 Mr. Wang",
"grounding_area": ""
},
"step-6": {
"query": "看一下其超声图片",
"grounding_area": ""
}