HealthDataAPIDocument.md 9.1 KB

健康数据模块API接口规范

概述

本文档详细定义了健康数据模块的API接口规范,包括4个子模块的完整接口定义。所有接口遵循RESTful设计理念,采用统一的请求/响应格式。

公共规范

请求格式

  • Content-Type: application/json
  • 认证方式: Bearer Token (Authorization: Bearer <token>)
  • 参数校验: 使用Bean Validation注解

响应格式

{
    "code": "SUCCESS",
    "message": "操作成功",
    "data": {}
}

分页响应格式

{
    "code": "SUCCESS",
    "message": "查询成功",
    "data": {
        "records": [],
        "current": 1,
        "size": 10,
        "total": 100
    }
}

错误响应格式

{
    "code": "PARAM_ERROR",
    "message": "参数校验失败",
    "data": null
}

体格数据模块API

1. 添加体格数据

  • 接口路径: POST /physical-data/add
  • 功能描述: 添加用户的体格数据(身高、体重)
  • 请求参数:

    {
    "height": 170.5,
    "weight": 65.2,
    "measureTime": "2024-01-15T10:30:00"
    }
    
  • 参数说明:

    • height: 身高(cm),范围100-250,必填
    • weight: 体重(kg),范围20-300,必填
    • measureTime: 测量时间,必填
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "添加成功",
    "data": null
    }
    

2. 查询体格数据列表

  • 接口路径: POST /physical-data/list
  • 功能描述: 分页查询用户的体格数据历史记录
  • 请求参数:

    {
    "pageNum": 1,
    "pageSize": 10,
    "startTime": "2024-01-01T00:00:00",
    "endTime": "2024-01-31T23:59:59"
    }
    
  • 参数说明:

    • pageNum: 页码,默认1
    • pageSize: 每页大小,默认10,最大100
    • startTime: 开始时间,可选
    • endTime: 结束时间,可选
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "查询成功",
    "data": {
        "records": [
            {
                "id": 1,
                "height": 170.5,
                "weight": 65.2,
                "bmi": 22.45,
                "measureTime": "2024-01-15T10:30:00",
                "createTime": "2024-01-15T10:35:00"
            }
        ],
        "current": 1,
        "size": 10,
        "total": 1
    }
    }
    

3. 计算BMI

  • 接口路径: GET /physical-data/bmi
  • 功能描述: 根据身高体重计算BMI值
  • 请求参数: Query参数
    • height: 身高(cm),范围100-250,必填
    • weight: 体重(kg),范围20-300,必填
  • 请求示例: GET /physical-data/bmi?height=170.5&weight=65.2
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "计算成功",
    "data": 22.45
    }
    

血压数据模块API

1. 添加血压数据

  • 接口路径: POST /blood-pressure-data/add
  • 功能描述: 添加用户的血压数据
  • 请求参数:

    {
    "systolicPressure": 120,
    "diastolicPressure": 80,
    "measureTime": "2024-01-15T10:30:00"
    }
    
  • 参数说明:

    • systolicPressure: 收缩压(mmHg),范围60-250,必填
    • diastolicPressure: 舒张压(mmHg),范围40-150,必填
    • measureTime: 测量时间,必填
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "添加成功",
    "data": null
    }
    

2. 查询血压数据列表

  • 接口路径: POST /blood-pressure-data/list
  • 功能描述: 分页查询用户的血压数据历史记录
  • 请求参数:

    {
    "pageNum": 1,
    "pageSize": 10,
    "startTime": "2024-01-01T00:00:00",
    "endTime": "2024-01-31T23:59:59"
    }
    
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "查询成功",
    "data": {
        "records": [
            {
                "id": 1,
                "systolicPressure": 120,
                "diastolicPressure": 80,
                "measureTime": "2024-01-15T10:30:00",
                "createTime": "2024-01-15T10:35:00"
            }
        ],
        "current": 1,
        "size": 10,
        "total": 1
    }
    }
    

血糖数据模块API

1. 添加血糖数据

  • 接口路径: POST /blood-glucose-data/add
  • 功能描述: 添加用户的血糖数据
  • 请求参数:

    {
    "fastingBloodGlucose": 5.2,
    "afterBreakfastBloodGlucose": 8.5,
    "beforeLunchBloodGlucose": 6.1,
    "afterLunchBloodGlucose": 9.2,
    "beforeDinnerBloodGlucose": 5.8,
    "afterDinnerBloodGlucose": 8.9,
    "beforeBedBloodGlucose": 7.3,
    "measureTime": "2024-01-15T10:30:00"
    }
    
  • 参数说明:

    • fastingBloodGlucose: 空腹血糖(mmol/L,早餐前),范围1.0-30.0,可选
    • afterBreakfastBloodGlucose: 早餐后血糖(mmol/L,早餐后2小时),范围1.0-30.0,可选
    • beforeLunchBloodGlucose: 午餐前血糖(mmol/L),范围1.0-30.0,可选
    • afterLunchBloodGlucose: 午餐后血糖(mmol/L,午餐后2小时),范围1.0-30.0,可选
    • beforeDinnerBloodGlucose: 晚餐前血糖(mmol/L),范围1.0-30.0,可选
    • afterDinnerBloodGlucose: 晚餐后血糖(mmol/L,晚餐后2小时),范围1.0-30.0,可选
    • beforeBedBloodGlucose: 睡前血糖(mmol/L),范围1.0-30.0,可选
    • measureTime: 测量时间,必填
    • 注意:至少填写一个血糖值
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "添加成功",
    "data": null
    }
    

2. 查询血糖数据列表

  • 接口路径: POST /blood-glucose-data/list
  • 功能描述: 分页查询用户的血糖数据历史记录
  • 请求参数:

    {
    "pageNum": 1,
    "pageSize": 10,
    "startTime": "2024-01-01T00:00:00",
    "endTime": "2024-01-31T23:59:59"
    }
    
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "查询成功",
    "data": {
        "records": [
            {
                "id": 1,
                "fastingBloodGlucose": 5.2,
                "afterBreakfastBloodGlucose": 8.5,
                "beforeLunchBloodGlucose": 6.1,
                "afterLunchBloodGlucose": 9.2,
                "beforeDinnerBloodGlucose": 5.8,
                "afterDinnerBloodGlucose": 8.9,
                "beforeBedBloodGlucose": 7.3,
                "measureTime": "2024-01-15T10:30:00",
                "createTime": "2024-01-15T10:35:00"
            }
        ],
        "current": 1,
        "size": 10,
        "total": 1
    }
    }
    

心率数据模块API

1. 添加心率数据

  • 接口路径: POST /heart-rate-data/add
  • 功能描述: 添加用户的心率数据
  • 请求参数:

    {
    "heartRate": 75,
    "measureTime": "2024-01-15T10:30:00"
    }
    
  • 参数说明:

    • heartRate: 心率(次/分钟),范围30-200,必填
    • measureTime: 测量时间,必填
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "添加成功",
    "data": null
    }
    

2. 查询心率数据列表

  • 接口路径: POST /heart-rate-data/list
  • 功能描述: 分页查询用户的心率数据历史记录
  • 请求参数:

    {
    "pageNum": 1,
    "pageSize": 10,
    "startTime": "2024-01-01T00:00:00",
    "endTime": "2024-01-31T23:59:59"
    }
    
  • 响应示例:

    {
    "code": "SUCCESS",
    "message": "查询成功",
    "data": {
        "records": [
            {
                "id": 1,
                "heartRate": 75,
                "measureTime": "2024-01-15T10:30:00",
                "createTime": "2024-01-15T10:35:00"
            }
        ],
        "current": 1,
        "size": 10,
        "total": 1
    }
    }
    

错误码定义

通用错误码

  • SUCCESS: 操作成功
  • PARAM_ERROR: 参数校验失败
  • SYSTEM_ERROR: 系统内部错误
  • UNAUTHORIZED: 未授权访问
  • FORBIDDEN: 权限不足

业务错误码

  • DATA_NOT_FOUND: 数据不存在
  • DATA_ALREADY_EXISTS: 数据已存在
  • INVALID_MEASURE_TIME: 无效的测量时间
  • INVALID_DATA_RANGE: 数据超出有效范围

接口调用示例

添加体格数据

curl -X POST "http://localhost:8080/physical-data/add" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "height": 170.5,
    "weight": 65.2,
    "measureTime": "2024-01-15T10:30:00"
  }'

查询体格数据

curl -X POST "http://localhost:8080/physical-data/list" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "pageNum": 1,
    "pageSize": 10
  }'

计算BMI

curl -X GET "http://localhost:8080/physical-data/bmi?height=170.5&weight=65.2" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

注意事项

  1. 数据单位: 严格按照接口文档中定义的单位进行数据录入
  2. 时间格式: 所有时间字段使用ISO 8601格式
  3. 分页参数: 页码从1开始,每页大小不超过100
  4. 权限控制: 所有接口都需要有效的用户认证
  5. 数据校验: 前端应进行初步校验,后端会进行二次校验
  6. 并发控制: 高频数据录入时注意避免重复提交

版本信息

  • API版本: v1.0
  • 文档版本: 1.0
  • 更新日期: 2024-01-15
  • d:\慢病APP\ChronicDiseaseApp\docs\HealthDataAPIDocument.md