03-core-interaction-flows.md 9.8 KB

03|三项智能服务核心交互流程

1. 统一任务状态

状态 患者理解 页面表现
NOT_STARTED 尚未开始 服务介绍/开始页
IN_PROGRESS 正在填写或选择 对话、表单、卡片
WAITING_USER 等待患者继续 首页待办 + 恢复按钮
PROCESSING 系统正在分析或执行 进度页,不重复提交
COMPLETED 已完成 结果页 + 健康记录
FAILED 本次未完成 原因、重试、返回
TRANSFERRED 建议人工处理 人工渠道或线下指引
CANCELLED 已取消 只读记录,可重新发起

2. 智能分诊挂号

2.1 目标

让患者以自然语音表达挂号诉求,在医疗安全门禁下由智能体持续补齐必要信息,再完成科室确认、医生/号源选择和 Mock 挂号。

2.2 语音优先的开始方式

智能分诊挂号
├── 语音表达完整或部分挂号诉求(主路径)
├── 文字输入(无障碍与安静场景备选)
└── 结构化选项(智能体追问时的快捷回答)

患者可以一次说出多个条件,例如:

我头疼,帮我挂神经内科明天早上九点的专家号。

智能体先提取“症状、科室、日期、时间、号别”,发现医生缺失后继续追问。只有患者、科室、日期、时间、号别、医生偏好等必要字段完整,并通过急症安全检查后,才能查询号源和进入后续操作。

如果患者在任何一次语音中描述红旗症状,立即进入急症风险筛查。

2.3 主流程

flowchart TD
    START["患者语音表达挂号诉求"] --> ASR["语音转文字并回显"]
    ASR --> EXTRACT["提取症状、科室、日期、时间、号别、医生偏好"]
    EXTRACT --> EMG["急症风险筛查"]
    EMG -->|高风险| URGENT["中止普通挂号<br/>急诊/120/人工指引"]
    EMG -->|信息不足| ASK_RISK["语音追问风险信息"]
    ASK_RISK --> EMG
    EMG -->|可继续门诊| COMPLETE{"必要字段是否完整"}
    COMPLETE -->|否| ASK_SLOT["按缺失字段逐项语音追问"]
    ASK_SLOT --> EXTRACT
    COMPLETE -->|是| SUMMARY["展示结构化条件摘要"]
    SUMMARY --> SCHEDULE["Mock 查询医生与号源"]
    SCHEDULE --> SLOT["医生/号源卡片"]
    SLOT --> VERIFY["确认患者与挂号信息"]
    VERIFY --> LOCK["Mock 锁号"]
    LOCK -->|失败| REFRESH["提示号源变化并重新查询"]
    REFRESH --> SCHEDULE
    LOCK -->|成功| PAY["Mock 支付"]
    PAY -->|失败| PAY_RETRY["保留锁号倒计时并重试/取消"]
    PAY_RETRY --> PAY
    PAY -->|成功| SUCCESS["挂号成功结果"]
    SUCCESS --> RECORD["写入健康记录"]

2.4 急症安全门禁

第一轮优先收集:

  • 主要症状;
  • 何时开始;
  • 是否持续加重;
  • 意识是否清楚;
  • 是否呼吸困难;
  • 是否胸痛;
  • 是否大量出血;
  • 是否突发肢体无力、言语不清;
  • 是否为孕妇、儿童等特殊人群;
  • 可得的生命体征。

输出只使用:

结果 动作
EMERGENCY_NOW 停止普通挂号,提示立即急诊或拨打 120
EMERGENCY_RECOMMENDED 建议尽快前往急诊,展示院内急诊入口
OUTPATIENT_ALLOWED 继续普通分诊挂号
HUMAN_REVIEW 信息矛盾/不足,转人工或线下预检

P0 不输出正式“急诊一级/二级”。

2.5 结果页

必须展示:

  • Mock 挂号成功标识;
  • 患者姓名(脱敏);
  • 科室、医生、日期、时段、院区;
  • 模拟订单号;
  • 就诊提醒;
  • “返回首页”和“查看挂号记录”。

2.6 P0 MCP

triage.emergencyScreen
triage.recommendDepartments
hospital.listDepartments
hospital.listDoctors
his.searchSchedules
his.lockRegistrationSlot
his.createRegistration
his.cancelRegistrationLock
payment.createMockOrder
payment.queryMockStatus

3. 中医舌诊

3.1 目标

现有舌诊 MCP 已能接收图片并返回分析结果。P0 智能体重点负责:

  • 服务边界说明;
  • 体质和症候问答;
  • 舌象拍摄指导;
  • 调用现有 MCP;
  • 将问答信息与 MCP 结果组合成患者可理解的结果。

3.2 主流程

flowchart TD
    START["开始中医舌诊"] --> NOTICE["服务说明与知情提示"]
    NOTICE --> QUESTION["体质与症候分步问答"]
    QUESTION --> SAVE["阶段性保存"]
    SAVE --> GUIDE["舌象拍摄指导"]
    GUIDE --> UPLOAD["拍摄/上传舌象"]
    UPLOAD --> QUALITY["图片质量检查"]
    QUALITY -->|不合格| RETAKE["说明原因并重新拍摄"]
    RETAKE --> UPLOAD
    QUALITY -->|合格| MCP["调用现有舌诊 MCP"]
    MCP -->|失败| RETRY["保留问答和图片,允许重试"]
    RETRY --> MCP
    MCP -->|成功| FUSE["融合问答与舌诊结果"]
    FUSE --> RESULT["综合评估与健康建议"]
    RESULT --> RECORD["写入健康记录"]

3.3 问答分组

建议每屏 1 个主题、2~4 个问题:

  1. 主要健康诉求;
  2. 寒热与出汗;
  3. 饮食与脾胃;
  4. 睡眠、精力和情绪;
  5. 二便;
  6. 女性专项(条件出现);
  7. 既往疾病与当前用药。

允许“稍后继续”,恢复时回到未完成分组。

3.4 拍摄指导

上传前展示:

  • 自然光或稳定白光;
  • 舌体完整伸出;
  • 镜头与舌体保持合适距离;
  • 避免模糊、过曝、偏色;
  • 避免刚进食有色食物后立即拍摄。

质量失败必须说明具体原因,例如“图片模糊”“舌体未完整入镜”,不能只显示“上传失败”。

3.5 结果页

建议结构:

  1. 本次评估概览;
  2. 舌象特征;
  3. 体质或证候倾向;
  4. 支持证据和不一致证据;
  5. 生活方式建议;
  6. 需要中医师进一步确认的内容;
  7. 服务边界说明。

不得自动开具中药处方,不得将辅助评估表述为确诊。

3.6 MCP

现有接口按实际契约适配,门户侧抽象为:

tcm.createAssessment
tcm.saveQuestionnaire
tcm.uploadTongueImage
tcm.analyzeTongueImage
tcm.getAnalysisResult
tcm.saveAssessmentResult

4. 检验检查报告解读

4.1 目标

支持患者上传或选择 Mock 报告,自动识别“检验报告/检查报告”,完成结构化解读、风险提示和就医建议。

4.2 入口

  • 首页“报告智能解读”;
  • 统一助手上传图片/PDF;
  • 首页“新报告待解读”待办;
  • 健康记录中的示例报告详情。

4.3 主流程

flowchart TD
    START["开始报告解读"] --> SOURCE{"选择来源"}
    SOURCE -->|上传| UPLOAD["图片/PDF 上传"]
    SOURCE -->|示例| MOCK["选择 Mock 报告"]
    UPLOAD --> OWNER["确认属于当前 Mock 患者"]
    MOCK --> OWNER
    OWNER --> QUALITY["文件质量检查 + OCR"]
    QUALITY -->|不合格| RETAKE["说明问题并重新上传"]
    RETAKE --> UPLOAD
    QUALITY --> CLASSIFY{"报告类型"}

    CLASSIFY -->|检验报告| LAB["指标提取与名称/单位标准化"]
    LAB --> CRITICAL["危急风险规则检查"]
    CRITICAL -->|高风险| ALERT["优先展示就医提示"]
    CRITICAL -->|非高风险| PATTERN["异常指标与组合模式"]
    ALERT --> PATTERN
    PATTERN --> KNOWLEDGE["检索指标/组合知识库"]

    CLASSIFY -->|检查报告| EXAM["提取部位、所见、结论"]
    EXAM --> TERM["术语标准化"]
    TERM --> HIGH_RISK["高风险描述检查"]
    HIGH_RISK --> KNOWLEDGE2["检索检查类型知识库"]

    KNOWLEDGE --> RESULT["结构化结果页"]
    KNOWLEDGE2 --> RESULT
    RESULT --> RECORD["写入健康记录"]

4.4 检验报告 P0 范围

优先演示血常规,并准备:

  • 白细胞模块;
  • 红细胞/贫血模块;
  • 血小板专题模块;
  • 常见组合模式;
  • 检验前影响因素;
  • Mock 危急值规则。

血小板专题至少覆盖:

  • PLT、MPV、PDW、PCT;
  • 单项高低;
  • 组合变化;
  • 采血/血小板聚集等可能干扰;
  • 单次与趋势差异;
  • 出血表现追问;
  • 建议科室。

4.5 检查报告 P0 范围

选择 1~2 类示例即可,建议:

  • 甲状腺超声;
  • 胸部 CT。

解释:

  • 检查部位;
  • 报告所见;
  • 结论;
  • “考虑、倾向、不除外、建议随访”等确定程度;
  • 建议咨询的科室和问题。

P0 只解释文字报告,不声称分析原始医学影像。

4.6 风险提示

危急值和高风险描述必须由独立规则工具处理,不放在普通 RAG Prompt 中自由判断。

界面明确显示:

当前风险规则为演示配置;正式上线后以医院确认的规则为准。

4.7 结果页

固定六层:

  1. 一句话概览;
  2. 风险优先级;
  3. 异常指标/主要发现;
  4. 联合解读;
  5. 可能影响因素;
  6. 下一步行动建议和知识来源。

4.8 P0 MCP

report.listMockReports
report.getMockReport
file.checkQuality
file.ocr
report.classify
report.parseLaboratory
report.parseExamination
terminology.normalizeIndicators
report.checkCriticalValues
report.analyzeAbnormalPatterns
report.recommendDepartment
report.saveInterpretation

5. 三项服务的异常与恢复

场景 患者提示 系统动作
急症风险 明确停止普通挂号,提示急诊/120 任务转 TRANSFERRED,保存证据
号源变化 该时段已不可用,请重新选择 刷新号源,不丢失科室和医生
Mock 支付失败 支付未完成,可重试或取消 保留锁号倒计时
舌象模糊 指出模糊/偏色/未完整入镜 保留问答,重新上传
舌诊 MCP 失败 分析暂未完成,可稍后重试 任务转 FAILED/WAITING_USER
报告无法识别 指出文件类型/清晰度问题 重新上传或选择示例报告
报告风险 先展示行动建议,再展示解释 风险卡固定在结果顶部
用户离开页面 已为您保存进度 任务进入 WAITING_USER