文档版本:v1.0
生成时间:2026-04-01
合作方向:医疗专用机器人联合解决方案
| 维度 | AI 智慧医疗(我方) | 猎户星空(合作方) |
|---|---|---|
| 核心能力 | AI 中台、门诊/住院/体检智能体集群、BI 智能体 | 机器人硬件、RobotOS 操作系统、全国销售网络 |
| 技术栈 | RAG、MCP、知识库、专精模型训练 | SLAM 导航、语音交互、多模态感知 |
| 市场资源 | 医院客户资源、医疗行业 Know-how | 全国渠道、酒店/餐饮/政务场景经验 |
| 产品形态 | 软件 + AI 能力 | 硬件 + 基础 OS |
采用模式:基于猎户星空 RobotOS 开发医疗专用 APK,借助其全国销售网络推广
分工边界:
患者走近机器人,通过语音或触屏描述症状,机器人分析后推荐对应科室,并引导患者前往挂号或科室位置。
本地端 API(APK/OPK):
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
WakeupAndPreWakeupStartCheckComponent |
功能组件-人脸识别 | 检测患者走近并唤醒机器人 |
speechApi.setRecognizable(true) |
基础接口-语音 | 开启语音识别 |
speechApi.setRecognizeMode(true) |
基础接口-语音 | 设置为持续识别模式 |
SkillCallback.onListenCallback |
语音回调 | 接收 ASR 识别结果 |
speechApi.playText() |
基础接口-语音 | TTS 播报导诊结果 |
NavigationComponent |
功能组件-导航 | 引导患者到挂号处或科室 |
RobotApi.getPlaceList() |
基础接口-地图 | 获取所有科室位置点 |
服务端 API(远程控制):
| API 名称 | 用途 |
|---|---|
POST /robot/control/tts |
远程触发导诊语音播报 |
POST /robot/control/navigate |
远程触发导航到指定科室 |
步骤 1: 患者检测与唤醒
├── 调用 WakeupAndPreWakeupStartCheckComponent
├── 参数: maxDistance=3m, wakeupFaceDistance=1.3m, wakeupFaceAngleX=45°
├── 状态码 32710001: 检测到患者走近
└── 触发: 机器人抬头、亮屏、播放欢迎语
步骤 2: 语音交互开启
├── 调用 speechApi.setRecognizable(true) 开启语音识别
├── 调用 speechApi.setRecognizeMode(true) 设置持续识别
├── 展示 UI 提示: "请描述您的症状"
└── 调用 speechApi.playText("您好,我是智能导诊助手,请描述您的症状") 播放欢迎语
步骤 3: 症状采集与 AI 分析
├── 患者在 Voice.onListenCallback 中说话
├── 获取 ASR 文本结果
├── 调用我方 AI 中台 API: 症状 → 科室推荐
│ └── 输入: "头痛、发烧"
│ └── 输出: {科室: "神经内科", 置信度: 0.92, 建议: "..."}
└── 获取科室位置: 调用 RobotApi.getPlaceList() 查询科室坐标
步骤 4: 导诊结果播报
├── 调用 speechApi.playText() 播报:
│ └── "根据您的症状,建议挂神经内科。神经内科在3楼东侧,需要我带您过去吗?"
└── 屏幕同步显示: 科室介绍、医生排班、预计等待时间
步骤 5: 引导导航(患者同意)
├── 患者说"带我去" → NLP 解析 intent=guide_to
├── 调用 NavigationComponent
├── 参数: destination="神经内科候诊区", param_linear_speed=0.8, param_angular_speed=1.2
├── 状态监听:
│ ├── 32730001: 开始导航
│ ├── 32730005: 距离上报(更新屏幕剩余距离)
│ ├── 32730004: 遇到障碍物(语音播报"请让一让")
│ └── 32610007: 到达目标点
└── 到达后: speechApi.playText("神经内科到了,请在此等候叫号")
步骤 6: 结束交互
├── 调用 speechApi.setRecognizable(false) 关闭语音识别
├── 机器人进入待机巡逻模式(可选 CruiseComponent)
└── 等待下一个患者唤醒
maxDistance 和 wakeupFaceDistance 参数患者在挂号前,机器人通过多轮对话采集病史、症状、过敏史等信息,生成结构化预问诊报告,同步给医生。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
speechApi.setRecognizable(true) |
基础接口-语音 | 开启语音识别 |
SkillCallback.onListenCallback |
语音回调 | 接收患者回答 |
speechApi.playText() |
基础接口-语音 | 播报问诊问题 |
global.recognition.setShow(true) |
ASR 可视化 | 展示识别文字上屏 |
PersonAppearComponent |
功能组件-人脸 | 确认患者仍在交互 |
服务端 API:
| API 名称 | 用途 |
|---|---|
POST /robot/control/tts |
远程推送问诊问题 |
POST /enterprise/person/search |
人脸识别确认患者身份 |
步骤 1: 启动预问诊流程
├── 触发条件: 患者说"我要预问诊" 或 点击屏幕按钮
├── 调用 PersonAppearComponent 确认患者身份
├── 调用 speechApi.playText("好的,我将为您进行预问诊,请回答以下问题")
└── 屏幕展示: 预问诊进度条(0/8 问题)
步骤 2: 多轮对话问诊(循环 8-10 个问题)
├── 第 1 轮: TTS "请问您哪里不舒服?"
│ ├── 开启语音识别: speechApi.setRecognizable(true)
│ ├── 展示 ASR 文字: global.recognition.setShow(true)
│ ├── 患者回答 → onListenCallback 获取文本
│ └── 调用我方 AI: 症状实体提取 → 存储
├── 第 2 轮: TTS "这种情况持续多久了?"
│ └── 同上流程,提取时间实体
├── 第 3 轮: TTS "有没有过敏史?"
│ └── 同上流程...
└── ...(继续后续问题)
步骤 3: 信息确认
├── 调用我方 AI 生成预问诊摘要
├── 屏幕展示完整信息供患者确认
├── TTS "请确认以上信息是否正确?"
└── 患者说"正确"或"修改第X项"
步骤 4: 数据同步
├── 调用我方 API: 预问诊数据 → HIS 系统
├── 生成预问诊报告 PDF
└── TTS "预问诊完成,信息已同步给医生"
步骤 5: 引导下一步
├── 询问: "需要我帮您挂号吗?"
└── 根据回答进入挂号流程或结束
speechApi.setRecognizeMode(true) 支持长句识别患者通过机器人完成挂号、缴费、医保结算,需要对接读卡器和支付模块。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
speechApi.playText() |
基础接口-语音 | 操作指引播报 |
OpenAppApi.openThirdPartyApp() |
基础接口-应用 | 调起支付 APP |
AppManager.restartApp() |
基础接口-应用 | 返回主界面 |
LightApi.playEffect() |
基础接口-灯带 | 操作成功/失败提示 |
硬件接口(需定制):
| 接口 | 说明 |
|---|---|
| 医保卡读卡器 | 读取社保卡/就诊卡信息 |
| 扫码器 | 扫描患者手机支付码 |
| 打印机 | 打印挂号单/发票/凭条 |
服务端 API:
| API 名称 | 用途 |
|---|---|
POST /enterprise/person/search |
人脸识别确认身份 |
POST /robot/control/tts |
远程播报操作结果 |
步骤 1: 启动挂号流程
├── 患者说"我要挂号"或点击屏幕
├── TTS "请刷医保卡或就诊卡,或说出您的身份证号"
└── 屏幕展示: 刷卡区域提示 + 身份证号输入键盘
步骤 2: 身份识别(三选一)
├── 方式 A: 刷医保卡
│ ├── 调用读卡器硬件接口(需对方提供 SDK)
│ ├── 读取卡号 → 调用 HIS 接口获取患者信息
│ └── 屏幕展示: 患者姓名、医保类型
├── 方式 B: 人脸识别
│ ├── 调用 RecognizeComponent
│ ├── 识别成功 → 获取患者 ID
│ └── 屏幕确认: "请问您是 XXX 吗?"
└── 方式 C: 身份证号
├── 患者语音报号或触屏输入
└── 调用 HIS 接口验证身份
步骤 3: 科室选择
├── 屏幕展示: 科室列表(可语音搜索)
├── 患者选择科室
├── 调用 HIS 接口: 获取医生排班、号源
└── 屏幕展示: 可选医生、时间段、费用
步骤 4: 确认挂号
├── 患者确认
├── 调用 HIS 接口: 锁定号源
├── TTS "请确认支付 XX 元"
└── 屏幕展示: 支付方式选择(医保/微信/支付宝)
步骤 5: 支付处理
├── 医保支付:
│ ├── 调用医保读卡器
│ ├── 输入医保密码(屏幕键盘)
│ └── 调用医保结算接口
├── 微信支付:
│ ├── 屏幕展示收款二维码
│ ├── 患者手机扫码支付
│ └── 轮询支付结果
└── 支付宝支付: 同上
步骤 6: 打印凭条
├── 支付成功
├── 调用打印机硬件接口打印挂号单
├── TTS "挂号成功,请取走凭条,到 X 楼 XX 科室候诊"
├── 灯带效果: LightApi.playEffect("light_effect_green_light") 绿色常亮 3 秒
└── 屏幕展示: 科室位置地图 + 导航按钮
步骤 7: 引导就诊
├── 患者点击"带我去"
├── 调用 NavigationComponent 导航到科室
└── 或患者自行离开,机器人恢复待机
患者在检验科做完检查后,机器人帮助查询报告、解读异常指标、提供健康建议。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
speechApi.playText() |
基础接口-语音 | 解读结果播报 |
speechApi.playStreamText() |
基础接口-语音 | 长文本流式播报 |
ExDisplay |
UI 组件 | 大屏展示报告内容 |
ImageFrame |
UI 组件 | 展示报告趋势图 |
服务端 API:
| API 名称 | 用途 |
|---|---|
POST /robot/control/tts |
远程触发报告解读 |
GET /robot/info |
获取机器人状态确保在线 |
步骤 1: 报告查询触发
├── 触发方式:
│ ├── A: 患者说"查报告"
│ ├── B: 检验科推送"报告已出"消息到机器人
│ └── C: 患者刷卡/人脸识别自动查询
└── 身份确认: 同 2.3 步骤 2
步骤 2: 获取报告数据
├── 调用 LIS/PACS 接口查询最新报告
├── 获取报告列表(血常规、尿常规、B超等)
└── 屏幕展示: 报告列表,患者选择查看
步骤 3: AI 解读报告
├── 调用我方 AI 中台: 报告数据 → 解读结果
│ ├── 输入: 血常规各项指标
│ └── 输出: {
│ 异常项: ["白细胞偏高", "血红蛋白偏低"],
│ 解读: "白细胞偏高可能提示...",
│ 建议: "建议到内科进一步检查..."
│ }
└── 生成可视化图表: 历史指标趋势对比
步骤 4: 结果展示与播报
├── 屏幕展示(ExDisplay 组件):
│ ├── 报告摘要卡片
│ ├── 异常指标高亮
│ ├── 历史趋势图(ImageFrame 动画)
│ └── 医生建议文本
└── TTS 播报(流式):
└── speechApi.playStreamText("您的血常规报告显示...")
步骤 5: 交互问答
├── 患者问"白细胞偏高是什么意思?"
├── NLP 解析 → 调用知识库 RAG
├── TTS 回答专业解释
└── 屏幕同步展示相关医学知识
步骤 6: 后续引导
├── 如有异常: "需要我帮您预约内科医生吗?"
├── 如无异常: "各项指标正常,请保持健康生活方式"
└── 提供报告打印选项(调用打印机)
患者询问某个科室或设施位置,机器人提供语音指引,并可选择"带我去"的引领模式。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
NavigationComponent |
功能组件-导航 | 导航到指定位置 |
LeadingTrackComponent |
功能组件-引领 | 人跟机器人走 |
RobotApi.getPlaceList() |
基础接口-地图 | 获取所有位置点 |
locationEstimateUtil.isInPlace() |
基础接口-地图 | 判断是否到达 |
speechApi.playText() |
基础接口-语音 | 导航指引播报 |
梯控相关(跨楼层):
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
NavigationElevatorComponent |
高级功能-梯控 | 导航乘梯 |
RobotApi.getMultiFloorConfigAndCommonPose() |
基础接口-地图 | 获取多楼层点位 |
步骤 1: 目的地询问
├── 患者说"我要去内科"或"卫生间在哪里"
├── NLP 解析: intent=navigation, slot={destination: "内科"}
└── 调用 RobotApi.getPlaceList() 查询匹配位置点
步骤 2: 路径规划与播报
├── 同楼层导航:
│ ├── TTS "内科在 3 楼东侧,距离约 150 米"
│ ├── 屏幕展示: 地图路径预览
│ └── 询问: "需要我带您过去吗?"
└── 跨楼层导航:
├── TTS "内科在 5 楼,我需要乘电梯上去"
├── 屏幕展示: 楼层切换提示
└── 询问: "需要我带您过去吗?"
步骤 3: 引领模式(患者同意)
├── 调用 LeadingTrackComponent
├── 参数:
│ ├── lostTime=2000ms(判定丢失时间)
│ ├── farawayDistance=2.8m(超距上报距离)
│ └── maxDistance=3m(人脸检测范围)
├── 状态监听:
│ ├── 32720007: 找到目标(开始引领)
│ ├── 32720001: 追踪成功(正常引领中)
│ ├── 32720004: 目标距离过远(播报"请跟紧我")
│ ├── 32720009: 长时间超距(停下等待)
│ └── 32720008: 目标丢失(播报"我在这里等您")
└── 行进中 TTS: "请跟我来"、"前面左转"、"电梯在这边"
步骤 4: 跨楼层处理(如涉及)
├── 到达电梯口
├── 调用 NavigationElevatorComponent
├── 状态监听:
│ ├── 32750004: 到达电梯门
│ ├── 32750005: 进入电梯并转向
│ └── 32750009: 离开电梯
├── 出电梯后: 重新定位 → 继续引领
└── TTS "我们已经到 5 楼了,继续跟我走"
步骤 5: 到达确认
├── 调用 locationEstimateUtil.isInPlace("内科候诊区", 1.0)
├── 返回 true: 确认到达
├── TTS "内科到了,请在此等候叫号。祝您早日康复!"
├── 屏幕展示: 内科医生排班、预计等待时间
└── 机器人恢复待机
lostTime 和 farawayDistance机器人在门诊大厅巡逻,主动发现需要帮助的患者,提供咨询服务。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
CruiseComponent |
功能组件-巡逻 | 多点循环巡逻 |
WakeupAndPreWakeupStartCheckComponent |
功能组件-人脸 | 检测徘徊患者 |
PersonAppearComponent |
功能组件-人脸 | 主动找人 |
StandardFaceTrackComponent |
功能组件-追踪 | 注视患者 |
speechApi.playText() |
基础接口-语音 | 主动问候 |
步骤 1: 巡逻路线设置
├── 定义巡逻点: ["门诊入口", "挂号处", "药房", "检验科", "电梯厅"]
├── 调用 CruiseComponent
├── 参数:
│ ├── cruise_route_list='["门诊入口","挂号处","药房","检验科","电梯厅"]'
│ └── cruise_point_avoid_time_out=30000(每点停留 30 秒)
└── 状态监听: 32730013 开始巡逻、32730014 到达某点
步骤 2: 主动发现(每巡逻点停留时)
├── 调用 PersonAppearComponent
├── 参数: maxDistance=3m, isNeedBody=true(检测人体)
├── 检测到徘徊患者(停留超过 10 秒)
└── 触发主动服务
步骤 3: 主动问候
├── 调用 StandardFaceTrackComponent 注视患者
├── TTS "您好,有什么可以帮您的吗?"
├── 屏幕展示: 常见问题快捷按钮
└── 开启语音识别等待患者回应
步骤 4: 服务提供
├── 患者提问 → 进入对应服务流程(导诊/挂号/查报告等)
├── 患者无回应 → 10 秒后恢复巡逻
└── 服务完成 → 询问"还有其他需要帮助的吗?"
步骤 5: 继续巡逻
├── 恢复 CruiseComponent 巡逻
└── 循环执行步骤 2-4
新入院患者在住院部大厅,机器人协助完成入院登记、科室指引、宣教告知。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
WakeupAndPreWakeupStartCheckComponent |
功能组件-人脸 | 检测新患者 |
RegisterComponent |
功能组件-人脸 | 人脸注册(住院期间识别) |
NavigationComponent |
功能组件-导航 | 引导到病房 |
speechApi.playText() |
基础接口-语音 | 入院宣教播报 |
ExDisplay |
UI 组件 | 展示入院须知 |
步骤 1: 检测新入院患者
├── 在住院部大厅巡逻或待机
├── 检测到携带行李的患者(Wakeup + 人体检测)
├── TTS "您好,欢迎入住本院,我是您的智能陪护助手"
└── 屏幕展示: 入院服务菜单
步骤 2: 身份确认与人脸注册
├── 患者刷就诊卡/报身份证号
├── 调用 HIS 接口获取入院信息
├── 屏幕确认: "请问您是 XXX,入住 XX 科室 X 床吗?"
├── 患者确认后 → 调用 RegisterComponent 注册人脸
│ └── 参数: personName=患者姓名
└── 注册成功: 住院期间可通过人脸识别调用服务
步骤 3: 入院宣教
├── TTS 播报入院须知(流式 TTS)
├── 屏幕展示(ExDisplay):
│ ├── 探视时间
│ ├── 订餐方式
│ ├── 紧急呼叫方法
│ └── 病房设施使用说明
└── 患者可语音提问
步骤 4: 引导到病房
├── 询问: "需要我带您去病房吗?"
├── 患者同意 → 调用 NavigationComponent
├── 导航到 "XX 科 X 病区"
├── 到达后 TTS "您的病房到了,祝您早日康复"
└── 机器人返回大厅
机器人按医嘱或护理计划,定时到病房巡视,采集患者生命体征、询问状况、记录反馈。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
CruiseComponent |
功能组件-巡逻 | 按病房路线巡检 |
NavigationComponent |
功能组件-导航 | 导航到指定病房 |
PersonAppearComponent |
功能组件-人脸 | 确认患者身份 |
speechApi.playText() |
基础接口-语音 | 询问患者状况 |
SkillCallback.onListenCallback |
语音回调 | 接收患者回答 |
cronParser.startCronTask() |
高级功能-定时 | 设置定时查房 |
IoT 设备对接(需定制):
| 设备 | 接口 | 说明 |
|---|---|---|
| 血压计 | 蓝牙/WiFi | 自动采集血压数据 |
| 体温计 | 蓝牙/WiFi | 自动采集体温数据 |
| 血氧仪 | 蓝牙/WiFi | 自动采集血氧数据 |
| 床头呼叫器 | 协议对接 | 接收呼叫信号 |
步骤 1: 定时任务设置
├── 调用 cronParser.startCronTask
├── 参数:
│ ├── id="morning_rounds"
│ ├── grammar="0 8 * * *"(每天早上 8 点)
│ └── program="start_rounds"
└── 定时触发查房流程
步骤 2: 开始巡检
├── 调用 CruiseComponent 按病房顺序巡逻
├── 或调用 NavigationComponent 逐个前往指定病房
├── 到达病房门口 → 播报"查房了"
步骤 3: 患者身份确认
├── 进入病房
├── 调用 PersonAppearComponent 识别患者人脸
├── 匹配住院患者数据库
└── 确认身份后调取患者病历
步骤 4: 生命体征采集
├── 方式 A: 自动采集(IoT 设备)
│ ├── 机器人携带便携式血压计/体温计
│ ├── 患者自主测量或护士协助
│ └── 蓝牙传输数据到机器人
├── 方式 B: 语音询问
│ ├── TTS "请问您今天的体温是多少?"
│ ├── 患者语音回答
│ └── ASR 识别并记录
└── 数据暂存,待统一上传
步骤 5: 状况询问
├── TTS "您今天感觉怎么样?有没有不舒服?"
├── 患者回答 → NLP 解析
├── 关键信息提取:
│ ├── 疼痛部位、程度
│ ├── 睡眠质量
│ ├── 饮食情况
│ └── 特殊不适
└── 记录到查房记录
步骤 6: 医嘱确认
├── TTS "您今天的用药是 XXX,请按时服用"
├── 展示药品图片和服用说明
├── 询问: "您明白了吗?"
└── 患者确认
步骤 7: 数据上传与异常预警
├── 调用我方 API: 查房数据 → 护理系统
├── AI 分析异常指标:
│ ├── 体温 > 38°C → 标记发热
│ ├── 血压异常 → 标记高血压/低血压
│ └── 患者主诉严重不适 → 标记需医生查看
└── 异常自动推送给责任护士
步骤 8: 继续巡检
├── 离开病房 → 前往下一间
└── 循环步骤 3-7
步骤 9: 巡检完成
├── 所有病房巡检完毕
├── 生成巡检报告
├── 自动回充(ChargeStartComponent)
└── 等待下次定时任务
机器人从药房运送药品到病房,或从病房运送检验标本到检验科。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
NavigationComponent |
功能组件-导航 | 导航到药房/病房/检验科 |
NavigationElevatorComponent |
高级功能-梯控 | 跨楼层配送 |
PersonAppearComponent |
功能组件-人脸 | 确认接收人身份 |
speechApi.playText() |
基础接口-语音 | 通知取药 |
LightApi.playEffect() |
基础接口-灯带 | 配送中状态提示 |
硬件接口(需定制):
| 接口 | 说明 |
|---|---|
| 货仓电控锁 | 药品/标本存放,到达后解锁 |
| 重量传感器 | 检测物品是否放入/取出 |
| 温控模块(可选) | 冷链药品保温 |
服务端 API:
| API 名称 | 用途 |
|---|---|
POST /robot/task/create |
创建配送任务 |
POST /robot/control/navigate |
远程触发配送 |
步骤 1: 接收配送任务
├── 触发方式:
│ ├── A: 药房系统推送 "X 床药品待配送"
│ ├── B: 护士站通过服务端 API 下发任务
│ └── C: 护士在机器人屏幕创建任务
└── 调用 POST /robot/task/create 创建任务
步骤 2: 前往取货点
├── 任务队列排序(优先级、路径优化)
├── 调用 NavigationComponent 导航到药房
├── 到达后 TTS "药品配送员,请放入药品"
├── 货仓门打开(电控锁解锁)
├── 药师放入药品 → 重量传感器确认
├── 货仓门关闭上锁
└── 屏幕展示: 目的地、药品清单
步骤 3: 配送途中
├── 调用 NavigationComponent 导航到目标病房
├── 跨楼层时: NavigationElevatorComponent 乘梯
├── 灯带提示: LightApi.playEffect("light_effect_blue_breath") 蓝色呼吸灯
├── 途中避障、等待电梯
└── 屏幕展示: "配送中,请勿打扰"
步骤 4: 到达通知
├── 到达病房门口
├── TTS "X 床药品已送到,请护士查收"
├── 屏幕展示: 药品清单、接收码
└── 等待护士接收
步骤 5: 身份确认与交付
├── 护士刷卡/人脸识别确认身份
├── 货仓门解锁
├── 护士取走药品
├── 重量传感器确认已取
├── 护士屏幕签收
└── TTS "配送完成,祝您早日康复"
步骤 6: 返回或继续
├── 如有下一任务 → 前往下一地点
├── 如无任务 → 返回护士站/充电站
└── 任务状态同步到药房系统
患者通过床头呼叫器呼叫,机器人接收呼叫并前往病房响应。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
NavigationComponent |
功能组件-导航 | 快速前往呼叫病房 |
speechApi.playText() |
基础接口-语音 | 询问患者需求 |
speechApi.setRecognizable(true) |
基础接口-语音 | 开启语音交互 |
FaceTrackComponent |
功能组件-追踪 | 追踪呼叫患者 |
IoT 对接:
| 设备 | 接口 | 说明 |
|---|---|---|
| 床头呼叫器 | 协议对接 | 接收呼叫信号和床位号 |
步骤 1: 接收呼叫信号
├── 床头呼叫器触发
├── 通过 IoT 协议推送呼叫信息到机器人
│ └── {床位: "X科X床", 类型: "普通呼叫/紧急呼叫", 时间: "..."}
└── 机器人判断当前状态:
├── 空闲 → 立即响应
└── 忙碌 → 队列排队或通知护士站
步骤 2: 快速响应
├── TTS "收到呼叫,马上过来"
├── 调用 NavigationComponent 快速导航到呼叫床位
├── 参数: param_linear_speed=1.2(最大速度)
└── 屏幕展示: "紧急呼叫响应中"
步骤 3: 到达与确认
├── 到达病房
├── TTS "您好,我是响应您的呼叫,请问需要什么帮助?"
├── 调用 FaceTrackComponent 追踪患者位置
└── 开启语音识别等待患者回应
步骤 4: 需求处理
├── 患者说"我要喝水"
│ ├── NLP 解析 intent=need_water
│ ├── TTS "好的,我通知护士给您送水"
│ ├── 推送消息到护士站系统
│ └── 记录呼叫处理结果
├── 患者说"我不舒服"
│ ├── NLP 解析 intent=feel_bad
│ ├── TTS "请描述一下您的症状"
│ ├── 多轮对话采集症状
│ ├── AI 分析紧急程度
│ └── 紧急呼叫推送给责任护士/医生
└── 患者说"没事,按错了"
└── TTS "好的,如有需要随时呼叫"
步骤 5: 离开或留守
├── 简单需求处理完 → 离开返回
├── 需等待护士 → 在病房门口留守
│ └── 到达护士后交接
└── 紧急状况 → 持续陪伴直到医护人员到达
患者出院时,机器人协助完成出院宣教、费用查询、结算引导。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
RecognizeComponent |
功能组件-人脸 | 识别出院患者 |
NavigationComponent |
功能组件-导航 | 引导到结算处 |
speechApi.playText() |
基础接口-语音 | 出院宣教播报 |
ExDisplay |
UI 组件 | 展示出院须知和费用清单 |
步骤 1: 检测出院患者
├── HIS 系统推送 "X 床患者今日出院"
├── 机器人在病区巡逻时识别该患者
├── 或患者主动说"我要出院"
└── 触发出院服务流程
步骤 2: 出院宣教
├── TTS "恭喜您康复出院,以下是出院注意事项"
├── 屏幕展示(ExDisplay):
│ ├── 出院带药清单及服用说明
│ ├── 复诊时间和预约方式
│ ├── 居家护理建议
│ └── 紧急联系方式
└── 流式 TTS 播报宣教内容
步骤 3: 费用查询
├── 患者询问"我的住院费用是多少?"
├── 调用 HIS 接口查询费用明细
├── 屏幕展示: 费用分类图表
│ ├── 药品费、检查费、治疗费
│ ├── 医保报销金额
│ └── 自付金额
└── TTS 播报费用 summary
步骤 4: 结算引导
├── 询问: "需要我带您去结算处吗?"
├── 患者同意 → 调用 NavigationComponent
├── 导航到 "住院结算处"
├── 途中 TTS: "结算处在一楼大厅,请携带医保卡和押金条"
└── 到达后: "结算处到了,请排队办理"
步骤 5: 服务评价(可选)
├── 结算完成后
├── 机器人询问: "请对我的服务进行评价"
├── 屏幕展示: 五星评价 + 语音反馈
└── 收集评价数据用于服务改进
夜间时段(22:00-06:00),机器人在病区巡逻,监测异常状况,保障患者安全。
本地端 API:
| API 名称 | 所属模块 | 功能说明 |
|---|---|---|
cronParser.startCronTask() |
高级功能-定时 | 设置夜间定时巡检 |
CruiseComponent |
功能组件-巡逻 | 夜间静音巡逻 |
PersonAppearComponent |
功能组件-人脸 | 检测异常人员活动 |
RobotApi.getBatteryLevel() |
基础接口-电源 | 监控电量 |
ChargeStartComponent |
功能组件-充电 | 低电量自动回充 |
硬件接口:
| 接口 | 说明 |
|---|---|
| 夜视摄像头 | 低光照环境下的视觉检测 |
| 红外传感器 | 人体活动检测 |
步骤 1: 定时启动
├── 调用 cronParser.startCronTask
├── 参数:
│ ├── id="night_patrol"
│ ├── grammar="0 22 * * *"(每晚 22:00 启动)
│ └── program="start_night_patrol"
└── 夜间巡检模式启动
步骤 2: 静音巡逻
├── 调用 CruiseComponent
├── 参数调整:
│ ├── 关闭 TTS 播报(避免打扰患者休息)
│ ├── 降低运动速度(减少噪音)
│ └── 关闭灯带特效(仅保留必要指示灯)
└── 按设定路线巡逻
步骤 3: 异常检测
├── 视觉检测(夜视摄像头):
│ ├── 检测走廊跌倒人员
│ ├── 检测异常聚集
│ └── 检测烟雾/火焰(如有烟雾传感器)
├── 声音检测:
│ ├── 检测呼救声
│ ├── 检测异常响动
│ └── 触发后前往查看
└── 人员识别:
└── 检测非医护人员在病区徘徊
步骤 4: 异常响应
├── 发现异常 → 立即上报护士站
│ ├── 推送消息: "X 病区发现异常,请查看"
│ ├── 附带现场照片/视频
│ └── 机器人留守现场
├── 患者呼叫 → 正常响应
│ └── 但使用更低音量交互
└── 无异常 → 继续巡逻
步骤 5: 电量管理
├── 定时检查电量: RobotApi.getBatteryLevel()
├── 电量 < 30% → 暂停巡逻
├── 调用 ChargeStartComponent 自动回充
├── 充电完成后 → 恢复巡逻
└── 确保 06:00 前完成充电
步骤 6: 晨间交接
├── 06:00 定时任务触发
├── 生成夜间巡检报告
│ ├── 巡逻次数和时间
│ ├── 发现的异常情况
│ └── 处理结果
├── 推送给护士长
└── 机器人切换日间模式
┌─────────────────────────────────────────────────────────────┐
│ 应用层(我方开发) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 门诊机器人 │ │ 住院机器人 │ │ 管理后台 │ │
│ │ APK/OPK │ │ APK/OPK │ │ Web/App │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ AI 能力层(我方) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ AI 中台 │ │ 智能体集群 │ │ 知识库 RAG │ │
│ │ 模型仓库 │ │ 门诊/住院/体检│ │ MCP 仓库 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ RobotOS 能力层(对方) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 导航巡逻 │ │ 语音交互 │ │ 视觉感知 │ │
│ │ Navigation │ │ TTS/ASR │ │ 人脸/追踪 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 硬件抽象层(对方) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 运动底盘 │ │ 传感器组 │ │ 扩展外设 │ │
│ │ 电机/轮子 │ │ 雷达/摄像头 │ │ 读卡器/打印 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
患者语音/触屏 → RobotOS ASR → NLP 解析 → 我方 AI 中台 → 业务处理
↓
机器人控制 ← RobotOS API ← 指令生成 ← 结果返回 ← 知识库/HIS
| 系统 | 对接方式 | 数据交换 |
|---|---|---|
| HIS | REST API/HL7 | 患者信息、挂号、医嘱 |
| LIS | REST API | 检验报告 |
| PACS | REST API/DICOM | 影像报告 |
| 护理系统 | REST API | 查房记录、护理计划 |
| 药房系统 | REST API | 药品信息、配送任务 |
| 医保系统 | 专用接口 | 医保结算 |
| 床头呼叫器 | IoT 协议 | 呼叫信号 |
| 生命体征设备 | 蓝牙/WiFi | 体征数据 |
| 需求项 | 规格要求 | 对接方式 |
|---|---|---|
| 支持卡类型 | 社保卡、就诊卡、身份证 | 需提供 Android SDK |
| 通信接口 | USB/串口 | 标准 HID 或自定义协议 |
| 读取内容 | 卡号、姓名、医保类型 | 返回结构化数据 |
| 安全要求 | 符合医保安全规范 | 加密传输 |
| 需求项 | 规格要求 | 对接方式 |
|---|---|---|
| 打印类型 | 热敏打印 | ESC/POS 指令集 |
| 纸张规格 | 80mm 宽卷纸 | 自动切纸 |
| 打印内容 | 挂号单、发票、凭条、报告 | 支持文字/二维码 |
| 装纸方式 | 前开盖更换 | 易维护设计 |
| 需求项 | 规格要求 | 对接方式 |
|---|---|---|
| 支持电梯 | 主流品牌(三菱、奥的斯、日立等) | RS485/Modbus/自定义 |
| 控制功能 | 呼梯、选层、开门 | 协议对接 |
| 安全认证 | 通过电梯厂商认证 | 符合特种设备规范 |
| 需求项 | 规格要求 | 对接方式 |
|---|---|---|
| 容量 | 不少于 20 盒药品 | 内部货架设计 |
| 电控锁 | 独立控制 | GPIO/串口控制 |
| 传感器 | 重量检测、门状态 | 模拟/数字信号 |
| 温控(可选) | 2-8°C 冷藏 | 半导体制冷 |
| Domain | Intent | Slot | 示例语句 |
|---|---|---|---|
| navigation | guide_to | destination | "带我去内科" |
| navigation | query_location | place | "卫生间在哪里" |
| registration | register | department, doctor | "我要挂内科专家号" |
| inquiry | pre_diagnosis | symptom | "我头痛发烧" |
| report | query_report | report_type | "查我的血常规报告" |
| payment | pay | amount, method | "我要缴费" |
| call | emergency_call | room, type | "呼叫护士" |
| delivery | request_delivery | item, destination | "送药到 X 床" |
场景: 预问诊
Bot: 请问您哪里不舒服?
User: 我头痛
Bot: 头痛的具体位置是?(额头/两侧/后脑勺)
User: 额头
Bot: 这种情况持续多久了?
...
| 周次 | 任务 | 产出 |
|---|---|---|
| 1-2 | 申请开发者账号、获取 SDK、搭建环境 | 开发环境就绪 |
| 3-4 | 开发基础 Demo:导航、语音、人脸 | 可运行 Demo |
| 5-6 | 医院地图建模、点位标定 | 地图数据 |
| 7-8 | 样板医院对接、需求确认 | 需求文档 |
| 月次 | 任务 | 产出 |
|---|---|---|
| 1 | 门诊导诊 APK 开发 | v1.0 版本 |
| 2 | 自助挂号缴费集成 | v1.1 版本 |
| 3 | 住院查房 APK 开发 | v2.0 版本 |
| 4 | HIS 系统对接联调 | 集成测试报告 |
| 月次 | 任务 | 产出 |
|---|---|---|
| 1 | 样板医院部署、培训 | 部署完成 |
| 2 | 试运行、问题修复 | 试运行报告 |
| 3 | 验收、案例包装 | 标杆案例 |
| 风险 | 影响 | 应对策略 |
|---|---|---|
| RobotOS API 能力不足 | 高 | 早期技术验证,预留自研替代方案 |
| 医疗器械认证 | 高 | 提前咨询药监局,按二类器械准备 |
| 医院系统对接复杂 | 中 | 标准化接口适配层,降低耦合 |
| 隐私数据安全 | 高 | 本地化部署、数据加密、合规审计 |
| 患者接受度 | 中 | 人机协作模式,保留人工服务 |
| 硬件定制成本高 | 中 | 分阶段定制,优先核心功能 |
详见配套文档:猎户星空API完整参考手册.md
| 场景 | 推荐机型 | 理由 |
|---|---|---|
| 门诊导诊 | 豹小秘 Mini | 支持 TRTC 视频通话,屏幕适中 |
| 住院查房 | 豹小秘 2 | 续航长,支持大模型 |
| 药品配送 | 豹小递 Max | 载重大,续航长 |
| 综合场景 | 招财豹 Pro | 性价比高,功能全面 |
文档结束