健康站设备接入

健康站固定部署设备通过「扫码启动 → 异步匹配用户 → 检测 → 上报报告」 标准流程接入晓葆开放平台。本规范(V1)为正式对外契约,全品类复用同一主流程, 品类差异通过已发布的 device_key 与指标库表达。

概述

适用场景

  • 设备固定部署于健康站,用户到场检测
  • 设备需先获取受检者身份与基础体征后才能开始检测
  • 检测结果需结构化上报并关联到晓葆用户档案
  • 典型能力:肺功能、多参数监测等专业检测设备

接口总览

序号接口MethodPath
1获取启动二维码POST/open/v1/device/qrcode
2获取检测用户信息POST/open/v1/device/start-check-user
3上传检测报告POST/open/v1/device/report

Base URL

环境Base URL
测试环境https://test-openapis.xiaobaotop.com
生产环境https://openapis.xiaobaotop.com

鉴权规范

所有三个接口使用相同鉴权方案:AppKey + HMAC-SHA256 签名, 与开放平台 Partner API 一致。

接入凭证

字段说明
appKey平台分配,用于请求鉴权(即 X-App-Key 的值)
appSecret平台分配,仅用于本地生成签名,严禁泄露、严禁写入设备明文配置

请求头(规范强制)

Header类型必填说明
X-App-Keystring应用标识符,值即 appKey
X-TimestampstringUnix 时间戳(秒),与服务器时间差不超过 300 秒
X-Noncestring随机字符串(32 位),每次请求独立生成,用于防重放
X-Signaturestring请求签名,算法见下方
Content-Typestring固定为 application/json

签名算法(三步)

第一步:计算请求体哈希

body_hash = SHA256(request_body)
// 请求体为空时对空字符串取哈希

第二步:拼接签名字符串(换行符 \n 分隔)

sign_string = METHOD + "\n" + URI + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + body_hash
字段说明示例
METHODHTTP 方法(大写)POST
URI完整请求路径(含 query string)/open/v1/device/qrcode
TIMESTAMP与 Header X-Timestamp 相同1719619200
NONCE与 Header X-Nonce 相同a1b2c3...(32 位)
body_hash请求体 SHA256 十六进制小写e3b0c44...

第三步:计算签名

X-Signature = HMAC-SHA256(sign_string, appSecret)
// 结果为十六进制小写字符串
若设备固件暂不支持签名,可由供应商适配组件完成签名后再请求开放平台。appSecret 仅允许存在于供应商服务端或受控适配组件。

统一响应格式

{
  "success": true,
  "code": 0,
  "message": "ok",
  "data": {},
  "timestamp": "2026-07-10 10:00:00"
}
字段类型说明
successboolean业务是否成功
codeint0 表示成功,非 0 表示失败
messagestring状态说明
dataobject / null业务数据;轮询未命中用户时为 null
timestampstring服务端响应时间

接入流程

每次检测分三个阶段:

阶段 A:建立检测会话(取码)
  设备 → POST /open/v1/device/qrcode
  开放平台返回 Base64 二维码(有效期 30 分钟)
  设备展示二维码

阶段 B:用户匹配(轮询)
  用户用晓葆小程序扫码授权
  设备每隔 ~2s 轮询 POST /open/v1/device/start-check-user
  data=null → 继续轮询
  data=用户信息 → 进入检测

阶段 C:报告回传
  检测完成 → 设备 POST /open/v1/device/report
  开放平台校验会话 + 报告结构 → 入库 → 触发 AI 解读
规范强制:取码成功后必须开始轮询接口二。 平台会监控「取码后未轮询」等行为异常,并计入供应商接入质量指标;联调门禁要求取码后轮询率 ≥ 99%。

接口一:获取启动二维码

属性
MethodPOST
Path/open/v1/device/qrcode
调用方设备软件或健康站管理端
二维码有效期30 分钟(建议提前 5 分钟刷新)

请求体

字段类型必填说明
device_nostring设备编码(SN)
qr_code_idstring本轮会话标识,由设备生成(推荐 UUID 去掉 -),单次检测唯一,不可跨次复用

请求示例

POST /open/v1/device/qrcode
Content-Type: application/json
X-App-Key: your_app_key
X-Timestamp: 1722000000
X-Nonce: a1b2c3d4e5f6...(32位)
X-Signature: 签名十六进制字符串

{
  "device_no": "DEVICE_SN_001",
  "qr_code_id": "778bbb7711c74fd793b5da929b7b5ad6"
}

成功响应

{
  "success": true,
  "code": 0,
  "message": "ok",
  "data": {
    "expire_time": 1722503891000,
    "qr_code": "data:image/png;base64,iVBORw0KGgo...",
    "qr_code_id": "778bbb7711c74fd793b5da929b7b5ad6"
  },
  "timestamp": "2026-07-10 10:00:00"
}
字段类型说明
data.expire_timelong过期时间戳(毫秒)
data.qr_codestringBase64 PNG 二维码图片(含 data:image/png;base64, 前缀)
data.qr_code_idstring回传会话标识,与请求一致

业务规则:

  • 同一 qr_code_id 在有效期内可刷新二维码
  • 过期、接口异常、code != 0 时需重新取码(生成新 qr_code_id

接口二:获取检测用户信息

属性
MethodPOST
Path/open/v1/device/start-check-user
调用方设备软件(轮询)
轮询间隔建议 2 秒

请求体

字段类型必填说明
device_nostring设备编码(SN)
qr_code_idstring与取码接口相同的会话标识

响应:用户尚未扫码

{
  "success": true,
  "code": 0,
  "message": "ok",
  "data": null,
  "timestamp": "2026-07-10 10:00:05"
}
// → 继续轮询

响应:已匹配到用户

{
  "success": true,
  "code": 0,
  "message": "ok",
  "data": {
    "user_unique_id": "aa440ce5298147c0b69ab19ba9b08b02",
    "name": "张三",
    "sex": "1",
    "birthday": "1990-01-21",
    "height": 171,
    "weight": 75.1,
    "age": 36
  },
  "timestamp": "2026-07-10 10:00:12"
}
// → 开始检测,使用 user_unique_id 上报报告
字段类型必填说明
user_unique_idstring用户唯一标识,上报报告时必须原样回传
namestring姓名
sexstring0 未知 / 1 男 / 2 女(平台枚举,不得改写)
birthdaystringyyyy-MM-dd
heightnumber身高(cm)
weightnumber体重(kg)
ageint年龄;可由生日计算

轮询约定(规范强制)

  1. 建议轮询间隔:2 秒
  2. 继续轮询条件:success == true && data == null
  3. 以下情况应重新取码:接口异常、success != true、超过过期时间
  4. 设备必须使用平台 sex 枚举,不得自行改写含义
  5. 取码成功后必须开始轮询本接口,平台监控取码后未轮询异常

接口三:上传检测报告

属性
MethodPOST
Path/open/v1/device/report
调用方设备软件
幂等键report_no(重复上传返回成功,不重复计次)

通用必填字段

字段类型必填说明
user_unique_idstring接口二返回的用户标识,原样回传
device_nostring设备编码(SN)
qr_code_idstring本轮会话标识,与取码接口一致
report_nostring报告编号,全局唯一,建议 UUID(去掉 -
device_keystring已在平台审核发布的设备编码;未发布设备上报会被拒绝
tested_atstring检测时间,建议 yyyy-MM-dd HH:mm:ss
metricsobject结构化指标;key 为已发布的 standard_indicator_code
conclusionstring设备或算法输出的结论文本
report_fileobject报告文件,含 type(PDF/JPG)和 content_base64
raw_payloadobject供应商原始明细(可选归档),不替代 metrics

metrics 约定

metrics 为键值对象:key 必须等于该 device_key 在平台指标库中已发布的standard_indicator_code,value 为对应数值或字符串。 具体指标清单由供应商在开放平台配置,经运营审核发布后生效;本规范不绑定任一品类字段。

请求示例

{
  "user_unique_id": "aa440ce5298147c0b69ab19ba9b08b02",
  "device_no": "DEVICE_SN_001",
  "qr_code_id": "778bbb7711c74fd793b5da929b7b5ad6",
  "report_no": "7934ccc943174189be57da11f5627734",
  "device_key": "YOUR_DEVICE_KEY",
  "tested_at": "2025-11-04 10:23:00",
  "conclusion": "检测结论文本(可选)",
  "metrics": {
    "indicator_code_a": 120,
    "indicator_code_b": 80
  },
  "report_file": {
    "type": "PDF",
    "content_base64": "JVBERi0..."
  },
  "raw_payload": {
    "note": "可选:保留供应商原始明细用于质控追溯"
  }
}

成功响应

{
  "success": true,
  "code": 0,
  "message": "ok",
  "data": null,
  "timestamp": "2026-07-10 10:05:00"
}

业务规则

  • user_unique_iddevice_noqr_code_id 必须属于同一有效会话
  • 同一 report_no 重复上传返回成功,不重复计次(幂等)
  • 已发布指标库中标记为必填的标准指标缺失会被拒绝(5106)
  • device_key 未发布的设备不允许正式上报

错误码

codesuccessmessage说明设备侧处理
0trueok成功按业务继续
401false鉴权失败AppKey 错误、签名不匹配、时间窗超出 300s检查凭证与签名算法
700false创建二维码异常接口一取码失败重试,检查 device_no 参数
900false找不到应用信息应用未配置或凭证无效联系平台开通应用
908false找不到设备设备 SN 未在平台注册先完成设备注册
1001false找不到对应用户业务错误(非轮询空等待),会话异常重新取码
1101false二维码已过期会话超过 30 分钟有效期重新取码(生成新 qr_code_id
5106false参数异常必填字段缺失或格式错误按规范修正请求参数
500false内部错误平台服务异常记录 timestamp 与请求上下文后联系平台
轮询场景下「用户尚未扫码」不是错误,返回 success: true, code: 0, data: null, 设备应继续轮询。

指标配置

接入新设备型号前,供应商必须在开放平台完成设备指标配置并经运营审核发布,device_key 发布后才允许正式上报。

device_key 约束

  • 全局唯一,由平台分配/审核后确定,确定后不可修改
  • 上报报告中的 device_key 必须完全等于已发布值
  • 测试环境联调时可使用 draft 状态,生产环境必须为 published

standard_indicator_code 映射

metrics 的 key 与平台指标库中的 standard_indicator_code 一一对应。 供应商在开放平台为每个字段配置标准编码、单位、展示规则与是否必填; 运营审核发布后,上报与报告渲染均按已发布定义校验与展示。 品类差异全部落在指标库配置,不进入本运行时 API 路径。

接入准入清单

供应商联调前需满足以下条件,平台侧会按此验收后才允许正式上线:

供应商必备

  • 在开放平台完成设备模型注册与指标配置,状态达到 published
  • 支持本规范三接口(或通过适配组件支持)
  • 支持 AppKey + HMAC-SHA256 签名鉴权
  • 支持二维码展示与轮询用户流程
  • 按已发布 device_keystandard_indicator_code 上报核心数据
  • 提供测试设备 SN、示例报告 JSON 与联调环境

监控门禁(联调验收)

门禁项标准
取码后轮询率≥ 99%(有效会话)
首轮询耗时(P95)≤ 5s
平均轮询间隔1s ~ 5s(过快过慢均告警)
匹配后上报率≥ 95%(排除用户主动取消)
P0/P1 未关闭异常上线前清零
「接口能调通」不等于「流程按规范跑通」。平台以会话漏斗(取码 → 轮询 → 匹配 → 上报)为核心监控维度, 而非仅看单接口成功率。