| 状态 | 患者理解 | 页面表现 |
|---|---|---|
NOT_STARTED |
尚未开始 | 服务介绍/开始页 |
IN_PROGRESS |
正在填写或选择 | 对话、表单、卡片 |
WAITING_USER |
等待患者继续 | 首页待办 + 恢复按钮 |
PROCESSING |
系统正在分析或执行 | 进度页,不重复提交 |
COMPLETED |
已完成 | 结果页 + 健康记录 |
FAILED |
本次未完成 | 原因、重试、返回 |
TRANSFERRED |
建议人工处理 | 人工渠道或线下指引 |
CANCELLED |
已取消 | 只读记录,可重新发起 |
让患者以自然语音表达挂号诉求,在医疗安全门禁下由智能体持续补齐必要信息,再完成科室确认、医生/号源选择和 Mock 挂号。
智能分诊挂号
├── 语音表达完整或部分挂号诉求(主路径)
├── 文字输入(无障碍与安静场景备选)
└── 结构化选项(智能体追问时的快捷回答)
患者可以一次说出多个条件,例如:
我头疼,帮我挂神经内科明天早上九点的专家号。
智能体先提取“症状、科室、日期、时间、号别”,发现医生缺失后继续追问。只有患者、科室、日期、时间、号别、医生偏好等必要字段完整,并通过急症安全检查后,才能查询号源和进入后续操作。
如果患者在任何一次语音中描述红旗症状,立即进入急症风险筛查。
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["写入健康记录"]
第一轮优先收集:
输出只使用:
| 结果 | 动作 |
|---|---|
EMERGENCY_NOW |
停止普通挂号,提示立即急诊或拨打 120 |
EMERGENCY_RECOMMENDED |
建议尽快前往急诊,展示院内急诊入口 |
OUTPATIENT_ALLOWED |
继续普通分诊挂号 |
HUMAN_REVIEW |
信息矛盾/不足,转人工或线下预检 |
P0 不输出正式“急诊一级/二级”。
必须展示:
triage.emergencyScreen
triage.recommendDepartments
hospital.listDepartments
hospital.listDoctors
his.searchSchedules
his.lockRegistrationSlot
his.createRegistration
his.cancelRegistrationLock
payment.createMockOrder
payment.queryMockStatus
现有舌诊 MCP 已能接收图片并返回分析结果。P0 智能体重点负责:
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["写入健康记录"]
建议每屏 1 个主题、2~4 个问题:
允许“稍后继续”,恢复时回到未完成分组。
上传前展示:
质量失败必须说明具体原因,例如“图片模糊”“舌体未完整入镜”,不能只显示“上传失败”。
建议结构:
不得自动开具中药处方,不得将辅助评估表述为确诊。
现有接口按实际契约适配,门户侧抽象为:
tcm.createAssessment
tcm.saveQuestionnaire
tcm.uploadTongueImage
tcm.analyzeTongueImage
tcm.getAnalysisResult
tcm.saveAssessmentResult
支持患者上传或选择 Mock 报告,自动识别“检验报告/检查报告”,完成结构化解读、风险提示和就医建议。
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["写入健康记录"]
优先演示血常规,并准备:
血小板专题至少覆盖:
选择 1~2 类示例即可,建议:
解释:
P0 只解释文字报告,不声称分析原始医学影像。
危急值和高风险描述必须由独立规则工具处理,不放在普通 RAG Prompt 中自由判断。
界面明确显示:
当前风险规则为演示配置;正式上线后以医院确认的规则为准。
固定六层:
report.listMockReports
report.getMockReport
file.checkQuality
file.ocr
report.classify
report.parseLaboratory
report.parseExamination
terminology.normalizeIndicators
report.checkCriticalValues
report.analyzeAbnormalPatterns
report.recommendDepartment
report.saveInterpretation
| 场景 | 患者提示 | 系统动作 |
|---|---|---|
| 急症风险 | 明确停止普通挂号,提示急诊/120 | 任务转 TRANSFERRED,保存证据 |
| 号源变化 | 该时段已不可用,请重新选择 | 刷新号源,不丢失科室和医生 |
| Mock 支付失败 | 支付未完成,可重试或取消 | 保留锁号倒计时 |
| 舌象模糊 | 指出模糊/偏色/未完整入镜 | 保留问答,重新上传 |
| 舌诊 MCP 失败 | 分析暂未完成,可稍后重试 | 任务转 FAILED/WAITING_USER |
| 报告无法识别 | 指出文件类型/清晰度问题 | 重新上传或选择示例报告 |
| 报告风险 | 先展示行动建议,再展示解释 | 风险卡固定在结果顶部 |
| 用户离开页面 | 已为您保存进度 | 任务进入 WAITING_USER |