Метрики здоровья — формат JSON-экспорта

Описание структуры метрик здоровья в JSON-экспорте

Last updated: April 5, 2026

На этой странице

Метрики здоровья

Метрики здоровья — это различные измерения и данные, собираемые приложением Apple «Здоровье» и подключёнными устройствами. В JSON-экспорте метрики здоровья хранятся в массиве metrics.

Формат имён метрик

Все имена метрик в JSON-экспорте задаются в формате snake_case (нижний регистр и подчёркивания). Например:

  • «Step Count» становится "step_count"
  • «Blood Pressure» — "blood_pressure"
  • «Heart Rate» — "heart_rate"
  • «Walking + Running Distance» — "walking_running_distance"

Структура

Массив metrics содержит объекты; каждый объект соответствует определённому типу метрики здоровья. Большинство метрик следуют общей схеме:

{
  "name": "step_count",
  "units": "count",
  "data": [
    {
      "qty": 8500,
      "date": "2024-02-06 14:30:00 -0800"
    }
  ]
}

Общие поля

  • name (String): имя метрики здоровья в формате snake_case (например, "step_count", "heart_rate", "active_energy")
  • units (String): единица измерения (например, "count", "bpm", "kcal")
  • data (Array): массив точек данных; каждая точка содержит:
    • qty (Number): числовое значение
    • date (Date): метка времени в формате yyyy-MM-dd HH:mm:ss Z

Особые форматы метрик

У части метрик здоровья структура отличается от общей:

Артериальное давление

Показания артериального давления включают систолическое и диастолическое значения:

{
  "name": "blood_pressure",
  "units": "mmHg",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "systolic": 120,
      "diastolic": 80
    }
  ]
}

Поля:

  • systolic (Number): систолическое (верхнее) артериальное давление
  • diastolic (Number): диастолическое (нижнее) артериальное давление

Пульс

Данные о пульсе включают минимальное, среднее и максимальное значения:

{
  "name": "heart_rate",
  "units": "bpm",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "Min": 65,
      "Avg": 72,
      "Max": 85
    }
  ]
}

Поля:

  • Min (Number): минимальный пульс за период измерения
  • Avg (Number): средний пульс за период измерения
  • Max (Number): максимальный пульс за период измерения

Анализ сна

Структура данных о сне зависит от того, включена ли агрегация данных в настройках экспорта.

Агрегированные данные о сне

При включённой агрегации данные о сне суммируются по дням:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "date": "2024-02-06",
      "totalSleep": 7.5,
      "asleep": 7.0,
      "core": 3.5,
      "deep": 1.5,
      "rem": 2.0,
      "sleepStart": "2024-02-05 23:00:00 -0800",
      "sleepEnd": "2024-02-06 06:30:00 -0800",
      "inBed": 8.0,
      "inBedStart": "2024-02-05 22:45:00 -0800",
      "inBedEnd": "2024-02-06 06:45:00 -0800"
    }
  ]
}

Поля:

  • totalSleep (Number): общее время сна в часах
  • asleep (Number): общее время в любом состоянии сна
  • core (Number): длительность основного (core) сна в часах
  • deep (Number): длительность глубокого сна в часах
  • rem (Number): длительность фазы REM в часах
  • sleepStart (Date): фактическое начало сна
  • sleepEnd (Date): фактическое окончание сна
  • inBed (Number): общее время в кровати в часах
  • inBedStart (Date): время, когда вы легли в кровать
  • inBedEnd (Date): время, когда вы встали с кровати

Неагрегированные данные о сне

При отключённой агрегации включаются отдельные сегменты сна:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "startDate": "2024-02-05 23:00:00 -0800",
      "endDate": "2024-02-05 23:30:00 -0800",
      "qty": 0.5,
      "value": "Core",
      "deep": 0.0,
      "rem": 0.0,
      "sleepStart": "2024-02-05 23:00:00 -0800",
      "sleepEnd": "2024-02-06 06:30:00 -0800",
      "inBed": 8.0,
      "inBedStart": "2024-02-05 22:45:00 -0800",
      "inBedEnd": "2024-02-06 06:45:00 -0800"
    }
  ]
}

Поля:

  • startDate (Date): начало сегмента сна
  • endDate (Date): конец сегмента сна
  • qty (Number): длительность сегмента в часах
  • value (String): состояние сна — одно из:
    • "Awake"
    • "Asleep" (неклассифицированная фаза сна)
    • "In Bed"
    • "Core"
    • "REM"
    • "Deep"
    • "Unspecified"

Примечание: "Asleep" обозначает неклассифицированную фазу сна (а не суммарное время сна). Так бывает, если источник данных не поддерживает раздельный учёт фаз сна.

Глюкоза крови

Показания глюкозы крови включают информацию о приёме пищи:

{
  "name": "blood_glucose",
  "units": "mg/dL",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 95,
      "mealTime": "Before Meal"
    }
  ]
}

Поля:

  • qty (Number): уровень глюкозы в крови
  • mealTime (String): одно из:
    • "Before Meal"
    • "After Meal"
    • "Unspecified"

Сексуальная активность

Записи о сексуальной активности отражают использование защиты:

{
  "name": "sexual_activity",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 20:00:00 -0800",
      "Unspecified": 0,
      "Protection Used": 1,
      "Protection Not Used": 0
    }
  ]
}

Поля:

  • Unspecified (Number): число случаев, когда статус защиты неизвестен
  • Protection Used (Number): число случаев, когда защита использовалась
  • Protection Not Used (Number): число случаев, когда защита не использовалась

Мытьё рук

События мытья рук фиксируют завершённость:

{
  "name": "handwashing",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 12:00:00 -0800",
      "qty": 1,
      "value": "Complete"
    }
  ]
}

Поля:

  • qty (Number): число событий мытья рук
  • value (String): одно из:
    • "Complete"
    • "Incomplete"

Чистка зубов

События чистки зубов фиксируют завершённость:

{
  "name": "toothbrushing",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 1,
      "value": "Complete"
    }
  ]
}

Поля:

  • qty (Number): число событий чистки зубов
  • value (String): одно из:
    • "Complete"
    • "Incomplete"

Введение инсулина

Записи о введении инсулина включают причину введения:

{
  "name": "insulin_delivery",
  "units": "IU",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 5,
      "reason": "Bolus"
    }
  ]
}

Поля:

  • qty (Number): объём введённого инсулина
  • reason (String): одно из:
    • "Bolus" (инсулин на приём пищи)
    • "Basal" (базальный инсулин)

Распространённые метрики здоровья

К часто экспортируемым метрикам относятся (все имена — в формате snake_case):

  • step_count — количество шагов за день
  • walking_running_distance — пройденная дистанция
  • active_energy — калории, сожжённые за счёт активности
  • resting_heart_rate — пульс в покое
  • heart_rate — измерения пульса
  • respiratory_rate — частота дыхания
  • body_temperature — температура тела
  • blood_oxygen_saturation — уровень SpO₂
  • weight_&_body_mass — масса тела
  • body_mass_index — рассчитанный ИМТ
  • height — рост
  • dietary_water — потребление жидкости
  • mindful_minutes — время медитации или осознанности

Советы

  • Группировка по времени: в настройках экспорта задайте группировку по времени, чтобы управлять агрегацией данных (по секунде, минуте, часу, дню и т. д.).
  • Агрегация данных: включите агрегацию, чтобы суммировать сон и другие метрики по дням — так проще анализировать.
  • Выборочный экспорт: можно выбрать конкретные метрики здоровья для экспорта, чтобы уменьшить размер файла и время обработки.

См. также