Install
openclaw skills install rus-chn05-analyzer中华05骨龄分析 RUS-CHN05 —— 基于慧龄云®骨龄AI检测系统,采用中华05标准RUS-CHN05计分法,分析手腕X光片,评估3~18岁儿童青少年骨骼发育程度。 当用户上传手腕/手部X光片并请求骨龄分析、骨龄评估、生长发育评估、身高预测时触发。 完整流程:注册激活→密码登录→图片上传→AI骨龄推算→生成中文诊断报告。 支持两种调用路径:轻量路径(仅骨龄识别)和完整路径(骨龄+身高预测,中华05查表法+BCPE拟合法)。
openclaw skills install rus-chn05-analyzer本技能对接慧龄云®骨龄人工智能检测系统(host: www.pipitu.net),基于中华05标准(RUS-CHN05计分法),通过分析左手腕部正位X光片,评估儿童青少年骨骼发育程度,输出规范的骨龄诊断报告。
核心能力:
评估标准:中华05(Chinese 05)RUS-CHN05计分法,慧龄云®推理服务器端实现 适用范围:3~18 岁儿童青少年 评估部位:左手非利手腕部正位X光片
当用户提出以下任意请求时启动本技能:
注册激活 → 密码登录 → 图片上传 → /bmd/v2/cosBoneAgeOnLineByThirdPartner
注册激活 → 密码登录 → 图片上传 → /bmd/v2/predictHeightByBoneAge
💡 默认使用路径A,仅在用户明确需要身高预测时切换到路径B。
向用户收集以下信息(缺失时逐一询问,不要一次问太多):
路径A(仅骨龄)必填信息:
路径B(骨龄+身高预测)额外必填信息: 3. 年龄:X岁X个月 4. 当前身高(cm) 5. 当前体重(kg) 6. 父亲身高(cm) 7. 母亲身高(cm) 8. 手机号码(用于报告关联)
女性额外必填(路径B): 9. 是否已有初潮:是/否 10. 初潮年龄(已有初潮时):X岁
可选信息:
按 references/api-protocol.md 中的接口协议,严格按顺序依次调用:
2.1 终端注册激活(首次使用时)
POST {host}/v1/baClient/tidRegister
参数:{ "tid": "{终端唯一标识}" }
返回:{ "ret": true, "data": { "tid": "..." } }
2.2 密码登录(⚠️ 核心关键环节,获取TOKEN)
POST {host}/auth/local/login
参数:{ "username": "...", "password": "{SHA256加密}" }
返回:{ "ret": true, "data": { "token": "...", "user": {...}, "expireTime": ... } }
⚠️ TOKEN 获取后缓存,后续所有接口需在 Header 中携带:token: {JWT_token} ⚠️ 注意:Header名是"token"而非"Authorization: Bearer"
⚠️ 登录返回的 user.id 在人工修改等级时需要用到
⚠️ 登录返回的 user.enable 标识会员状态,user.counts 为剩余计算次数
2.3 获取图片上传预签名URL
POST {host}/service/signForBAImageUploadEasy
参数:{ "fileName": "bone.jpg" } ⚠️ 仅需 fileName,uuid 从登录态自动获取
返回:{ "ret": true, "data": { "signedUrl": "https://..." } }
2.4 上传图片
PUT {signedUrl}
请求体:图片字节流
Content-Type: image/jpeg 或 image/png
返回:HTTP 200 即成功
2.5 AI骨龄推算
根据路径选择对应接口:
路径A:仅AI骨龄识别(推荐)
POST {host}/bmd/v2/cosBoneAgeOnLineByThirdPartner
参数:{
"fileName": "bone.jpg", // 与上传时的fileName一致
"sex": "M" // M男/F女
}
⚠️ 此接口需要"第三方"角色,无条件扣次数
⚠️ 发送到推理服务器时参数名为 filename(小写n),Java后端自动转换
返回:{
"ret": true,
"data": {
"url": "https://...", // 标注后的X光片
"bam": 10.5, // ⚠️ 骨龄值,字段名是 bam(非 bam05)
"sms": 465, // 发育分数
"fname": "bone.png", // ⚠️ 标注后文件名,字段名是 fname
"stages": [1,2,3,...], // 13个骨骺等级
"scores": [12.5,...], // 各骨骺评分
"sex": "M",
"orderNo": "abc123..."
}
}
路径B:AI骨龄+身高预测
POST {host}/bmd/v2/predictHeightByBoneAge
参数:{
"sex": "M",
"age": 10.5,
"height": 140,
"weight": 35,
"detectedImgName": "bone.jpg", // ⚠️ AI推算用 detectedImgName
"fatherHeight": 175,
"motherHeight": 162,
"telephone": "13800000000",
"name": "匿名",
"hasM": "no", // 女性必填
"appid": "" // ⚠️ 可选,用于消息推送,非必须
}
返回:含 bam05、sms、stages、scores、url、predictedHeight 等字段
人工修改等级后重新推算
POST {host}/bmd/v2/predictHeightFromWebBySms
额外参数:{
"userId": "{从登录返回的user.id}",
"selectedFileName": "bone.jpg", // ⚠️ 人工修改用 selectedFileName
"stages": [修改后的等级数组],
"sms": "{修改后的sms值}",
"rpImg": "{微信本地图片localId}"
}
基于 API 返回结果,按以下模板输出报告(使用中文,语气专业亲切):
⚠️ 免责声明:本报告由AI辅助分析生成,仅供参考,不构成医疗诊断。如有疑问,请咨询专业医师。
| 项目 | 内容 |
|---|---|
| 评估日期 | {当前日期} |
| 评估方法 | 中华05标准 · RUS-CHN05 · AI辅助评估 |
| 受检者姓名 | {姓名} |
| 性别 | {男/女} |
| 实际年龄 | {X岁X个月} |
| 当前身高 | {XXX cm} |
| 当前体重 | {XX kg} |
骨龄:{bam 或 bam05} 岁(中华05标准)
骨龄与实际年龄差值:{bam - age} 岁
| 判定 | 差值范围 | 当前状态 |
|---|---|---|
| 正常 ✅ | -1 ~ +1 岁 | {判断结果} |
| 偏快 ⚠️ | +1 ~ +2 岁 | |
| 偏慢 ⚠️ | -1 ~ -2 岁 | |
| 明显超前 🔴 | > +2 岁 | |
| 明显落后 🔴 | < -2 岁 |
13块骨骼对应顺序: 桡骨、尺骨、掌骨I、掌骨III、掌骨V、近节指骨I、近节指骨III、近节指骨V、中节指骨III、中节指骨V、远节指骨I、远节指骨III、远节指骨V
| 项目 | 数值 |
|---|---|
| 父亲身高 | {XXX cm} |
| 母亲身高 | {XXX cm} |
| 遗传靶身高(CMH-C) | {男:(父+母+11.94)/2;女:(父+母-11.94)/2} cm |
| AI预测成年身高 | {predictedHeight} cm |
注:身高预测受多种因素影响,仅供参考,误差范围约 ±5cm
{2~3句话解释当前骨龄的含义,用家长能理解的语言}
{根据骨龄差值,给出1~4条具体、可操作的建议}
当用户对AI自动推算的骨骺等级有异议时,可手动修改后重新调用:
POST {host}/bmd/v2/predictHeightFromWebBySms
参数:在AI推算参数基础上增加/修改:
{
...
"userId": "{从登录返回的user.id}",
"selectedFileName": "{人工修改用的文件名}", // ⚠️ 注意字段名不同于AI推算
"stages": [修改后的等级数组],
"sms": "{修改后的sms值}",
"rpImg": "{微信本地图片localId}"
}
POST {host}/service/serviceLogs/getHistoryReports
参数:{ "limit": 10, "skip": 0, "sort": "desc" }
返回:历史报告列表,含 id、orderNo、createdAt、height、age、bam05 等
在使用本技能前,需确保以下配置已就绪(存放在环境变量或技能配置中):
| 配置项 | 说明 | 示例 |
|---|---|---|
BONE_AGE_API_HOST | 慧龄云®服务器地址 | https://www.pipitu.net |
BONE_AGE_USERNAME | 登录账号 | user@example.com |
BONE_AGE_PASSWORD | 登录密码(SHA256加密后) | 5e8848... |
BONE_AGE_TID | 终端唯一标识 | TID-XXXXX |
⚠️ appid 无需配置:appid 是请求体中的可选参数(jsonObject.containsKey("appid")),仅在需要微信消息推送时传递。不需要提前配置,也不从登录结果中自动获取。
⚠️ Shiro角色:使用第三方接口(cosBoneAgeOnLineByThirdPartner)时,登录账号需具备"第三方"角色。
首次使用时,若配置缺失,需引导用户完成配置。
1[3-9]\d{9} 格式,否则校验失败detectedImgName,人工修改用selectedFileName,上传预签名用fileName,不可混用bam(骨龄)/ fname(文件名),完整路径返回 bam05(骨龄)fileName 转为 filename(小写n),但API调用者只需传 fileName{preDir}{uuid}/{fileName},uuid从登录态自动获取references/api-protocol.mdscripts/bone_age_api_client.py