# 03|三项智能服务核心交互流程 ## 1. 统一任务状态 | 状态 | 患者理解 | 页面表现 | |---|---|---| | `NOT_STARTED` | 尚未开始 | 服务介绍/开始页 | | `IN_PROGRESS` | 正在填写或选择 | 对话、表单、卡片 | | `WAITING_USER` | 等待患者继续 | 首页待办 + 恢复按钮 | | `PROCESSING` | 系统正在分析或执行 | 进度页,不重复提交 | | `COMPLETED` | 已完成 | 结果页 + 健康记录 | | `FAILED` | 本次未完成 | 原因、重试、返回 | | `TRANSFERRED` | 建议人工处理 | 人工渠道或线下指引 | | `CANCELLED` | 已取消 | 只读记录,可重新发起 | ## 2. 智能分诊挂号 ### 2.1 目标 让患者以自然语音表达挂号诉求,在医疗安全门禁下由智能体持续补齐必要信息,再完成科室确认、医生/号源选择和 Mock 挂号。 ### 2.2 语音优先的开始方式 ```text 智能分诊挂号 ├── 语音表达完整或部分挂号诉求(主路径) ├── 文字输入(无障碍与安静场景备选) └── 结构化选项(智能体追问时的快捷回答) ``` 患者可以一次说出多个条件,例如: > 我头疼,帮我挂神经内科明天早上九点的专家号。 智能体先提取“症状、科室、日期、时间、号别”,发现医生缺失后继续追问。只有患者、科室、日期、时间、号别、医生偏好等必要字段完整,并通过急症安全检查后,才能查询号源和进入后续操作。 如果患者在任何一次语音中描述红旗症状,立即进入急症风险筛查。 ### 2.3 主流程 ```mermaid flowchart TD START["患者语音表达挂号诉求"] --> ASR["语音转文字并回显"] ASR --> EXTRACT["提取症状、科室、日期、时间、号别、医生偏好"] EXTRACT --> EMG["急症风险筛查"] EMG -->|高风险| URGENT["中止普通挂号
急诊/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 ```text 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 主流程 ```mermaid 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 现有接口按实际契约适配,门户侧抽象为: ```text tcm.createAssessment tcm.saveQuestionnaire tcm.uploadTongueImage tcm.analyzeTongueImage tcm.getAnalysisResult tcm.saveAssessmentResult ``` ## 4. 检验检查报告解读 ### 4.1 目标 支持患者上传或选择 Mock 报告,自动识别“检验报告/检查报告”,完成结构化解读、风险提示和就医建议。 ### 4.2 入口 - 首页“报告智能解读”; - 统一助手上传图片/PDF; - 首页“新报告待解读”待办; - 健康记录中的示例报告详情。 ### 4.3 主流程 ```mermaid 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 ```text 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` |