Показники здоров’я — формат експорту JSON

Документація щодо структури показників здоров’я в JSON-експортах

Last updated: April 5, 2026

На цій сторінці

Показники здоров’я

Показники здоров’я — це різні вимірювання та точки даних, зібрані застосунком Apple Health і підключеними пристроями. У 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 — рівні SpO2
  • weight_&_body_mass — вимірювання маси тіла
  • body_mass_index — розраховані значення ІМТ
  • height — вимірювання зросту
  • dietary_water — споживання рідини
  • mindful_minutes — час медитації або усвідомленої практики

Поради

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

Пов’язана документація