健务室 W 值报告
订阅 workplace.w_report.created 后,用 Webhook 中的 resource_no 回拉。查询返回 SM4 信封,解密后才是明文:总分、固定 12 项指标、影响因子与下次检测日。
概述
开通、验签、SM4 信封与企业 / 用户字段见接入方式。 仅成功且未失效的评估可查询(status=2 且 invalidated_at 为空)。 本期 h5_url 固定为 null。
接口不随份下发名称 / 单位 / 权重。对照表见本页「指标目录」,对方本地维护。 不传整体状态文案、四维度百分比。
事件推送
事件名必须精确订阅,通配无效。覆盖或失效不另推;再查已失效为 404。
{
"event": "workplace.w_report.created",
"delivery_id": "6b0c0123-4567-89ab-cdef-0123456789ab",
"enterprise_id": 12,
"resource_type": "w_report",
"resource_no": "W202610201828150012Z4AP",
"user_id": 1024,
"occurred_at": "2026-10-21T10:20:00+08:00"
}resource_no 即查询路径中的 assessmentNo,以实际编号为准。
查询接口
GET/open/v1/workplace/w-reports/{assessmentNo}
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
assessmentNo | string | W 值评估号,Webhook 的 resource_no |
请求示例:
GET /open/v1/workplace/w-reports/W202610201828150012Z4AP
X-App-Key: ak_xxx
X-Timestamp: 1743494400
X-Nonce: n1
X-Signature: ...成功响应(200 OK):
{
"success": true,
"code": 0,
"message": "获取成功",
"data": {
"encrypt_type": "SM4-ECB",
"key_version": 1,
"cipher_text": "..."
},
"timestamp": "2026-10-21T10:20:00+08:00"
}解密算法见SM4 解密。
明文结构
{
"report": {
"assessment_no": "W202610201828150012Z4AP",
"generated_at": "2026-10-21 10:20:00",
"w_value": 82,
"next_check_date": "2026-11-20",
"items": [
{ "indicator_code": "W1", "value": "22.4000", "value_secondary": null, "score": "95.20", "measured_at": "2026-10-21 09:58:00" },
{ "indicator_code": "W2", "value": "96.0000", "value_secondary": null, "score": "26.67", "measured_at": "2026-10-21 09:58:00" },
{ "indicator_code": "W4", "value": "132.0000", "value_secondary": "86.0000", "score": "80.00", "measured_at": "2026-10-21 09:58:00" }
],
"impact_factors": [
{
"rank": 1,
"indicator_code": "W2",
"level_label": "偏高",
"factor_explain": "…",
"action_title": "…",
"action_body": "…"
}
],
"h5_url": null
},
"enterprise": {
"id": 12,
"enterprise_no": "E0012",
"name": "某某科技有限公司"
},
"user": {
"user_id": 1024,
"user_type": "employee",
"name": "张三",
"gender": "MALE",
"birth_date": "1988-03-12",
"age": 36,
"id_type": "ID_CARD",
"id_number": "11010119880312xxxx",
"id_number_masked": false,
"phone": "13800001111",
"email": "zhangsan@example.com",
"employee_no": "E10086",
"guest_login_account": null
}
}report 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
assessment_no | string | 评估号 |
generated_at | string | null | 报告时间,Y-m-d H:i:s |
w_value | integer | null | 0–100 整数 |
next_check_date | string | null | Y-m-d,见下次检测日 |
items | array | 固定 12 行,W1→W12 |
impact_factors | array | 来自 impact_snapshot.top_factors;无则为 [] |
h5_url | null | 本期固定 null |
user.gender / birth_date / age 取评估快照(in_gender / in_birth_date / in_age),age 为报告时周岁,不随查询日增长。其余用户字段为查询时刻当前值,见企业与用户。
指标 items
始终返回 W1–W12 共 12 行,缺测项字段为 null,不省略行。上方示例只列 3 行。
| 字段 | 类型 | 说明 |
|---|---|---|
indicator_code | string | W1 … W12 |
value | string | null | 主值;血压为收缩压,字符串最多 4 位小数 |
value_secondary | string | null | 血压为舒张压;其余指标为 null |
score | string | null | 2 位小数。正向项=单项得分;负向项(W2 腰围 / W10 吸烟指数)=扣分强度。0 是有效值,不得当缺失 |
measured_at | string | null | 该项最近测量时间;缺失为 null,不以报告时间替代 |
指标目录
一次性对照,不随查询下发。权重仅供理解得分,接口不返回。
| 编号 | 名称 | 单位 | 方向 | 权重 |
|---|---|---|---|---|
W1 | BMI | kg/m² | 正向 | 15 |
W2 | 腰围 | cm | 负向 | 15 |
W3 | 心率(静息) | 次/分 | 正向 | 6 |
W4 | 血压(收缩压 + 舒张压) | mmHg | 正向 | 15 |
W5 | 血氧(点测) | % | 正向 | 6 |
W6 | 体温 | ℃ | 正向 | 6 |
W7 | 握力 | kg | 正向 | 3 |
W8 | LDL-C | mmol/L | 正向 | 10 |
W9 | 空腹血糖 | mmol/L | 正向 | 15 |
W10 | 吸烟指数 | 支/天 × 年 | 负向 | 3 |
W11 | 运动步数(过去 7 天日均) | 步/天 | 正向 | 3 |
W12 | 睡眠时间(过去 7 天每晚平均主睡眠) | 小时/晚 | 正向 | 3 |
负向项(W2 / W10)的 score 是扣分强度,0 表示不扣分。W4 主值为收缩压,value_secondary 为舒张压。
下次检测日
next_check_date = 用户锚点日 anchor_date 起每 30 天一档,取第一个严格晚于generated_at 日期的值。同一评估重复查询结果不变。锚点或生成日缺失则为 null。
影响因子
映射 impact_snapshot.top_factors,按原顺序。无因素为 [],不补默认项。
| 字段 | 类型 | 说明 |
|---|---|---|
rank | integer | null | 排序 |
indicator_code | string | null | 对应指标码 |
level_label | string | null | 等级文案 |
factor_explain | string | null | 因素说明 |
action_title / action_body | string | null | 建议标题 / 正文 |
错误码
| HTTP | code | 含义 |
|---|---|---|
| 404 | REPORT_NOT_FOUND | 未订阅 / 企业未开通 / 编号不存在 / 非成功或已失效 |
| 503 | ENCRYPT_KEY_MISSING | 报告加密密钥未就绪,联系晓葆开通 |