Mengembangkan Pengalaman Metrik Vital dan Kesehatan dengan Google Health API

Google Health API melacak tanda vital dan metrik kesehatan fisiologis pengguna, seperti detak jantung, saturasi oksigen, glukosa darah, suhu tubuh inti, dan turunan suhu tidur harian.

Pahami cara membaca dan meminta otorisasi pengguna untuk data vital di aplikasi Anda guna memberikan pengalaman terbaik bagi pengguna.

Jenis data yang didukung

API ini mendukung jenis data berikut untuk melacak tanda vital dan metrik kesehatan:

Tabel: Jenis data Vitals Google Health API
Jenis data
  dataType Parameter
  filter
Operasi
yang tersedia
Cakupan
Glukosa Darah
blood-glucose
blood_glucose
Jenis data: Contoh
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Suhu Tubuh Inti
core-body-temperature
core_body_temperature
Jenis data: Contoh
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilitas Detak Jantung Harian
daily-heart-rate-variability
daily_heart_rate_variability
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zona Detak Jantung Harian
daily-heart-rate-zones
daily_heart_rate_zones
Jenis data: Harian
list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturasi Oksigen Harian
daily-oxygen-saturation
daily_oxygen_saturation
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Laju Pernapasan Harian
daily-respiratory-rate
daily_respiratory_rate
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Detak Jantung saat Istirahat Harian
daily-resting-heart-rate
daily_resting_heart_rate
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Turunan Suhu Tidur Harian
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Elektrokardiogram (EKG)
electrocardiogram
electrocardiogram
Jenis data: Sesi

Perangkat yang kompatibel

list .ecg.readonly
Detak Jantung
heart-rate
heart_rate
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilitas Detak Jantung
heart-rate-variability
heart_rate_variability
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Notifikasi Irama Tidak Teratur
irregular-rhythm-notification
irregular_rhythm_notification
Jenis data: Sesi
list .irn.readonly
Saturasi Oksigen
oxygen-saturation
oxygen_saturation
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Ringkasan Tidur Laju Pernapasan
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Persyaratan hanya baca

Jenis data tanda vital fisiologis diisi oleh sinkronisasi perangkat atau entri log manual di aplikasi seluler atau aplikasi web Fitbit, dan bersifat hanya baca melalui REST API (tidak dapat ditulis atau diubah secara langsung melalui endpoint Google Health API).

Bagian berikut memberikan detail teknis dan format representasi REST untuk data vitalitas.

Detak jantung dan kesehatan jantung

API ini memberikan pengukuran intrahari yang mendetail dan ringkasan harian untuk metrik detak jantung:

  • Detak Jantung (heart-rate): Pengukuran detak jantung pada satu titik waktu yang berisi jumlah beatsPerMinute, beserta motionContext pengguna (seperti SEDENTARY atau ACTIVE) dan sensorLocation (seperti WRIST atau CHEST).
  • Detak Jantung Saat Istirahat Harian (daily-resting-heart-rate): Nilai detak jantung saat istirahat dasar harian.
  • Variabilitas Detak Jantung (heart-rate-variability dan daily-heart-rate-variability): Mencatat root mean square dari perbedaan berurutan (rmssd) dalam milidetik untuk merepresentasikan HRV.

Contoh representasi REST

Untuk mengkueri pengukuran detak jantung, kirim permintaan GET ke endpoint list.

Contoh berikut menunjukkan satu titik data heart-rate dari daftar yang ditampilkan:

Permintaan

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

Respons

{
  "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"
        }
      }
    }
  ]
}

Gula darah

Jenis data blood-glucose mewakili kadar gula darah pengguna. Titik glukosa darah menyimpan konsentrasi dalam miligram per desiliter (mg/dL), konteks makanan atau waktu, dan info spesimen.

Contoh representasi REST

Untuk mengkueri pengukuran glukosa darah, kirim permintaan GET ke endpoint list. Contoh berikut menunjukkan satu titik data blood-glucose dari daftar yang ditampilkan:

Permintaan

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

Respons

{
  "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"
      }
    }
  ]
}

Saturasi oksigen (SpO2)

API melacak kadar oksigen menggunakan oxygen-saturation (nilai sampel intrahari) dan daily-oxygen-saturation (statistik ringkasan harian). Konsentrasi persen dinyatakan sebagai angka dari 0 hingga 100.

Contoh representasi REST

Untuk mengkueri pengukuran saturasi oksigen, kirim permintaan GET ke endpoint list. Contoh berikut menunjukkan satu titik data oxygen-saturation dari daftar yang ditampilkan:

Permintaan

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

Respons

{
  "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
      }
    }
  ]
}

Suhu

Pelacakan suhu mencakup metrik suhu tubuh inti dan tren suhu kulit saat tidur:

  • Suhu Tubuh Inti (core-body-temperature): Mencatat suhu organ internal dalam Celsius, dengan lokasi pengukuran tertentu (seperti ARMPIT, EAR, atau FOREHEAD).
  • Turunan Suhu Tidur (daily-sleep-temperature-derivations): Variasi suhu kulit frekuensi tinggi yang direkam semalaman.

Contoh representasi REST

Untuk mengkueri pengukuran suhu tubuh inti, kirim permintaan GET ke endpoint list. Contoh berikut menunjukkan satu titik data core-body-temperature dari daftar yang ditampilkan:

Permintaan

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

Respons

{
  "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) dan notifikasi

Untuk perangkat dengan sensor tingkat medis, API ini mengekspos jenis data kesehatan jantung tingkat lanjut:

  • Elektrokardiogram (electrocardiogram): Hasil sesi EKG satu sadapan, yang berisi klasifikasi (SINUS_RHYTHM, ATRIAL_FIBRILLATION, INCONCLUSIVE), detak jantung rata-rata, frekuensi pengambilan sampel, dan sampel voltase bentuk gelombang mentah.
  • Notifikasi Irama Tidak Teratur (irregular-rhythm-notification): Peristiwa pemberitahuan kontekstual yang menunjukkan tanda-tanda potensi AFib yang terdeteksi selama pemantauan pasif.

Contoh representasi REST

Untuk mengkueri data sesi elektrokardiogram, kirim permintaan GET ke endpoint list. Contoh berikut menunjukkan satu titik data electrocardiogram dari daftar yang ditampilkan:

Permintaan

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

Respons

{
  "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
        ]
      }
    }
  ]
}

Cakupan dan otorisasi

Untuk menggunakan fitur data vital dan kesehatan jantung, aplikasi Anda harus meminta cakupan OAuth berikut:

  • Baca: https://www.googleapis.com/auth/googlehealth.ecg.readonly
  • Baca: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly
  • Menulis: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
  • Baca: https://www.googleapis.com/auth/googlehealth.irn.readonly

Panduan

Gunakan panduan ini saat mendesain fitur dengan metrik kesehatan dan tanda vital:

  • Menangani konversi satuan: Nilai suhu diberikan dalam Celsius. Konversikan ke Fahrenheit dalam kode frontend Anda berdasarkan preferensi pengguna yang dilokalkan.
  • Mengelola notifikasi webhook: Berlangganan notifikasi webhook untuk data penting guna memicu analisis backend segera setelah pengguna menyinkronkan pembacaan baru (seperti detak jantung atau glukosa darah).
  • Menghormati sensitivitas data: Pastikan produk Anda menjelaskan dengan jelas kepada pengguna konteks klinis atau kesehatan untuk membaca tanda vital fisiologis frekuensi tinggi. Jelaskan alasan cakupan seperti health_metrics_and_measurements atau ecg diperlukan sebelum memanggil dialog otorisasi.