Tworzenie funkcji związanych z parametrami życiowymi i wskaźnikami zdrowotnymi za pomocą interfejsu Google Health API

Interfejs API Google Health śledzi dane dotyczące funkcji życiowych użytkownika i wskaźniki zdrowia fizjologicznego, takie jak tętno, saturacja krwi, poziom glukozy we krwi, temperatura ciała i dzienne odchylenia temperatury podczas snu.

Dowiedz się, jak odczytywać dane o parametrach życiowych i prosić o autoryzację użytkownika w aplikacji, aby zapewnić użytkownikom najlepsze wrażenia.

Obsługiwane typy danych

Interfejs API obsługuje te typy danych do śledzenia parametrów życiowych i zdrowotnych:

Tabela: typy danych o parametrach życiowych w interfejsie Google Health API
Typ danych
  dataType
  filter parameter
Dostępne
operacje
Zakres
Glukoza we krwi
blood-glucose
blood_glucose
Typ rekordu: Próbka
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Temperatura ciała
core-body-temperature
core_body_temperature
Typ rekordu: Próbka
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dzienna zmienność rytmu serca
daily-heart-rate-variability
daily_heart_rate_variability
Typ rekordu: dzienny

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dzienne strefy tętna
daily-heart-rate-zones
daily_heart_rate_zones
Typ rekordu: dzienny
lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Codzienne nasycenie tlenem
daily-oxygen-saturation
daily_oxygen_saturation
Typ rekordu: dzienny

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dzienna częstość oddechów
daily-respiratory-rate
daily_respiratory_rate
Typ rekordu: dzienny

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dzienne tętno spoczynkowe
daily-resting-heart-rate
daily_resting_heart_rate
Typ rekordu: dzienny

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Codzienne wyliczenia temperatury podczas snu
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Typ rekordu: dzienny

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Elektrokardiogram (EKG)
electrocardiogram
electrocardiogram
Typ rekordu: sesja

Zgodne urządzenia

lista .ecg.readonly
Tętno
heart-rate
heart_rate
Typ rekordu: Próbka

Zgodne urządzenia

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zmienność rytmu serca
heart-rate-variability
heart_rate_variability
Typ rekordu: Próbka

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Powiadomienie o nieregularnym rytmie serca
irregular-rhythm-notification
irregular_rhythm_notification
Typ rekordu: sesja
lista .irn.readonly
Nasycenie tlenem
oxygen-saturation
oxygen_saturation
Typ rekordu: Próbka

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Podsumowanie snu na podstawie częstości oddechów
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Typ rekordu: Próbka

Zgodne urządzenia

lista, uzgadnianie .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Wymagania dotyczące dostępu tylko do odczytu

Typy danych dotyczących fizjologicznych parametrów życiowych są wypełniane przez synchronizację urządzenia lub ręczne wpisy w aplikacji mobilnej lub aplikacji internetowej Fitbit i są tylko do odczytu za pomocą interfejsu REST API (nie można ich zapisywać ani modyfikować bezpośrednio za pomocą punktów końcowych interfejsu Google Health API).

W sekcjach poniżej znajdziesz szczegóły techniczne i formaty reprezentacji REST danych o parametrach życiowych.

Tętno i zdrowie serca

Interfejs API udostępnia szczegółowe pomiary w ciągu dnia i codzienne podsumowania dotyczące wskaźników tętna:

  • Tętno (heart-rate): pomiary tętna w określonym momencie zawierające liczbę beatsPerMinute, a także motionContext użytkownika (np. SEDENTARY lub ACTIVE) i sensorLocation (np. WRIST lub CHEST).
  • Dzienne tętno spoczynkowe (daily-resting-heart-rate): dzienna wartość bazowa tętna spoczynkowego.
  • Zmienność rytmu serca (heart-rate-variabilitydaily-heart-rate-variability): rejestruje średnią kwadratową kolejnych różnic (rmssd) w milisekundach, aby przedstawić zmienność rytmu serca.

Przykład reprezentacji REST

Aby wysłać zapytanie o pomiary tętna, prześlij żądanie GET do punktu końcowego list.

.

Ten przykład pokazuje pojedynczy punkt danych heart-rate z zwróconej listy:

Żądanie

GET https://health.googleapis.com/v4/users/me/dataTypes/heart-rate/dataPoints?startTime=2026-04-20T08:00:00Z&endTime=2026-04-20T08:05:00Z
Authorization: Bearer access-token
Accept: application/json

Odpowiedź

{
  "dataPoints": [
    {
      "name": "users/me/dataTypes/heart-rate/dataPoints/hr-123456789",
      "dataSource": {
        "recordingMethod": "ACTIVELY_MEASURED"
      },
      "heartRate": {
        "sampleTime": {
          "physicalTime": "2026-04-20T08:00:00Z",
          "utcOffset": "0s"
        },
        "beatsPerMinute": "72",
        "metadata": {
          "motionContext": "SEDENTARY",
          "sensorLocation": "WRIST"
        }
      }
    }
  ]
}

Glukoza we krwi

Typ danych blood-glucose reprezentuje stężenie cukru we krwi użytkownika. Punkty pomiaru poziomu glukozy we krwi zawierają stężenie w miligramach na decylitr (mg/dL), informacje o posiłku lub czasie pomiaru oraz informacje o próbce.

Przykład reprezentacji REST

Aby wysłać zapytanie o pomiary poziomu glukozy we krwi, prześlij żądanie GET do punktu końcowego list. Ten przykład pokazuje pojedynczy punkt danych blood-glucose z zwróconej listy:

Żądanie

GET https://health.googleapis.com/v4/users/me/dataTypes/blood-glucose/dataPoints?startTime=2026-04-20T08:00:00Z&endTime=2026-04-20T09:00:00Z
Authorization: Bearer access-token
Accept: application/json

Odpowiedź

{
  "dataPoints": [
    {
      "name": "users/me/dataTypes/blood-glucose/dataPoints/bg-987654321",
      "dataSource": {
        "recordingMethod": "MANUALLY_ENTERED"
      },
      "bloodGlucose": {
        "sampleTime": {
          "physicalTime": "2026-04-20T08:30:00Z",
          "utcOffset": "-25200s"
        },
        "bloodGlucoseMilligramsPerDeciliter": 95.0,
        "measurementSource": "SELF_MONITORING_BLOOD_GLUCOSE",
        "mealType": "BREAKFAST",
        "measurementTiming": "AFTER_MEAL",
        "specimen": "CAPILLARY_BLOOD",
        "notes": "Post-breakfast fingerstick reading"
      }
    }
  ]
}

Nasycenie tlenem (SpO2)

Interfejs API śledzi poziom tlenu za pomocą wartości oxygen-saturation (wartości próbne w ciągu dnia) i daily-oxygen-saturation (dzienne statystyki podsumowujące). Stężenie procentowe jest wyrażone jako liczba z zakresu od 0 do 100.

Przykład reprezentacji REST

Aby wysłać zapytanie o pomiary nasycenia tlenem, wyślij żądanie GET do punktu końcowego list. Poniższy przykład pokazuje pojedynczy punkt danych oxygen-saturation z zwróconej listy:

Żądanie

GET https://health.googleapis.com/v4/users/me/dataTypes/oxygen-saturation/dataPoints?startTime=2026-04-20T03:00:00Z&endTime=2026-04-20T03:05:00Z
Authorization: Bearer access-token
Accept: application/json

Odpowiedź

{
  "dataPoints": [
    {
      "name": "users/me/dataTypes/oxygen-saturation/dataPoints/spo2-555555",
      "dataSource": {
        "recordingMethod": "ACTIVELY_MEASURED"
      },
      "oxygenSaturation": {
        "sampleTime": {
          "physicalTime": "2026-04-20T03:00:00Z",
          "utcOffset": "0s"
        },
        "percentage": 98.2
      }
    }
  ]
}

Temperatura

Śledzenie temperatury obejmuje dane dotyczące temperatury ciała i trendy temperatury skóry podczas snu w nocy:

  • Temperatura ciała (core-body-temperature): rejestruje temperaturę narządów wewnętrznych w stopniach Celsjusza, z określeniem miejsca pomiaru (np. ARMPIT, EAR lub FOREHEAD).
  • Wartości pochodne temperatury podczas snu (daily-sleep-temperature-derivations): częste wahania temperatury skóry rejestrowane w nocy.

Przykład reprezentacji REST

Aby wysłać zapytanie o pomiary temperatury ciała, wyślij żądanie GET do punktu końcowego list. Poniższy przykład pokazuje pojedynczy punkt danych core-body-temperature z zwróconej listy:

Żądanie

GET https://health.googleapis.com/v4/users/me/dataTypes/core-body-temperature/dataPoints?startTime=2026-04-20T22:00:00Z&endTime=2026-04-20T23:00:00Z
Authorization: Bearer access-token
Accept: application/json

Odpowiedź

{
  "dataPoints": [
    {
      "name": "users/me/dataTypes/core-body-temperature/dataPoints/cbt-666666",
      "dataSource": {
        "recordingMethod": "ACTIVELY_MEASURED"
      },
      "coreBodyTemperature": {
        "sampleTime": {
          "physicalTime": "2026-04-20T22:30:00Z",
          "utcOffset": "-18000s"
        },
        "temperatureCelsius": 36.8,
        "measurementLocation": "FOREHEAD"
      }
    }
  ]
}

Elektrokardiogram (EKG) i powiadomienia

W przypadku urządzeń z czujnikami klasy medycznej interfejs API udostępnia zaawansowane typy danych dotyczących zdrowia serca:

  • Elektrokardiogram (electrocardiogram): wyniki sesji EKG jednoodprowadzeniowego, zawierające klasyfikację (SINUS_RHYTHM, ATRIAL_FIBRILLATION, INCONCLUSIVE), średnie tętno, częstotliwość próbkowania i próbki napięcia surowego przebiegu.
  • Powiadomienie o nieregularnym rytmie serca (irregular-rhythm-notification): zdarzenia alertów kontekstowych wskazujące oznaki potencjalnego MP wykryte podczas pasywnego monitorowania.

Przykład reprezentacji REST

Aby wysłać zapytanie o dane sesji EKG, wyślij żądanie GET do punktu końcowego list. Poniższy przykład pokazuje pojedynczy punkt danych electrocardiogram z zwróconej listy:

Żądanie

GET https://health.googleapis.com/v4/users/me/dataTypes/electrocardiogram/dataPoints?startTime=2026-04-20T10:00:00Z&endTime=2026-04-20T10:05:00Z
Authorization: Bearer access-token
Accept: application/json

Odpowiedź

{
  "dataPoints": [
    {
      "name": "users/me/dataTypes/electrocardiogram/dataPoints/ecg-777777",
      "dataSource": {
        "recordingMethod": "ACTIVELY_MEASURED"
      },
      "electrocardiogram": {
        "interval": {
          "startTime": "2026-04-20T10:00:00Z",
          "startUtcOffset": "0s",
          "endTime": "2026-04-20T10:00:30Z",
          "endUtcOffset": "0s"
        },
        "resultClassification": "SINUS_RHYTHM",
        "beatsPerMinuteAvg": "70",
        "samplingFrequencyHertz": 250,
        "millivoltsScalingFactor": 1000,
        "leadNumber": 1,
        "waveformSamples": [
          -12, -8, 4, 18, 30, 42, 50, 48, 32, 10
        ]
      }
    }
  ]
}

Zakresy i autoryzacja

Aby korzystać z funkcji danych o parametrach życiowych i zdrowiu serca, aplikacja musi poprosić o te zakresy OAuth:

  • Odczyt: https://www.googleapis.com/auth/googlehealth.ecg.readonly
  • Odczyt: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly
  • Pisać: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
  • Odczyt: https://www.googleapis.com/auth/googlehealth.irn.readonly

Wytyczne

Podczas projektowania funkcji związanych z parametrami życiowymi i wskaźnikami zdrowotnymi stosuj się do tych wskazówek:

  • Obsługa przeliczania jednostek: wartości temperatury są podawane w stopniach Celsjusza. W kodzie interfejsu przekształć wartość na stopnie Fahrenheita na podstawie ustawień lokalnych użytkownika.
  • Zarządzanie powiadomieniami webhook: subskrybuj alerty webhook dotyczące parametrów życiowych, aby wywoływać analizę backendu natychmiast po zsynchronizowaniu przez użytkownika nowych odczytów (takich jak tętno lub poziom glukozy we krwi).
  • Respektuj wrażliwość danych: upewnij się, że produkt wyraźnie informuje użytkowników o kontekstach klinicznych lub związanych z dobrym samopoczuciem, w których można odczytywać dane fizjologiczne o wysokiej częstotliwości. Wyjaśnij, dlaczego zakresy takie jak health_metrics_and_measurements lub ecg są wymagane przed wywołaniem promptów autoryzacji.