Drug Dispensing 与诊所库存 PRD

更新:2026-10-20 · 药房代码核对基线:d69b45b(V-Lab 新规则尚待实施) · 责任:Line C,衔接 Line B/Line A;实施映射:WS4/WS3/WS5

功能地图

本篇维护患者发药与诊所库存交接;Lab 已拆为独立 PRD。药品采购、地点单位、价格及来源库存的现行设计见 Drug · WDL/CDU PRD,付款规则进入 Cashier PRD。§8 保留需求编号映射,§9 只说明实现差距。

功能 使用者/业务对象 产品方案与阅读位置
处方接收与审方 药房人员 · 当前签署处方 §2–3:整张审核、库存证据、预留及超时
结算交接与价格 药房/Cashier · 费用版本 §4:统一结算门禁与本次改价
异常退回与更正 药房/护士/医生 · 原版本 §5:临床异常、拒药、返工及已结算保护
备药、复核与领取 药房人员/最终核对者 · 整张处方 §6:实物准备、同人或不同人确认、分批交付与关闭
工作队列与显示 药房人员 · 待办/历史 §7:筛选、签署快照、阶段操作和刷新
药品与库存交接 Pharmacy/CP · 药品及数量 §10:目录来源、库存流水与套餐边界

1. 范围与权威边界

Drug Dispensing 承接医生已签署的处方,完成审方、备药和发药;关联护士在 Cashier 确认结算。三个工作台使用同一患者、就诊和有效处方版本,费用版本也必须一致。本篇是药房交接的唯一业务规范。

谁可以操作。 药房人员需要在处方所属诊所有有效岗位,并具备相应药房权限,才能查看和执行该诊所的处方,无需另行申请医生的临床记录授权。同集团关系不开放其他诊所处方;队列、直接链接和操作接口都检查来源诊所。

医生、护士和药房的分工。 医生负责开立、修改、取消及签署临床处方,护士按医生授权查看。药房依据签署版本审方、备药、复核和发药,不能代医生改方,也不能代护士收款。药房获得的是本诊所处方执行信息及必要安全资料,不是完整问诊记录。

以上权限于 2026-09-14 确认,完整规则见 权限矩阵。本轮更新 PRD,新增范围仍待代码核查和验收。

业务要求见 §2–8,当前代码与缺口统一见 §9;规则已确认不等于已实现。诊所库存/套餐边界见 §10,Lab 见独立 PRD。Central Pharmacy 的采购、收发、回收、主数据和 Finance 协作只在 Central Pharmacy PRD 维护;不在本文重复其历史讨论。

Drug Dispensing 是患者临床发药的唯一执行入口。2026-09-20 附件明确 CDU 管诊所采购、库存及耗用数量核对,始终与 Drug Dispensing 独立;WDL 管批发供货。历史 Central Pharmacy、Clinic Pharmacy 入口及记录保留,旧入口归并说明不构成合并 CDU 的依据。同一库存事实只过账一次,接管和映射须独立核实。Samuel 主责 WDL/采购与复杂库存,NeosAI 支持;不改变合同或报价范围。

2. 签署、审核与结算主流程

医生 Review & Complete 签署当前有效处方后立即建立版本化 Pharmacy Handoff;不消费草稿。药房可以在患者付款前查看并审核,Cashier 同时核对其他费用。整张审方及有效库存确认通过后,Cashier 才能结算药品费用;药品结算确认后才开始标签及备药。检验可先独立结算,交接规则见 Cashier 检验独立结算。

flowchart TD
  A[医生签署当前处方并交接] --> B[药房核对全部药品、供应数量及药费]
  A --> C[Cashier 核对药品费用;药品暂不收费]
  B --> D{整张通过且库存有效?}
  D -->|否:临床或供应问题| E[整张异常;医生任务;立即阻断结账]
  E --> F[护士在 Cashier 确认原因并退回 In Consultation]
  F --> G[医生修订并重新签署]
  G --> B
  D -->|是| H[等待 Cashier 统一结算]
  C --> H
  H -->|未结算预留到期| I[释放;恢复等待药房确认;阻断收款]
  I --> B
  H -->|实收、零额或付款安排已确认| J[待备药 → 备药中 → 待复核]
  J --> K{本批已备妥药品六项核对通过?}
  K -->|否:备药错误| J
  K -->|是| L[待发药]
  L --> M[确认本批送达;本批已发药]
  M -->|仍有未交付药品| J
  L --> N[未领取持续保留;阻止最终 Closed]

收款门禁同时校验当前处方有效、整张审核通过、库存有效、药费与 Cashier 确认版本一致且没有其他阻断。任何单一条件都不能单独放行;付款或打印成功不自动记录已备药/已发药。

3. 审方、库存与计时

功能目的: 决定当前整张处方是否可以进入统一结算。

使用者与对象: 药房人员;签署处方、逐项审核与整单库存证据。

操作与结果: 核对每种药品及供应量/药费 → 整张提交审核 → 预留有效库存 → 等待结算。

关键边界: 审核通过、库存预留、实物备药分别记录;测试库存不代表真实余额。

3.1 整张审核

3.2 预留、暂停与释放

审核通过即预留整张所需数量。预留不等于实物备药、出库或扣减。从每次预留成功时间开始,超过 24 小时仍未确认结算须自动释放,恢复“等待药房确认”并阻断收费;重新审核及预留后才能继续。重复审核、退回、释放或到期任务不得重复占用/释放数量。

未结算处方 Hold 必填原因、停止整张执行并释放当前库存证据;恢复时重新整张审核与确认库存。Cashier 因患者拒药退回时也立即停止旧版本并释放。实际库存分配器和后台到期释放尚未接通;当前代码仅在读取或操作时以 valid_until > NOW() 判断有效,达到 24 小时到期点即失效,不能把证据表当真实库存台账。该精确边界与业务表述“超过 24 小时”须在库存实施验收时对齐。

已确认结算的库存不再受未结算 24 小时规则释放。退款或撤销当前结算也不抹去历史;已结算后保护、后续备药阻断和受控更正见 §5.4。测试证据关闭后失效的规则仍优先适用。

3.3 人工证据与测试库存

模式 允许条件与留痕 边界
正式库存集成 权威可用量校验、整张预留、释放及扣减关联当前处方版本 目标待实施,当前没有自动分配器
人工库存证据 明确启用独立配置;药师确认整张库存并填写来源/凭据,保存版本、人员、时间及有效期 默认关闭;记录人工依据,不自动分配或扣库存;正式采用方式仍待业务确认
测试库存 仅显式启用的 staging/隔离 test;当前已配置药品的库存项按测试通过 不适用于 UAT、生产、未知或缺省环境;不批量批准处方、不生成虚构实存或库存流水

测试模式保留逐张药师审核、签署版本完整性、Cashier 结算、标签、真实备药记录及获授权实际用户的最终核对。页面持续显示 Test stock enabled,Review 显示 Test stock confirmed,Cashier 显示 Test confirmed;审核弹窗免填人工库存凭据,但整张确认仍必填。

后端复用 clinic_pharmacy_stock_confirmations,保存 metadata.test_only=true、TEST ONLY 依据、药品及执行行 ID、当前签署版本、认证操作者和时间;reservation_status=test_confirmed 与 reservation_source=test 区分来源。前端参数不能启用模式。库中不存在的药品、药品/数量与签署行不符或不完整的整张快照均拒绝。

关闭配置后,既有测试记录保留审计但不再支持结算、备药或发药,即使曾经测试结算也无效。原有效期、退回/Hold、重签版本规则继续。配置、部署、回滚及执行证据只维护在 测试库存验证记录,STG 实际启用与源码实现分别记录。

4. Cashier 结算与本次价格

结算确认条件以 Cashier 结算功能 为唯一付款规则来源:2026-09-10 已确认患者全额/部分欠款及 CoPay 欠款经显式登记安排可放行备药。药房消费结算结果,不把应收当作实收,不另设患者必须付清的重复门禁。

4.1 结算范围与逐药放行

审方期间药费显示“等待药房确认”,不能以逐项收款绕过整张临床审方。2026-10-26 用户确认在整张审方通过后,由 Cashier 为每项选择本次付清、下次付款但今天处理,或本次暂不处理,唯一规则见 Cashier 逐项处理。同一处方中,每个 medication order 只有属于当前签署版本的有效已确认发票/结算时,才可标签、备药及交付;不能借另一种药品的结算放行。暂不处理项目明确显示“本次结账暂不处理”,没有发票、欠款或付款放行,日后可重新办理。临床签署内容及整张审方不因此改写;库存分配继续按现行 CDU 备药规则执行。

服务端结算类型 药房读取含义
paid Cashier 已确认患者实际收款结算
zero_amount Cashier 已确认整单零金额结算
payment_arrangement Cashier 已按付款责任与欠款规则确认安排;不表示应收已到账

药房按每个药品消费当前 Visit/Prescription Version 且发票明细包含该药品的 settlement_status/settlement_confirmed,同时检查当前审方、有效库存和签署版本。不能仅以 payment_status=paid 判断,零额或付款安排的兼容付款状态仍可能为 payment_pending。患者是否已付清、欠款原因/确认及第三方责任由 Cashier 唯一契约校验,药房不再维护另一套付款表单或余额门禁。

何时可以开始备药: 医生签署当前处方后,药房可在患者付款前查看并完成临床审方/库存确认,但不得开始标签和实物备药。只有“当前签署处方版本有效+整张审方通过+有效库存确认+当前费用版本 Settlement confirmed”同时成立,状态才进入待备药。结算可来自实收、零额确认或已明确确认的付款/欠款安排;不要求账面上所有应收都已实际到账,但仅开票、仅打印、仅预留库存或仅显示 Paid 都不足以放行备药。

4.2 药房直接改价规则

仅药价有误且临床处方正确时暂停收费,由药房改价并重新核对,不退医生、不要求临床重签。所有有权操作 Drug Dispensing 的人员可调整本次单项单价,不另设改价权限或逐次管理审批;不扩大到无药房操作权限的账户。

药房独立改价入口及管理待办仍待开发。Cashier 当前已实现的 Visit 单价调整是另一入口,保留其未付款旧票作废、费用版本和历史保护规则;不能据此宣称药房改价已实现。管理记录放在价格维护内属于布局建议。

5. 退回、取消与历史保护

功能目的: 让临床问题、患者拒药、价格问题和备药错误各回到正确岗位处理。

使用者与对象: 药房、护士、医生和 Cashier;原处方版本、异常与受控更正。

操作与结果: 明确原因 → 阻断受影响动作 → 责任岗位处理 → 按新版本重新校验。

关键边界: 药房退回不直接重开 Visit;已发生结算/付款的历史不被退款或撤销抹去。

5.1 药房退回与护士手动回退

药房选择异常类别并可补充 Note,整张标记待医生处理、建立原医生 Amendment 任务并立即阻断 Cashier。类别为临床澄清、剂量/用法、供应/替代、患者安全或其他;前四类允许仅选类别,Other 必填具体说明;类别不足以说明实际情况时补充备注。类别、原始备注、操作者、时间和处方版本独立保存与展示,不将类别标签冒充用户自由文本。旧纯文本原因继续可读。纯价格问题按 §4.2 处理;实物返工、库存调整、结算后的受控更正仍保留各自原因门禁,逐药品结构化意见仍待补齐。

药房动作不改变 Encounter;它先保留 Ready for Cashier。护士在 Cashier 必须看到原因和阻断,发票生成、过账、收款及 Checkout 均不得继续。护士明确执行 Return to Consultation 后才改为 In consultation;两次动作分别保存角色、操作者、原因、时间、Visit 和处方版本审计。

本地修正(2026-10-29): 药房退回已按上述分步规则修正:只记录异常/任务、释放原处方库存并阻断收费,保留原 Visit 状态和签署聚合;护士在 Cashier/Registration Queue 的正式 Return 才恢复 In consultation 和普通草稿。此前药房直接重开的实现差异已在本地代码消除;本轮回归、Git、应用部署及 UAT 分别留证,不以代码修正代替运行或业务验收。

医生继续在原 Consultation → Prescriptions 修订并重新签署;旧版本保留,新版本重新 Handoff,Encounter 再次 Ready for Cashier。重签本身不解锁结账,新版本还须重新整张审核与库存确认。旧页面、旧审核、旧版本或迟到事件不能放行。

5.2 患者拒药与医生取消

Cashier 的患者拒药由护士确认 patient_request 退回,立即停止旧版本、释放库存并阻断收费;药房显示“已撤回,待医生处理”,不把护士退回当临床取消。没有付款历史的旧草稿/已过账发票在回退事务中保留并受控作废,原因和审计不丢失。

医生签署取消全部药品时,药房接收取消结果,无需再次审核;Cashier 核对剩余费用,剩余为 0 仍须显式零额结算。部分取消生成仍含药的新版本,必须重审及重新确认库存。已撤回、医生已取消、旧版本已替代分别显示,历史不可删除。

5.3 备药错误及发药后退换

药品/数量/标签准备错误而临床处方正确时,目标是退回备药中,必填原因,修正后重新逐项实物复核;不退医生、不重收费。当前常规状态 API 没有该返工路径,不能以未结算 Hold 代替付款后的返工。

已发药后退换本期人工处理,记录异常和结果,不自动退库/退款,不抹去原处方或付款。Closed 的原 Encounter 不重开;临床更正、退款和库存处置分别留痕,不增加“付款后常规重新审方”状态。

5.4 已付款/结算历史不可清除

检验独立结算后的设计边界(2026-09-15): 药品的结算历史保护按药品费用组及其处方版本判断。若只有检验组已结算,而药品组从未结算/收款,药房仍可普通审方、Hold及退回;如需改方,走针对药品子对象和药品费用的受控退回/修订,不回退整次 Visit 以撤销或重建已成立的 Lab。2026-10-22 已确认 Cashier 的未付款 Awaiting review 可直接退回,无需药房退单记录;Visit 进入问诊编辑态时仍保留已成立 Lab,重新签署不能重复计费或执行。旧 Visit 级付款门禁不能把 Lab 付款计入药品保护;Lab 验收包含这一场景。

药品费用组发生过实收或结算(含零额、第三方安排)后,普通审方、Hold、药房退回、护士回退和直接改价不能绕过受控临床/财务更正。退款、贷项或撤销结算不把药品费用组还原为“从未付款”。原 Visit 仍保留各组真实付款历史,不能全局清除。

撤销当前结算会阻断后续备药/发药,但不重启原库存的未结算 24 小时到期时钟,也不释放已保护库存。Checkout Completed 后在原历史账单补足患者金额,可显式重新确认相同处方、费用版本、第三方安排及有效库存;重新确认不新增付款、不自动发药、不改 Encounter。Closed 不可重新放行。未交付药物在全部实收退款后,可经 Cashier 明确取消对应应收并记录受控退回,再重新开药;流程、限制和历史保留统一见 Cashier §6。完整差额改方、已发药退换及第三方责任更正仍需另行受控处理。

6. 备药、最终核对、分批交付与关闭

功能目的: 把已经允许执行的处方落实为可追溯的实物交付。

使用者与对象: 备药人员、最终核对者及领取人;药品、标签、核对与领取记录。

操作与结果: 结算确认 → 逐药标签及备药 → 选择本批已备妥药品 → 提交送药 → 最终核对并确认本批送达 → 继续剩余药品,直至全部交付。

关键边界: 2026-10-19 用户明确确认保留现有代码:同一人可确认交付,允许分批送达;本节取代此前“必须另一人复核、整张一次领取”的要求。整张临床审方与结算门禁保留;打印或付款不等于实物完成,部分送达也不等于整张完成,未领取继续阻止最终 Closed。

6.1 业务状态与实物记录

已确认目标为 待备药 → 备药中 → 待复核 → 待发药 → 已发药,与当前四类工作区及 API 枚举的映射见 §9。

阶段 完成条件
待备药 当前处方整张审核、有效库存和 Cashier 结算均通过
备药中 打印并核对标签,记录真实批次/效期、准确备药量及操作者;药品、规格、SIG 和应备量来自签署快照且只读
待复核 逐药核对实物药品、数量、标签、批次效期及患者身份,选择已备妥药品提交本批;不重复临床审方
待发药 本批药品已提交送药,待六项最终核对及实际交付;本批之外的药品继续备药,未领取持续保留
已发药 本批药品交付给本人或代领人,记录批次、实际交付人员和时间;允许分批,全部药品均交付后整张才完成

Label 是面向患者的输出,必须带出药名规格、Dose、Route/使用方式、Frequency、Duration、Patient instruction/How to take、Quantity、安全提示和患者/医生/诊所上下文,并显示患者电话(缺失时标为未记录)。药房编辑内容的保存与打印按下文药签内容规则执行,通用字段规则见 Frontoffice 患者标签。行级及整张内部 Remark 不自动打印。打印请求不证明打印机成功,操作人必须确认实物标签已打印并检查。标准 80×62 mm 药签应紧凑排布普通长度内容,避免仅因留白将安全提示挤到第二页;保留全部字段和文字,不裁剪长内容来伪造单页完成。

药房用药指南与手动打印(2026-10-29 用户确认): 标签阶段按药品展示医生原始 Patient instruction,只读保留签署内容;药房编辑本次药签的 How to take(必填,初始带入医生原文)、Medication advice(患者可见、选填)及 Internal pharmacy note(不打印、选填)。三个字段独立于签署处方保存,按 medication order 与签署版本隔离,记录版本、修改者、时间及审计;不改变药品、Dose/Route/Frequency/Duration、数量、价格、结算或库存。每个文本最多 4000 字符,允许换行;医生没有原文时明确显示未记录,由药房补齐指南再保存/打印,不把 SIG 回退伪装成医生手填内容。

已有药房执行权限且订单属于当前有效签署版本、未实际备妥时可保存;Visit 已关闭/返回问诊、暂挂/异常/撤回、失效版本及已备妥/送达记录不可直接编辑。已备妥药品须先走现有受控返工。并发保存校验药签版本,冲突时保留本地草稿,明确提示重载已保存内容;切换患者/药品保留各自草稿,离开未保存工作台提示,身份变化清除旧上下文并拒绝迟到响应。

流程为 同页填写与实时预览 → Save & print label → 浏览器打印 → Label checked · Continue to prepare。在对应药品卡片内展开指引、预览及下一步操作,不另设重复药品面板。卡片内未打印时突出 Save & print label,明确该动作已包含保存;打印请求成功发出后才显示 Label checked · Continue to prepare 为主操作,并保留再次打印、打印取消/失败入口。可单独 Save guidance 暂存,说明这是稍后继续的次要操作;也可展开预览,但保存和预览弹窗均不是打印必经步骤。Save & print 只打印服务端保存回读后的内容;内部药房备注和医生内部 Remark 均不进入药签。打印取消/失败不自动推进,浏览器只能记录“已请求打印”;操作人仍须明确核对实物标签,点击该动作直接提交,不再重复弹通用确认框。保存内容变化会使旧药签确认失效,已进入 Prepare 但尚未实际备妥时退回 Label,需重新打印并核对当前版本;同内容重复保存不重复增加修订。保留既有审方、库存与逐药有效结算门禁,不引入付款后自动打印。

批量打印同样遵循保存、回读和实物确认门禁:备药阶段卡片左侧可多选药签,顶部提供全选/取消选择和「批量列印药签」。先显示所选药品的药签预览,缺少必填指南、版本过期、未获有效结算或其他不符合条件的项目单列原因,不静默混入打印。确认后逐项保存可编辑的改动,再核对服务端当前版本/权限与回读内容,每项药品一页、同一次浏览器打印请求;内部备注不打印。保存中遇到冲突或失败则停止整批打印,明确已保存数量,保留其余草稿,不回滚已成功保存的指引,也不宣称已经打印。用户可取消/失败后重新列印;逐张勾选「实物药签已核对」后明确确认,仍处 Label 的项目才进入 Prepare。已备妥药品的只读重印不修改库存、备药状态或送药勾选;重印召回药签不解除召回。批量列印与本次送药选择完全独立,不批量确认备药或跳过最终六项核对。(2026-11-05 用户确认统一卡片及批量交互预览)

批次、效期和实际数量由药房录入,不能自动伪造。 具备当前备药权限且加载完成后,实际数量输入须可由键盘编辑,其无障碍禁用状态与真实可编辑状态保持一致;加载、提交中及无权限时继续锁定,不改变服务端数量与库存校验。现有服务端拒绝缺批次、过期/无效日期或与处方不等的数量,并记录认证备药人;Final 要求本批药品的身份、过敏、药品、数量、批次及用药指导六项核对全部完成,仅更新本批为 dispensed 并消耗本批预留。其他未备妥药品不阻断本批,但不得被一并标为已交付。每张处方同时只处理一个送药批次;本批送达或退回备药后再处理下一批,重复确认同批不重复扣库存。标签、备药历史、原批次数据及送药/送达操作者与时间保留。

6.2 人员分工与领取

Review/Label/Pack/Final 可由同一获授权实际用户完成,也允许另一名获授权用户接手。根据 2026-10-19 用户确认,同人确认属于正常流程,不额外要求旧方案中的单人例外申请、重新认证或主管批准。药品安全提示及现有临床、库存、结算和六项实物核对门禁保留。

Final 必须使用具备当前药房执行权限的实际登录身份,每条本批药品必须已有真实备药人记录;不再比较确认人与备药人是否相同。角色模拟、客户端 actor 字段或显示姓名不能绕过授权与审计。当前服务端认可的角色为 pharmacy、pharmacy-staff、clinic-manager、frontline-staff,仍须满足动作、诊所及处方范围权限;本次决定不扩大角色授权。

仅现场领取,允许本人或代领,无配送。代领只保留一条记录信息及操作人/时间,不新增姓名、关系或电话等结构化必填表单。可按已备妥的药品执行行分批现场交付,未选中的药品保留原进度;不把单条处方应发数量任意拆小。每批均完成最终核对并保存送达记录;已结算未领取不自动取消或释放。

6.3 Encounter Closed

已结算未领取的有效处方阻止最终 Closed,直到实际发药或有权限的人工处理完结;人工例外仍须原因和审计。首次临床签署满 24 小时及其他关闭条件继续适用,不从发药重新计时。第三方未到账 AR 独立跟进,不阻止已满足其余条件的 Encounter 关闭。

库存时钟从每次预留成功开始且只约束未结算;关闭时钟从首次临床签署开始且要求全部关闭前置条件。自动 Closed 调度及完整未领取门禁尚缺完整运行证据,不能以 Checkout Completed 当最终 Closed 验收。

7. 队列、签署内容与界面

7.1 队列与诊所筛选

患者摘要与处方队列接入全部有效患者标签,包含来源诊所的 VIP/有未付;默认三个,其余通过「+N」浮窗查看。只读范围、排序及财务明细边界统一见 Frontoffice §2.7(2026-11-03 用户确认);不影响本篇审方、备药及发药门禁。

目标是一张处方一条队列记录,同患者多处方分开并保留版本;默认全部未完成处方不限当天,已发药/已取消/已替代放只读 History。前端按患者/Visit/签署版本聚合现有药品执行行,进入后仍按药品保存标签和备药;聚合不合并后台执行记录。

Clinic 下拉筛选位于左侧处方队列,Refresh 位于同侧队列底部;移除工作区顶部重复 Drug Dispensing 工具栏。队列支持收起/展开,保留当前处方与操作进度;显示 All clinics、完整诊所名及当前 Active/History 数量,支持键盘选择。按 Visit 的稳定 operating_unit_id 过滤,并返回 code/name 用于展示,不从姓名推断诊所。切换后队列、计数及可操作详情一致,原记录不在范围内即不可继续操作。

当前队列 API 只返回会话获授权的单个 Operating Unit/Medical Group,并已移除旧 90 天/80 条限制。 All clinics 指前端已获授权返回集合;合成预览展示多个 clinic 不证明后端具备跨诊所聚合授权。新增真实跨诊所访问仍需明确数据范围并验证。

每条摘要显示患者姓名、性别、年龄、开方医生、诊所、药品行数和工作/结算 Tag;姓名保留 eMR 入口。2026-10-22 确认:队列与选中处方的身份摘要均显示患者主档性别及根据出生日期计算的年龄,沿用共享患者身份显示规则;缺失资料明确显示未记录,不猜测性别或年龄。药品数取完整签署快照的行数,缺快照隐藏,不取分页行数或猜成一种。编号、日期、具体药名和完整身份放详情。付款 Tag 使用 Paid/Zero amount/Payment arranged 等简短文本,详情分开显示完整结算与库存。关键词可搜患者、诊所、医生及药品;筛选无结果清空详情。

排序与状态更新: Active 中现有执行行按药品执行记录创建时间升序、稳定执行行 ID 升序;这是当前 API 依据,不是患者签到或收款时间。处方聚合目标按所属有效版本首次交接到药房的时间升序,同值以稳定处方版本 ID 升序;旧数据缺少交接事件时可用该版本最早执行行创建时间并注明来源,不用任一药品最近编辑时间决定整张顺序。未知时间置末,不按姓名合并同患者的不同处方/版本。

Hold、待结算和库存阻断保留原记录与阻断原因,不因暂不可执行从未完成集合中消失;解除阻断、付款、刷新不重写交接时间。已发药/已取消/已替代退出 Active 后仍可在 History 追溯;History 目标按结束时间降序、稳定版本 ID 降序,缺少结束事件明确未记录,不用创建时间伪装结束时间。处方聚合与历史排序属目标细化,仍需应用核验。筛选、计数、刷新和返回遵循共同列表契约;显示排列不替代审方、结算及发药门禁。

7.2 完整签署快照与备注层级

队列及详情承接当前已签版本的完整 prescription_lines、SIG(Dose/Unit/Route/Frequency/Duration)、Dispense quantity、Patient instruction、警示、签署版本、开方医生和诊所,不重新录临床处方。prescription_lines 直接来自所属 clinic_prescription_versions.snapshot.lines 并保持原序,不从筛选后队列拼接,不混用其他版本或当前目录修改。

Review 与备药、最终交付共用药品卡片结构:卡片左侧为批量选择,药名/规格与数量保持相同层级,审阅操作及状态位于卡片右侧;下一行完整显示剂量/途径/频率/疗程,随后显示 Patient instruction、Safety note 及各自可选 Medication remark(签署行 internal_note)。整张 Prescription remark 来自签署快照 remark,独立位于药品列表外,只显示一次。空备注隐藏,父级备注不复制到各药品;Patient instruction 与两级内部备注分开。缺完整快照时明确只显示当前药品,不能声称完整处方。

2026-10-28 BUG148:Review 中每项药品分别显示签署时 drug_snapshot.safety_note,与药名及规格同属该药品卡片;缺失时明确显示未记录。整张审方不以当前所选执行行的单条 Safety note 代表全部药品,不从当前 Drug Master 补写历史快照。患者过敏及处方警示仍独立展示,Label/Pack 继续按所选药品展示。

药师可定向打开当前患者/Encounter 的 Consultation result 并定位 Prescriptions,不经 Consultation Queue、不触发开始/恢复问诊;普通药房查看只读,医生 Amendment 仍在原工作台。eMMS 入口使用签署药品的稳定 ID 和结构化用法;真实权限及 eMMS 联调单独验收。过敏信息缺失显示中性“未记录”,不能自动显示安全结论。

7.3 当前分阶段工作区

工作区 显示内容与操作
Review 完整签署处方、用法数量、两级备注、安全信息及版本;整张确认或带原因退回
Label 医生原文只读、药房指南/提示编辑与保存、实时药签预览及直接打印;一次实物标签确认后备药,未结算不可开始
Preparation 只读签署药品与应备量;填写批次、效期、实际数量及必要备注
Final check & handover 本批六项实物/患者核对、用药交代及领取记录,确认本批送达后继续剩余药品

共享工作台主题、Element Plus、AppDialog、Tailwind 和 Iconify 遵循 桌面 UI 规范。队列、患者身份与风险摘要、阶段导航及卡片主任务区保持清晰层级。Review、备药及最终交付使用同一套药品卡片,按签署处方顺序固定排列,不因状态变化跳动。每张卡片只显示一次药名、规格和数量;用法、当前进度及阻断原因留在对应卡片内。Review 明确区分批量选择和审阅确认;备药卡片可原位展开药签编辑/预览或库存批次、数量、备注表单,不再另列一份重复药品清单或底部当前药品面板。当前一次展开一张卡片,支持鼠标及键盘展开/收起;已备妥后可「处理下一项」,召回项保持可查看及受控返工。阶段导航只读,不能跳步。

卡片内放单药操作;整张审方、本次送药摘要/Submit delivery、最终交付及 More actions 保留在任务正文滚动区之外的固定底栏,按实际 App 容器宽度收缩换行。每张已备妥卡片独立勾选「加入本次送药」,底栏可全选已备妥药品;送药选择与左侧药签打印选择、当前展开项相互独立。最终交付继续显示原有全部卡片,本次送药项显示批次/效期/数量,其他项明确标记「本次未交付」或「已送达」,只保留一套本批六项检查。按第 6 节保留同人确认及分批交付,不因布局改变。确认框绑定当前订单/状态/版本,展示患者和“当前状态 → 下一状态”;提交中防重复,接口失败保留状态并显示错误。异常或 Hold 不显示为完成,历史不可写。

同一工作台内切换或收起卡片保留各自药签草稿、备药批次/数量/备注,并在对应卡片显示未保存;备药草稿绑定药单及签署版本/服务端记录版本,不跨身份保留,状态或版本变更后重新载入,提交时仍重新核验库存和权限。草稿仅在当前工作台内存中,关闭或刷新整个页面不视为保存。窄窗口仍使用同一卡片及原位展开结构,按钮、用法与状态可换行,不增加第三列。(2026-11-05 用户确认统一卡片及批量交互预览,取代同日较早的清单加独立编辑区方案)

送药选择区逐项显示阻断原因;Submit delivery 禁用时,在按钮旁及当前无其他主动作的固定底栏显示本次所选药品的实际阻断原因和下一步操作,不依赖上方 Current medicine 所选项。批次召回须显示对应药品、批次及已记录原因,指引选中该药后经 Rework preparation 更换有效库存批次;可取消勾选受阻药品,先送出其他符合条件的药品。未选中的召回药仍保留行内提示,不阻断本次其他药品。未勾选、处理中、就诊已关闭/返回问诊、结算失效及服务端不允许送药分别说明;已有具体后台原因优先显示,无法确定时明确提示刷新或联系支援,不误写成未付款。禁用原因以可见文字及无障碍描述提供,不仅依赖悬浮提示;不得解除召回、结算、处方有效性或后台送药门禁。(2026-11-05 用户确认补齐禁用提示)

所有当前流程的阻断须在对应操作旁说明原因和处理方法:审方缺完整签署版本/未逐药核对;药签无编辑权限、用药指南为空、并发版本冲突;备药库存加载失败、无可用批次、未选/重复批次、有效期不合格、数量非法、超出可用库存或合计与处方不符;最终交付按本次所有药品汇总召回、结算及后台阻断,并提示未完成的实物核对。多个同时存在的条件一起呈现。暂停、恢复、退回医生和重新备药的状态限制、原因/类别/其他备注必填及确认框状态变化均有可见说明,禁用门禁与说明使用同一判断来源。后台提交失败保留原状态并显示实际错误,不用泛化的付款提醒代替未知原因。

患者信息栏下参考 Consultation 分类展示 Allergy、ADR、Alert 和 Other alert,缺失明确显示 No Record;详情沿用现有患者安全组件,不加入完整 Consultation Note。患者姓名复用 PatientEmrLink 打开同一患者/Visit;2026-10-29 已确认 Pharmacy Staff 可使用该入口,是否开放/显示保留在权限管理中配置,入口遵循 Platform 的岗位 App 边界,不可把后台读取权限等同于独立 eMR App 准入。

Drug History 为工作区内可展开的只读参考面板,宽窗口并排、窄窗口抽屉,关闭后保留当前审方选择。复用现有 eMR Medication History:按患者读取 prescription 历史索引,按需以 medication scope 展开详情,只显示医生处方及药房执行记录,不请求或展示 Consultation Note。按日期倒序、搜索已载入药名、分页加载更多;区分处方来源与配发状态,历史不代表目前仍在用药。无记录、加载中、失败可重试及无权查看分别提示;患者、版本、身份切换及关闭时清除旧数据/取消迟到请求,不混入其他患者内容。

实际 Vue 合成预览 复用 DrugDispensingWorkspace,模拟仅在明确 preview 路由生效,不调用真实变更或打印。正常模式 API 失败不能回退假数据。早期交互草案 仅保留评审来源,不作为当前 UI 或实现依据。

7.4 每 30 秒刷新

打开立即加载,可见时每 30 秒主动查询新处方与 Cashier 结算;保留手动 Refresh、频率、刷新中反馈及最近成功更新时间(含秒)。复用授权队列 API,不另设付款来源。

普通刷新保留 Clinic、Active/History、状态、搜索、当前选择,以及同版本同阶段的备药输入、核对、退回理由和弹窗;新记录不抢选择,诊所暂空仍保留筛选。选中记录移出结果、阶段或签署版本改变时关闭旧确认并提示重新核对。

请求进行中不重复查询;写操作忽略此前查询的迟到响应,完成后再拉取。失败保留上次数据及成功时间,提示未更新并继续重试。页面隐藏暂停、恢复立即刷新、工作台关闭清理定时器及迟到响应。

8. 稳定功能契约

旧主线编号保留用于测试追溯:PH-01(交接后的整单审方、预留及备药)→§2/§3/§4/§6.1;PH-02(Final Dispense)→§6;PH-03(最终核对及人员分工)→§6.2;PH-04(异常退回、医生任务及Cashier阻断)→§5。T40–T43、T73等旧用例按此映射读取本篇规则。

以下编号供验收及其他文档引用,编号不因本次合并改变;它们表示要求,实现状态以 §9 为准。

编号 契约
RXPH-FR-001 当前签署版本幂等交接,不消费草稿
RXPH-FR-002 审核、库存、费用版本及结算分别保存
RXPH-FR-003 实收/零额/第三方及患者欠款安排分别记录,共同计算备药条件
RXPH-FR-004 未审核不收款,未结算不备药,服务端阻断绕过
RXPH-FR-005 药房不取消临床处方、不改药品/剂量/数量
RXPH-FR-006 整单退回必选异常类别;Other 必填说明,其他备注可选;建立医生任务并保留实际意见
RXPH-FR-007 药房退回立即阻断;护士单独确认回退 Visit;分别审计
RXPH-FR-008 队列及详情显示独立药房/结算/库存状态和阻断原因
RXPH-FR-009 区分审方退回、患者拒药、价格修正及实物返工
RXPH-FR-010 医生在原 Consultation 修订签署,无第二套临床编辑器
RXPH-FR-011 全部取消不送审;有药新版本重审;旧版本不可执行
RXPH-FR-012 未结算预留到期释放、恢复待确认并阻断 Cashier;重复不多释放
RXPH-FR-013 单次改价审计、Cashier 费用版本及管理处理可靠关联
RXPH-FR-014 结算历史禁止直接改价;未结算允许零价,原因必填,不改标准价
RXPH-FR-015 审核/复核逐药检查、整单提交;付款与打印不自动完成实物步骤
RXPH-FR-016 按已备妥药品分批现场领取、代领记录、发药后人工退换留痕
RXPH-FR-017 新版本重审通过才解锁;旧页、旧版本、迟到事件无效
RXPH-FR-018 未领取阻止 Closed;人工结案/例外需权限、原因及审计

并发库存、改价与结算、到期与结算、退回与结账均校验同一 Visit/处方/费用版本;冲突重新读取,不静默使用旧金额或失效证据。当前相关写路径使用 Visit 锁,但该锁不证明外部库存事务已完成。落账记录保留,不重复收费,任何实施不得直接改写不可变签署或账单历史。

9. 交付边界与验收入口

审方布局、Drug History、Patient eMR 跳转及药房标签编辑的本地实现/验证与发布边界见2026-10-29 专项记录。

下表说明哪些能力已有代码路径、哪些仍需补齐。它不是部署或 UAT 声明;最新分支判断统一见交付状态,实际结果见测试证据。

能力 当前代码事实 未完成或待验证
签署交接/重新签署 版本化 Handoff、单药品执行行、整张异常/任务及旧版本停止已有代码 外部交接事件传输及真实业务 UAT
审核与收费门禁 整张确认 whole_prescription_reviewed;当前版本/库存证据/费用检查;护士显式回退 逐药明确审阅与批量标记已有本地实现;逐行结构化意见及正式库存政策仍待确认
结算与实物交付 三种结算、历史保护、Label/Pack 门禁、获授权实际用户同人/不同人确认及按已备妥药品分批交付已有代码;隔离主流程已验证不同用户交接 真实付款渠道/打印机及临床 UAT;付款不代表已发药
库存 人工证据默认关闭;显式测试模式、版本校验、读取时到期失效及结算后保护已有代码 权威库存可用量、原子预留/释放/扣减、批次/FEFO、后台到期任务
执行状态 rx_review → reviewed → label_ready → packed → ready_handover → dispensed;当前批次支持送药、确认及带原因退回备药 多药分批、退回及并发场景的完整专项验收仍需独立留证
操作粒度 Review/Hold/临床退回按当前处方整张处理;Label/Pack 逐药品行,送药/确认按当前批次处理 处方聚合不等于所有跨诊所/多药异常场景已验收
价格 Cashier 可调整当前 Visit 的有效单价,药房读取有效价 药房独立改价 UI/管理逐条处理队列;已付改方差额闭环
人员与审计 Final 允许同一备药人;拒绝模拟身份、缺失备药人及未获授权角色;保存实际确认人 不同角色的实际动作授权与部署状态须按环境核验
队列/内容/刷新 完整签署快照、备注层级、Clinic 下拉、精简摘要及 30 秒刷新已有代码 服务端跨诊所授权及真实多诊所验证;前端聚合不改变后台执行粒度
Encounter/V-Lab 已 Closed 记录禁止常规重开;Lab/Imaging 开单基础存在 自动 Closed/未领取完整门禁、内部执行到医生确认的结果闭环

业务用例在 统一验收清单 维护,包含原 RXPH-FR、T97/T111–T113/T125 和 PH-TEST-STOCK-01–04 的相关场景。最低覆盖:审核前收款拒绝、24 小时边界、零额及第三方安排、重签重新审核、全部/部分取消、同人及不同人确认、按药品分批交付且未交付行保持待办、重复确认不重复扣减、测试关闭失效及未领取 Closed 阻断。用例已编写不等于已通过。

已有 Cashier/药房隔离验证 记录使用真实 Vue/Flask/可丢弃 PostgreSQL,在隔离测试中显式启用人工库存证据后跑通审核→结算→标签→配药→不同药房用户整单发药;医生重签等额外场景由后端测试覆盖。后续 价格验证 与 测试库存验证 分别记录自己的版本和范围。旧 App 验证 是当时前端证据,不是当前完整业务验收。

代码存在、局部/隔离测试、本地完整部署、开发发布、应用/PRD 发布、STG 实际配置、外部系统联调和业务 UAT 分别计证;既有预览不能代替真实库存、打印机、安全政策或角色验收。实施进展只更新 WS4 及验证记录,不在本文追加发布流水。

2026-10-29 统一问诊状态规则取代 Ready for Cashier 独立 Amendment 例外:普通处方修改须先符合正式退回资格并回到 In consultation,再编辑与重签。已发生过药品收款/结算的记录不能因退款、作废或旧 financial return 恢复普通写入;已结算 Lab 与未结算药品的合规退回边界及唯一规则见 Consultation §4.4。

10. 药品目录、诊所库存、CP 与套餐

CDU 按整个 Clinic/Centre 统一管理。备药、预留与发药使用同一 Centre 的可用库存,历史 Zone 来源仍可分配,实际扣库保留原批次/来源位置;不能使用其他 Centre 库存。处方价格和单位沿用已确认快照,不以发药时的当前价重算。统一配置与历史迁移规则见 Drug §1。

旧主线IN-01~IN-04对应本节IV-01~IV-04,原编号仅用于历史测试追溯。

IV-01 药品来源: 新 WDL/CDU 共享药品 UUID;主数据、库存、换算版本、价格和来源分别维护。CDU 在采购流程选取已有共享药品并配置本诊所库存/发药单位,不建立独立药品身份,不提供主数据申请/修改入口。获授权的诊所药品目录可单独维护本诊所药名;名称优先级、标签用途及审核边界见 Drug PRD §1.2、§5.2。诊所不能覆盖共享药品的默认用法或安全提示。有效单位和本诊所发药价格齐备才可用于新处方;发药数量为地点发药单位整数,剂量独立。旧处方保留签署版本的名称、数量、单位、价格及来源快照。

编号 业务对象与目标 当前边界
IV-02 按诊所/药品查询可用量、预留量,适用时显示批次与效期 有目录及库存字段,尚无处方权威库存闭环
IV-03 出入库/调整记录数量、批次、原因、源单据与操作者;纠正使用反向记录 批次、盘点、FEFO 与临床发药联调待完成
IV-04 最终发药关联处方版本、真实数量及单一库存变动,重复不重复扣减 Dispense API 更新状态不证明库存扣减

新供货链按 Drug · WDL/CDU PRD 执行:买方实际收货、各地点独立库存、单独在途及来源层;供货许可不自动授予买方库存明细读取权。CDU 负责耗用数量核对,WDL 本阶段无核对/报表工作区。部分供货不改变患者处方整张审核;患者交付按 §6 允许分批,患者回收实物与 Cashier 退款分别记录。历史 CP 业务仍可通过 原 CP 方案 追溯。

NetSuite 本期仅预留接口及数据映射,不实施连接、同步、回执重试或自动对账;CP 保留业务单据、数量、批次和必要商业数据,不因此接管完整财务核算。货权、会计及未确认 Finance 规则仍待确认。完整 WDL 采购、供应商、复杂库存等后续设计不自动纳入原 Phase 0 合同或改变既有报价。

PK-01 Service Package: 主档定义服务,患者 Wallet 记录购买、有效权益、预留、消耗、冲回、余额和台账;执行/扣减关联原服务或 Invoice,重复不重复扣减。目录和权益台账已有基础,完整 Cashier 对接尚待完成。到期、延长、转让、退款、套餐/Benefit/自付优先次序及收入确认仍待 Finance/营运确认,不以显示余额认定完整套餐或财务收入已实现。

11. Lab 与 Imaging 阅读入口

2026-09-15 按用户要求,原 V-Lab 正文拆入 Lab 独立 PRD。本节只保留旧链接兼容,不再维护检验规则;药房原地址继续有效。

业务流程 · 检验结算 · 报告发布 · 完成量月报 · 试剂库存。

Imaging 的目录与选择仍见 Catalogue 和 Consultation;本次 Lab 采样流程不自动覆盖 Imaging 执行。