健务室 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}

路径参数:

参数类型说明
assessmentNostringW 值评估号,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_nostring评估号
generated_atstring | null报告时间,Y-m-d H:i:s
w_valueinteger | null0–100 整数
next_check_datestring | nullY-m-d,见下次检测日
itemsarray固定 12 行,W1→W12
impact_factorsarray来自 impact_snapshot.top_factors;无则为 []
h5_urlnull本期固定 null

user.gender / birth_date / age 取评估快照(in_gender / in_birth_date / in_age),age 为报告时周岁,不随查询日增长。其余用户字段为查询时刻当前值,见企业与用户。

指标 items

始终返回 W1–W12 共 12 行,缺测项字段为 null,不省略行。上方示例只列 3 行。

字段类型说明
indicator_codestringW1 … W12
valuestring | null主值;血压为收缩压,字符串最多 4 位小数
value_secondarystring | null血压为舒张压;其余指标为 null
scorestring | null2 位小数。正向项=单项得分;负向项(W2 腰围 / W10 吸烟指数)=扣分强度。0 是有效值,不得当缺失
measured_atstring | null该项最近测量时间;缺失为 null,不以报告时间替代

指标目录

一次性对照,不随查询下发。权重仅供理解得分,接口不返回。

编号名称单位方向权重
W1BMIkg/m²正向15
W2腰围cm负向15
W3心率(静息)次/分正向6
W4血压(收缩压 + 舒张压)mmHg正向15
W5血氧(点测)%正向6
W6体温℃正向6
W7握力kg正向3
W8LDL-Cmmol/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,按原顺序。无因素为 [],不补默认项。

字段类型说明
rankinteger | null排序
indicator_codestring | null对应指标码
level_labelstring | null等级文案
factor_explainstring | null因素说明
action_title / action_bodystring | null建议标题 / 正文

错误码

HTTPcode含义
404REPORT_NOT_FOUND未订阅 / 企业未开通 / 编号不存在 / 非成功或已失效
503ENCRYPT_KEY_MISSING报告加密密钥未就绪,联系晓葆开通