SuperAPI AI 工具集

health-data

数据与分析

查看项目

更新于 10-15 09:16

技能介绍

用途

health-data 是一个用于查询和分析 Apple Health 本地 SQLite 数据库的技能。该数据库包含 630 万条以上记录,覆盖 43 种健康指标,数据时间范围为 2015-10-13 至今,包含 1,435 次锻炼会话、40,514 条睡眠记录和 1,875 天活动摘要。数据库位置为 ~/data/health.db。

主要能力

该技能支持查询生命体征、活动、睡眠和锻炼数据,并提供多种预置查询:

  • 每日健康摘要:返回步数、卡路里、心率(平均/最低/最高)、锻炼分钟数、距离和活动圆环状态。
  • 每周趋势:对比周与周的表现,返回平均每日步数、静息心率、锻炼分钟数和每周锻炼次数。
  • 睡眠分析:返回每晚时长、睡眠阶段(Core、Deep、REM)和平均睡眠小时数。
  • 最新生命体征:返回心率、HRV、静息心率、血氧、呼吸频率及时间戳。
  • 活动圆环:返回每日圆环数值/目标、完成百分比和完美天数。
  • 锻炼历史:返回锻炼类型、时长、距离、卡路里及按类型汇总。

数据库包含 43 种健康指标类型,涵盖:生命体征(心率、HRV、静息心率、血氧、呼吸频率、血压)、活动(步数、距离、活动卡路里、基础卡路里、爬楼层数、锻炼时间、站立时间)、移动能力(步行速度、步长、步行不对称性、爬楼速度、步行稳定性)、身体(体重、BMI、体脂率)、音频(环境噪音、耳机暴露)以及其他(VO2 Max、日光时间、紫外线暴露)。

使用方式

Python 脚本(推荐用于常见查询)

使用 scripts/health_query.py 进行预置查询并自动格式化:

# 每日摘要
python ~/.claude/skills/health-data/scripts/health_query.py --format markdown daily --date 2025-11-29

# 每周趋势
python ~/.claude/skills/health-data/scripts/health_query.py --format json weekly --weeks 4

# 睡眠分析
python ~/.claude/skills/health-data/scripts/health_query.py --format fhir sleep --days 7

# 最新生命体征
python ~/.claude/skills/health-data/scripts/health_query.py vitals

# 活动圆环
python ~/.claude/skills/health-data/scripts/health_query.py --format json activity --days 30

# 锻炼历史
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running

# 自定义 SQL
python ~/.claude/skills/health-data/scripts/health_query.py --format json query "SELECT * FROM workouts LIMIT 5"

输出格式包括:markdown、json、fhir、ascii。

直接 SQL(用于自定义/临时查询)

可直接对数据库运行 SQL。表结构和查询模板参见 references/schema.md。

sqlite3 ~/data/health.db "SELECT AVG(value) FROM health_records WHERE record_type LIKE '%HeartRate%' AND start_date LIKE '2025-11%'"

输出格式

  • Markdown(默认):人类可读的表格和列表,适合报告和摘要。
  • JSON:结构化数据,供程序化使用。
  • FHIR R4:医疗互操作格式,输出为包含 Observation 资源的 FHIR Bundle,使用 LOINC 编码,编码映射参见 references/fhir_mappings.md。
  • ASCII:终端友好输出,带条形图和统计信息。

常见 SQL 模式

心率按小时(昼夜节律模式):

SELECT strftime('%H', start_date) as hour, ROUND(AVG(value), 1) as avg_hr
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierHeartRate'
AND value BETWEEN 40 AND 200
GROUP BY hour ORDER BY hour;

本月每日步数:

SELECT DATE(start_date) as day, SUM(value) as steps
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierStepCount'
AND start_date >= DATE('now', 'start of month')
GROUP BY day ORDER BY day;

睡眠质量(深睡 + REM 小时):

SELECT DATE(start_date) as night,
       ROUND(SUM(duration_minutes)/60.0, 1) as quality_hours
FROM sleep_sessions
WHERE sleep_stage IN ('Deep', 'REM')
GROUP BY night ORDER BY night DESC LIMIT 14;

锻炼汇总:

SELECT REPLACE(workout_type, 'HKWorkoutActivityType', '') as type,
       COUNT(*) as count, ROUND(SUM(duration_minutes)) as total_min
FROM workouts
WHERE start_date >= DATE('now', '-30 days')
GROUP BY type ORDER BY count DESC;

适用场景

适用于个人健康数据回顾、周与周趋势对比、睡眠模式分析、锻炼统计、生命体征追踪,以及需要将健康数据导出为 FHIR R4 格式用于医疗互操作的场景。

限制与故障排查

  • 数据库未找到:确保 ~/data/health.db 存在。可从 /Users/server/apple_health_export/ 运行导入脚本:python import_health.py --status。
  • 日期范围无数据:检查可用日期范围:SELECT MIN(start_date), MAX(start_date) FROM health_records;。
  • 异常值:过滤生理有效范围(如心率 40-200 bpm):WHERE value BETWEEN 40 AND 200。

资源

  • scripts/health_query.py:主查询工具,支持 Markdown/JSON/FHIR 输出。
  • references/schema.md:数据库模式、记录类型映射、SQL 查询模板。
  • references/fhir_mappings.md:LOINC 编码和 FHIR R4 模板。