医生问诊工作台页面重构 PRD

日常业务与测试阅读请使用Consultation 当前代码业务 PRD。本页保留工程细节、历史变更与取数参考;已知冲突见实现记录

2026-09-08 医生问诊可见范围

医生只能查看、打开及操作当前诊所中归属于自己的 Consultation,或已有有效、限时、显式代诊授权的 Visit。其他医生的活动及历史 Consultation 均不可见、不可打开、不可修改;只读模式不能作为例外。

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. 背景与问题

现有问诊能力已经覆盖队列、患者资料、纵向病历、问诊记录、诊断、处方、检查、文件和完成问诊等主要模块,但操作体验仍需要围绕一次就诊重新组织:

本次重构不是单纯换皮,而是将现有功能收敛为一个以患者与就诊锁定上下文为核心、可持续完成整次问诊的桌面工作区。

3. 产品目标

3.1 目标

  1. 医生从授权问诊队列选择一次 Encounter,经双标识核验后进入唯一患者与就诊上下文。
  2. 在一个工作区内完成病历记录、诊断、处方、检查、临床文件、收费来源与诊后交接,减少无必要的页面跳转。
  3. 让患者身份、Encounter、诊所、医生、Allergy、ADR、保存状态和签署状态在关键操作期间持续可见。
  4. 对患者切换、用药高风险、未满足签署条件、已完成记录修改和下游交接设置可解释的安全阻断。
  5. 将 AI 限定为可追溯、需医生复核的辅助能力,AI 不得直接形成签署记录或下游临床动作。
  6. 支持安全的布局预设、一级面板任意换位和跨设备个人偏好,同时保证核心临床信息不可隐藏。
  7. 在不离开当前问诊的情况下提供统一 Clinical Reference,复用 Patient & eMR 的历史语义、附件查看和患者上下文,不建立第二套临床事实。

3.2 成功指标

4. 用户与权限边界

角色 队列 工作区 临床写入与签署
获授权医生 查看本人、代班或覆盖规则允许的当前诊所队列 经双标识核验后打开活动或已完成问诊 可在权限范围内记录、下医嘱、签署和受控修订
护士 查看当前诊所允许的活动/已完成队列 可查看患者资料、护理交接和获授权内容 仅可写入护理授权内容;不得完成医生诊断、处方签署或最终临床签署
诊所行政/营运人员 查看获授权的队列运营信息 仅在业务授权范围内查看或处理队列 可做预约、房间、医生、日期等行政动作;不得取得临床签署能力

前端隐藏或禁用只用于降低误操作;患者、诊所、Visit、角色和动作权限必须由服务端再次验证。Launcher 可见性或宽泛的 clinical.write 不能等同于医生临床权限。

5. 范围

5.1 P0 必须实现

5.2 P1/后续闭环

5.3 不在本次范围

6. 设计原则

  1. Encounter 优先:队列项代表一次就诊,不是一个可脱离 Visit 打开的患者。
  2. 安全信息常驻:患者双标识、Allergy、ADR、保存与签署状态不得被布局设置隐藏。
  3. 先验证再加载临床详情:完成双标识核验前,队列只展示最低必要身份和运营信息,不加载完整临床数据或逐字稿。
  4. 一次上下文只服务一个患者:切换 Encounter 前必须处理未保存内容,并重新核验新患者。
  5. 状态语义分离:医生完成签署是临床审计事件,患者主状态由 In Consultation 进入 Ready for Cashier;Pharmacy / V-Lab 子任务继续维护自己的执行状态,不新增 Clinical Complete 主状态。
  6. AI 是建议,不是记录:AI 输出必须有来源、时间、处理结果和医生复核动作。
  7. 复用现有能力:重构优先组合现有 Vue 公共组件、API 服务和后台能力;样式使用 Tailwind,图标使用 Iconify。

7. 整体信息架构

7.1 无患者状态

进入问诊台时默认不预选患者,展示全宽 Consultation Queue。页面只包含全局诊所/用户上下文、队列统计、筛选与列表;不得自动打开第一位患者。

7.2 已锁定患者状态

通过双标识核验后进入工作区,结构从上到下为:

  1. 全局栏:品牌、当前诊所/Unit、安全上下文、语言、通知、时间及登录医生。
  2. 紧凑患者安全栏:患者、Encounter、Clinic/Doctor、Allergy、ADR、房间、计时和 Visit 状态;不显示 Patient locked 徽标。
  3. 安全栏右侧操作区:保留 返回 / 布局 / Clinical Reference 工具组;Review & Complete 位于 Billing & Finish 内容末尾,Completed Consultation 的 Controlled amendment 独立位于左侧模块栏下方。
  4. 工作区主体:左侧队列 + 中央临床区 + 右侧 Clinical Reference;中央临床区左缘使用吸附式模块栏,不设置底部操作栏。

8. 详细功能需求

8.0 核心用户故事

8.1 全局栏

8.2 Consultation Queue

当前实现状态(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 双标识核验与患者切换

8.4 固定患者安全栏

8.5 主临床区与一级模块

一级模块固定为:Consultation Note、Prescriptions、Orders、Clinical Documents、Billing & Finish。模块状态与项目数量必须来自当前 Encounter 的真实数据。

8.5.1 Consultation Note

Consultation Note 的录音、转录、动态模板、算法生成与独立保存,以 Consultation Note 全链路重构 Spec 为专项实施基线;下列条目按本次 AI Scribe Consent 决定收敛,语音与 AI 草稿使用前需要一次 Visit 级医生确认,手工 Note 与文本 ICD Mapping 不受其阻断。

8.5.2 Speech Transcript 与 AI 病历草稿

8.5.3 Prescriptions

(历史原型截图未随仓库保存;用药安全行为见 Consultation PRD §4.2。)

8.5.4 Orders

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 保持当前页面布局与显式保存交互。

当前实现状态(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

当前实现状态(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 另建一套授权规则。

当前实现状态(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 保存状态与签署

8.8 布局与偏好

8.9 快捷键与反馈

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-upBook 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 开始问诊

  1. 用户进入全宽授权队列,默认无患者。
  2. 用户选择 Ready for consultation 的 Encounter。
  3. 首次开始或切换 Encounter 时,系统显示两个患者标识和 Visit 信息;用户完成主动核验。同一医生恢复同一 Encounter 时无需重复人工核验,但服务端仍重新校验上下文、版本和权限。
  4. 服务端再次校验 Clinic、角色、Provider/覆盖关系和 Visit 状态,并开始问诊或取得锁。
  5. 成功后加载当前 Encounter 的临床数据,显示固定安全栏和三栏工作区。
  6. 若状态仍是 Nursing、Visit 已移走/结束或被其他人锁定,保持队列页并显示可执行的处理建议。

9.2 患者切换

  1. 用户在左侧队列选择其他 Encounter。
  2. 系统检查未保存内容;有未保存内容时先要求保存、放弃或取消。
  3. 停止上一 Encounter 的录音、流式 AI 请求和临时任务。
  4. 对新患者重新执行双标识核验。
  5. 服务端校验成功后原子切换上下文;任何失败均保留原患者工作区。

9.3 完成与下游交接

  1. 医生打开 Review & Complete。
  2. 系统先加载 Doctor Consultation 基线规则版本,再应用当前 Consultation Type delta,计算并展示临床、Clinical Document、Consent、Next Workflow、Billing / No Cashier Required、AI Draft 与 Follow-up 检查项。
  3. 医生逐项处理阻断;重新检查时使用服务端最新版本与服务端重算金额。
  4. 系统完成当前临床阶段签署并按 Consultation Type 判断下一工作流。Day Procedure 进入 Procedure 执行流;Physical Examination 在需要时进入检查 / 结果 / 报告流;其他类型或已完成子流程的 Encounter 才进入最终 Billing 判断。
  5. 到达最终 Billing 判断且完全无 Charge Event 时记录 No Cashier Required,页面转只读并返回 Queue,不生成 HK$0 Handoff、不进入 Cashier Queue。
  6. 存在 Charge Event 时保存 Billing Handoff Snapshot;交接成功才使 Visit → Ready for Cashier。用户层面仍是一次动作,底层签署、收费判断、Handoff 和状态事件分别留痕且必须幂等、可恢复。
  7. 临床签署已成功但 Handoff 失败时,Visit 保持 In Consultation 并显示不可忽略的异常;签署内容只读,医生或获授权人员通过同一幂等键重试 Handoff,不重复签署。
  8. Pharmacy、V-Lab、Procedure、Physical Examination Result / Report、Document Issue、Cashier 和 Follow-up 分别显示真实接收 / 待处理状态,不由医生完成动作伪造成功。Ready for Cashier 不等于 Checkout、Payment 或 Closed。

9.4 已完成问诊修订

  1. Completed 记录从队列只读打开。
  2. Controlled Amendment 的时间窗从第一次 Review & Complete 临床签署时间起算;付款、Checkout 或其他下游事件不得重新起算。
  3. 首次签署后 24 小时内,仅原签署医生可直接发起 Amendment;超过 24 小时但尚未 Closed 时,必须由 Medical Director 或获授权 Clinical Administrator 批准后再由医生修改。Nurse、Reception 和 Cashier 不得修改临床内容。
  4. 获授权医生选择 Controlled Amendment 并填写原因。
  5. 服务端创建修订版本/锁,不覆盖原签署版本。
  6. 医生完成修改并重新签署。
  7. 系统根据受影响对象生成 Pharmacy、V-Lab / Imaging、Cashier 等下游更正或通知任务,并保留完整审计链。
  8. Closed 永久只读且服务端必须拒绝 Re-open。Closed 后的错误不得通过恢复原 Encounter 处理;应创建与原记录关联的 correction、reversal、result event 或新记录,并保留原事实。

9.5 创建 Clinical Document

  1. 医生在当前锁定 Encounter 打开 Clinical Documents;独立 App 则先选择获授权 Encounter。
  2. 选择 Document Family、Template 与按类型要求的 Recipient,系统填充受控 Merge Field。
  3. 医生手工起草,或使用 AI Draft / Improve 后逐项复核事实与披露范围。
  4. 医生在 Rich Text Editor 中编辑、选择 Letterhead / Page Size 并保存新版本;Save 失败时保留编辑内容。
  5. Print / PDF 只输出当前版本的 Preview。完成签署、签发、作废或重发时,必须走对应状态与审计,而不是从打印动作推断状态。

9.6 Billing Draft 与 Cashier Handoff

  1. Appointment 不展示问诊费选择;服务端按稳定 Doctor User、当前诊所与 Visit Type 自动绑定最新有效 HKD Service Offering,多个匹配按生效时间、更新时间和 ID 依次取最新,没有匹配时不阻断预约或 Check-in。系统再同步当前 Encounter 的 Consultation、Prescription、Order、Procedure、Document 和其他可收费来源;Billing 对未匹配价格明确显示缺价。
  2. 医生核对 Source Snapshot;需要额外服务时新增有 Code / Description 的手工行。折扣必须记录结构化来源:Coupon、Insurance / Benefit Contract、Doctor Adjustment、Package / Membership 或 Manual Exception。自动 Coupon / Contract 折扣保留来源 ID / 版本而不重复要求自由文本;Doctor Adjustment 与 Manual Exception 必须填写说明。
  3. Save charge draft 保存未签署草稿,不改变 Visit 状态。
  4. 使用者每次重新进入 Billing & Finish 时同步来源并重新取得权威价格;缺价行在请求期间显示 Checking price…,仍缺价时显示红色透明材质 Price unavailable,不显示状态条、错误弹窗、红色保存错误框或 Toast。Review & Complete 验证已保存草稿、价格 / 折扣、临床阻断与 Follow-up,但不以相同草稿重复触发缺价恢复。
  5. 完全无有效 Charge Event 时记录 No Cashier Required 并直接结束医生阶段,不生成 Handoff 或 Cashier Queue 项。
  6. 存在有效 Charge Event 时保存不可歧义的 Handoff Snapshot;成功后 Visit 进入 Ready for Cashier,Cashier 继续 Invoice 与付款。
  7. 签署成功但 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

  1. Internal V-Lab / Imaging 使用共同主状态:Ordered → Accepted → In Progress → Result Entered → Verified → Released → Doctor Acknowledged
  2. Lab 可在 Accepted / In Progress 之间插入 Specimen Collected;Imaging 可插入 ScheduledScan CompletedRejectedCancelledUnable to Perform 均必须填写原因。
  3. 医生负责开单和结果确认;Nurse / Reception 仅在授权范围处理采样或排程;执行人员负责承接与录入;获授权 Reviewer 才能 Verify / Release。
  4. External Vendor 不使用内部执行工作台,只记录 Sent → Awaiting Result → Result Received → Doctor Acknowledged 并保存原始报告。
  5. Order、执行状态、结果和确认必须绑定原 Encounter / Order,不得创建脱离医嘱的结果记录。

9.9 Clinical AI Copilot、AI Assistant 与 Knowledge Library

  1. Clinical AI Copilot 仅在获授权 Patient / Encounter 上下文中使用必要临床资料,输出 Patient Summary、Note Draft、ICD 或 Medication Suggestion;所有输出均为 Draft,必须由医生显式采纳并通过原模块保存。
  2. Copilot 不得自主诊断、开药、开单、签署或绕过模块权限。AI 失败不得阻断手工临床流程,也不得把样例患者数据呈现为当前患者事实。
  3. 通用 AI Assistant 默认不读取患者上下文且不能写临床记录;入口暂时保留,后续页面审查再决定合并或删减。
  4. Knowledge Library 可见,但普通用户不得上传或发布。AI Governance Admin 仅可上传获批准的非患者临床指引、药品资料和内部 SOP;每份资料必须记录来源、版本、Owner、生效 / 失效日期和审批人,经 Clinical Governance 发布后才可进入正式检索。
  5. 患者上下文使用、知识引用及医生采纳 / 拒绝结果必须可审计。

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. 错误、异常与安全处理

14. 视觉、响应式与可访问性

本节补充医生问诊场景要求;共享圆角、字号、控件尺寸、颜色、阴影、图标、Tooltip、焦点态和桌面验收规则统一遵循 desktop_ui_design_system.md

14.1 视觉规范

14.2 响应式

14.3 可访问性

15. 审计与埋点

15.1 必须审计的临床事件

15.2 产品分析事件

产品分析不得采集病历正文、逐字稿、完整身份标识或 AI Prompt 中的患者内容。

16. 验收标准

16.1 队列与上下文

16.2 临床工作区

16.3 AI、处方与下游

16.4 Clinical Documents

16.5 Billing & Finish

16.6 保存、签署与修订

16.7 权限、可访问性与质量

17. 测试场景最小集合

  1. 医生正常开始 Ready for Consultation 问诊,按 Doctor Consultation 基线与 Consultation Type delta 完成必填项并完成签署与 Ready for Cashier 交接。
  2. 护士打开当前诊所队列与只读工作区,尝试医生动作被服务端拒绝。
  3. Nursing、Completed、Cancelled、跨 Clinic 和已被他人锁定的 Visit。
  4. 有/无未保存草稿的患者切换,保存失败与版本冲突。
  5. Allergy/ADR 缺失、未核实、明确无过敏和高风险药物命中。
  6. ASR 中断、算法超时、未知字段响应、部分字段响应,以及医生直接编辑生成结果。
  7. Internal Lab、External Imaging、Procedure Consent 与危急值结果。
  8. Clinical Document:无 Encounter、必填 Recipient、Personal Template 隔离、AI 失败、重复 Save、Print Preview、Draft/Sign/Issue/Void/Reissue;Attachment / OCR 独立处理。
  9. Billing:来源同步、手工 Other Service、Percentage / Fixed Discount 边界、无原因 / 非医生折扣、Draft 恢复、服务端价格不一致和无收费行。
  10. 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 的状态分离。
  11. Completed 只读、受控修订、下游更正和旧版本追溯。
  12. Clinical Reference:五个入口、Records 四类历史、This Chit / Past services、Metadata-only、多个 Attachment Viewer、Full eMR Return Context、Chit activity 空态及 Copilot Disabled。
  13. Anatomy:模型加载失败、交互与键盘选择、Session-only 标注、Patient 切换清理、许可信息及无后端写入。
  14. 四种预设、Custom、六种面板排列、折叠 / 隐藏保序、Pointer / 键盘换位、Splitter 鼠标 / 键盘边界、Undo、Compact、1260px 编辑门槛及 900px 只读边界。
  15. 布局偏好跨设备读取、用户 / 集团 / Clinic 隔离、revision 冲突、断网本地保护、非法载荷、损坏服务端记录、Restore Safe Default,以及 v1–v6 明确不迁移。
  16. 刷新、断网、重复点击 / 重试和浏览器离开保护。

18. 实施顺序与交付门槛

18.1 建议实施顺序

  1. 队列、双标识核验、患者与 Encounter 锁定和服务端权限/状态门槛。
  2. 固定安全栏、可任意排列的三面板壳层、可访问 splitter、跨设备布局偏好和 Clinical Reference 接入。
  3. 五个临床模块重组为左侧吸附式磨砂玻璃模块栏,将 Review & Complete 固定在 Billing & Finish 末尾,将 Controlled amendment 独立放在模块栏下方,并移除公共保存卡、Review 聚合状态、底部操作栏及旧全局动作。
  4. 服务端草稿、版本冲突、Review & Sign 与修订版本。
  5. 处方、Order、文件和收费/Follow-up 的真实下游状态接入。
  6. ASR、AI、Copilot、OCR 的治理与正式服务接入。
  7. 响应式、可访问性、埋点、性能和完整回归。

18.2 Definition of Done

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

20.2 本轮明确未改变的 Consultation 业务

20.3 Missing / Planned:不得按本轮完成宣称

21. 追溯资料

22. 2026-09-02 Prescription / Service 卡片标题设计基线

22.1 已确认设计

22.2 验收口径

2026-09-05 Anatomy 截图与就诊附件

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 交接流程;不改变其他临床门禁。