doc_id: DES-202607-001 feature_id: FEAT-202606-001-unified-entry-client type: design title: 统一入口客户端患者服务台移动端原型设计 status: reviewing owner: 医梦研发团队 created_at: 2026-07-02 updated_at: 2026-07-05 reviewers:
本文定义统一入口客户端从院内 16:9 三栏演示原型升级为患者手机端 小程序/H5“患者服务台”的产品结构、页面范围、交互状态和方案演示主线。
本设计以已完成设计评审、正在开发的
FEAT-202606-006-agent-semantic-interaction 为中台设计依据:
TaskState 是单一前台业务任务事实源,同一会话最多一个 ACTIVE;PatientWorkItem,就医时间线使用只读
JourneyProjection,二者均为患者服务台聚合投影,不是 TaskState;SemanticResponse 提供完整文本结论;Presentation 是可选无状态展示;Command Runtime 执行已由 FEAT-006 定义的受控副作用。本文是纯前端方案演示原型设计,不进行后端联调,也不构成生产接口或事件契约。 文中的事件、结果和命令对象均为 fixture/projection;客户端不得创建或修改服务端事实。
患者服务台是医院官方、事件驱动的患者服务入口。
它不以功能宫格或聊天窗口作为产品中心,而以患者当前就医任务为中心:
现在发生了什么
→ 患者需要做什么
→ 为什么需要处理
→ 是否可以立即办完
→ 完成后下一步是什么
产品由五类能力组成:
flowchart TD
E["服务端 SSE / 业务事件投影 fixture"] --> W["PatientWorkItem / JourneyProjection"]
U["用户提问或点击"] --> T["服务端 TaskState(最多一个 ACTIVE)"]
T --> A["Agent + 只读 MCP"]
A --> S["SemanticResponse"]
S --> P["无状态 Presentation"]
T --> C["Command Runtime"]
C --> E2["服务端结果投影 fixture"]
E2 --> W
原型中的客户端事件仅模拟消费服务端 SSE/业务事件后的投影,不直接代表患者授权或业务执行,
更不能由客户端据此创建或修改服务端 TaskState、ResultSnapshot 或 CommandInstance。
例如:
REPORT_ISSUED 表示报告已经出具,不表示患者同意 AI 解读;CHECKIN_AVAILABLE 表示当前可以签到,不表示系统自动签到;PAYMENT_PENDING 表示存在待缴费用,不表示允许自动支付;QUEUE_UPDATED 表示候诊队列发生变化,不改变挂号事实。MedicalEvent、REPORT_ISSUED、REPORT_CORRECTED、CHECKIN_AVAILABLE、
QUEUE_UPDATED、APPOINTMENT_CREATED、CHECKIN_COMPLETED、VISIT_STARTED、
VISIT_COMPLETED 等名称均为患者服务台原型私有场景事件假设,只用于 fixture。
它们不是 FEAT-006 OpenAPI/SSE 契约或后端承诺;如需生产接入,必须另立专题定义和评审真实契约。
服务端 TaskState 仍是 Agent 单一前台业务任务事实源,同一会话最多一个 ACTIVE。
患者服务台首页需要同时展示报告、缴费、签到、随访等事项,因此使用独立的只读聚合投影:
activeAgentTaskProjection:当前服务端 TaskState 的只读投影,单个或 null;patientWorkItems:跨业务事项的只读 PatientWorkItem 列表;journeyProjections:就医旅程节点的只读 JourneyProjection 列表。首页、就医旅程和消息可引用同一批患者服务台聚合投影,但不得把多个
PatientWorkItem 写回成多个活动 TaskState。演示状态函数只把事件 fixture
转换为本地投影和消息,用于模拟客户端消费服务端事件后的 UI 变化。
医生、号源、报告摘要、费用和路线等 Card 只负责提高可读性。
Presentation:
interactionType。文本和 Presentation 必须由同一 ResultSnapshot 生成。ResultSnapshot 由后端绑定
租户、患者和会话;客户端只持有 resultRef、resultVersion 和候选稳定标识。
版本冲突或过期时必须重新查询,原型展示“结果已更新,请重新查询”的恢复状态。
FEAT-006 已定义的挂号等副作用必须通过 Command Runtime。客户端中的 Command 均为服务端 Command 的只读 projection/fixture,不得由客户端创建或修改服务端事实。
移动端只允许:
移动端不得自行构造金额、患者、号源或医院系统参数。
L2 Command 确认链严格使用:
PREPARED → AWAITING_CONFIRMATION → EXECUTING → SUCCEEDED | FAILED | UNKNOWN
L1 可逆临时动作在用户明确交互授权后可直接
PREPARED → EXECUTING → SUCCEEDED | FAILED | UNKNOWN,不额外二次确认。
另有终态 REJECTED、EXPIRED;不得使用 COMPLETED 作为 Command 状态。
风险口径:
签到、报告授权等尚未在 FEAT-006 中定级,本原型仅作流程假设,待后续专题定级, 不得表述为已确定 Command。
底部使用五个一级导航:
| 导航 | 主要内容 |
|---|---|
| 首页 | 当前任务、今日旅程、常用服务和主动关怀 |
| 就医 | 门诊、检查、住院、随访任务总览 |
| AI 助手 | 查询、解释、推荐和服务办理入口 |
| 健康档案 | 报告、处方、病历、过敏史和健康趋势 |
| 我的 | 就诊人、授权、消息、隐私和帮助 |
AI 助手位于底部中间,可提高识别度,但首页任务仍是首要入口。
首页按以下顺序组织。
推荐文案:
张先生,上午好
今天有 2 项就医事项需要处理
提供轻量输入入口:
问病情、查报告、找医生、办就医服务
医生助手形象只作为头像或局部陪伴形象,不占据首页主要空间。
任务按以下优先级排列:
任务卡必须回答:
示例:
血常规报告已出
发现 3 项指标需要关注
[查看报告] [AI 解读]
神经内科可以签到
您已到达门诊三楼,距预约时间还有 20 分钟
[确认签到] [查看路线]
首页只显示当前节点及前后相邻节点:
09:10 到院
09:20 神经内科签到
09:30 候诊
10:05 医生接诊
10:30 检验检查
11:20 报告出具
点击后进入完整就医旅程。
首屏最多展示八项:
其余能力进入全部服务。
按任务状态组织:
作为后续扩展:
TaskState 或患者服务台投影。统一确认层包含:
必须覆盖以下状态:
UNKNOWN 状态显示“结果确认中,请勿重复操作”。
L2 确认链状态标识分别为 PREPARED、AWAITING_CONFIRMATION、EXECUTING、
SUCCEEDED、FAILED、UNKNOWN、REJECTED、EXPIRED,成功态不使用
COMPLETED。L1 明确交互授权后可从 PREPARED 直接进入 EXECUTING。
移动端采用“统一报告服务、双报告族”的产品结构:
报告服务
├── 检验报告:指标、数值、单位、参考区间、异常和趋势
└── 检查报告:检查所见、报告结论、部位、建议和图文资料
两类报告共享事件、授权、AI处理、安全校验、反馈和失效机制,但详情页与解读结构 分别设计,不使用一套指标模型强行表达影像、超声或病理报告。
P0采用方案B,完整演示一家医院、一个LIS厂商、结构化血常规的患者端深闭环。 检查报告只展示统一入口和可扩展框架,不宣称已经具备生产解读能力。OCR仅作为 后台候选解析能力;患者端只展示“需要人工核对”的降级状态,本轮不设计医护审核台。
原型控制器注入私有 REPORT_ISSUED fixture、模拟客户端收到服务端投影后:
PatientWorkItem;患者查看报告只更新已读状态,不代表患者授权AI解读,也不创建挂号或其他业务命令。
报告闭环复用现有四个入口,不新增一级导航:
| 入口 | 作用 |
|---|---|
| 首页 | 展示最高优先级的新报告或待处理事项 |
| 消息 | 承载报告出具、解读完成、报告更正和失效通知 |
| 健康档案 | 提供全部、检验、检查、未读、已解读和已失效筛选 |
| AI助手 | 处理“帮我看最近一次血常规”等请求,并由中台返回有权访问的候选 |
报告列表项至少显示报告名称、医院、科室、时间、审核状态、医院异常标记和AI解读状态。
报告详情先展示医院原始事实,再提供AI辅助入口:
患者默认看到医院原值。中台标准化值只用于内部映射、规则和校验,不直接覆盖原值。
首次解读展示:
操作:
授权绑定当前患者、当前报告、用途和有效期,不能用一次授权覆盖全部历史报告。 撤回授权后不再展示对应AI解读,但医院原始报告仍然可查看。
患者同意后,中台先确认报告是否允许进入AI解释:
最终审核
→ 患者关系和访问权限有效
→ 结构化字段完整
→ 单位和参考区间无冲突
→ 非危急值
→ 形成可信报告快照
→ 允许调用FastGPT
FastGPT不参与患者授权、报告状态、单位换算、参考区间、异常复核和危急值判断。 FastGPT完成运行不代表结果可以发布;只有中台校验通过后,患者端才进入解读完成态。
处理中页面只显示患者可理解的信息:
正在生成辅助解读
报告原文仍可正常查看
不得展示OCR、RAG、Prompt、Workflow节点、模型名称、traceId或工程进度。
血常规结果分为六层:
“常见相关因素”必须明确不等于诊断。患者端不得输出确定性诊断、用药、治疗方案、 AI生成的推荐科室或具体复查周期。
患者端P0不开放围绕报告的自由追问,只提供审核过的安全行动和人工咨询入口。
P0不把报告解读结果直接连接到挂号流程。只有中台存在医院审核过的路径规则时, 后续版本才能显示确定性服务入口。患者主动提出挂号时,进入独立挂号任务,不把 报告Card作为挂号流程节点。
以下情况统一进入患者端降级状态,不硬生成AI内容:
普通降级页面只提供查看原报告、稍后重试、联系医生或人工服务。
危急值不调用FastGPT生成个性化解释,只展示医院审核过的固定提示和医院指定联系入口。 AI不得生成科室、治疗或用药建议。
收到 REPORT_CORRECTED、撤回或作废事实后:
患者端提供结构化反馈:
反馈进入医梦反馈体系,不直接训练FastGPT,也不直接修改知识、Prompt或Workflow。
移动端使用患者语言,不暴露中台技术状态:
| 产品状态 | 患者端表达 | 允许操作 |
|---|---|---|
| 报告已出 | 新报告可查看 | 查看报告 |
| 等待授权 | 授权后可生成辅助解读 | 同意、暂不授权 |
| 正在处理 | 正在生成辅助解读 | 查看原报告 |
| 解读完成 | AI辅助解读已生成 | 查看、反馈、撤回授权 |
| 需要人工核对 | 当前报告暂不适合自动解读 | 原报告、医生、人工 |
| 危急值提示 | 请按医院提示及时联系 | 医院指定入口 |
| AI暂不可用 | 原报告仍可正常查看 | 稍后重试、人工 |
| 解读已失效 | 报告已更新,旧解读不可继续使用 | 查看最新报告 |
自然语言“选第一个”和点击候选必须统一映射为:
{
"interactionType": "SELECT_CANDIDATE",
"resultRef": "result-slot-001",
"resultVersion": 1,
"candidateId": "candidate-slot-0930"
}
完整链路:
候选选择
→ 后端校验 ResultSnapshot version / expiry
→ 实时复核号源
→ L1 LOCK_APPOINTMENT_SLOT(明确选择即授权,不额外二次确认)
→ 锁号成功写入服务端 TaskState
→ 后端准备 L2 REGISTER_APPOINTMENT
→ 患者二次确认
→ 执行最终挂号
客户端只展示 ResultSnapshot、TaskState 和 Command 的投影。版本冲突、快照过期或实时 复核失败时,原型回到查询恢复态并提示重新查询,不允许使用旧候选继续锁号或挂号。
报告支持:
以下事件名均为患者服务台原型私有场景假设,不是 FEAT-006 OpenAPI/SSE 或后端承诺。
| fixture | 患者服务台投影变化 | 客户端响应 |
|---|---|---|
REPORT_ISSUED |
新增报告 PatientWorkItem |
首页事项和消息 |
REPORT_CORRECTED |
原解读制品失效 | 强提醒查看最新报告 |
REPORT_WITHDRAWN |
报告与解读停止作为当前结果展示 | 展示撤回或作废说明 |
APPOINTMENT_CREATED |
新增待到院旅程投影 | 今日旅程和提醒 |
ARRIVAL_DETECTED |
更新院内服务投影 | 路线和签到建议 |
CHECKIN_AVAILABLE |
新增待签到事项投影 | 签到提示(定级待专题确认) |
QUEUE_UPDATED |
更新候诊投影 | 人数和预计时间 |
PAYMENT_PENDING |
新增缴费事项投影 | 费用和支付入口 |
| 支付状态未知 | Command UNKNOWN | 禁止重复支付 |
PRESCRIPTION_READY |
新增取药事项投影 | 药房路线和提醒 |
DISCHARGE_COMPLETED |
新增诊后事项投影 | 小结和随访 |
FOLLOWUP_DUE |
新增随访事项投影 | 首页待办和问卷 |
#2B1F99;#3AD4D8;| 现有原型 | 新版患者服务台 |
|---|---|
| 16:9 三栏 | 单列手机布局 |
| 中央聊天主导 | 首页任务主导 |
| 技术感知矩阵 | 患者可理解的主动服务 |
| 底部通知条 | 消息中心 |
| 六步 Card 链 | 单一活动 TaskState + 患者服务台聚合投影 + Presentation + Command |
| 多区域同时展示 | 一屏一个主要行动 |
| Emoji 图标 | 统一医疗线性图标 |
| 工程错误信息 | 患者语言和可展开详情 |
采用“医院可信感 + AI 轻智能感”:
完整方案按两个演示场景组组织。
报告闭环主故事线:
患者进入首页
→ 报告事件到达
→ 查看医院原始报告
→ 患者授权
→ 可信报告校验
→ AI辅助解读
→ 安全行动
→ 结构化反馈
→ 报告更正后旧解读失效
就医闭环保持独立:
患者主动提出挂号
→ 自然语言查询号源
→ 确认挂号
→ 到院主动提示签到
→ 候诊状态更新
演示重点:
idle-v2.html 重构为患者服务台首页;chat-card-v2.html 重构为单一活动 TaskState 投影驱动的 AI 助手;card-confirm-v2.html 重构为通用 Command 确认层;v1/v2 文件仅保留用于历史对比,不代表生产环境存在双轨协议或双轨运行。
PatientWorkItem 投影变化,且不创建 TaskState。TaskState或患者服务台投影。activeAgentTaskProjection。FEAT-202606-006-agent-semantic-interaction 已完成设计评审并进入开发,
本设计可以采用其目标协议作为原型依据。
本设计仍为患者服务台原型 draft。完成页面线框、视觉稿和交互走查后,
再更新为 reviewing;不得仅凭方案演示稿声明移动端已经实现。