在健康管理系统中,健康指标的计算与评估是核心功能之一。它不仅能够帮助用户了解自身健康状况,还能为用户提供个性化的健康建议。本文以 AI-HEALTH 系统为例,详细介绍健康指标的定义、计算方法实现、评估标准制定以及报告生成系统。


一、健康指标定义

1. 核心健康维度

AI-HEALTH 系统定义了五个核心健康维度,每个维度都包含多个关键指标:

  • 饮食健康:
  •   营养均衡性:评估食物种类是否多样化
  •   食物多样性:评估摄入食物的种类数量
  •   热量控制:评估卡路里摄入是否合理
  •   记录完整性:评估饮食记录的频率和详细程度

  • 运动健康:
  •   运动频率:评估每周运动次数
  •   运动强度:评估运动的强度水平
  •   运动时长:评估每次运动的持续时间
  •   运动多样性:评估运动类型的多样性

  • 睡眠质量:
  • 睡眠时长:评估每天睡眠时间
  • 睡眠规律性:评估睡眠作息是否规律
  • 睡眠质量:评估睡眠的深度和质量
  • 入睡时间:评估入睡时间是否合理

  • 情绪状态:
  •   情绪稳定性:评估情绪波动程度
  •   积极情绪占比:评估积极情绪的比例
  •   压力管理:评估压力应对能力
  •   情绪记录完整性:评估情绪记录的频率和详细程度

  • 体重管理:
  •   体重记录规律性:评估体重测量的频率
  •   体重变化趋势:评估体重变化的方向和速度
  •   BMI健康范围:评估体重是否在健康范围内

2. 健康等级定义

系统将健康状况分为四个等级:

  • 优秀:该维度表现优异,符合健康标准,无需改进
  • 良好:该维度表现较好,基本符合健康标准,有轻微改进空间
  • 一般:该维度表现一般,部分符合健康标准,需要一定改进
  • 需改善:该维度表现较差,不符合健康标准,需要重点改进


 二、计算方法实现

 1. 数据收集与预处理

系统通过以下步骤收集和预处理健康数据:

// 获取所有健康数据
Map<String, Object> healthData = new HashMap<>();
healthData.put("food", foodRecordSummaryService.getFoodRecordSummary(username, startDate, endDate));
healthData.put("mood", moodRecordSummaryService.getMoodRecordSummary(username, startDate, endDate));
healthData.put("sleep", sleepRecordSummaryService.getSleepRecordSummary(username, startDate, endDate));
healthData.put("weight", weightRecordSummaryService.getWeightRecordSummary(username, startDate, endDate));
healthData.put("workout", workoutSummaryService.getWorkoutSummary(username, startDate, endDate));

 2. 健康分析生成

系统使用 AI API 生成健康分析报告:

// 构建提示词
String prompt = buildPrompt(healthData, startDate, endDate, analysisNotes);

// 构建请求体
Map<String, Object> requestData = new HashMap<>();
requestData.put("model", "xop35qwen2b");
List<Map<String, String>> messages = new ArrayList<>();
Map<String, String> message = new HashMap<>();
message.put("role", "user");
message.put("content", prompt);
messages.add(message);
requestData.put("messages", messages);
requestData.put("max_tokens", 4000);
requestData.put("temperature", 0.5);

// 发送请求
ResponseEntity<Map> responseEntity = restTemplate.exchange(
        aiApiUrl + "/chat/completions",
        HttpMethod.POST,
        requestEntity,
        Map.class
);


 

 3. 健康等级计算

系统通过两种方式计算健康等级:


private String calculateHealthLevel(String analysis) {
    // 首先尝试提取综合评价
    Pattern pattern = Pattern.compile("综合评价[::]?\\s*【?([优秀良好一般需改善]+)】?");
    Matcher matcher = pattern.matcher(analysis);

    if (matcher.find()) {
        return matcher.group(1);
    }

    // 如果没有找到综合评价,尝试基于各个维度的评价计算综合等级
    Map<String, Integer> levelScores = new HashMap<>();
    levelScores.put("优秀", 4);
    levelScores.put("良好", 3);
    levelScores.put("一般", 2);
    levelScores.put("需改善", 1);

    Pattern dimensionPattern = Pattern.compile("[\u4e00-\u9fa5]+健康[::]?\\s*【?([优秀良好一般需改善]+)】?");
    Matcher dimensionMatcher = dimensionPattern.matcher(analysis);

    int totalScore = 0;
    int count = 0;

    while (dimensionMatcher.find()) {
        String level = dimensionMatcher.group(1);
        if (levelScores.containsKey(level)) {
            totalScore += levelScores.get(level);
            count++;
        }
    }

    if (count > 0) {
        double avgScore = (double) totalScore / count;
        // 四舍五入到最接近的整数
        int roundedScore = (int) Math.round(avgScore);
        // 确保分数在有效范围内
        roundedScore = Math.max(1, Math.min(4, roundedScore));
        for (Map.Entry<String, Integer> entry : levelScores.entrySet()) {
            if (entry.getValue() == roundedScore) {
                return entry.getKey();
            }
        }
    }

    // 如果没有找到评价,返回默认值
    return "未评价";
}
```


 三、评估标准制定

1. 评价维度与标准

系统在提示词中定义了详细的评价维度与标准:

```java
prompt.append("**健康评价体系**:\n");
prompt.append("1. **评价维度与标准**:\n");
prompt.append("   - 饮食健康:评估营养均衡性、食物多样性、热量控制、记录完整性\n");
prompt.append("   - 运动健康:评估运动频率、运动强度、运动时长、运动多样性\n");
prompt.append("   - 睡眠质量:评估睡眠时长、睡眠规律性、睡眠质量、入睡时间\n");
prompt.append("   - 情绪状态:评估情绪稳定性、积极情绪占比、压力管理、情绪记录完整性\n");
prompt.append("   - 体重管理:评估体重记录规律性、体重变化趋势、BMI健康范围\n\n");

2. 评价原则

系统制定了以下评价原则:


prompt.append("3. **评价原则**:\n");
prompt.append("   - 基于实际记录数据进行客观评价\n");
prompt.append("   - 缺少记录不代表不健康,应基于已有数据评价\n");
prompt.append("   - 各维度独立评价,不互相影响\n");
prompt.append("   - 综合评价基于各维度表现的综合判断\n\n");

 3. 评价输出要求

系统对评价输出有严格要求:

prompt.append("4. **输出要求**:\n");
prompt.append("   - 严格按照指定格式返回评价,使用【】括号标注评价等级\n");
prompt.append("   - 每个维度必须给出明确的评价等级(优秀/良好/一般/需改善)\n");
prompt.append("   - 必须提供详细的评价依据和具体说明\n");
prompt.append("   - 综合评价必须与各维度评价逻辑一致\n");
prompt.append("   - **必须输出免责声明**,不得省略\n\n");


 


四、报告生成系统

 1. 报告格式规范

系统定义了严格的报告格式:

prompt.append("## 格式规范\n\n");
prompt.append("**请严格按照以下格式返回内容,不得添加任何额外的标题、段落或格式!**\n");
prompt.append("**必须完全按照指定的标题结构和格式返回,包括所有标题和子标题!**\n");
prompt.append("**必须保持所有标题的层级关系和格式不变!**\n");
prompt.append("**必须为每个部分提供完整的内容,不得留空!**\n");
prompt.append("**以下是格式模板,仅作为结构参考,请勿输出模板中的示例文本!**\n\n");


 

 2. 报告结构

报告包含以下部分:

  • 健康分析:详细分析整体健康状况,涵盖饮食、运动、睡眠、情绪、体重五个方面
  • 健康评价:使用优良中差等级制,附详细依据,每个维度都要给出具体评价
  • 个性化健康建议:针对饮食、运动、睡眠、情绪等方面给出具体可操作的建议
  • 改进方向:指出需要关注的风险点和对以后的建议
  • 免责声明:说明报告仅基于提供的数据,不构成医疗建议

3. 报告存储与管理

系统将生成的报告存储到数据库中:


 

@Override
public void saveAnalysisRecord(String username, String startDate, String endDate, Map<String, Object> analysisResult) {
    HealthAnalysisRecord record = new HealthAnalysisRecord();
    record.setUsername(username);
    record.setStartDate(startDate);
    record.setEndDate(endDate);
    record.setAnalysisContent((String) analysisResult.get("analysis"));
    
    // 设置健康等级
    String healthLevel = (String) analysisResult.get("healthLevel");
    record.setHealthLevel(healthLevel);
    
    record.setCreatedAt(new Date());
    record.setFavorited(false);
    
    // 设置分析日期(格式:yyyy-MM-dd ~ yyyy-MM-dd)
    String analysisDate = analysisResult.get("analysisDate") != null ? 
        (String) analysisResult.get("analysisDate") : 
        formatDateRange(startDate, endDate);
    record.setAnalysisDate(analysisDate);

    healthAnalysisRecordRepository.save(record);
}


五、总结

健康指标的计算与评估是健康管理系统的核心功能,它能够帮助用户全面了解自身健康状况,并提供个性化的健康建议。AI-HEALTH 系统通过以下步骤实现健康指标的计算与评估:

1. 多维度数据收集:收集用户的饮食、运动、睡眠、情绪和体重数据
2.AI 分析**:使用 AI API 生成详细的健康分析报告
3. 健康等级计算:基于 AI 分析结果计算健康等级
4. 标准化报告生成:生成结构规范的健康分析报告
5. 报告存储与管理:将报告存储到数据库中,方便用户查看历史记录

系统的健康评价体系基于科学的评价标准,采用客观、全面的评价方法,能够为用户提供准确、有用的健康评估结果。同时,系统通过 AI 技术生成个性化的健康建议,帮助用户改善健康状况。

未来,系统可以考虑引入更多健康指标,如血压、血糖等生理指标,以及更先进的 AI 模型,进一步提高健康分析的准确性和个性化程度。通过不断优化健康指标的计算与评估系统,AI-HEALTH 系统将更好地为用户的健康保驾护航。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐