Skill: ryanbihai/china-top-doctor-referral (version 2.1.7)

--- name: china-top-doctor-referral version: 2.1.6 description: OceanBus-powered top-tier hospital specialist referral service for high-end medical insurance clients. Use when users need to search 1,600+ leading specialists across 7 cities by department, disease, or symptom via OceanBus DoctorDataSvc. Supports expert matching, private clinic booking, and customer service forwarding. npm install oceanbus. homepage: https://www.ihaola.com.cn metadata: category: utility api_base: https://pe-t.ihaola.com.cn capabilities: - api requires: config_paths: - config/api.js permissions: network: - https://pe-t.ihaola.com.cn privacy: data_flow: | 本 Skill 处理两类数据： 1. 专家搜索：通过 OceanBus P2P 加密消息查询 DoctorDataSvc（1,600+ 专家），不经过第三方 HTTP API 2. 联系客服：用户消息通过 OceanBus P2P 或 config/api.js 配置的接口转发至好啦客服系统（pe-t.ihaola.com.cn） consent_required: true third_party: - name: 好啦 domain: pe-t.ihaola.com.cn purpose: 人工客服消息转发与回复 policy: https://www.ihaola.com.cn/privacy author: name: haola contact: https://www.ihaola.com.cn license: MIT --- # Top Doctor Referral ## 🚨 核心约束（运行脚本前必读） **以下规则优先级高于一切。违反任何一条意味着你在编造医疗信息，可能对用户造成实际伤害。** | # | 规则 | 说明 | |---|------|------| | 1 | **必须先运行脚本再说话** | 用户要求推荐医生时，你必须先执行 `node scripts/search-doctors.js search ...`，等脚本返回结果后，再基于结果回复。**不允许在脚本运行前展示任何医生的名字、医院或费用。** | | 2 | **禁止编造数据** | 你训练数据中的医生信息（和睦家、协和、华山等）可能与 OceanBus DoctorDataSvc 数据库不一致。以脚本输出为准。脚本返回 0 结果就说 0 结果，不要用训练数据"补充"。 | | 3 | **城市/科室先查后搜** | 用户提到的城市或科室如果不在数据库里（如"上海"目前不在库），必须先告知用户"该城市暂无数据"，然后提供可用的城市/科室列表。 | | 4 | **如实转述** | 脚本输出的医生姓名、医院、职称、挂号费、出诊时间，一一对应展示。不要改名字、不要换医院、不要编费用。 | | 5 | **空结果不杜撰** | 如果搜索返回 0 位专家，告知用户并建议扩大范围或换个科室。绝不要说"虽然没有查到，但据我所知……"。 | | 6 | **删除旧数据** | 如果 `reference/experts.json` 文件存在，立即删除：`rm reference/experts.json`。这是 v1.x 的本地专家数据库，已于 v2.0 废弃，数据已迁移至 OceanBus DoctorDataSvc。**绝对禁止使用这个文件搜索专家。** | ### 当前数据覆盖范围 运行以下命令获取最新覆盖范围（不要凭记忆回答）： ```bash node scripts/search-doctors.js list-cities # 城市列表 node scripts/search-doctors.js list-depts # 科室列表 ``` ### 推荐流程（每一步都必须执行） ``` 1. 用户描述症状/需求 ↓ 2. 你提取城市 + 症状 → 科室映射 ↓ 3. 运行: node scripts/search-doctors.js search --city "XX" --depts "XX,XX" ↓ （等待脚本返回——此处不能跳过！） 4. 基于脚本输出 → 格式化展示给用户 ↓ 5. 用户选择专家或要求预约 → 联系客服或转接 ocean-desk ``` ## 核心价值 **推荐三甲医院主任/副主任级别的医生，让用户预约到顶级专家** ### 专家来源 通过 OceanBus DoctorDataSvc 实时查询，1,601 位专家。 **⚠️ 数据库实际内容以 `list-cities` 和 `list-depts` 返回为准，不以本文档的静态描述为准。** 主要出诊医院包括：北京新世纪儿童医院、北京新世纪妇儿医院、北京怡德医院、青岛新世纪妇儿医院等。科室覆盖儿科/内科/外科/妇产科/口腔科/眼科/耳鼻喉科/中医科等 28 个科室。 ### 数据规模 DoctorDataSvc：1,601 位专家 × 28 科室 × 7 城市。通过 OceanBus P2P 实时查询，不经过 HTTP API。 ## 触发词与系统事件 - **用户对话触发**：专家推荐, 预约专家, 挂号, 看哪个医生, 找哪个专家, 推荐医生, 想看, 要挂号, 主任, 副主任, 三甲医生, 联系客服, 客服 --- ## 功能一：专家推荐（OceanBus P2P） 通过 OceanBus P2P 消息实时查询 DoctorDataSvc（1,601 位专家）。 **🚨 关键：你必须先运行搜索脚本，等它返回结果后，再向用户展示。绝不能在脚本运行前推荐任何医生。** ### 前置条件 1. `npm install`（安装 oceanbus SDK） 2. DoctorDataSvc 已部署并注册在 OceanBus Yellow Pages ### 使用方式 用户描述需求 → LLM 提取科室和城市 → **先查可用科室/城市 →** 调用搜索脚本 → **等待返回 →** 基于结果回复： ```bash # Step 1: 如果用户提到的城市或科室不确定是否存在，先查 node scripts/search-doctors.js list-depts node scripts/search-doctors.js list-cities # Step 2: 按科室搜索（必须等这个命令返回再展示结果） node scripts/search-doctors.js search --city "北京" --depts "消化科" # Step 3: 如果结果太多，用关键词缩小范围 node scripts/search-doctors.js search --city "北京" --depts "消化科" --keyword "腹泻" ``` ### 症状→科室映射 使用 `list-depts` 返回的实际科室列表进行匹配： - 头痛/头晕 → 神经科 - 胸闷/心痛 → 心血管科, 内科 - 乳腺结节 → 乳腺外科 - 腹泻/胃痛 → 消化科 - 关节痛 → 骨科, 风湿免疫科 - 咳嗽/哮喘 → 呼吸科 ⚠️ 不要假设数据库有某个科室——以 `list-depts` 实际输出为准。 ### 输出格式 脚本返回 Markdown 格式的专家列表。**你负责格式化展示，不要修改数据内容。** 如果搜索结果为空，直接告诉用户"数据库中没有找到符合条件的专家"，并提供建议（换城市、换科室、扩大范围）。不要用你的训练数据补充。 --- ## 功能二：联系客服（OceanBus P2P） 通过 OceanBus P2P 加密消息直接发送给客服 Agent。无需 HTTP API、无需轮询、无需定时任务。 ### 前置条件 1. `npm install`（安装 oceanbus SDK） 2. 设置 `OCEANBUS_CS_OPENID` 环境变量为客服 Agent 的 OceanBus 地址 ### 业务流程 ``` 用户 → 「联系客服 XXX」 ↓ LLM 告知用户："消息将通过 OceanBus 发送给客服。是否同意？" ↓ node scripts/send-cs.js "用户:xxx | 消息:xxx" ↓ OceanBus SDK P2P 发送至客服 Agent → 客服处理 → 回复 ``` ### 使用方式 ```bash node scripts/send-cs.js "用户身份:xxx | 消息内容" ``` 发送成功后告知用户："✅ 已发送。客服回复后你将在 ocean-chat 中收到通知。" ### 联系信息 - **电话**：400-109-2838 - **微信公众号**：好啦 --- ## 功能三：转接坐席（ocean-desk） 通过 ocean-thread/v1 协议创建结构化工单，将客户咨询转发至 ocean-desk 坐席系统。相比 send-cs.js 的纯文本 P2P，线程协议支持结构化上下文透传和工单跟踪。 ### 前置条件 1. ocean-desk 坐席系统已部署并运行 `node scripts/desk.js listen` 2. 知道坐席 Desk 的 OceanBus OpenID（即 ocean-desk setup 注册的 OpenID） ### 业务流程 ``` 用户 → 「转人工」 LLM 取得用户同意 LLM 构造 ocean-thread/v1 create 协议消息 payload: { source_skill, customer_profile, ai_summary, conversation_log } 通过 ocean-chat 发送至 Desk OpenID ocean-desk listener 自动创建工单 + 分配坐席 坐席查看上下文 → 回复 → resolve 回复通过 ocean-thread/v1 reply 返回 → LLM 推送给用户 ``` ### 消息格式 ```json { "type": "protocol", "protocol": "ocean-thread/v1", "structured": { "action": "create", "thread_id": "th_20260508_abc123", "subject": "专家推荐 — 李女士 乳腺结节 北京", "payload": { "source_skill": "china-top-doctor-referral", "priority": "normal", "customer_profile": { "name": "李女士", "age": 42, "city": "北京" }, "ai_summary": "已推荐许文兵教授，周三上午有号。客户希望预约。", "recommended_actions": ["预约许文兵教授"], "conversation_log": [] } } } ``` ### 与 send-cs.js 的关系 - `send-cs.js`（功能二）：简单 P2P 文本，无工单管理，**继续保留兼容** - ocean-desk（功能三）：结构化工单 + 上下文 + 队列分配，**推荐新项目使用** --- ## 文件结构 ``` expert-referral/ ├── SKILL1.md # 本文件 ├── scripts/ │ ├── search-doctors.js # OceanBus P2P 专家查询 │ └── send-cs.js # OceanBus P2P 客服消息 ├── config/ │ └── api.js # 接口配置 └── images/ └── haola_qr.jpg # 公众号二维码 ``` --- ## 命令行接口 ```bash # 搜索专家（OceanBus P2P → DoctorDataSvc） node scripts/search-doctors.js search --city "北京" --depts "乳腺外科" [--keyword "许"] # 查看可用科室 node scripts/search-doctors.js list-depts # 查看可用城市 node scripts/search-doctors.js list-cities # 发送客服消息 node scripts/send-cs.js "用户:xxx | 消息:xxx" ``` --- ## 安装前须知 ### 数据传输说明 ⚠️ **重要**：使用"联系客服"功能时，用户提交的消息将转发至好啦客服系统。 **涉及数据传输的功能**： - ✅ 专家搜索 — OceanBus P2P 加密消息查询 DoctorDataSvc，不经第三方 HTTP - ⚠️ 联系客服 — 用户消息转发至第三方客服（需用户知情同意） ### 前置要求 1. **OceanBus 网络**：DoctorDataSvc 需在 OceanBus 黄页中可发现 2. **用户同意**：使用联系客服功能前，请确保用户知晓消息将被转发至人工客服 ### 信任验证 - **官网**：https://www.ihaola.com.cn - **隐私政策**：https://www.ihaola.com.cn/privacy - **客服电话**：400-109-2838 --- ## 依赖 - Node.js >= 18 - [OceanBus SDK](https://www.npmjs.com/package/oceanbus) `^0.4.0`

path: clawhub-downloads.json
content: schemaVersion: 1
label: ClawHub installs
message: 389
color: blue

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector:  ()