医生问诊工作台页面重构 PRD
日常业务与测试阅读请使用Consultation 当前代码业务 PRD。本页保留工程细节、历史变更与取数参考;已知冲突见实现记录。
2026-09-08 医生问诊可见范围
医生只能查看、打开及操作当前诊所中归属于自己的 Consultation,或已有有效、限时、显式代诊授权的 Visit。其他医生的活动及历史 Consultation 均不可见、不可打开、不可修改;只读模式不能作为例外。
- Active、Carry-over、History、Workspace 侧栏及 Consultation 角标使用同一医生责任范围。历史先过滤权限,再分页和统计。
- 后端按稳定 User / Provider 归属判断,不以医生姓名、浏览器筛选参数或宽泛临床权限判断。缺少绑定或归属不明时返回空队列并拒绝详情访问;明确主诊 User 优先于冲突的 Provider 记录。
- Workspace 直接链接、跨应用跳转、Patient eMR 问诊历史,以及 Note、Prescription、Service Selection、Billing 的读取和写入适用相同边界。护士现有诊所协作权限保持原范围。
- 功能测试模拟 Doctor 必须使用选定的真实 Provider;“无限制功能测试”不再放宽医生数据归属。保留真实操作者审计身份。
- 医生界面显示 My patients,不提供 All doctors。切换医生、模拟对象、角色或诊所时清空旧工作区、历史和角标,并丢弃旧请求的迟到响应;真实医生的空队列或请求失败不自动变成合成患者。
- 本规则替代旧版“姓名可选筛选”和“历史可无视负责医生只读打开”的行为。代码完成、自动回归、应用部署和 UAT 必须分别记录。
1. 文档信息
| 项目 | 内容 |
|---|---|
| 产品 | VAI-CLIP 医生问诊工作台(Consultation Workspace) |
| 文档类型 | 现有页面重构产品需求文档(PRD) |
| 目标页面 | varclip_vue/src/components/desktop/apps/ClinicalWorkspaceApp.vue
及其问诊工作区子组件 |
| 实现与体验基线 | 当前 Vue 实现、P0 WS2 及已确认业务基线;历史 Demo 仅作非权威视觉参考 |
| 版本 | v1.9 |
| 日期 | 2026-09-03 |
| 状态 | 问诊台布局重构已进入代码、运行验证与临床 UAT 待完成;队列历史与体验改造已进入代码;Provider Delegation / STG Functional Test 权限增量已回滚 |
本文档是现有医生问诊工作台的产品与验收基线。当前代码和可验证运行证据用于判断实现状态,P0 WS2 与已确认业务流程用于判断目标契约;历史视觉稿或 Demo 不能作为生产数据、权限、接口或临床闭环的事实来源。发生冲突时,依项目规则按最新已确认决策、当前代码与运行证据、本文档及 Workstream、历史材料的顺序处理。
2. 背景与问题
现有问诊能力已经覆盖队列、患者资料、纵向病历、问诊记录、诊断、处方、检查、文件和完成问诊等主要模块,但操作体验仍需要围绕一次就诊重新组织:
- 医生需要在队列、病历与多个临床动作之间频繁切换,患者与就诊上下文不够持续、醒目。
- 高风险信息、保存状态、签署状态和下游状态没有形成统一、不可忽略的安全框架。
- 患者切换、已完成记录重开、药物警示和问诊完成前检查需要更明确的提示、状态与审计。
- AI 转录、AI 病历建议和 Copilot 容易与正式病历混淆,需要始终显示“未批准建议”、来源、Consent 和医生确认边界。
- 医生在不同场景下需要不同布局,但个性化不能隐藏患者身份、Allergy、ADR、保存状态和签署动作。
本次重构不是单纯换皮,而是将现有功能收敛为一个以患者与就诊锁定上下文为核心、可持续完成整次问诊的桌面工作区。
3. 产品目标
3.1 目标
- 医生从授权问诊队列选择一次 Encounter,经双标识核验后进入唯一患者与就诊上下文。
- 在一个工作区内完成病历记录、诊断、处方、检查、临床文件、收费来源与诊后交接,减少无必要的页面跳转。
- 让患者身份、Encounter、诊所、医生、Allergy、ADR、保存状态和签署状态在关键操作期间持续可见。
- 对患者切换、用药高风险、未满足签署条件、已完成记录修改和下游交接设置可解释的安全阻断。
- 将 AI 限定为可追溯、需医生复核的辅助能力,AI 不得直接形成签署记录或下游临床动作。
- 支持安全的布局预设、一级面板任意换位和跨设备个人偏好,同时保证核心临床信息不可隐藏。
- 在不离开当前问诊的情况下提供统一 Clinical Reference,复用 Patient & eMR 的历史语义、附件查看和患者上下文,不建立第二套临床事实。
3.2 成功指标
- 100% 临床写入请求携带同一患者、Visit、Clinic 与当前登录临床人员上下文;不匹配请求必须被服务端拒绝。
- 100%
Review & Complete动作经过完整性检查;存在阻断项时不签署临床记录、不生成收费交接快照,也不进入Ready for Cashier。 - 100% Clinical Document 绑定 Patient + Encounter;不存在脱离 Encounter 的第二份临床文档。
- 100% Clinical Reference 历史内容复用 Patient & eMR 的数据契约并绑定当前 Patient;任何 Full eMR / Attachment / Anatomy 跳转保留 Visit 与 Return Context。
- 100% 医生折扣保留原价、折扣类型 / 值、非空原因、登录医生、应用时间和折后价;非医生不得创建或修改医生折扣。
- Consultation Queue 的 Active Encounter 默认按实际到达时间升序展示;未完成双标识核验时不得批量加载完整临床详情。
- 100% 已完成问诊默认只读;任何修订均记录操作者、时间、原因和前后版本关系。
- 100% AI 产出在医生采纳前明确标记为未批准建议,并保留来源、处理结果与医生确认状态。
- 核心流程“选取就诊 → 记录病历 → 主诊断 → 必要处方/检查 → Review & Sign”可在问诊工作台内完成。
- 上线后监测患者切换取消率、草稿恢复成功率、签署阻断原因、药物警示处置率和平均完成耗时;具体业务目标由首轮真实使用基线确定。
4. 用户与权限边界
| 角色 | 队列 | 工作区 | 临床写入与签署 |
|---|---|---|---|
| 获授权医生 | 查看本人、代班或覆盖规则允许的当前诊所队列 | 经双标识核验后打开活动或已完成问诊 | 可在权限范围内记录、下医嘱、签署和受控修订 |
| 护士 | 查看当前诊所允许的活动/已完成队列 | 可查看患者资料、护理交接和获授权内容 | 仅可写入护理授权内容;不得完成医生诊断、处方签署或最终临床签署 |
| 诊所行政/营运人员 | 查看获授权的队列运营信息 | 仅在业务授权范围内查看或处理队列 | 可做预约、房间、医生、日期等行政动作;不得取得临床签署能力 |
前端隐藏或禁用只用于降低误操作;患者、诊所、Visit、角色和动作权限必须由服务端再次验证。Launcher
可见性或宽泛的 clinical.write 不能等同于医生临床权限。
5. 范围
5.1 P0 必须实现
- 无患者状态下的全宽 Consultation Queue。
- 基于 Encounter 的选择、双标识核验、患者与就诊锁定及受控患者切换。
- 三栏工作区:问诊队列、主要临床区、Clinical Reference。
- 紧凑患者安全栏,以及左侧吸附式临床模块栏底部常驻的 Review & Complete 操作;不设置底部固定操作栏。
- 服务端草稿保存、浏览器降级保护、基础版本冲突处理、Completed 只读、Review & Sign 和受控修订入口。
- 现有诊断、检查、临床文件、Patient 360 和纵向病历接入新信息架构;处方使用规范 Prescription 聚合,并完成持久化 eMMS 建议与 Pharmacy 正式接单状态。
- 四种布局预设、三个一级面板的任意横向换位、受约束宽度调节,以及按“用户 + 医疗集团 + 诊所”隔离并跨设备同步的非临床偏好。
- 英文作为本期默认且唯一的工作台界面语言;粤语、普通话或其他语言只作为转录输入选项,不改变界面语言。
- 键盘快捷操作、基本可访问性、桌面分辨率适配和减少动态效果支持。
5.2 P1/后续闭环
- 多人协作合并、命名布局、管理员下发布局、完整离线编辑和更细粒度的断网降级。
- V-Lab/Imaging 独立工作台、结果发布、危急值确认和患者跟进闭环。
- Clinical Document 的 Signed、Issued、Voided、Reissued 全生命周期。
- 幂等 Charge Event、取消/实际数量差异、保险与患者费用分摊。
- AI Provider、模型/Prompt 版本、最小上下文、调用审计、失败回退和正式治理。
- 问诊报告 OCR 的原件保留、提取、人工校正、医生确认与附件闭环。
5.3 不在本次范围
- 以 Demo 静态数据、硬编码医生或本地 Map/localStorage 代替生产数据与服务端状态。
- 重写现有预约、登记、收费、Pharmacy、V-Lab 或 MyPlatform 系统本身。
- AI 自动签署病历、诊断、处方、检查、文件或完成问诊。
- 允许医生在未选择 Encounter 的情况下从自由患者搜索直接创建临床记录。
- 移动端完整编辑;P0 以桌面工作区为主,窄屏只保证安全可读和关键操作不丢失。
6. 设计原则
- Encounter 优先:队列项代表一次就诊,不是一个可脱离 Visit 打开的患者。
- 安全信息常驻:患者双标识、Allergy、ADR、保存与签署状态不得被布局设置隐藏。
- 先验证再加载临床详情:完成双标识核验前,队列只展示最低必要身份和运营信息,不加载完整临床数据或逐字稿。
- 一次上下文只服务一个患者:切换 Encounter 前必须处理未保存内容,并重新核验新患者。
- 状态语义分离:医生完成签署是临床审计事件,患者主状态由 In Consultation 进入 Ready for Cashier;Pharmacy / V-Lab 子任务继续维护自己的执行状态,不新增 Clinical Complete 主状态。
- AI 是建议,不是记录:AI 输出必须有来源、时间、处理结果和医生复核动作。
- 复用现有能力:重构优先组合现有 Vue 公共组件、API 服务和后台能力;样式使用 Tailwind,图标使用 Iconify。
7. 整体信息架构
7.1 无患者状态
进入问诊台时默认不预选患者,展示全宽 Consultation Queue。页面只包含全局诊所/用户上下文、队列统计、筛选与列表;不得自动打开第一位患者。
7.2 已锁定患者状态
通过双标识核验后进入工作区,结构从上到下为:
- 全局栏:品牌、当前诊所/Unit、安全上下文、语言、通知、时间及登录医生。
- 紧凑患者安全栏:患者、Encounter、Clinic/Doctor、Allergy、ADR、房间、计时和
Visit 状态;不显示
Patient locked徽标。 - 安全栏右侧操作区:保留
返回 / 布局 / Clinical Reference工具组;Review & Complete位于 Billing & Finish 内容末尾,Completed Consultation 的Controlled amendment独立位于左侧模块栏下方。 - 工作区主体:左侧队列 + 中央临床区 + 右侧 Clinical Reference;中央临床区左缘使用吸附式模块栏,不设置底部操作栏。
8. 详细功能需求
8.0 核心用户故事
- 作为获授权医生,我希望在当前诊所的 Consultation Queue 中先看到最早到达且已完成问诊前准备的患者,以便按真实候诊顺序安全开始或继续问诊。
- 作为获授权医生,我希望在锁定的 Patient + Encounter 中选择受治理模板、起草、编辑并保存 Clinical Document,以便文件始终回到原 Consultation,且不会和附件 / OCR 混为一体。
- 作为主诊医生,我希望核对本次问诊产生的收费来源并留下可审计折扣,再一次完成临床签署与 Cashier 交接,以便患者结账金额可追溯且不要求医生处理付款。
- 作为问诊中的医生,我希望在同一 Patient + Encounter 锁定下查看 Patient 360、历史记录、附件和解剖教学工具,以便获得临床参考而不离开当前病历或复制另一套患者数据。
- 作为护士或 Cashier,我希望收到不可歧义的
Ready for Cashier交接及净额快照,以便继续运营核对、Invoice 与付款,而不把医生完成问诊误解为已付款或 Encounter 已关闭。
8.1 全局栏
DWS-FR-001:显示当前 Clinic、Operating Unit、登录用户姓名与角色;任何诊所切换必须重新加载授权队列并清除旧患者上下文。DWS-FR-002:本期工作台界面只使用英文,不提供繁体中文界面切换;Speech Transcript 的输入语言独立配置,可选粤语、普通话或其他已批准语言,且不得改变界面文案或进入布局偏好。DWS-FR-003:显示当前时间与日期;全局通知、快捷键入口沿用现有桌面框架能力。DWS-FR-004:不得展示DEMO DATA、示例医生资格或 Demo 日期等原型标识。
8.2 Consultation Queue
DWS-FR-010:默认展示Active,并提供History;只统计当前 Active Clinic、当前用户权限及医生覆盖规则允许的 Encounter。Booked、Unconfirmed、Cancelled 和 No-show 继续由 Appointment Calendar / Reception 管理。DWS-FR-011:Active 只接收已完成 Registration / Preparation 且处于Ready for consultation或In consultation的 Visit。Arrived、Checked-in、Preparation、Non-consultation Service Task、Cancelled 和 Closed 不得伪装成可开始问诊的 Active 行。DWS-FR-012:Active 默认按实际到达时间升序展示;紧急标记只改变显著性,不静默改写队列顺序。若业务需要抢占排序,必须由获授权人员执行有审计的显式优先级动作。本期不提供“最新优先”。DWS-FR-013:搜索覆盖 Patient name、Patient No. / MRN、真实 Chit / Visit reference、Service 和已授权 Doctor;不得用内部 Visit ID 冒充 Chit。History 使用日期范围、50 条一页和Load more history增量分页,避免一次加载全部历史;翻页合并按 Visit ID 去重,筛选 / 身份上下文变化重置分页。Active 只提供当前队列内过滤。DWS-FR-014:全宽队列表头包含 Active / History、搜索、Doctor Filter、Refresh、最后刷新时间和Add appointment。Add appointment复用统一 Appointment Drawer;保存预约不会自动 Check-in 或跳过 Registration。DWS-FR-015:列表固定呈现Time / Chit、Patient、Doctor / consultation、Status、Remarks和Action。患者只显示核验与运营所需的最低资料;到达时间和等待时长分开显示。等待时长只对当前诊所日期的原生 Ready for consultation 工作项计算,从最近一次进入该状态的事件开始,进入 In consultation 时冻结;迁移 History、Completed/Closed 和 Carry-over 不计算“今天已等待”。没有 Remarks 时显示弱化—,不在每一行重复说明性文案。DWS-FR-015A:Active 的主体是当前诊所日期的原生可操作 Visit。真正未结束的更早原生 Visit 以独立Carry-over分组显示,不与今日等待时长或今日工作量混淆;来源前缀为myplatform_*的迁移 Visit 不进入 Active。DWS-FR-015B:History 包含原生 Completed / Closed 与迁移历史,并统一以只读方式打开;旧迁移状态原样保留,不通过批量改状态伪装完成,也不允许 Start、Resume、Re-open 或原地写入。DWS-FR-016:状态使用文字 + 图标 / 颜色共同表达;至少区分Ready for consultation、In consultation、Completed、不可操作及已过期。Urgent / Critical 作为独立风险标记,不覆盖 Visit 主状态。DWS-FR-017:每行只有一个清晰主操作:Start consultation、Resume consultation或Open read-only。Print patient tag为命名清楚的辅助动作;只有仍可合法回到 Preparation 的 Visit 显示Previous stage,并把用户交还 Reception 填写原因。更改医生、Consultation Type、日期或预约不得在本队列复制快捷编辑器。DWS-FR-018:任何可写打开动作都先执行双标识核验及服务端 Patient + Visit + Clinic + Doctor / Coverage 检查。Completed 只读;Closed 永久只读且不可 Re-open;队列行已被他人处理、移出诊所或版本过期时刷新该行并说明原因。DWS-FR-019:Loading、Empty、Filter no-result、Permission denied、API error 和 Stale row 使用不同状态。失败或刷新不得沿用上一位患者选择;Retry 只重取当前授权范围。未核验前不得批量加载完整病历、处方、逐字稿、附件或收费资料。DWS-FR-020Q:患者姓名提供统一 Patient & eMR 入口,携带 Patient + Visit + Clinic + Return Context;打开完整档案不得改变当前队列状态或建立悬空 Consultation。DWS-FR-021Q:进入工作区后,左侧缩略队列仅显示当前授权 Active Queue 的 Chit / Visit reference、患者、年龄 / 性别、主诉、状态、紧急度和等待时长,并支持折叠。缩略队列切换仍需处理未保存内容及重新核验新 Encounter。
当前实现状态(2026-08-31):代码保留 Active /
History、跨日 Carry-over、迁移记录不计活动等待、日期筛选、50 条增量分页
/ Load more、明确空态 / 错误 / Loading、单一主操作、—
空备注和 Patient & eMR Return Context。2026-08-30 起加入的稳定
Provider 队列绑定、Provider-view Assume Role 与 Delegation
权限增量已回滚;目标 STG 复测、历史数据实测、并发队列刷新和临床 UAT仍是
Pending。
8.3 双标识核验与患者切换
DWS-FR-020:从队列打开任何 Encounter 前展示核验对话框,要求使用姓名和出生日期等两个有效标识;房间号、队列号不能作为患者标识。DWS-FR-021:用户必须主动勾选确认后才能继续;核验结果与操作者、Visit 和时间形成审计事件。DWS-FR-022:患者切换以 Encounter ID 为主键;同一患者的不同 Encounter 也视为切换。DWS-FR-023:当前 Encounter 有未保存内容时,切换对话框必须提供“保存并切换”“放弃本地未保存内容并切换”“取消”,且默认不丢弃。DWS-FR-024:新 Encounter 必须重新核验,成功后中央页签回到 Consultation Note,右侧回到 Patient 360,并停止上一位患者的录音/转录。DWS-FR-025:服务端发现患者、Visit、Clinic 或版本不一致时拒绝写入,前端保持原上下文并提示用户刷新或解决冲突。
8.4 固定患者安全栏
DWS-FR-030:始终展示患者姓名、中文名、年龄/性别、MRN、遮罩 HKID、Encounter、Visit 来源、Clinic、负责医生和状态。DWS-FR-031:Allergy 与 ADR 使用独立高显著区域;“无记录”“无已知药物过敏”和“尚未核实”必须使用不同文案。DWS-FR-032:显示房间、问诊计时和状态;计时仅作工作提示,不能作为临床记录时间来源。DWS-FR-033:安全栏不可通过布局、滚动或页签隐藏;窄屏允许压缩非关键字段,但患者双标识、Encounter、Allergy/ADR 与状态仍可访问。DWS-FR-034:移除仅用于界面说明的Patient locked徽标,但不得移除或弱化患者与就诊锁定机制、双标识、安全信息或服务端上下文校验。DWS-FR-035:安全栏正常目标高度约为 64px,通过压缩患者信息排版与间距增加临床使用区域;严重 Allergy/ADR 或其他关键安全信息较长时允许自适应增高,不得截断或隐藏风险信息。DWS-FR-036:安全栏右侧排列患者安全信息与返回 / 布局 / Clinical Reference 工具组。Review & Complete 固定在 Billing & Finish 内容末尾,与上方收费卡片等宽,采用白色透明磨砂材质并提供 Hover、Focus、Disabled 与 Saving 状态。DWS-FR-037:完成问诊后,获授权用户可用的Controlled amendment以始终展开的独立页签位于左侧模块栏下方,不与 Review 或五个业务模块合并;无修订权限时不显示该入口。
8.5 主临床区与一级模块
一级模块固定为:Consultation Note、Prescriptions、Orders、Clinical Documents、Billing & Finish。模块状态与项目数量必须来自当前 Encounter 的真实数据。
DWS-FR-038:移除中央临床区顶部的整行模块页签,改为吸附在中央临床区左缘的模块栏。折叠态约 40px,仅显示 Iconify 图标;展开态约 160px,以圆角浅色磨砂玻璃浮层覆盖临床内容,不触发主内容重排。DWS-FR-038A:模块栏在鼠标悬停或键盘焦点进入时展开,选择模块后收回,不提供固定展开。交互必须支持focus-visible、可读名称、Tooltip、方向键或等效键盘页签导航,以及prefers-reduced-motion。DWS-FR-038B:当前模块使用低饱和灰白内凹圆角面、内嵌细边框、双向内阴影与左侧灰色凹槽,呈现压入磨砂模块栏的选中质感,不使用大面积蓝色填充;未保存使用琥珀状态点;签署阻断使用红色状态点;全部状态点统一缩小 15%,已保存且正常时不显示状态点。展开态完整显示模块名称,不展示 Ready / Requires review 等模块状态文字;状态语义通过可访问名称提供,颜色不得成为唯一状态载体。DWS-FR-038C:模块栏高度只比最后一个业务页签多 8px,背景透明度较原设计增加 10%。模块切换必须暂停 Note 录音、先写入按 Encounter 与模块隔离的 sessionStorage,再立即切换并在后台串行保存;不得通过直接改写当前页签绕过该协议。DWS-FR-038D:Consultation Workspace 内所有原生滚动区域统一使用可辨识的圆角玻璃长条滑块;静止态必须通过灰蓝折射边缘、内高光与阴影和周围背景形成对比,Hover 时进一步增强高光、轮廓和悬浮质感,并同时兼容 Chromium 与 Firefox;样式不得污染其他桌面应用。DWS-FR-039:Consultation Workspace 采用“Doctor Consultation 共享主干 + Consultation Type 增量规则”,不为每种类型复制整套问诊流程。除No Consultation外,Consultation、Prescription-only、Physical Examination、Vaccination、Day Procedure和Hospital Appointment均进入医生 Consultation Queue,共用身份核验、Patient / Encounter 锁定、Clinical Reference、保存 / 版本、Review、Follow-up、异常恢复和审计框架。No Consultation是唯一不进入医生队列的类型,直接交给护士 / Service Queue。DWS-FR-039A:服务端先加载带版本的 Doctor Consultation 基线规则,再应用当前 Consultation Type 的显式 delta;未配置 delta 等同于完全继承基线,不得由前端复制或猜测另一套规则。无有效规则版本、规则冲突或未知 Type 时阻断签署并显示配置异常,不能静默跳过必填项。DWS-FR-039B:共享医生主干不等于所有类型拥有相同的后续执行流。Day Procedure在医生完成术前评估、适应证 / 风险、Consent、部位 / 侧别及 Procedure Order 后,继续进入 Procedure Preparation → In Procedure → Recovery / Observation;不得在 Procedure 尚未执行时直接进入最终 Cashier。Physical Examination使用独立体检 delta,承接结构化检查项目、结果、异常发现与体检报告;它不应在产品语义上被称为普通 outpatient,但继续复用同一个医生 Queue 和 Consultation Workspace 壳层。
8.5.1 Consultation Note
Consultation Note 的录音、转录、动态模板、算法生成与独立保存,以 Consultation Note 全链路重构 Spec 为专项实施基线;下列条目按本次 AI Scribe Consent 决定收敛,语音与 AI 草稿使用前需要一次 Visit 级医生确认,手工 Note 与文本 ICD Mapping 不受其阻断。
DWS-FR-040:在 Consultation Note 模块内显示 AI Scribe 状态、识别语言、真实麦克风、音频不保留政策、逐字稿能力和主动生成病历草稿动作;不在全局底栏、Quick Actions 或旧共享 Drawer 提供 Transcript 入口。DWS-FR-041:固定显示护理交接摘要和查看 Triage 入口;内容需保留记录人、角色与时间。DWS-FR-042:结构化病历字段由医生私人动态模板决定;每位医生首次使用时幂等补齐可编辑但不可删除的默认 SOAP 模板。DWS-FR-043:输入区显示字符/容量提示、必填状态和只读状态;保存失败不得清空本地输入。DWS-FR-044:Diagnosis 区支持 ICD 搜索、主诊断唯一性、次诊断、证据匹配等级和医生确认;AI 推荐不得自动成为主诊断。DWS-FR-045:Structured Diagnosis 必须作为独立卡片直接集成在 Consultation Note 模块内,与病历编辑卡片分离,不得为新工作台打开独立页面、全屏弹窗或 ICD 层级 Browse。诊断卡片顶部左侧提供绿色AI Diagnosis,右侧提供 ICD 代码或英文病名搜索框;ICD Mapping 不显示语言选择框,前端固定以英文模式请求,语音识别语言设置不受影响。DWS-FR-046:人工 ICD 搜索在输入至少两个字符后以约 300ms 延迟自动触发,同时支持 Enter;搜索对代码和英文病名执行不区分大小写的包含匹配,最多显示 30 项。结果项提供 Main 与 Secondary 操作并支持连续多选;相同代码不得重复加入。DWS-FR-047:Structured Diagnosis 下部在桌面端分为 AI Candidates 与 Selected Diagnoses 两栏。AI 候选只显示代码、High / Medium / Low Match、英文病名和 Main/Secondary 操作,不显示 rationale、supports、missing、conflicts、source、Finding Codes、Force Graph、Red Flags 或 Suggested Questions。匹配等级表示证据匹配层级,不得展示为诊断概率。DWS-FR-048:选择新 Main 时原 Main 自动降为 Secondary,并向医生显示结果提示;Selected Diagnoses 中 Main 始终置顶,Secondary 按加入顺序显示,并提供 Make main 与 Remove。诊断变更继续与 Consultation Note、Transcript 在Save & Continue中原子保存,不增加独立保存或即时持久化。DWS-FR-049:AI Diagnosis分析当前编辑器内容,包括尚未保存的 Note 修改;完全没有 Note 内容时禁用,但人工搜索保持可用。新分析成功后替换旧候选,空结果显示明确空态;失败不影响搜索、已选诊断或保存。Note 修改后继续沿用既有候选过期提示和禁用选择规则。只读问诊只显示已选诊断及角色,不显示 AI、搜索或编辑操作。
8.5.2 Speech Transcript 与 AI 病历草稿
DWS-FR-050:医生首次开始录音、语音转写或生成 AI 病历草稿前,必须确认当前 Visit 的 AI Scribe Consent;同一 Visit 确认一次后不重复弹窗,手工记录与文本 ICD Mapping 始终可用。DWS-FR-051:专用录音控制条支持 Start/Pause 累计计时、语言、真实麦克风与清空;只读 Transcript 浮框支持关闭、拖拽和缩放,说话者只匿名显示为 Speaker N。DWS-FR-052:抽屉顶部持续显示患者与 Encounter 锁定信息;切换患者或关闭问诊时必须停止采集。DWS-FR-053:音频是否保留由正式政策决定;若“不保留”,界面和审计必须一致,不得仅显示文案而实际保存。DWS-FR-054:算法返回的合法动态字段直接追加到对应文本框,字段已有内容时以两个换行分隔;不增加 Review & Apply,医生在独立 Save 前直接编辑。DWS-FR-055:普通日志只记录请求标识、模板标识、输入哈希、耗时和结果状态,不记录 Transcript、模板字段内容或 Note 正文。
8.5.3 Prescriptions
DWS-FR-060:处方页展示当前 Encounter 的药品、结构化 SIG、数量、签署状态、Pharmacy Sent/Received/Failed 交接状态、收费来源和安全建议;Pharmacy 接收后的内部履行流程不属于问诊台范围。DWS-FR-061:新增处方在 Prescriptions 页面内按纵向渐进流程完成,只允许从当前诊所可见的 Drug Master 中按药品、成分或 BNF 搜索选择;Dose、Route、Frequency、Duration 和正数 Dispense Qty 必填,Patient Instruction、日期和药品行 Remark 可选;不使用 Add Drug 弹出框,也不提供 Skip Details。DWS-FR-061A:药品行 Remark 复用规范行的internal_note,与 Patient Instruction 保持独立;非空 Remark 在药品卡片默认展示最多两行并可展开或收起,签署后只读保留。DWS-FR-061B:整张处方提供可选 Prescription Remark,位于当前药品列表之后并与任一药品行分离;空处方也可保存该 Remark。两级 Remark 均去除首尾空白、保留正文换行、限制两千字符,进入内容哈希、签署快照与 Pharmacy Handoff,但不作为患者打印指示。DWS-FR-062:eMMS 结果至少区分不适用、未检查、检查中、无提示、有提示、不可用和已过期;展示重复用药、相互作用、Allergy 和 Condition 等检查范围及检查时间,结果始终只作辅助建议。医生离开 Prescriptions 后结果才返回时,只显示非阻断通知和页签标记,具体临床提示仍在 Prescriptions 内查看。DWS-FR-062A:eMMS 标题旁只显示独立连接状态Checking / Connected / Connection unavailable / Not configured;每次重新进入 Prescriptions 自动验证配置与真实连通性,停留期间不轮询且不提供重试按钮。失败 Tooltip 只显示安全错误类别;下方继续显示本次安全建议结果,尚未运行检查时保持Not checked。DWS-FR-063:高风险 Allergy/ADR 命中显示不可忽略的患者用药警示,但不阻断保存、签署或发送 Pharmacy,也不要求 Override。DWS-FR-064:不得把“保存处方”“eMMS 建议结果”“签署处方”和“Pharmacy 已接收”合并为同一状态。DWS-FR-065:完全相同的药品和结构化 SIG 不得重复加入;相同药品使用不同剂量、Route 或时间表时允许加入并显示重复用药提示。DWS-FR-066:签署前允许编辑、排序和删除处方行;任何变化使 Prescriptions 恢复未保存状态,Save & Continue 原子覆盖服务器当前草稿并进入 Orders。签署后只能建立带原因和前后关系的更正版本。DWS-FR-067:系统按 Dose、Frequency 和 Duration 建议 Dispense Qty,医生可改为有效正数;界面显示计算值和最终值,服务器保存计算输入与最终数量。DWS-FR-068:草稿显示当前目录价格,签署时固化药品、供应来源和单位价格快照;医生不得在 Prescriptions 改价,最终收费由 Billing 负责。DWS-FR-069:未保存处方按标签页、医生、诊所和 Visit 隔离保存在sessionStorage;同一标签页刷新可恢复,服务器保存成功后清除,退出登录或关闭标签页后不承诺恢复。DWS-FR-069A:处方创建、修改和签署只允许当前活动诊所内负责本 Encounter 或处于获授权代诊范围的认证医生;护士和行政角色只读,保存人和签署人由服务端会话决定。DWS-FR-069B:Prescriptions 有未保存变化时切换患者,必须提供“保存并切换”“放弃未保存变化并切换”“取消”;保存并切换不改变当前模块,成功后才切换患者。DWS-FR-069C:内容无变化时重复 Save & Continue 返回当前保存版本并进入 Orders,不新增版本或重复审计事件。DWS-FR-069D:原负责医生或获授权代诊医生可在 Completed Consultation 的只读页面使用独立 Amend Prescription 建立并签署新版本,必须填写原因;不得重新开放或修改其他已完成临床模块。DWS-FR-069E:已签署处方只读展示完整结构化内容、数量与价格快照、eMMS 建议、Allergy/ADR 警示、签署人/时间/版本、Handoff 状态和 Amendment 链。DWS-FR-069F:普通操作日志只记录处方和 eMMS 动作的操作者、角色、诊所、Visit、版本、输入哈希、状态和原因,不记录完整处方、Allergy、Condition 或 eMMS 请求正文。DWS-FR-069G:每张处方最多五十条有效药品行,Patient Instruction、药品行 Remark 和 Prescription Remark 各限制两千字符;所有类型、枚举、正数和长度约束由服务端执行并返回字段错误。DWS-FR-069J:两级 Remark 的任何变化都使处方恢复未保存状态并产生新的完整内容哈希;eMMS 使用排除两级 Remark 的独立输入哈希,因此只改 Remark 不使现有建议过期或触发重复安全检查。DWS-FR-069H:Draft PUT 使用内容哈希幂等;Sign、Amendment、Handoff、手工重发和 Ack 使用 Idempotency-Key,相同 Key 与不同内容必须返回 409。DWS-FR-069I:历史clinic_prescriptions和clinic_medication_orders只按已有事实兼容读取,不倒推 eMMS、警示、签署人或 Received 状态;所有新写入使用规范 Prescription 模型。DWS-FR-069J:Review & Complete签署 Prescription 时立即建立 Pharmacy Handoff,不等待 Cashier 付款;Handoff 与 Pharmacy Queue 必须把Payment pending和交接传输状态分开显示。DWS-FR-069K:Payment pending 允许 Pharmacy Review、Label、Pack 与 Verify,但最终Dispense必须同时满足 Paid 与最终核对完成,前后端都必须执行该门槛。DWS-FR-069L:Pharmacy 不得取消或修改签署 Prescription;异常必须填写类别和评论后退回整张处方,建立prescription_amendment任务并立即阻断 Cashier。药房本身不改变 Encounter;护士在 Cashier 明确确认后才把Ready for Cashier退回In Consultation,两步分别审计。DWS-FR-069M:药师查看时从当前订单直接打开同一 Visit 的只读 Consultation result 并定位 Prescriptions,不进入或启动 Consultation Queue。护士完成 Cashier 回退后,医生从药房异常任务进入原 Consultation Workspace 的 Prescriptions 模块,并继续通过既有Amend Prescription操作;入口只定位模块,不自动进入编辑,也不开放无关模块。DWS-FR-069N:医生 Amendment 保留不可变版本链;有药品时建立 Cancel/Replace Handoff,清空全部药品时建立医生授权的 Cancel Handoff。旧药房队列项由系统标记 Superseded,不能解释为 Pharmacy Cancel。
(历史原型截图未随仓库保存;用药安全行为见 Consultation PRD §4.2。)
8.5.4 Orders
DWS-FR-070:支持按用途、项目名、关键词、样本或身体部位搜索 V-Lab、Imaging 和 Procedure 项目。DWS-FR-071:创建前展示样本/部位、准备要求、价格、预计时间和内部/外部去向;Procedure 强制确认 Consent 与部位/侧别。DWS-FR-072:内部检查进入 V-Lab 工作流;外部项目只建立转介及必要的收费/文件交接,不得显示为 V-Lab 已接收。DWS-FR-073:Orders 页提供 Result Inbox 摘要;危急值必须有独立工作任务、医生确认、患者联络与审计,不能因当前问诊签署而自动关闭。
8.5.5 Clinical Documents
Clinical Document 专指医生基于受治理模板生成的正式临床文档,例如 Sick Leave Certificate、Attendance Certificate、Referral Letter、Medical Certificate、Medical Report 或 Patient Instruction。Attachment Management / OCR 是外部文件与识别结果管理,不属于本页面的文档类型、编辑器或生命周期。
Consultation 内嵌模块的浏览器式多文档页签、默认打开文档集、AI 侧卡、自动保存、单一活动编辑权和非阻断内容提醒以 Clinical Documents 内嵌页签工作台重构 PRD 为准;独立 Clinical Document App 保持当前页面布局与显式保存交互。
DWS-FR-080:Consultation 内嵌入口与独立 Clinical Document App 必须复用同一ClinicalDocumentWorkspace、模板目录、保存 API 和打印逻辑。内嵌入口自动绑定当前锁定 Encounter;独立入口必须先选择获授权 Encounter,二者不得创建脱离 Consultation 的第二份文档。DWS-FR-081:页面按 Document Family → Document Type / Template 组织。P0 目录至少覆盖 Certificates、Referrals & Admission、Clinical Correspondence、Patient Information 与已批准 Specialty Documents;停用或无权限模板不展示为可创建项。DWS-FR-082:医生可创建、编辑及删除自己的 Personal Template,但所有权必须最终绑定不可变 User / Provider ID,而不是仅以医生姓名过滤。个人模板只保存可复用结构和 Merge Field,不得保存某位患者、Encounter、临床正文或 AI 输出。DWS-FR-083:选择模板后从当前 Patient + Encounter + Clinic + Doctor 受控填充 Merge Field。不同文档类型按 Recipient Rule 提示 Patient、Hospital、Provider、Insurer、Employer / School 或 Custom Recipient;Consultation 内嵌模块缺少 Recipient 时只显示非阻断提醒,仍允许自动保存、AI、Print 与 Review & Complete,并把null/未指定写入版本快照。系统不得自动补造收件机构。独立 Clinical Document App 保持现有 Recipient 校验。DWS-FR-084:AI Drafting 只用于起草或润色,Prompt 可约束 concise、plain language、limit disclosure 或 polish only。AI 不得补造诊断、日期、休假天数、接收机构或其他临床事实;结果先进入可编辑 Draft,必须由医生复核。DWS-FR-085:医生可在受控 Rich Text Editor 中编辑内容、选择获批准 Letterhead 和 A4 / A5 页面尺寸并预览分页。模板、Letterhead 和生成 HTML 在显示或打印前必须清理不安全脚本、事件属性和外部资源。DWS-FR-086:独立 Clinical Document App 的Save version与 Consultation 内嵌模块的自动保存都对当前 Encounter 创建不可变后继版本,保存 template ID / version、title、family / category、recipient、page size、letterhead、sanitised content、author、created / updated time 和前一版本关系。内嵌模块不显示 Save;离开模块或上下文时保存全部剩余页签,Print 前只保存当前页签。相同内容或请求重试不得生成重复版本。DWS-FR-087:文档生命周期分为Draft → Reviewed → Signed → Issued,并支持Voided → Reissued的关联版本。当前saved / ready_for_pdf只能视为工作区基础,不得显示为已签署或已签发;Completed Consultation 默认只读。DWS-FR-088:Print / PDF只输出已持久化版本或明确标记的 Draft Preview,并持续显示 Patient、Doctor 与 Encounter reference。Consultation 内嵌模块点击 Print 时先自动持久化当前页签并在首次成功时建立 Document ID;Recipient 或正文不完整不阻断打印,但无法持久化或记录披露审计时必须阻断。浏览器 Print Preview、PDF-ready 标记或文件下载均不等于 Signed / Issued。DWS-FR-089:页面分别处理 No Encounter、No Template、Loading、Template load failure、AI failure、Autosave failure、Read-only、Edit lease lost 和 Print blocked。错误不得清空编辑内容;内嵌模块切换 Patient / Encounter 前把所有页签写入 sessionStorage 并在后台保存,活动工作台内容自动成为未签署 Draft 的当前后继版本,不要求医生处理版本冲突。DWS-FR-089A:附件上传、外部报告、文件可用性、OCR 置信度、字段修正和原件预览全部进入 Attachment Management。Clinical Documents 只能关联或引用附件,不得把 OCR 草稿当作文档模板,也不得用 Document 的 Signed / Issued 状态描述附件。
当前实现状态(2026-08-22):共享工作区已具备
Encounter 绑定、文档分组、标准 / Personal Template、Recipient、AI Draft
/ Improve、Rich Text、A4 / A5、保存版本列表和 Print / PDF 的前端与 API
基础。Personal Template 仍按医生姓名过滤;正式 Signed / Issued / Void /
Reissue、不可变 PDF 证据、渠道发送、完整权限审计及 UAT 尚未闭环,状态为
Working / Partial。
8.5.6 Billing & Finish
DWS-FR-090:页面按当前 Encounter 汇总 Consultation、Prescription、Investigation / Procedure、Clinical Document 和其他真实 Charge Event;每行保留 source type、source ID / key、service / product code、description、source status、quantity、unit price、gross、discount 和 net amount。DWS-FR-091:由处方、Order 等业务对象自动产生的 Source Snapshot 行默认只读,不能在医生 Billing 中改写描述、数量、价格或删除;取消 / 更正必须回到原业务对象并重新同步。医生手工新增的 Other Service 必须选择有效 Category / Code、填写说明并可在完成前删除。DWS-FR-092:生产价格必须来自服务端有效 Fee Schedule / Contract / Catalogue。页面可以明确展示缺失价格或本地 Preview Fallback,但 Fallback 不得进入目标环境签署、收费交接或验收证据;客户端金额不能覆盖服务端最终计算。DWS-FR-093:主诊医生可对自己负责的本次问诊收费行应用 Percentage 或 Fixed Amount 折扣,不增加额外审批步骤。Percentage 限制为 0–100%,Fixed 不得超过该行 gross;折扣必须保留原价、类型、值、折扣额、非空原因、登录医生 User / Provider、应用时间和 net amount。DWS-FR-094:非医生或非本次授权主诊医生不能创建、修改或清除 Doctor Discount。前端 Disabled 不是权限控制,服务端必须验证 actor、Visit、Clinic、source line、当前版本和金额边界;折扣变更必须使旧的 Billing confirmation 失效并重新核对。DWS-FR-095:顶部和页尾同时展示List total、Doctor discount与To Cashier,按 HKD 两位精度计算;原价在折扣后继续可见。服务端保存前重新计算 gross / discount / net,拒绝负数量、负价格、无原因折扣和总额不一致。任一收费行缺少权威价格时,该行的 List price、Discount 与 Net 及全部汇总金额均显示—,不得把缺价行当作 HK$0 或把其余行小计呈现为完整总额。DWS-FR-096:Save charge draft只保存当前 Encounter 的收费交接草稿,不签署临床记录、不改变 Visit 状态、不生成 Invoice。保存失败保留本地编辑内容并明确显示尚未发送;草稿已保存但权威定价不可用属于完成校验阻断,不得显示为保存失败。DWS-FR-097:医生 Billing 不承载 Insurance、Claim、Pre-authorisation、Direct Billing、Invoice Post、付款方式、实际收款、找零、Receipt、Refund 或 Cashier Session;这些由 Line A / Cashier 处理。任何通用打印动作不得在医生工作台伪装为已开票或已收款。DWS-FR-098:Review & Complete一次完成临床完整性检查、医生签署及有收费时的 Billing Handoff Snapshot。存在至少一条有效 Charge Event 时,成功交接后 Visit →Ready for Cashier;完全没有 Charge Event 时记录cashier_required = false,完成签署后直接结束医生阶段且不进入 Cashier Queue。用户不需要签署后再次点击 Send to Cashier;底层仍分别记录临床签署、收费判断、收费快照和状态事件,并以幂等 / 事务或可恢复编排避免部分成功产生重复交接。DWS-FR-099:完成弹窗展示 Patient、Encounter、Consultation Type、Signing Doctor、Record Version、Clinical Checks、Next Workflow、Cashier Handoff / No Cashier Required 和 Next Consultation。病历字段、文件、Consent、处方、Order 及其他必填检查由服务端 Doctor Consultation 基线规则与当前Consultation Type的 delta 共同决定;大多数类型沿用相同医生主干,只呈现明确配置的差异项。权威价格检查只显示简洁的Authoritative pricing available;每个失败检查提供Go to section。存在当前类型要求的缺失内容、主诊断 / 临床结论、用药安全、必要文档、无效折扣、未确认 AI Draft 或 Follow-up Decision 时禁止完成或交接下一子流程。DWS-FR-099A:Follow-up 必须明确选择No follow-up或Book follow-up。选择预约时日期与临床原因必填,并在本次问诊成功完成后打开统一 New Appointment Drawer;预约失败、患者暂未确认或随后取消不得反向改写已签署 Consultation。DWS-FR-099B:有有效 Charge Event 时,成功后临床记录转只读、医生返回 Queue、Visit 进入Ready for Cashier;这不等于Checkout Completed、Payment、Financial Completed 或 Closed。完全没有 Charge Event 时,临床记录同样转只读并返回 Queue,但标记No Cashier Required,不得生成 HK$0 Cashier Handoff 或进入 Cashier Queue。后续费用纠正必须通过受控 Clinical Amendment、源业务对象更正或 Cashier 调整,不得直接覆盖已签署快照。DWS-FR-099C:页面分别处理 Empty charges、Loading、Source sync failure、Pricing unavailable、Discount invalid、Draft save failure、Sign-off partial failure、Stale version 和 Cashier handoff retry。只有网络断开、无响应、超时、HTTP 408、425、遵守Retry-After的 429,以及没有明确业务错误码的 5xx 可进入通用自动重试;业务校验阻断不得自动重试,Stale version 必须重新加载并经使用者复核,Cashier handoff retry 使用专用幂等恢复。重复写入和完成请求不得重复递增 Draft version,或重复创建 Charge Event、Follow-up Appointment 或 Handoff。DWS-FR-099D:若临床签署已成功但需要的 Cashier Handoff 失败,Visit 主状态保持In Consultation,工作区显示不可忽略的Clinical signed · Cashier handoff failed异常和重试入口。签署内容保持只读,重试仅恢复同一版本的 Handoff 与后续状态转换,不得重新签署、重复创建 Charge Event 或重复预约 Follow-up。
当前实现状态(2026-08-22):当前工作区已具备 Source
Snapshot 聚合、手工 Service、行级医生折扣、折扣审计字段、List / Discount
/ Net 汇总、Charge Draft、Review & Complete、Follow-up 选择及
Ready for Cashier
文案基础。当前签署检查仍主要使用固定病历字段规则,完成路径也尚未闭环实现“无
Charge Event 跳过 Cashier”及“签署成功但 Handoff 失败时保持 In
Consultation 并恢复”的服务端状态编排。代码仍存在本地 Fee
Fallback,正式服务端价格权威、角色权限、Cashier 接收、并发与端到端 UAT
仍待验证,状态为 Working / Partial。
8.6 Clinical Reference
Clinical Reference 是锁定问诊上下文中的只读临床参考工作区,不是新的 Patient & eMR,也不是独立写入主档。所有历史记录、附件、生命体征和疫苗内容必须复用 Patient & eMR 的组件、数据契约、权限和来源语义。
历史记录先显示公共索引,选择或展开某条记录后再加载该条完整 Note/处方。未授权正文在该条显示申请入口,详情失败提供局部重试,均不得阻塞公共历史和当前问诊。快速重复选择应合并在途请求;切换患者、身份或记录后,旧详情响应不能重新出现。医疗分类与诊所资料维护边界统一见 组织、数据权限与授权方案,不在 Clinical Reference 另建一套授权规则。
DWS-FR-100:一级入口固定为Patient 360、Records、Attachments、Anatomy和More。切换一级入口不得改变当前 Patient / Encounter、临床草稿、录音或 Queue 选择;切换 Encounter 时统一重置为 Patient 360、Records / Consultations、Attachments / This Chit 和 More 主菜单。DWS-FR-101:Patient 360 目标包含 Vitals、Clinical summary 和有本次任务时才显示的 Nursing questions & feedback。Vitals 只展示当前 Visit 同一条最新 Vital 的血压、脉搏、体温、血氧、体重及该记录的时间、记录人;缺失项显示 Not recorded,不以历史测量补齐,历史变化通过 Records → Vitals 查看。DWS-FR-101A:2026-09-09 公共摘要决定替代此前仅待核实空态的读取方案。Clinical summary 展示 Recorded diagnosis summary 与 Recorded medication summary,各最多 10 项及最近记录日期;依据已保存诊断、已签署处方/旧处方和已发药记录聚合。不复制完整问诊文字、剂量或用药方案,不把历史诊断认定为持续疾病、不把历史药名标为已核实当前用药。没有记录显示 No recorded summary available。医疗归属与独立隐私字段边界统一见 组织、数据权限与授权方案。DWS-FR-101B:Nursing questions & feedback 须关联本次 Visit 的医生问询任务,显示医生的问题、护士在同一任务下记录的回答/说明/未完成原因、任务状态以及双方记录人和时间;待询问/待反馈不等于患者否认,反馈不得自动覆盖病史或已核实用药,无任务时隐藏。DWS-FR-101C:从 Patient 360 移除 Consent、Last visit、Longitudinal record 整卡及统一 Source/Updated。AI Scribe 同意状态保留在其操作区,最近就诊与历史咨询统一在 Consultation History/Records → Consultations 查看,具体来源时间跟随对应业务记录显示。DWS-FR-101D:Vitals 已连接当前 Visit;诊断/药物历史摘要在本轮本地候选接入,目标 STG 及 UAT 验收另计。医生维护和核实当前用药的独立流程、人工/AI 病史整理、护士问询及反馈仍待实现,不得以历史摘要替代这些业务闭环。DWS-FR-102:Patient 360 复用工作台区块标题、卡片圆角和磨砂按钮,采用自适应生命体征网格、分行来源信息及纵向临床摘要,保持正常正文字号和充足留白。Current visit overview 与 Full eMR 所在行纳入同一内容滚动区,不固定占用顶部信息空间。Clinical summary 不提供指向患者主档的泛化 Edit;Clinical Reference 本身不直接维护患者主档。保留Full eMR,携带 Patient ID、current Visit ID、source 和 Return Context,返回时恢复原 Consultation。DWS-FR-103:Records 内提供Consultations、Medications、Vitals和Vaccines。各 Tab 复用 Patient & eMR 的PatientEmrHistoryWorkspace、PatientVitalTrendsWorkspace与PatientVaccineHistoryWorkspace,不重新定义 SOAP、Prescription、Pharmacy fulfilment、Vital 或 Vaccine 语义。DWS-FR-104:Consultations 只显示当前 Visit 之前的服务并保持只读;内嵌态不重复患者姓名、页面大标题或说明卡,只保留记录内容、数量、只读状态、筛选 / 刷新和Open detail drawer。详情抽屉绑定同一 Patient + Encounter,并使用统一历史附件查看器。DWS-FR-105:Medications 必须区分医生处方与 Pharmacy fulfilment;Vitals 保留测量时间、来源 Visit、Doctor、Clinic 和 Recorder;Vaccines 只显示真实来源字段。各 Tab 可打开 Full eMR 对应页面,但不得把内嵌检索变成第二套编辑入口。DWS-FR-106:Attachments 提供This Chit与Past services。每条附件保留 Patient、原 Visit / Chit、日期、Doctor、来源、Document Type、Storage Status 和 OCR availability;Metadata-only 或无授权 URL 的记录不可点击,不得伪造文件 Preview / OCR。DWS-FR-107:附件统一通过可多实例打开的Attachment ViewerUtility App 展示,instance key 使用稳定 Attachment ID 或受控 fallback;查看器保留来源上下文。All attachments打开 Patient & eMR / Attachments 并携带 Return Context。DWS-FR-108:Anatomy 只打开独立 Anatomy Explain 教学画布。它不是患者特异模型、诊断工具或患者影像;Patient / Visit 只用于窗口上下文。Pen / Circle / Arrow / Text 等未保存标注仅保留在当前窗口,患者/就诊切换或关闭窗口时清空;用户通过 Screenshot 预览并明确 Save to this encounter 后,合成 PNG 作为当前 Patient + Visit 的附件保存,记录上传者、时间和文件审计。截图仍为通用解剖参考,不是患者影像或诊断。DWS-FR-109:Anatomy 的 Full Atlas 与 Male / Female Organ 数据集、系统分包、选择 / 聚焦 / 隔离 / 隐藏、透明度、Normal / Ghost / X-ray、术语、来源与许可按已批准 Anatomy Spec 实现。当前前端基础不得被宣称为临床 UAT、患者教育内容批准或目标设备性能达标。DWS-FR-109A:More 包含Chit activity与Clinical Copilot。Chit activity 只显示当前 Encounter API 返回的临床 / 流程事件,不与系统级 Audit Trail 混为一体;无事件时不生成示例。Copilot 未接入获批准 Provider 时显示明确 Disabled 空态且不发送患者数据。DWS-FR-109B:启用 Copilot 后,只能使用当前锁定 Patient + Encounter 的获授权最小上下文;答复显示来源、时间和不确定性,不得直接写病历、下医嘱、开处方、创建 Document 或改变状态,必须回到正常医生确认流程。DWS-FR-109C:Balanced 默认把 Clinical Reference 设为工作区约 38%,限制为 520–720px;固定个人宽度限制为 480–720px。当剩余临床主区小于 480px 时切换为可关闭 Overlay,而不是继续压缩病历。Overlay 需正确焦点锁定、Esc / Close、焦点恢复和未保存临床内容保护。DWS-FR-109D:Clinical Reference 的 Loading、Empty、Permission denied、API error、Metadata-only、No authorised URL、Copilot disabled 和 GPU / model load failure 必须分别表达。错误只影响当前参考区域,不清空临床草稿或切换患者;重试继续绑定相同 Patient + Encounter。DWS-FR-109E:Clinical Reference 整体与医生工作台采用同一浅色界面,包括区块标题、主/子页签、操作按钮、卡片和空态;不再使用独立深蓝标题栏、Anatomy 装饰渐变或紧凑小字。Records 与 Attachments 内嵌历史仍复用既有业务组件,通过参考区限定的样式统一按钮、控件高度、卡片圆角及辅助文字;独立 Full eMR 和附件查看器保持各自样式,风险与选中状态继续可辨识。
当前实现状态(2026-08-22):ConsultationInsightRail.vue
已具备五个一级入口、Records 四个子 Tab、This Chit / Past services、统一
Attachment Viewer、Full eMR Return Context、Anatomy Explain、Chit
activity、Copilot Disabled 边界及 Encounter 切换重置。响应式 38% /
520–720px 与 Overlay 壳层已存在;正式后端权限 / 数据完整度、附件授权
URL、Copilot Provider、Anatomy 目标设备性能和医生临床 UAT
仍待验证,状态为 Working / Partial。
8.7 保存状态与签署
DWS-FR-110:移除整个底部固定操作栏,不显示 Last server update、Version、Unsaved changes、No changes或 Review 聚合状态。DWS-FR-110A:保存失败由对应模块显示;签署阻断由 Review 检查清单显示并提供“前往处理”,Review 主按钮本身不附带状态文字或状态点。DWS-FR-111:移除全局 Save Draft、Pause Consultation、Ctrl/⌘ + S及 Note、Prescription、Service、Billing 的公共 Save 卡片。上述四个模块离开时先写入 sessionStorage,再静默执行服务端保存;Consultation 内嵌 Clinical Documents 同样移除 Save,并按 ADR-0014 在离开模块或上下文时保存全部剩余页签、在 Print 前保存当前页签。只有DWS-FR-099C所列暂态错误按退避自动重试三次,最终失败显示一次 Toast,后续恢复成功再显示一次 Toast。后台回调不得切换页面、模块或 Encounter,不得打开对话框、改变焦点或覆盖新上下文;保存失败不得阻断导航,但未同步的临床文档继续阻断最终 Clinical Complete。DWS-FR-111A:移除底栏 Transcript、Quick Actions 中的 Open Transcript、旧共享 Transcript Drawer 及其旧数据接线;保留 Consultation Note 模块内部的 AI Scribe、Transcript、AI Draft、服务端保存与签署链路。DWS-FR-112:Review & Complete 保持可点击并打开检查清单;点击时立即触发当前 Billing Draft 保存。存在后台保存中、最终保存失败或只有浏览器草稿的模块时允许查看检查清单,但禁止确认 Clinical Complete;eMMS 和 Allergy/ADR 警示持续可见但不构成阻断项。DWS-FR-113:每个失败项显示原因和“前往处理”,跳转到对应模块;任一阻断项未满足时禁止确认 Clinical Complete,但不得禁用打开 Review & Complete 检查清单的入口。DWS-FR-114:确认成功后记录签署人、时间、版本和完整性检查结果,同步保存收费交接快照并使 Visit 进入 Ready for Cashier;临床内容转为只读,医生返回队列。DWS-FR-115:不再要求签署后第二次点击 Send to Cashier。用户层面合并为一次完成动作,底层仍分别保留临床签署、收费交接和状态事件,以便失败恢复和审计。DWS-FR-116:受控修订要求权限和非空原因,创建新版本并保留上一个已签署版本;Prescription Amendment 仍在原 Consultation Workspace 完成且不改变 Encounter 主状态。修订对 Pharmacy、V-Lab、文件和收费的影响必须显式通知,不得静默覆盖。
8.8 布局与偏好
DWS-FR-120:提供四个固定系统预设;预设是可重复套用的模板,不是用户布局版本。Balanced Consultation 为 Queue 280px、Clinical Workspace 弹性、Clinical Reference 响应式 38%、三面板可见及 Comfortable;Focus Writing 为 Queue 折叠至 58px、Clinical Reference 480px、三面板可见及 Comfortable;Record Review 隐藏 Queue、Clinical Reference 680px及 Comfortable;Queue First 为 Queue 380px、隐藏 Clinical Reference 及 Compact。四者基础顺序均为 Queue → Clinical Workspace → Clinical Reference。DWS-FR-120A:系统只维护一个当前布局。套用预设会替换当前布局;之后发生任何换位、显隐、折叠、调宽或密度调整时,当前布局标记为 Custom。退出布局编辑模式前提供单步 Undo,不提供命名布局、历史版本或管理员下发预设。DWS-FR-121:Queue、Clinical Workspace 和 Clinical Reference 三个一级面板支持全部六种横向排列。Queue 在展开或折叠状态均可换位;隐藏面板保留顺序位置并在重新显示时回到原位。Clinical Workspace 永远可见且不可折叠;Queue 与 Clinical Reference 可隐藏,并可从固定布局工具重新显示。DWS-FR-121A:只有显式进入 Edit Layout 且工作区内容宽度至少 1260px 时才能拖拽。编辑期间临床内容只展示、不响应输入;面板标题手柄、布局控件和完成操作可用。进入、换位、退出或取消布局编辑不得触发模块离开、临床自动保存、Encounter 切换或签署。DWS-FR-121B:拖拽使用 Pointer Events;拖动期间保持原布局,只显示半透明预览和合法插入位置,释放后一次性换位,Esc 取消。聚焦面板手柄后可用 Alt + 方向键移动一个位置;成功后焦点仍停留在该面板手柄,并由可见状态和 ARIA live region 报告新位置。DWS-FR-121C:相邻一级面板之间提供可聚焦 splitter。拖动时实时预览、释放后形成一次偏好写入;Queue 限制为 250–420px,Clinical Reference 限制为 480–720px,Clinical Workspace 占据剩余宽度且不得小于 480px。键盘方向键每次调整 8px,Shift + 方向键每次调整 32px,双击恢复对应预设或安全默认宽度;达到边界时停止并提供可感知反馈。DWS-FR-121D:布局设置继续提供 Element Plus Slider 和当前像素值作为精确及无障碍替代。Compact 只压缩非关键间距、卡片内边距和次要控件间隔,不降低正文、表单、触控目标、安全栏或关键操作的最低设计标准。DWS-FR-122:患者安全栏、患者双标识、Encounter、Allergy、ADR、模块级保存 / 失败状态、Clinical Workspace、模块导航和签署动作位于可排列面板之外或受不可隐藏约束,任何顺序、密度和响应式降级均不得使其不可达。DWS-FR-122A:空间不足时先把 Clinical Reference 转为 Overlay,再把 Queue 收为 58px,仍不足时隐藏 Queue;Clinical Workspace 始终保留。900–1259px 只消费并自适应已保存布局,小于 900px 延续安全只读策略;视口恢复后按保存的顺序、宽度和显隐状态还原,不把响应式临时状态写回偏好。DWS-FR-123:问诊台布局配置是非临床个人偏好,以真实用户、医疗集团、诊所、schema version 与 revision 隔离;服务端为跨设备权威来源,localStorage 只作为同一隔离键下的即时启动缓存和同步失败保护。载荷不得包含 Patient、Encounter、搜索词、病历草稿、逐字稿、AI 内容或其他临床资料。DWS-FR-123A:新版 schema 使用queue、clinicalWorkspace、clinicalReference三个面板标识。独立偏好表以真实登录用户、医疗集团和诊所形成唯一记录,结构化保存 schema version、revision 与时间戳;严格白名单 JSON 只保存顺序、宽度、显隐、折叠、密度和当前预设 / Custom 状态。用户和诊所身份只从服务端会话取得,不接受客户端指定。DWS-FR-123B:本地布局操作即时生效;每次换位、显隐、折叠、调宽、密度、套用预设或恢复默认完成后才自动保存,不发送 pointermove 中间帧。同步失败不得阻断退出编辑或临床操作;客户端保留本地未同步状态、显示低干扰反馈并后台重试。DWS-FR-123C:服务端以 revision 执行乐观并发控制。发现 409 时客户端获取最新 revision 并自动重试一次,使刚完成的本地完整操作生效;再次冲突或网络失败则保持本地未同步状态并稍后重试。启动时先同步读取本地缓存,再协调服务端较新版本;用户进入问诊并开始交互后,远端变化不得突然重排当前工作区。DWS-FR-123D:服务端拒绝未知字段、重复或缺失面板、错误类型及隐藏 Clinical Workspace 等非法结构并返回 422;合法数字越界时执行安全夹取。读取到内部损坏记录时返回 Balanced Consultation 并记录不含布局载荷和临床内容的应用错误。DWS-FR-124:新版使用全新 schema 和 localStorage key,不读取、不转换、不上传 v1–v6 布局数据,也不主动删除旧 key。所有用户首次使用新版时从 Balanced Consultation 开始;该偏好重置必须写入发布说明。DWS-FR-124A:Restore Safe Default 只把当前用户在当前医疗集团与诊所的当前布局保存为 Balanced Consultation 并递增 revision,不影响其他诊所或临床数据。登录用户、医疗集团或诊所上下文缺失时只使用内存默认值,禁止写入anonymous、no-clinic或其他共享缓存。DWS-FR-124B:任何获授权进入当前诊所问诊台的登录用户均可读写自己的布局,包括医生和护士;管理员或 assumed role 不得替目标用户读写个人布局。布局变化不进入患者临床审计,只记录必要的通用应用错误和用户、诊所、revision 元数据,且不得记录完整偏好 JSON。
8.9 快捷键与反馈
DWS-FR-130:支持Ctrl/⌘ + K快速操作和Ctrl/⌘ + Enter打开签署检查;不提供全局Ctrl/⌘ + S,保存由当前业务模块自己的 Save 控件负责。DWS-FR-131:快捷键在输入法组合、弹窗打开和只读状态下不得误触危险动作;完成签署仍需显式确认。DWS-FR-132:保存失败和签署阻断归入 Review 操作区;网络错误、权限错误、Visit 已变化等工作区级异常使用 Element Plus 确认式 Alert 对话框,一次只显示一个,作为本工作区对共享AppDialog规则的明确提示类例外。用户确认后仅关闭对话框,不自动跳转、刷新、切换只读或执行其他后续动作。提示文案包含动作结果与对象,但不显示敏感患者信息。DWS-FR-133:刷新、路由离开或关闭浏览器前,如有未保存内容需提示并提供恢复信息。
9. 核心流程
9.0 Consultation 端到端总览与医生确认门槛
Reception / Preparation
│ 已完成登记、必要生命体征及准备
▼
按 Consultation Type 分流
├─ No Consultation → Nurse / Service Queue(不进入医生队列)
└─ 其他所有类型
▼
Ready for Consultation
▼
Consultation Queue(实际到达时间最早者优先)
│
├─ Start Consultation
├─ Resume Consultation
└─ Completed → Open read-only
▼
首次开始或切换 Encounter:双标识核验
同一医生恢复同一 Encounter:不重复人工核验,但服务端重新校验上下文
▼
Patient + Encounter + Clinic + Doctor 锁定
▼
Consultation Workspace
├─ Consultation Note:按 Doctor Consultation 基线 + Type delta 完成必填病历
├─ Diagnosis:确认且仅确认一个 Main Diagnosis
├─ Prescriptions:药品安全检查;风险命中时修改或授权 Override
├─ Orders:确认项目、部位 / 侧别、优先级、Consent 与去向
├─ Clinical Documents:确认模板、Recipient、内容和披露范围
└─ Billing & Finish:核对收费来源;折扣填写方式、值和原因
▼
Review / Complete current clinical stage
├─ 任一类型规则或安全检查失败 → Go to section → 修正后重检
└─ 全部通过 → 医生确认当前阶段并按 Type 分流
│
├─ Day Procedure
│ → Procedure Consent / Preparation
│ → In Procedure
│ → Recovery / Observation
│ → Procedure Completed 后再做最终 Billing / Finish
│
├─ Physical Examination
│ → Structured Examination / Tests / Results
│ → Examination Report
│ → 完成所需体检阶段后再做最终 Billing / Finish
│
├─ 其他医生问诊类型且完全没有有效 Charge Event
│ └─ No Cashier Required → 记录转只读 → 返回 Queue
│
└─ 到达最终 Billing / Finish 且存在有效 Charge Event
├─ Handoff 成功 → Ready for Cashier → Cashier 结算
└─ Handoff 失败 → 保持 In Consultation
+ Clinical signed / Handoff failed 异常
+ 幂等重试 Handoff
Follow-up Decision
├─ No follow-up → 完成后返回 Queue
└─ Book follow-up → 完成本次问诊后打开统一预约流程
医生确认点及确认后的系统动作如下:
| 确认节点 | 医生确认内容 | 确认后的系统动作 |
|---|---|---|
| 开始问诊 | 首次开始或切换 Encounter 时核验患者两个有效标识;确认当前 Visit | 服务端校验 Patient、Visit、Clinic、Doctor / Coverage
和状态,成功后进入 In Consultation |
| Consultation Note | 完成 Doctor Consultation 基线与当前 Consultation Type delta 要求的病历字段 | 记录基线 / delta 规则版本,允许进入当前阶段完整性检查 |
| Diagnosis | 有且只有一个 Main Diagnosis;AI / ICD 建议由医生选择 | 保存医生确认的诊断,不把 AI 建议自动写成正式诊断 |
| AI 内容 | 使用过 AI / ASR 草稿时确认已复核 | AI 内容才可随本次医生签署进入正式版本 |
| Prescriptions | 药品、SIG、数量及安全检查;风险命中时修改或填写授权 Override 原因 | 处方可签署并进入独立 Pharmacy 状态流 |
| Orders | 项目、部位 / 侧别、优先级、Consent、内部 / 外部去向 | 创建 Encounter-bound Order,并进入各自执行 / 结果状态流 |
| Clinical Documents | 文档类型、Recipient、内容、披露范围和版本 | 保存或签署 Encounter-bound 文档;Print / PDF 不自动代表 Issued |
| Billing | Charge Event 来源、手工服务和医生折扣;折扣必须填写原因 | 服务端重算 gross / discount / net;有收费时准备 Handoff,无收费时记录 No Cashier Required |
| Follow-up | 明确选择 No follow-up 或
Book follow-up;预约时填写日期与原因 |
本次问诊成功后结束,或打开统一 New Appointment 流程 |
| 阶段完成 / 最终完成 | 当前 Type 的 Review 检查通过并确认 | 普通问诊进入最终 Billing 分流;Day Procedure 进入 Procedure;Physical Examination 进入检查 / 结果 / 报告;到达最终阶段后再按有无 Charge Event 分流 |
这里的“完全没有 Charge Event”只表示本次 Encounter 没有任何需要收费核对的有效收费来源。存在原始收费行但因 100% 折扣、Package、Benefit 或其他财务效果导致净额为 HK$0,不自动等同于 No Cashier Required,仍需 Finance / Cashier 规则另行确认。
当前实现差异:当前 Vue 规则仍主要检查固定的
Complaint、Findings、Assessment、Plan 四段病历,并把 Ready / In
Consultation 上游交接视为已核验。当前代码仍将 Day Procedure 从
Preparation 直接送往 Procedure Consent、绕过医生 Consultation
Queue,并把 Physical Examination、Vaccination 与 Hospital Appointment
主要作为普通 outpatient
fallback;尚未实现所有医生参与类型共用 Consultation 主干、服务端版本化
Type-specific delta、首次开始 / Encounter 切换时的显式双标识确认、无
Charge Event 跳过 Cashier,以及签署成功但 Handoff 失败时保持
In Consultation 的可恢复异常状态。
9.1 开始问诊
- 用户进入全宽授权队列,默认无患者。
- 用户选择 Ready for consultation 的 Encounter。
- 首次开始或切换 Encounter 时,系统显示两个患者标识和 Visit 信息;用户完成主动核验。同一医生恢复同一 Encounter 时无需重复人工核验,但服务端仍重新校验上下文、版本和权限。
- 服务端再次校验 Clinic、角色、Provider/覆盖关系和 Visit 状态,并开始问诊或取得锁。
- 成功后加载当前 Encounter 的临床数据,显示固定安全栏和三栏工作区。
- 若状态仍是 Nursing、Visit 已移走/结束或被其他人锁定,保持队列页并显示可执行的处理建议。
9.2 患者切换
- 用户在左侧队列选择其他 Encounter。
- 系统检查未保存内容;有未保存内容时先要求保存、放弃或取消。
- 停止上一 Encounter 的录音、流式 AI 请求和临时任务。
- 对新患者重新执行双标识核验。
- 服务端校验成功后原子切换上下文;任何失败均保留原患者工作区。
9.3 完成与下游交接
- 医生打开 Review & Complete。
- 系统先加载 Doctor Consultation 基线规则版本,再应用当前 Consultation Type delta,计算并展示临床、Clinical Document、Consent、Next Workflow、Billing / No Cashier Required、AI Draft 与 Follow-up 检查项。
- 医生逐项处理阻断;重新检查时使用服务端最新版本与服务端重算金额。
- 系统完成当前临床阶段签署并按 Consultation Type 判断下一工作流。Day Procedure 进入 Procedure 执行流;Physical Examination 在需要时进入检查 / 结果 / 报告流;其他类型或已完成子流程的 Encounter 才进入最终 Billing 判断。
- 到达最终 Billing 判断且完全无 Charge Event 时记录
No Cashier Required,页面转只读并返回 Queue,不生成 HK$0 Handoff、不进入 Cashier Queue。 - 存在 Charge Event 时保存 Billing Handoff Snapshot;交接成功才使
Visit →
Ready for Cashier。用户层面仍是一次动作,底层签署、收费判断、Handoff 和状态事件分别留痕且必须幂等、可恢复。 - 临床签署已成功但 Handoff 失败时,Visit 保持
In Consultation并显示不可忽略的异常;签署内容只读,医生或获授权人员通过同一幂等键重试 Handoff,不重复签署。 - Pharmacy、V-Lab、Procedure、Physical Examination Result /
Report、Document Issue、Cashier 和 Follow-up 分别显示真实接收 /
待处理状态,不由医生完成动作伪造成功。
Ready for Cashier不等于 Checkout、Payment 或 Closed。
9.4 已完成问诊修订
- Completed 记录从队列只读打开。
- Controlled Amendment 的时间窗从第一次
Review & Complete临床签署时间起算;付款、Checkout 或其他下游事件不得重新起算。 - 首次签署后 24 小时内,仅原签署医生可直接发起 Amendment;超过 24
小时但尚未
Closed时,必须由 Medical Director 或获授权 Clinical Administrator 批准后再由医生修改。Nurse、Reception 和 Cashier 不得修改临床内容。 - 获授权医生选择 Controlled Amendment 并填写原因。
- 服务端创建修订版本/锁,不覆盖原签署版本。
- 医生完成修改并重新签署。
- 系统根据受影响对象生成 Pharmacy、V-Lab / Imaging、Cashier 等下游更正或通知任务,并保留完整审计链。
Closed永久只读且服务端必须拒绝 Re-open。Closed 后的错误不得通过恢复原 Encounter 处理;应创建与原记录关联的 correction、reversal、result event 或新记录,并保留原事实。
9.5 创建 Clinical Document
- 医生在当前锁定 Encounter 打开 Clinical Documents;独立 App 则先选择获授权 Encounter。
- 选择 Document Family、Template 与按类型要求的 Recipient,系统填充受控 Merge Field。
- 医生手工起草,或使用 AI Draft / Improve 后逐项复核事实与披露范围。
- 医生在 Rich Text Editor 中编辑、选择 Letterhead / Page Size 并保存新版本;Save 失败时保留编辑内容。
- Print / PDF 只输出当前版本的 Preview。完成签署、签发、作废或重发时,必须走对应状态与审计,而不是从打印动作推断状态。
9.6 Billing Draft 与 Cashier Handoff
- Appointment 不展示问诊费选择;服务端按稳定 Doctor User、当前诊所与 Visit Type 自动绑定最新有效 HKD Service Offering,多个匹配按生效时间、更新时间和 ID 依次取最新,没有匹配时不阻断预约或 Check-in。系统再同步当前 Encounter 的 Consultation、Prescription、Order、Procedure、Document 和其他可收费来源;Billing 对未匹配价格明确显示缺价。
- 医生核对 Source Snapshot;需要额外服务时新增有 Code / Description 的手工行。折扣必须记录结构化来源:Coupon、Insurance / Benefit Contract、Doctor Adjustment、Package / Membership 或 Manual Exception。自动 Coupon / Contract 折扣保留来源 ID / 版本而不重复要求自由文本;Doctor Adjustment 与 Manual Exception 必须填写说明。
Save charge draft保存未签署草稿,不改变 Visit 状态。- 使用者每次重新进入 Billing & Finish
时同步来源并重新取得权威价格;缺价行在请求期间显示
Checking price…,仍缺价时显示红色透明材质Price unavailable,不显示状态条、错误弹窗、红色保存错误框或 Toast。Review & Complete验证已保存草稿、价格 / 折扣、临床阻断与 Follow-up,但不以相同草稿重复触发缺价恢复。 - 完全无有效 Charge Event 时记录
No Cashier Required并直接结束医生阶段,不生成 Handoff 或 Cashier Queue 项。 - 存在有效 Charge Event 时保存不可歧义的 Handoff Snapshot;成功后
Visit 进入
Ready for Cashier,Cashier 继续 Invoice 与付款。 - 签署成功但 Handoff 失败时保持
In Consultation并显示异常;重试只恢复 Handoff 与状态转换。
9.7 Consultation Type 流转矩阵
| Consultation Type | 医生 Queue 前 | Doctor Consultation 共享阶段 | 类型专属下一阶段 | 最终完成分流 |
|---|---|---|---|---|
| Consultation | Registration → Preparation → Ready for consultation | 病历、临床结论 / Main Diagnosis、按需 Prescription / Order / Document、Follow-up | 无固定子流程 | 无 Charge Event → No Cashier Required;有 Charge Event → Ready for Cashier |
| Prescription-only | Registration → 必要用药资料核对 → Ready for consultation | 简化临床原因、Medication reconciliation、Prescription 与安全检查 | Pharmacy fulfilment;处方安全未完成不得结束医生阶段 | 完成最终收费判断后进入 No Cashier Required 或 Ready for Cashier |
| Physical Examination | Registration → 体检套餐 / 项目和必要 Vitals 准备 → Ready for consultation | 医生确认体检范围、病史与风险,使用 Physical Examination delta | Structured Examination → Tests / Results(如需)→ Examination Report;异常发现可触发普通 Consultation / Follow-up | 必要检查与报告达到本类型完成条件后再进入最终收费判断 |
| Vaccination | Registration → 疫苗 / 剂次资料与必要 Vitals 准备 → Ready for consultation | 接种资格、禁忌 / 风险、Consent、Vaccination Order | Administration → Batch / Lot / Dose / Route / Site 记录 → Observation | 接种与观察达到完成条件后再进入最终收费判断 |
| Day Procedure | Registration → 术前准备资料 → Ready for consultation | 术前评估、适应证 / 风险、Consent、部位 / 侧别、Procedure Order | Procedure Preparation → In Procedure → Recovery / Observation → Procedure Completed | Procedure 实际项目、耗材与其他 Charge Event 同步后再进入最终收费判断 |
| Hospital Appointment | Registration → 转介目的与资料准备 → Ready for consultation | 临床评估、转介 / 入院原因、必要 Order / Document | Hospital / Department / Recipient 确认 → Referral / Admission Document → 外部预约 / 人工交接 | 完成医生阶段及必要交接后进入最终收费判断 |
| No Consultation | Registration → Preparation → Ready for service | 不进入 Doctor Consultation Queue | Nurse / Service Queue → 对应服务执行与记录;临床异常时另行升级为新的获授权 Consultation | 服务完成后由该 Service 的收费规则决定 No Cashier Required 或 Cashier |
该矩阵确认的是业务骨架。Physical Examination 的检查项目 / 结果等待 / 报告签署,Vaccination 的医生与护士职责边界,Day Procedure 的术前评估完成点及 Hospital Appointment 的外部预约责任仍需由相应业务负责人补齐 delta;未确认的差异不得由前端自行硬编码。
9.8 Internal V-Lab / Imaging 与外部 Vendor
- Internal V-Lab / Imaging
使用共同主状态:
Ordered → Accepted → In Progress → Result Entered → Verified → Released → Doctor Acknowledged。 - Lab 可在 Accepted / In Progress 之间插入
Specimen Collected;Imaging 可插入Scheduled和Scan Completed。Rejected、Cancelled、Unable to Perform均必须填写原因。 - 医生负责开单和结果确认;Nurse / Reception 仅在授权范围处理采样或排程;执行人员负责承接与录入;获授权 Reviewer 才能 Verify / Release。
- External Vendor 不使用内部执行工作台,只记录
Sent → Awaiting Result → Result Received → Doctor Acknowledged并保存原始报告。 - Order、执行状态、结果和确认必须绑定原 Encounter / Order,不得创建脱离医嘱的结果记录。
9.9 Clinical AI Copilot、AI Assistant 与 Knowledge Library
- Clinical AI Copilot 仅在获授权 Patient / Encounter 上下文中使用必要临床资料,输出 Patient Summary、Note Draft、ICD 或 Medication Suggestion;所有输出均为 Draft,必须由医生显式采纳并通过原模块保存。
- Copilot 不得自主诊断、开药、开单、签署或绕过模块权限。AI 失败不得阻断手工临床流程,也不得把样例患者数据呈现为当前患者事实。
- 通用 AI Assistant 默认不读取患者上下文且不能写临床记录;入口暂时保留,后续页面审查再决定合并或删减。
- Knowledge Library 可见,但普通用户不得上传或发布。AI Governance Admin 仅可上传获批准的非患者临床指引、药品资料和内部 SOP;每份资料必须记录来源、版本、Owner、生效 / 失效日期和审批人,经 Clinical Governance 发布后才可进入正式检索。
- 患者上下文使用、知识引用及医生采纳 / 拒绝结果必须可审计。
10. 状态模型
| 对象 | 关键状态 | 规则 |
|---|---|---|
| Visit/问诊 | Ready for consultation、In Consultation、Ready for Cashier、Checkout Completed、Closed;另有 Amendment Open | 以服务端状态为准;无 Charge Event 时记录
cashier_required = false 并跳过 Cashier Queue;签署成功但
Handoff 失败时仍保持 In Consultation 并附异常子状态;Closed
永久只读 |
| 临床草稿 | Unsaved、Local Protected、Server Draft Saved、Conflict、Save Failed、Signed | 本机保护不等于服务端草稿;Signed 后只读 |
| 处方 | Draft、Safety Review Required、Signed、Doctor Review Required、Amended、Doctor Cancelled | 安全检查、医生签署、Pharmacy fulfilment、付款和 Amendment 分离;Pharmacy 无取消权限 |
| Pharmacy Handoff | Pending/Sent/Received/Failed × Payment Pending/Paid;队列另有 Review/Label/Pack/Dispense/Exception/Superseded | Review & Complete 后立即建立;付款前只审核;异常整单退回先阻断 Cashier,护士在 Cashier 确认后才回 In Consultation |
| Order | Draft、Ordered、Sent、Accepted、Result Pending、Resulted、Acknowledged、Cancelled | 内部/外部去向与结果闭环分离 |
| Clinical Document | Draft、Reviewed、Signed、Issued、Voided、Reissued | 每次保存、签署、作废和重发保留版本;Attachment 使用独立状态 |
| 收费交接 | Not Prepared、Draft Saved、No Cashier Required、Prepared、Handoff Failed、Sent to Cashier、Received、Adjusted/Cancelled | 完全无 Charge Event 时为 No Cashier Required 且不创建 Cashier Queue 项;Handoff Snapshot 与 Invoice / Payment 分离;成功发送使 Visit 进入 Ready for Cashier,不代表已收款 |
所有状态徽标必须显示状态文字;前端不得通过本地数组变更模拟生产状态成功。
11. 数据与服务端要求
| 领域 | 最低数据/控制 |
|---|---|
| 上下文 | Patient ID、Visit ID、Encounter、Clinic/Unit、负责医生、当前用户、角色、权限、状态、版本/锁 |
| 安全资料 | Allergy、ADR、Alert 的类型、内容、核实状态、记录人、时间、来源 |
| 草稿 | 服务端 Draft ID、版本、作者、更新时间、冲突标记、恢复来源;浏览器草稿仅作降级保护 |
| 病历 | 模板版本、结构化字段、诊断、作者、时间和签署版本 |
| AI/转录 | 来源、语言、说话者、医生修订标记、音频处理 / 保留政策、Provider/Model/Prompt 版本、调用结果、内容哈希 |
| 下游对象 | 统一 Encounter 关联、幂等键、发送/接收状态、失败原因、取消/更正关系 |
| Clinical Document | Document ID、Patient / Visit / Clinic、Template ID / version、Family / Type、Recipient、Letterhead、Page Size、sanitised content、author、version / prior version、sign / issue / void / reissue evidence |
| Billing Handoff | Charge source type / ID / key、service / product code、source status、quantity、authoritative unit price、gross、discount type / value / reason / actor / time、net、snapshot version、handoff status / time |
| Clinical Reference | Patient ID、current Visit ID、history-before Visit、role / permission scope、active section / record scope、Attachment stable ID / storage status、Full eMR / Utility App Return Context;不新增历史写入模型 |
| 问诊台布局配置 | owner User ID、Medical Group ID、Operating Unit ID、schema version、revision、严格白名单 preference JSON、created / updated time;服务端会话决定身份与诊所范围 |
| 审计 | actor、effective role、patient、visit、clinic、action、before/after 或版本、reason、time |
所有变更接口应具备幂等或版本检查,重试不得重复创建问诊、处方、Order、文件、Charge Event 或下游任务。
12. 原型 / 当前基础与正式产品边界
| 原型或当前基础 | 正式产品要求 |
|---|---|
demoData.js 提供患者、药品、检查和病历 |
只使用授权 API 返回的真实数据;空值显示明确的未记录状态 |
Map 保存会话内 Encounter 草稿 |
P0 正式路径使用服务端持久化与基础版本冲突控制,浏览器存储只作不含敏感明文的短期降级保护 |
| localStorage 保存布局和语言 | 布局以服务端为跨设备权威来源;localStorage 仅缓存按真实用户、医疗集团、诊所和 schema 隔离的非临床偏好 |
| 浏览器 Speech Recognition | 接回已批准的 Azure Conversation Transcriber 或正式 ASR 服务,并落实 Token、说话者、处理 / 保留政策与审计;不新增产品级 Consent 阻断 |
| 固定 Dr. Adrian Lau、Central Clinic 和日期 | 从登录用户、Provider 绑定、当前 Clinic 和服务端时间获取 |
| 前端即时将状态改为 Signed/Sent/Complete | 等待服务端成功响应后更新,并处理部分成功、超时和幂等重试 |
| 示例 AI、Copilot、OCR 结果 | 使用获批准的真实服务与当前 Encounter 最小上下文;失败回退到手工路径 |
13. 错误、异常与安全处理
- 无 Clinic、Provider 未绑定或权限不足:不加载临床队列,显示联系管理员的明确原因。
- Visit 状态过期或已被他人处理:刷新该行,禁止继续写入,并保留本地草稿供人工处理。
- Encounter 锁冲突:显示当前占用者/时间(在权限允许时)和只读、重试或请求接管选项。
- 服务端草稿版本冲突:不自动覆盖;支持比较、复制本地内容和重新加载最新版本。
- 网络中断:标记为仅本机保护,禁止将状态显示为已保存或已发送;恢复后通过幂等键重试。
- AI/ASR/OCR 失败:保持人工录入可用,不改变正式记录,不自动重试包含患者内容的请求。
- eMMS 不可用:明确显示“建议不可用”,不得当作无提示或通过,也不阻断保存或签署。
- 下游部分失败:Clinical Complete 是否允许由业务规则决定;失败对象持续可见并可单独重试。
- Pharmacy Handoff 未确认或暂时失败:已签署处方和交接记录可靠落库后允许 Clinical Complete;持续显示 Pending/Failed 并幂等重试。Handoff 建立后独立显示 Payment pending;Pharmacy 付款前只审核,Cashier 确认结算后才备药。异常整单退回先建立收银阻断,护士在 Cashier 明确确认后才把 Encounter 退回 In Consultation;Amendment 仍在原 Consultation Workspace。更正使用引用原 Handoff ID 的 Cancel/Replace,医生清空处方使用 Cancel Handoff。
- 问诊期间 Allergy/ADR 更新:立即刷新安全栏并重新运行受影响处方的安全检查。
- 记录在刷新期间完成:页面切换为只读,先警告并保留未提交内容,禁止继续写入旧版本。
- 布局偏好同步失败或连续版本冲突:继续使用本地布局并显示低干扰未同步状态,不阻断问诊;恢复后按 revision 重试完整布局操作。
- 布局偏好载荷非法或服务端记录损坏:非法写入返回 422;损坏读取回退 Balanced Consultation,应用日志不得包含完整偏好 JSON 或任何临床内容。
14. 视觉、响应式与可访问性
本节补充医生问诊场景要求;共享圆角、字号、控件尺寸、颜色、阴影、图标、Tooltip、焦点态和桌面验收规则统一遵循
desktop_ui_design_system.md。
14.1 视觉规范
- 延续 Demo 的深蓝全局栏、浅色临床工作面、蓝色主操作、红色 Allergy/危险、琥珀色 ADR/警告和绿色成功语义。
- 颜色仅表达语义层级,不取代文字、图标或状态标签。
- 使用紧凑、清晰的医疗工作台密度;正文和关键临床数值不能照搬 Demo 中过小的演示字号。
- 所有样式使用 Tailwind,所有图标使用 Iconify,并优先复用现有 Button、Modal、Drawer、Tabs、Badge、Toast、Empty State 等公共组件。
14.2 响应式
- 设计与验收基准为 1366×768 及以上桌面视口;1600×900/1000 下应同时显示三栏。
- Clinical Reference 在 Balanced 下按工作区约 38% 计算并限制为 520–720px;个人固定宽度限制为 480–720px。
- 当剩余主要临床区小于 480px 时 Clinical Reference 变为可关闭 Overlay;不得继续压缩主要病历输入区。
- 1260px 以下可压缩队列和 Clinical Reference、换行队列筛选并隐藏非关键辅助文字;安全栏、Review 操作区和吸附式模块栏仍保持可用。
- 只有内容区宽度至少 1260px 时提供 Edit Layout;900–1259px 仅消费并自适应布局,布局按钮说明不可编辑原因。
- 小于 900px 不承诺完整编辑体验,应提供安全的只读/受限提示,不允许关键动作因水平滚动而不可见。
- 支持
prefers-reduced-motion,关闭非必要动画。
14.3 可访问性
- 所有 Icon-only 按钮提供可读名称、Tooltip 和键盘焦点。
- Modal/Drawer 具有正确的 dialog 语义、焦点锁定、Esc 关闭规则和关闭后的焦点恢复;含未保存内容时 Esc 不可直接丢弃。
- 页签、队列、检查清单和状态更新可被屏幕阅读器识别;Toast 使用合适的 live region。
- 焦点顺序符合“安全栏 → 吸附式模块导航 → 栏底 Review 操作区 → 当前内容”;危险确认不能只通过颜色表达。
- 拖拽手柄、插入位置和 splitter 均有可读名称、焦点态和键盘等价操作;换位、宽度边界和保存状态通过可见文字及适当 live region 表达。
15. 审计与埋点
15.1 必须审计的临床事件
- 队列 / Clinical Reference 敏感资料读取、Full eMR / Attachment Viewer 跳转、双标识核验、开始 / 暂停 / 接管问诊。
- 草稿保存、版本冲突、签署、完成、重开和修订。
- AI/ASR/OCR 调用、医生采纳/拒绝及来源范围。
- 诊断确认、eMMS 建议、患者用药警示、处方签署、Order、文件和危急值确认。
- Send to Pharmacy/V-Lab/Cashier、接收、失败、取消与更正。
15.2 产品分析事件
- 队列筛选与打开成功/失败、核验取消、患者切换取消。
- 布局预设使用、面板打开、布局换位 / 调宽和快捷键使用;只记录事件类别、预设 / 面板标识和非临床尺寸元数据。
- 签署阻断项类型与处理耗时、草稿恢复结果、下游失败类型。
产品分析不得采集病历正文、逐字稿、完整身份标识或 AI Prompt 中的患者内容。
16. 验收标准
16.1 队列与上下文
DWS-AC-001:首次进入页面不自动选择患者,只展示当前角色和 Clinic 获授权的队列。DWS-AC-002:Active 只含当前日原生 Ready for consultation / In Consultation,按实际到达时间升序;跨日未结束原生 Visit 只进入 Carry-over 分组且不计今日等待,myplatform_*、Completed / Closed、Arrived、Preparation、Non-consultation 和 Cancelled 不进入可写 Active 主体。DWS-AC-003:Active / History、搜索、Doctor Filter、History 日期、50 条增量分页 / Load more、Refresh、Add Appointment 及最后刷新时间符合需求;History 内原生 Completed / Closed 与迁移记录都只读。Initial、Loading、Empty、Filter no-result、Permission denied、API error 分别可复现。DWS-AC-004Q:每行只显示合法的 Start / Resume / Open read-only 主操作;Print Tag 与可回退时的 Previous stage 为辅助动作,Completed 只读,Closed 不可 Re-open。DWS-AC-005Q:未核验时的队列请求与页面不批量加载完整病历、处方、逐字稿、附件或 Billing;Patient & eMR 跳转携带 Return Context 且不改变 Visit 状态。DWS-AC-004:未完成双标识核验不能加载完整临床详情或产生写入。DWS-AC-005:所有面板写入均使用同一 Patient/Visit/Clinic;模拟不匹配时服务端拒绝且 UI 不切换上下文。DWS-AC-006:带未保存内容切换 Encounter 时先保护当前标签页草稿并立即切换;后台保存失败不得使界面停留或返回原患者,迟到响应也不得覆盖新上下文。
16.2 临床工作区
DWS-AC-010:1366×768 下约 64px 的安全栏、Review 操作区、吸附式模块栏和核心临床区可见且无不可达控件,页面不存在底部固定操作栏。DWS-AC-011:五个临床模块只读取当前 Encounter 的真实项目;折叠与磨砂玻璃展开状态均可通过鼠标和键盘操作,空数据不出现示例内容或undefined。DWS-AC-011A:安全栏右侧保留患者安全信息与返回 / 布局 / Clinical Reference;Review & Complete 位于 Billing & Finish 内容末尾并与收费卡片等宽,Completed Consultation 的 Controlled amendment 以独立左侧页签展示。DWS-AC-011B:页面不存在全局 Save Draft、Pause Consultation、底栏 Transcript、旧 Transcript Drawer、全局Ctrl/⌘ + S或公共 Save 卡片;Note、Prescription、Service 与 Billing 离开时静默保存,Consultation 内嵌 Clinical Documents 也不存在 Save,并自动保存当前工作台的全部剩余页签。独立 Clinical Document App 保留显式 Save version。DWS-AC-011C:模块切换即时完成且先保留 sessionStorage 草稿;只有暂态基础设施错误自动重试三次,业务阻断不重试,最终暂态失败与后续恢复成功各显示一次 Toast。Review 点击时保存 Billing,任一模块未成功同步服务端前不能完成签署;后台结果不得改变使用者已经选择的模块、Patient / Encounter、Queue 或其他页面。DWS-AC-011D:网络、权限与 Visit 变化等工作区级异常一次只弹出一个 Element Plus 确认式 Alert 对话框;确认关闭后不自动改变页面、Visit 或草稿状态,后续无效写入仍由服务端拒绝。DWS-AC-011E:问诊队列、主临床区、Clinical Reference 与模块内部列表使用同一圆角玻璃长条滚动条;静止态清晰可辨,Hover 与 Active 状态具有更强高光、边缘和阴影,其他桌面应用滚动条不受影响。DWS-AC-012:Allergy、ADR、Encounter、保存状态和签署动作在所有布局预设下均可访问。DWS-AC-013:三块一级面板可通过 Pointer Events 完成全部六种排列;折叠 Queue 可换位、隐藏面板保序、Clinical Workspace 永远可见,拖动期间只显示预览且 Drop 后一次性提交,Esc 可取消。DWS-AC-013A:Edit Layout 只在内容区至少 1260px 时可用;布局编辑期间临床表单不响应输入,进入、换位和退出不触发模块离开、临床自动保存、Encounter 切换或签署。DWS-AC-013B:任意面板顺序下 splitter 均实时预览并遵守 Queue 250–420px、Clinical Reference 480–720px、Clinical Workspace 至少 480px;键盘 8px / Shift 32px、双击复位和边界反馈均可用。DWS-AC-013C:四个预设值与命名符合 FR-120;套用后修改显示 Custom,单步 Undo 覆盖最近一次完整布局操作,退出编辑后清空撤销记录。DWS-AC-013D:偏好按真实用户、医疗集团和 Clinic 隔离并跨设备恢复;服务端 revision 冲突只自动重试一次,失败时本地未同步状态不会阻断临床工作。DWS-AC-013E:新 schema 不读取、不迁移、不上传或删除 v1–v6 配置;首次加载为 Balanced。缺少用户、集团或诊所上下文时不产生持久化记录或共享缓存。DWS-AC-013F:未知字段、重复 / 缺失面板、错误类型与隐藏 Clinical Workspace 的请求返回 422;合法越界宽度被安全夹取;服务端损坏记录返回安全默认且日志不包含完整布局或临床内容。DWS-AC-013G:Clinical Reference 退出行内布局、Queue 折叠 / 隐藏和视口恢复符合 FR-122A,临时响应式状态不覆盖用户偏好。DWS-AC-013H:医生、护士等获授权问诊台用户只能读写本人当前 Clinic 布局;跨用户、跨集团、跨 Clinic 与 assumed-role 代写请求均被服务端拒绝或限定为真实用户本人。DWS-AC-014:Patient 360 缺失值显示“未记录/未核实”,不得生成默认生命体征、Consent、Payer 或 Follow-up。DWS-AC-015:Clinical Reference 五个一级入口和 Records 四个子 Tab 始终绑定当前 Patient;快速切换两位患者并制造迟到响应时,旧患者数据不得进入新上下文。DWS-AC-016:Records 与 Patient & eMR 对同一数据返回一致的 Visit / Chit、SOAP、Medication、Vitals 和 Vaccine 语义;Consultations 排除当前 Visit 并保持只读。DWS-AC-017:This Chit / Past services 范围正确;Metadata-only 或无授权 URL 的附件不可点击,合法附件使用同一多实例 Attachment Viewer 并保留来源。DWS-AC-018:Full eMR 打开正确 Patient 与目标 Tab,返回后恢复原 Consultation / Visit;Patient 360 不在 Clinical Reference 直接写主档,Records → Vitals 导航保持相同患者与本次 Visit 上下文。DWS-AC-019:Clinical Reference 宽度遵守 38% / 520–720px 与个人 480–720px;临床主区不足 480px 时进入可关闭 Overlay,焦点锁定和恢复正确。DWS-AC-019A:Anatomy 未保存标注与截图草稿在 Patient/Visit 切换或窗口关闭时清除;显式保存的截图按原 Patient + Visit 保留为附件,不能串入新患者;Copilot Disabled 不发送患者数据,Chit activity 无 API 事件时不生成示例。
16.3 AI、处方与下游
DWS-AC-020:Consultation Note 的 Start 与 Generate 在当前 Visit 未确认 AI Scribe Consent 时必须先弹出医生确认框;Consent 或 ASR/算法失败时手工记录仍可用,且不得改变已保存 Note。DWS-AC-021:AI 失败或拒绝不改变已保存/已签署内容;采纳后仍需医生签署。DWS-AC-022:用青霉素 Allergy 场景验证高风险患者用药警示保持高显著并随签署版本记录,但不阻断医生签署。DWS-AC-023:处方签署、Pharmacy 接收、Order 发送、V-Lab 接收、Clinical Complete 和 Cashier 接收可分别失败与展示。DWS-AC-023A:药品行与整张处方 Remark 保存、刷新、签署、只读及 Amendment 后内容一致;非空 Remark 进入签署快照和 Pharmacy Handoff,空处方 Remark 不创建 Handoff。DWS-AC-023B:eMMS 标题徽标与下方建议结果来自不同状态;连接不可用但尚未运行检查时分别显示Connection unavailable与Not checked,安全检查按钮禁用但处方保存和签署仍可执行。DWS-AC-024:OCR 原件保留,未复核提取结果不能进入正式病历。DWS-AC-025:Structured Diagnosis 在新 Consultation Note 模块的独立卡片内完成 AI 分析、人工搜索、多选、角色调整和移除,不打开全屏 ICD 选择器;旧版ConsultationFormPanel的既有 ICD 弹窗行为不受影响。DWS-AC-026:ICD Mapping 固定以英文模式请求且不显示语言框或英文限制提示;人工搜索可按代码和英文病名找到结果,支持连续选择且不会产生重复代码。DWS-AC-027:AI 候选只呈现代码、证据匹配等级和英文病名;选择新 Main 后旧 Main 自动变为 Secondary,右栏始终把唯一 Main 放在首位,所有变化在Save & Continue后与 Note 和 Transcript 一起恢复。DWS-AC-028:空 Note、AI 加载、AI 空结果、AI 失败、候选过期、无选择、无 Main、只读问诊和窄屏堆叠均提供明确且不阻断人工搜索的状态;Clinical Sign-off 仍要求服务器最近保存的诊断中恰好一个 Main。
16.4 Clinical Documents
DWS-AC-025:Consultation 内嵌与独立 App 对同一 Encounter 返回同一模板目录和已保存文档;独立 App 未选 Encounter 时不能生成或保存。DWS-AC-026:Consultation 内嵌模块缺少 Recipient、正文、合并值或 AI 区域内容时只显示非阻断提醒,自动保存、AI、Print 与 Review & Complete 仍可继续;缺少 Patient / Encounter / Doctor 安全上下文、权限、活动编辑权、安全 HTML 或可靠持久化时必须阻断。AI 失败时手工编辑仍可用,错误不清空正文。独立 App 保持现有内容校验。DWS-AC-027:Personal Template 不保存患者数据;另一位医生不能编辑或删除非本人模板。以姓名相同模拟两个账号时仍按 User / Provider ID 隔离。DWS-AC-028:内嵌模块离开时自动保存全部剩余页签,Print 前只保存当前页签;有变化时生成可追溯后继版本,相同内容和重复请求不产生重复版本。Completed Consultation 只读,Print / PDF 不自动将 Draft 标为 Signed / Issued。DWS-AC-029:Attachment / OCR 不出现在 Clinical Document Type 或生命周期中;外部文件必须从统一 Attachment Management 打开。
16.5 Billing & Finish
DWS-AC-050:Appointment 不展示问诊收费字段;服务端按稳定 Doctor User、当前诊所与 Visit Type 自动保存最新有效 HKD Service Offering,多个匹配按valid_from、updated_at、ID 依次取最新,零匹配不阻断预约或 Check-in。Consultation、Prescription、Order 和 Document Charge 均保留 source type / ID / key;Source Snapshot 行不能在医生 Billing 中改价、改数量或删除。重新进入 Billing & Finish 时才重新取价;取价中的缺价行在 List Price 列显示Checking price…,仍缺价时以红色透明材质Price unavailable取代金额占位,不显示缺价数量、状态条、错误弹窗、红色保存错误框或 Toast。表头、收费行及页尾统计必须使用相同六列网格,List Price、Discount 与 Net 垂直对齐。DWS-AC-051:Percentage 0–100%、Fixed 不超过 gross;无原因折扣、负值、越界值和非医生请求被服务端拒绝,原价始终可见。DWS-AC-052:折扣保存 actor User / Provider、time、type、value、amount、reason 与 net;修改 / 清除折扣使旧 Billing confirmation 失效。DWS-AC-053:Save charge draft不签署、不创建 Invoice、不改变 Visit;刷新后可恢复同一版本,冲突时不覆盖新版本。DWS-AC-054:Review & Complete按 Doctor Consultation 基线规则版本与当前 Consultation Type delta 检查必填项和 Next Workflow;未配置 delta 的类型完全继承基线。缺价时检查清单只新增Authoritative pricing available,由使用者主动点击Go to section才前往 Billing。存在临床、AI、Document、Consent、Procedure / Examination、Billing 或 Follow-up 阻断时不调用相应阶段完成接口。Day Procedure 与 Physical Examination 不得在其必要子流程未完成时提前进入最终 Cashier;最终完全无 Charge Event 时显示 No Cashier Required 并不进入 Cashier Queue,有 Charge Event 时只进入 Ready for Cashier,不显示 Paid / Checkout Completed / Closed。DWS-AC-055:同一完成请求重试不会重复签署、重复 Charge Event、重复 Handoff 或重复 Follow-up Appointment;签署成功但必要 Handoff 失败时 Visit 保持 In Consultation、显示明确异常,且可从已知签署子事件幂等恢复 Handoff。DWS-AC-056:医生页面没有 Insurance、Direct Billing、Invoice Post、Payment method、Receipt、Refund 或 Cashier Session 控件;Cashier 收到的净额与签署快照一致。
16.6 保存、签署与修订
DWS-AC-030:Note、Prescription、Service 与 Billing 的模块切换自动保存/reload 保持内容和版本;断网等暂态错误保留无感 sessionStorage 恢复保护并自动重试三次,但不存在公共或全局 Save 入口。切换 Patient / Encounter、返回 Queue 或离开其他页面均立即进行,保存失败只显示 Toast;后台重试及迟到响应不得把使用者锁在或拉回原上下文。DWS-AC-031:两客户端编辑同一 Draft 时,旧版本保存被拒绝且不会覆盖新版本;前端静默重新加载最新版本,只合并本机医生调整并等待使用者复核,不向医生显示内部 Draft version 或通用保存失败 Toast。相同操作标识的请求重放不重复递增 Draft version。DWS-AC-032:缺少必填病历、主诊断或安全检查时,Review & Complete 展示可定位的阻断项且不能签署。DWS-AC-033:签署成功后记录版本、签署人和时间,页面只读,重复请求不重复生成下游对象。DWS-AC-034:修订需要授权和非空原因,重新签署后旧版本仍可查看,受影响下游对象收到显式更正状态。DWS-AC-034A:首次签署后 24 小时内仅原签署医生可发起 Controlled Amendment;超过 24 小时但尚未 Closed 时需要 Medical Director 或获授权 Clinical Administrator 批准。Closed 不显示修订入口,服务端对 Closed Re-open 请求返回业务错误,且不得改变 Encounter、Consultation 或下游对象。
16.7 权限、可访问性与质量
DWS-AC-040:护士和行政角色不能通过直接调用接口执行医生诊断、处方签署、临床签署或医生 Billing 折扣。DWS-AC-041:键盘可完成队列选择、核验、吸附式模块导航、当前模块保存和打开签署检查;焦点不会落到遮罩后的页面。DWS-AC-042:界面保持英文且无繁体中文切换;切换粤语 / 普通话等 Speech Language 只改变转录输入,不改变 UI 文案。状态不依赖颜色。DWS-AC-043:前端生产构建、相关单元/组件测试、后端权限/状态/幂等测试和关键 E2E 场景通过。
17. 测试场景最小集合
- 医生正常开始 Ready for Consultation 问诊,按 Doctor Consultation 基线与 Consultation Type delta 完成必填项并完成签署与 Ready for Cashier 交接。
- 护士打开当前诊所队列与只读工作区,尝试医生动作被服务端拒绝。
- Nursing、Completed、Cancelled、跨 Clinic 和已被他人锁定的 Visit。
- 有/无未保存草稿的患者切换,保存失败与版本冲突。
- Allergy/ADR 缺失、未核实、明确无过敏和高风险药物命中。
- ASR 中断、算法超时、未知字段响应、部分字段响应,以及医生直接编辑生成结果。
- Internal Lab、External Imaging、Procedure Consent 与危急值结果。
- Clinical Document:无 Encounter、必填 Recipient、Personal Template 隔离、AI 失败、重复 Save、Print Preview、Draft/Sign/Issue/Void/Reissue;Attachment / OCR 独立处理。
- Billing:来源同步、手工 Other Service、Percentage / Fixed Discount 边界、无原因 / 非医生折扣、Draft 恢复、服务端价格不一致和无收费行。
- Review & Complete:至少验证一个无 delta 类型完整继承 Doctor Consultation 基线、两个类型仅应用各自差异项、Day Procedure 先进入 Procedure、Physical Examination 先进入检查 / 结果 / 报告、完全无 Charge Event 的 No Cashier Required 分支、存在 Charge Event 的 Ready for Cashier 分支、Follow-up 两种选择、签署成功但 Cashier Handoff 失败后保持 In Consultation、重复请求以及 Ready for Cashier 与 Checkout / Closed 的状态分离。
- Completed 只读、受控修订、下游更正和旧版本追溯。
- Clinical Reference:五个入口、Records 四类历史、This Chit / Past services、Metadata-only、多个 Attachment Viewer、Full eMR Return Context、Chit activity 空态及 Copilot Disabled。
- Anatomy:模型加载失败、交互与键盘选择、Session-only 标注、Patient 切换清理、许可信息及无后端写入。
- 四种预设、Custom、六种面板排列、折叠 / 隐藏保序、Pointer / 键盘换位、Splitter 鼠标 / 键盘边界、Undo、Compact、1260px 编辑门槛及 900px 只读边界。
- 布局偏好跨设备读取、用户 / 集团 / Clinic 隔离、revision 冲突、断网本地保护、非法载荷、损坏服务端记录、Restore Safe Default,以及 v1–v6 明确不迁移。
- 刷新、断网、重复点击 / 重试和浏览器离开保护。
18. 实施顺序与交付门槛
18.1 建议实施顺序
- 队列、双标识核验、患者与 Encounter 锁定和服务端权限/状态门槛。
- 固定安全栏、可任意排列的三面板壳层、可访问 splitter、跨设备布局偏好和 Clinical Reference 接入。
- 五个临床模块重组为左侧吸附式磨砂玻璃模块栏,将 Review & Complete 固定在 Billing & Finish 末尾,将 Controlled amendment 独立放在模块栏下方,并移除公共保存卡、Review 聚合状态、底部操作栏及旧全局动作。
- 服务端草稿、版本冲突、Review & Sign 与修订版本。
- 处方、Order、文件和收费/Follow-up 的真实下游状态接入。
- ASR、AI、Copilot、OCR 的治理与正式服务接入。
- 响应式、可访问性、埋点、性能和完整回归。
18.2 Definition of Done
- 本文 P0 需求及对应验收标准有测试证据,未完成项明确降级且不伪装成功。
- 无 Demo 患者、硬编码医生/Clinic、默认临床值或前端伪造成功状态进入生产路径。
- 关键动作完成前后均有 Patient/Visit/Clinic/Actor 与版本审计。
- 产品、临床、安全/隐私、前端、后端、QA 和相关下游负责人完成评审。
- 变更已同步相关功能规格、测试用例、数据库引导脚本(如涉及 Schema)和项目变更日志。
19. 待确认决策
| 议题 | 需要决策的负责人 |
|---|---|
| 医生本人队列、代班、跨医生覆盖和接管规则 | 临床营运、产品、安全 |
| 一个 Visit 是否只允许一个活动编辑者及锁超时 | 临床营运、工程 |
| 确认 Doctor Consultation 基线必填矩阵,以及仅对确有差异的 Consultation Type 定义病历、Document、Consent、Order、Next Workflow 等 delta;治理基线 / delta 版本及生效时间 | 临床治理、产品 |
| Physical Examination 的结构化检查项目、是否需要分阶段等待结果、报告签署与异常转普通 Consultation 的规则 | 临床治理、体检营运、产品 |
| Day Procedure 的医生术前评估完成点、Procedure 接收条件、恢复完成点及最终 Billing 触发人 | 临床治理、Procedure 营运、产品、Cashier |
| 服务端草稿保留期、跨设备恢复和冲突合并策略 | 产品、安全、工程 |
| Clinical Complete 允许哪些下游失败,以及谁负责补偿 | 产品、Pharmacy、V-Lab、Cashier |
| 文档修订/作废、处方更正和 Order 取消的下游通知 | 临床治理、法务、相关系统负责人 |
| ASR/LLM Provider、区域、保留、Consent 和审计 | AI、安全、隐私 |
| 移动/窄屏是否只读及允许显示的字段 | 产品、安全、临床 |
| Clinical Reference 中跨诊所历史、附件 URL 刷新 / 下载和 Chit activity 事件可见范围 | 安全、临床治理、工程 |
| Copilot Provider、获授权最小上下文、来源展示及写回禁令的正式验收 | AI、安全、临床治理 |
20. 2026-08-31 队列 / Preview 状态与权限回滚边界
20.1 本轮 Repository Implemented / Automated Verified
- Consultation Queue 保留当日 Active、Carry-over 和只读
History;迁移记录不进入活动等待时间,History UI 保留 50 条增量分页与
Load more history。 - Local Consultation Preview 只保留一个紧凑
Preview · browser only标识;Preview 的 Prescription 加载、保存、签署与自动 eMMS 路径只使用浏览器内合成聚合,不得拿虚拟 Visit ID 调用真实临床 API;工作区级阻断 / 安全错误只显示一个 Alert,字段错误留在字段附近,空 Remarks 使用—。 - Appointment 请求取消 / Clinic context generation、Check-in 数据继承及患者表单体验修复保持不变。
- 2026-08-30 16:49 起引入的 Provider Delegation、Provider-view Assume Role、Provider-ID 队列限制、STG Functional Test / Test Run 写入白名单及一键 E2E 患者流程已通过 Git revert 撤销。
20.2 本轮明确未改变的 Consultation 业务
- 不改变 Appointment → Check-in → Preparation → Consultation → Review & Complete → Ready for Cashier 的主状态机,也不新增 Consultation 状态。
- 不改变 Consultation Note 的临床字段、诊断规则、ASR / AI 责任边界、Prescription 内容和 eMMS 业务、Order / Clinical Document 流程、Review & Complete 完整性清单、价格计算、折扣规则或 Pharmacy / V-Lab / Cashier 业务语义。
20.3 Missing / Planned:不得按本轮完成宣称
- 回滚后的 STG 应用部署、真实历史数据端到端复测、Review & Complete 后下游 Handoff 核对和临床 UAT。
- 如后续重新设计 Provider / Delegation,必须另行确认简化目标、正常演示流程与验收口径,不能直接恢复本次撤销的限制链。
21. 追溯资料
- 现行 Consultation Workspace 功能规格
- P0 WS2 — Consultation、Patient Record 与 AI Clinical Tools
- 医生问诊域词汇表
- 前端现有入口:
varclip_vue/src/components/desktop/apps/ClinicalWorkspaceApp.vue - Consultation
Queue:
varclip_vue/src/components/desktop/apps/consultation-workspace/ConsultationQueueView.vue - Clinical
Reference:
varclip_vue/src/components/desktop/apps/consultation-workspace/ConsultationInsightRail.vue - Clinical
Documents:
varclip_vue/src/components/desktop/apps/ClinicalDocumentWorkspace.vue - Billing &
Finish:
varclip_vue/src/components/desktop/apps/ConsultationFormPanel.vue、varclip_vue/src/utils/consultationBillingRules.mjs - 前端旧问诊
API:
varclip_vue/src/api/consultation.js - 前端 Consultation Note
API:
varclip_vue/src/api/consultationNote.js
22. 2026-09-02 Prescription / Service 卡片标题设计基线
22.1 已确认设计
DWS-UI-001:Prescriptions 与 Service 不显示独立模块标题卡,一级模块页签已经提供当前模块身份,不得再占用垂直空间重复显示 Prescriptions 或 Service 名称、模块说明、页签状态或保存入口。DWS-UI-002:普通业务区块标题统一使用 32px 中性图标底块、16px 标题、12px 英文说明及右侧计数或状态。标题保持中性色,蓝色只表达选择或主要操作,绿色、琥珀色和红色只表达成功、警告或风险。DWS-UI-003:Prescription 药品卡及 Service 项目卡使用双层标题。第一层突出药品或服务名称,第二层展示代码、通用名、规格或类型;SIG、价格、供应商、Remark 和推荐理由继续位于卡片正文,不得把标题扩展为三层摘要。DWS-UI-004:空数据、只读和异常状态不得改变标题骨架或造成布局跳动;相关状态以右侧文字、徽标或正文反馈表达,警告色不得覆盖普通标题栏。DWS-UI-005:eMMS Medication Safety 保留独立的青蓝渐变和高强调安全区域。普通 Prescription 或 Service 标题不得复用该视觉,避免把业务分组误表达为临床安全状态。DWS-UI-006:Prescription 与 Service 复用同一个工作台区块标题组件,并通过尾部插槽承载计数、状态或操作。复用只统一视觉骨架,不改变 Service 的展开、推荐添加和目录添加交互,也不改变 Prescription 的编辑、排序、删除、签署或 Pharmacy Handoff 流程。DWS-UI-007:Service 的Copy Previous位于Selected Services标题右侧;推荐刷新位于Recommended Services标题右侧,只显示刷新图标并提供可访问名称和 Tooltip。Prescriptions 与 Service 的普通命令按钮复用 Consultation Note 的 T / Clear 磨砂按钮样式;可点击数据卡、分段选择状态和 eMMS 风险展开卡继续保留自身语义。
22.2 验收口径
- Prescriptions 与 Service 在相同工作区宽度下直接从首个业务区块开始,不出现独立模块标题卡,并保持一致的普通区块标题层级。
- 普通标题不使用渐变、强阴影或按区块任意分配的主题色;例外仅限已有安全、警告和风险语义。
- 药品与服务名称保持主要视觉层级,代码与规格使用可读的支持文字字号;不能以 9px 信息承载临床或选择判断所需内容。
- 计数、只读和异常信息不依赖颜色单独表达,并保持键盘焦点、既有点击边界与无障碍标题关联。
- Copy Previous 和推荐刷新分别出现在其影响的业务区块内;纯图标刷新及其他图标按钮具有可访问名称、Tooltip 和键盘焦点样式。
- 本轮只优化标题信息架构和视觉层级,不改变任何领域对象、保存策略、临床门禁、收费交接或下游状态。
2026-09-05 Anatomy 截图与就诊附件
- 已确认:截图保存到当前患者/就诊记录;Anatomy 提供独立 Library 查看入口(弹窗标题 Anatomy Library),支持 Copy image 至剪贴板及 Download PNG。复制保留原附件,不执行删除。
- Screenshot 捕获当前 3D 角度、缩放、显示模式、可见结构与标注层;生成前即时渲染,模型加载/错误/WebGL 不可用时不得生成空白成功结果。图片保留数据集、来源、许可证、捕获时间及通用参考声明,不包含整个桌面或其他应用。
- 新截图先预览为 Not saved,用户明确 Save to this encounter 后调用现有受保护文件上传接口,使用 ANATOMY_SCREENSHOT、anatomy_explain 和 document_attachment 建立关联。没有真实 Patient/Visit ID 时可截图、复制及下载,但不能保存或查询患者附件。
- 后端校验 files.upload、clinical.read、当前医疗集团/诊所、Visit 与 Patient 的一致性;完成、关闭、取消等只读就诊拒绝新增,须通过既有重开/修订流程。PNG 为私有、无临时过期时间;按同患者/同就诊/同诊所去重,避免相同通用模型误挂别人的记录。
- Library 只查询当前 Patient + Visit,分页按最新时间排列;选中项通过受保护文件代理加载。切换上下文撤销旧图像请求、清理草稿与对象 URL;旧请求不能覆盖新上下文。保存开始时锁定目标上下文,成功只在原上下文更新界面。
- 浏览器拒绝/不支持 PNG 剪贴板时显示具体失败并保留 Download PNG;保存失败保留原稿与重试入口,不显示保存成功。已保存附件亦在 Patient & eMR 的原就诊 Attachments 中查看。
- 状态:本地代码、合成数据 UI 和服务隔离验证;真实 Flask/数据库/OSS 联调、目标环境部署及 UAT 未完成。用户已完成界面复核并授权 Git 发布;开发分支代码交付不代表应用部署、真实后端联调或 UAT,PRD 站点发布单独记录。
2026-09-05 文本框标注
Explain 工具栏新增 Text:点击画布位置显示文本框,支持中英文、多行、500 字符、当前标注颜色及自动换行;Enter 换行,Ctrl/⌘ + Enter 应用,Escape 取消,输入法组合期间不得提前应用。Add text 放入画布;Text 模式点击已有文本可编辑,Apply text 应用修改。Undo 恢复上一次添加/编辑前的标注;Clear drawings 清空。文字与其他标注按相对位置保存并随视口缩放,靠近边缘时调整到画布内。
Screenshot 将当前非空文本输入应用后与 3D 和其他标注共同栅格化进 PNG;保存、Library 查看、复制和下载沿用既有截图机制,不增加独立文本病历字段。患者/就诊切换与关闭窗口清空未保存文本;仅显式保存的图片持久化。当前为本地预览验证,未代表真实后端联调或 UAT。
2026-09-08 Default consultation price
普通 Consultation 未绑定 Consultation Service Offering 时,服务端采用
HKD 1,000.00,显示 Default consultation price 并保留
DEFAULT-CONSULT 及价格版本。此规则补充 DWS-AC-050
的零匹配分支;有效绑定价(包括零价)优先。显式绑定但失效/跨诊所/非 HKD
的价格、药品与检查缺价仍需修正。旧活动缺价草稿重新读取后递增版本并恢复默认价,签署历史保持不变。默认价经过同一医生折扣、权威价格检查、原子签署与
Cashier 交接流程;不改变其他临床门禁。