---
name: health-trend-analyzer
description: 分析一段时间内健康数据的趋势和模式。关联药物、症状、生命体征、化验结果和其他健康指标的变化。识别令人担忧的趋势、改善情况，并提供数据驱动的洞察。当用户询问健康趋势、模式、随时间的变化或"我的健康状况有什么变化？"时使用。支持多维度分析（体重/BMI、症状、药物依从性、化验结果、情绪睡眠），相关性分析，变化检测，以及交互式HTML可视化报告（ECharts图表）。
allowed-tools: Read, Grep, Glob, Write
risk: unknown
source: community
---

# 健康趋势分析器

分析一段时间内健康数据的趋势和模式，识别变化、相关性，并提供数据驱动的健康洞察。

## 核心功能

### 1. 多维度趋势分析
- **体重/BMI 趋势**：追踪体重和BMI随时间的变化，评估健康趋势
- **症状模式**：识别反复出现的症状、频率变化、潜在诱因
- **药物依从性**：分析用药规律，识别漏服模式和改善空间
- **化验结果趋势**：追踪生化指标变化（胆固醇、血糖、血压等）
- **情绪与睡眠**：关联情绪状态与睡眠质量，识别心理健康趋势

### 2. 相关性分析引擎
- **药物-症状相关性**：识别新药物是否与症状变化相关
- **生活方式影响**：关联饮食/睡眠与症状和情绪
- **治疗效果评估**：衡量治疗是否导致改善
- **周期-症状相关性**：女性健康追踪中的周期相关性

### 3. 变化检测
- **显著变化**：警告快速体重变化、新症状、药物变化
- **恶化模式**：早期识别健康状况下降
- **改善识别**：强调积极的健康变化
- **阈值警报**：接近危险水平时警告（辐射、BMI极值）

### 4. 预测性洞察
- **风险评估**：基于趋势识别风险因素
- **预防建议**：基于模式建议预防措施
- **早期预警**：在问题变得严重之前预测

## 使用说明

### 触发条件

当用户提到以下场景时，使用此技能：

**通用询问**：
- ✅ "过去一段时间我的健康有什么变化？"
- ✅ "分析我的健康趋势"
- ✅ "我的身体状况有什么变化？"
- ✅ "健康状况总结"

**具体维度**：
- ✅ "我的体重/BMI有什么趋势？"
- ✅ "分析我的症状模式"
- ✅ "我的用药依从性怎么样？"
- ✅ "我的化验指标有什么变化？"
- ✅ "我的情绪和睡眠趋势"

**相关性分析**：
- ✅ "我的症状和什么相关？"
- ✅ "我的药物有效吗？"
- ✅ "睡眠和我的情绪有什么关系？"

**时间范围**：
- 默认分析**过去3个月**的数据
- 支持："过去1个月"、"过去6个月"、"过去1年"
- 支持："2025年1月至今"、"最近90天"

### 执行步骤

#### 步骤 1：确定分析时间范围

从用户输入中提取时间范围，或使用默认值（3个月）。

#### 步骤 2：读取健康数据

读取以下数据源：

```javascript
// 1. 个人档案（BMI、体重）
const profile = readFile('data/profile.json');

// 2. 症状记录
const symptomFiles = glob('data/symptoms/**/*.json');
const symptoms = readAllJson(symptomFiles);

// 3. 情绪记录
const moodFiles = glob('data/mood/**/*.json');
const moods = readAllJson(moodFiles);

// 4. 饮食记录
const dietFiles = glob('data/diet/**/*.json');
const diets = readAllJson(dietFiles);

// 5. 用药日志
const medicationLogs = glob('data/medication-logs/**/*.json');

// 6. 女性健康数据（如适用）
const cycleData = readFile('data/cycle-tracker.json');
const pregnancyData = readFile('data/pregnancy-tracker.json');
const menopauseData = readFile('data/menopause-tracker.json');

// 7. 过敏史
const allergies = readFile('data/allergies.json');

// 8. 辐射记录
const radiation = readFile('data/radiation-records.json');
```

#### 步骤 3：数据过滤

根据时间范围过滤数据：

```javascript
function filterByDate(data, startDate, endDate) {
  return data.filter(item => {
    const itemDate = new Date(item.date || item.created_at);
    return itemDate >= startDate && itemDate <= endDate;
  });
}
```

#### 步骤 4：趋势分析

对每个数据维度进行趋势分析：

**4.1 体重/BMI 趋势**
- 提取历史体重数据
- 计算BMI变化
- 识别趋势方向（上升/下降/稳定）
- 评估变化幅度

**4.2 症状模式**
- 统计症状频率
- 识别高频症状
- 分析症状时间模式
- 检测症状诱因

**4.3 药物依从性**
- 计算总体依从率
- 分析各药物依从性
- 识别漏服模式
- 评估改善建议

**4.4 化验结果**
- 追踪多次报告中的生化指标
- 与参考范围对比
- 识别改善/恶化
- 标记异常指标

**4.5 情绪与睡眠**
- 关联情绪评分与睡眠时长
- 识别情绪波动模式
- 检测压力水平
- 评估心理健康趋势

#### 步骤 5：相关性分析

使用统计方法识别相关性：

```javascript
// 皮尔逊相关系数
function pearsonCorrelation(x, y) {
  // 计算相关系数
  // 返回值范围：-1（负相关）到 1（正相关）
}

// 应用场景
- 药物开始日期 vs 症状频率
- 睡眠时长 vs 情绪评分
- 体重变化 vs 饮食记录
- 运动量 vs 情绪状态
```

#### 步骤 6：变化检测

识别显著变化：

```javascript
// 变化点检测
function detectChangePoints(timeSeries) {
  // 使用统计方法检测显著变化点
  // 例如：体重突然下降、症状突然增加
}

// 阈值警报
function checkThresholds(value, thresholds) {
  // 检查是否接近或超过危险阈值
  // 例如：BMI > 30、辐射剂量 > 安全限
}
```

#### 步骤 7：生成洞察

基于分析结果生成预测性洞察：

```javascript
// 风险评估
function assessRisks(trends) {
  // 识别高风险趋势
  // 例如：快速体重下降、频繁症状
}

// 预防建议
function generateRecommendations(trends, correlations) {
  // 基于模式建议预防措施
  // 例如：改善睡眠、提高用药依从性
}

// 早期预警
function earlyWarnings(trends) {
  // 在问题变得严重之前预测
  // 例如：症状频率上升、情绪持续低落
}
```

#### 步骤 8：生成可视化报告

生成交互式HTML报告：

1. **数据汇总**：生成JSON格式的分析结果
2. **HTML模板渲染**：将数据注入HTML模板
3. **ECharts图表配置**：配置6种交互式图表
4. **保存文件**：保存为独立HTML文件

详细输出格式参见：数据源说明

## 输出格式

### 文本报告（简洁版）

```
健康趋势分析报告
━━━━━━━━━━━━━━━━━━━━━━━━━━
生成时间: 2025-12-31
分析周期: 过去3个月 (2025-10-01 至 2025-12-31)

📊 总体评估
━━━━━━━━━━━━━━━━━━━━━━━━━━
改善中: 体重管理、胆固醇水平
稳定: 血糖控制、情绪状态
需关注: 用药依从性、睡眠质量

📊 体重/BMI 趋势
├─ 当前体重: 68.5 kg
├─ 当前 BMI: 23.1（正常范围）
├─ 3个月变化: -2.3 kg（-3.2%）
├─ 趋势: 📉 逐渐减重
└─ 评估: ✅ 积极趋势，在健康范围内

💊 药物依从性
├─ 当前药物: 3种
├─ 总体依从率: 78%
├─ 漏服次数: 8次
├─ 最好: 阿司匹林 (95%)
└─ 需改进: 氨氯地平 (65%)

⚠️ 症状模式
├─ 最频繁: 头痛（过去3个月 12次）
├─ 趋势: 📉 频率下降（较上期减少4次）
├─ 潜在诱因: 与睡眠质量识别出中等相关（r=0.62）
└─ 建议: 继续改善睡眠模式

🧪 化验结果趋势
├─ 胆固醇: 240 → 210 mg/dL（改善 ✅）
├─ 血糖: 5.6 → 5.4 mmol/L（稳定）
├─ 上次检查: 30天前
└─ 建议: 3个月后复查

😊 情绪与睡眠
├─ 平均情绪评分: 6.8/10
├─ 平均睡眠时长: 6.5小时
├─ 趋势: 情绪稳定，睡眠略有改善
└─ 相关性: 睡眠时长与情绪评分强相关（r=0.78）

🔗 相关性分析
━━━━━━━━━━━━━━━━━━━━━━━━━━
• 睡眠时长 ↔ 情绪评分: 强正相关 (r=0.78)
• 体重变化 ↔ 饮食记录: 中等相关 (r=0.55)
• 用药依从性 ↔ 症状频率: 中等负相关 (r=-0.62)

💡 风险评估与建议
━━━━━━━━━━━━━━━━━━━━━━━━━━

🟢 继续保持
• 当前体重管理方法有效
• 胆固醇水平改善明显

🟡 需要关注
• 提高氨氯地平依从性（设置提醒）
• 增加睡眠时长至7-8小时

📅 复查计划
• 3个月后复查血脂四项
• 1个月后评估用药依从性改善

━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 免责声明
本分析仅供参考，不替代专业医疗诊断。
请咨询医生获取专业建议。
```

### HTML可视化报告（完整版）

生成包含ECharts交互式图表的独立HTML文件，包含：

1. **总体评估卡片**：关键指标一目了然
2. **体重/BMI趋势图**：双Y轴折线图（体重 + BMI）
3. **症状频率图**：颜色编码的柱状图（高频红/中频黄/低频绿）
4. **药物依从性仪表盘**：总体依从率 + 各药物详情
5. **化验结果趋势图**：多系列折线图 + 参考线
6. **相关性热图**：热力图展示变量间相关性
7. **情绪与睡眠面积图**：双Y轴面积图

**HTML文件特点**：
- ✅ 完全独立（所有依赖通过CDN）
- ✅ 交互式图表（缩放、导出、图例切换）
- ✅ 响应式设计（移动端适配）
- ✅ 可打印（打印优化样式）
- ✅ 可分享（发送给医生）

## 数据源

### 主要数据源

| 数据源 | 文件路径 | 数据内容 |
|--------|---------|---------|
| 个人档案 | `data/profile.json` | 体重、身高、BMI历史 |
| 症状记录 | `data/symptoms/**/*.json` | 症状名称、严重程度、持续时间 |
| 情绪记录 | `data/mood/**/*.json` | 情绪评分、睡眠质量、压力水平 |
| 饮食记录 | `data/diet/**/*.json` | 餐次、食物、卡路里、营养素 |
| 用药日志 | `data/medication-logs/**/*.json` | 用药时间、依从性记录 |
| 化验结果 | `data/medical_records/**/*.json` | 生化指标、参考范围 |

### 辅助数据源

| 数据源 | 文件路径 | 数据内容 |
|--------|---------|---------|
| 女性周期 | `data/cycle-tracker.json` | 周期长度、症状记录 |
| 孕期追踪 | `data/pregnancy-tracker.json` | 孕周、体重、检查记录 |
| 更年期 | `data/menopause-tracker.json` | 症状、HRT使用 |
| 过敏史 | `data/allergies.json` | 过敏原、严重程度 |
| 辐射记录 | `data/radiation-records.json` | 累积辐射剂量 |

详细数据结构说明请参考：data-sources.md

## 分析算法

### 时间序列分析
- 趋势检测（线性回归）
- 季节性分析
- 异常值检测

### 相关性分析
- 皮尔逊相关系数（连续变量）
- 斯皮尔曼相关系数（有序变量）
- 交叉相关分析（时间序列）

### 变化点检测
- CUSUM算法
- 滑动窗口t检验
- 贝叶斯变化点检测

### 统计指标
- 均值、中位数、标准差
- 百分位数（25%, 50%, 75%）
- 变化率（环比、同比）

详细算法说明请参考：algorithms.md

## 安全与隐私

### 必须遵循

- ❌ 不给出医疗诊断
- ❌ 不给出具体用药建议
- ❌ 不判断生死预后
- ❌ 标注免责声明（仅供参考）

### 信息准确度

- ✅ 仅基于已记录的数据进行分析
- ✅ 不推测或推断缺失信息
- ✅ 明确标注数据来源和时间范围
- ✅ 建议应由医疗专业人员审查

### 隐私保护

- ✅ 所有数据保持本地
- ✅ 无外部API调用
- ✅ 分析结果仅保存在本地
- ✅ HTML报告独立运行（无数据传输）

## 错误处理

### 数据缺失
- **无数据**：输出"暂无数据，建议先记录[数据类型]"
- **数据不足**：输出"数据不足（需要至少1个月数据才能进行趋势分析）"
- **数据范围窄**：使用现有数据，提示"建议延长记录时间以获得更准确的趋势"

### 分析失败
- **无法计算趋势**：输出"无法计算趋势，数据点不足"
- **相关性分析失败**：输出"相关性分析需要更多数据"
- **图表渲染失败**：降级为文本报告

## 使用示例

### 示例 1：一般健康趋势
**用户**："过去3个月我的健康有什么变化？"
**输出**：生成完整的HTML报告，包含所有维度的趋势分析

### 示例 2：症状分析
**用户**："分析我的症状模式"
**输出**：重点分析症状频率、诱因、趋势

### 示例 3：体重趋势
**用户**："我的体重有什么趋势？"
**输出**：重点分析体重/BMI变化、与饮食/运动的相关性

### 示例 4：药物有效性
**用户**："我的降压药有效吗？"
**输出**：关联药物开始日期与血压读数、症状改善

更多完整示例请参考：examples.md

## 相关命令

- `/symptom`：记录症状
- `/mood`：记录情绪
- `/diet`：记录饮食
- `/medication`：管理药物和用药记录
- `/query`：查询特定数据点

## 技术实现

### 工具限制

此Skill仅使用以下工具（无需额外权限）：
- **Read**：读取JSON数据文件
- **Grep**：搜索特定模式
- **Glob**：按模式查找数据文件
- **Write**：生成HTML报告（保存到`data/health-reports/`）

### 性能优化

- 增量读取：仅读取指定时间范围的数据文件
- 数据缓存：避免重复读取同一文件
- 延迟计算：按需生成图表数据

### 扩展性

- 支持添加新的数据维度
- 支持自定义图表类型
- 支持自定义分析算法
