Показники здоров’я — формат експорту 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 — час медитації або усвідомленої практики
Поради
- Групування за часом: у конфігурації експорту використовуйте налаштування групування за часом, щоб керувати тим, як дані агрегуються (за секунду, хвилину, годину, день тощо)
- Агрегація даних: увімкніть агрегацію даних, щоб підсумовувати сон і інші показники за день для зручнішого аналізу
- Вибірковий експорт: можна обрати конкретні показники здоров’я для включення в експорт, щоб зменшити розмір файлу та час обробки