Desarrolla experiencias de métricas de salud y signos vitales con la API de Google Health

La API de Google Health hace un seguimiento de las métricas vitales y de salud fisiológica del usuario, como la frecuencia cardíaca, la saturación de oxígeno, la glucemia, la temperatura corporal central y las derivaciones diarias de la temperatura durante el sueño.

Comprende cómo leer y solicitar la autorización del usuario para los datos de métricas vitales en tu aplicación y, así, ofrecer la mejor experiencia a los usuarios.

Tipos de datos admitidos

La API admite los siguientes tipos de datos para hacer un seguimiento de los signos vitales y las métricas de salud:

Tabla: Tipos de datos de signos vitales de la API de Google Health
Tipo de datos
  dataType Parámetro
  filter
Operaciones
disponibles
Alcance
Glucemia
blood-glucose
blood_glucose
Tipo de registro: Muestra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Temperatura corporal central
core-body-temperature
core_body_temperature
Tipo de registro: Muestra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidad de la frecuencia cardíaca diaria
daily-heart-rate-variability
daily_heart_rate_variability
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zonas de frecuencia cardíaca diarias
daily-heart-rate-zones
daily_heart_rate_zones
Tipo de registro: Diario
lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturación de oxígeno diaria
daily-oxygen-saturation
daily_oxygen_saturation
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frecuencia respiratoria diaria
daily-respiratory-rate
daily_respiratory_rate
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frecuencia cardíaca en reposo diaria
daily-resting-heart-rate
daily_resting_heart_rate
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Derivaciones diarias de la temperatura durante el sueño
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Electrocardiograma (ECG)
electrocardiogram
electrocardiogram
Tipo de registro: Sesión

Dispositivos compatibles

list .ecg.readonly
Frecuencia cardíaca
heart-rate
heart_rate
Tipo de registro: Muestra

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidad de la frecuencia cardíaca
heart-rate-variability
heart_rate_variability
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Notificación de arritmias
irregular-rhythm-notification
irregular_rhythm_notification
Tipo de registro: Sesión
list .irn.readonly
Saturación de oxígeno
oxygen-saturation
oxygen_saturation
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Resumen de sueño de la frecuencia respiratoria
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Requisitos de solo lectura

Los tipos de datos de los signos vitales fisiológicos se completan con la sincronización del dispositivo o las entradas de registro manuales en la app para dispositivos móviles o la app web de Fitbit, y son de solo lectura a través de la API de REST (no se pueden escribir ni modificar directamente a través de los extremos de la API de Google Health).

En las siguientes secciones, se proporcionan detalles técnicos y formatos de representación de REST para los datos de signos vitales.

Frecuencia cardíaca y salud cardíaca

La API proporciona mediciones intradía detalladas y resúmenes diarios acumulados para las métricas de frecuencia cardíaca:

  • Frecuencia cardíaca (heart-rate): Mediciones de la frecuencia cardíaca en un momento determinado que contienen un recuento de beatsPerMinute, junto con el motionContext del usuario (como SEDENTARY o ACTIVE) y el sensorLocation (como WRIST o CHEST).
  • Frecuencia cardíaca en reposo diaria (daily-resting-heart-rate): Es un valor de referencia diario de la frecuencia cardíaca en reposo.
  • Variabilidad de la frecuencia cardíaca (heart-rate-variability y daily-heart-rate-variability): Registra la raíz cuadrada media de las diferencias sucesivas (rmssd) en milisegundos para representar la VFC.

Ejemplo de representación de REST

Para consultar las mediciones de la frecuencia cardíaca, envía una solicitud GET al extremo list.

.

En el siguiente ejemplo, se muestra un solo punto de datos de heart-rate de la lista devuelta:

Solicitud

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

Respuesta

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

Glucemia

El tipo de datos blood-glucose representa los niveles de azúcar en sangre del usuario. Los puntos de glucemia contienen la concentración en miligramos por decilitro (mg/dL), el contexto de la comida o el momento, y la información de la muestra.

Ejemplo de representación de REST

Para consultar las mediciones de glucemia, envía una solicitud GET al extremo list. En el siguiente ejemplo, se muestra un solo punto de datos de blood-glucose de la lista devuelta:

Solicitud

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

Respuesta

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

Saturación de oxígeno (SpO2)

La API hace un seguimiento de los niveles de oxígeno con oxygen-saturation (valores de muestras intradía) y daily-oxygen-saturation (estadísticas de resumen diarias). El porcentaje de concentración se expresa como un número de 0 a 100.

Ejemplo de representación de REST

Para consultar las mediciones de saturación de oxígeno, envía una solicitud GET al extremo list. En el siguiente ejemplo, se muestra un solo punto de datos oxygen-saturation de la lista devuelta:

Solicitud

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

Respuesta

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

El monitoreo de la temperatura incluye métricas de la temperatura corporal central y tendencias de la temperatura cutánea durante la noche:

  • Temperatura corporal central (core-body-temperature): Registra la temperatura de los órganos internos en grados Celsius, con el sitio de medición específico (como ARMPIT, EAR o FOREHEAD).
  • Derivaciones de la temperatura durante el sueño (daily-sleep-temperature-derivations): Variaciones de la temperatura cutánea de alta frecuencia registradas durante la noche.

Ejemplo de representación de REST

Para consultar las mediciones de la temperatura corporal central, envía una solicitud GET al extremo list. En el siguiente ejemplo, se muestra un solo punto de datos core-body-temperature de la lista devuelta:

Solicitud

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

Respuesta

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

Electrocardiograma (ECG) y notificaciones

En el caso de los dispositivos con sensores de grado médico, la API expone tipos de datos avanzados de salud cardíaca:

  • Electrocardiograma (electrocardiogram): Resultados de la sesión de ECG de un solo electrodo, que contienen una clasificación (SINUS_RHYTHM, ATRIAL_FIBRILLATION, INCONCLUSIVE), la frecuencia cardíaca promedio, la frecuencia de muestreo y las muestras de voltaje de la forma de onda sin procesar.
  • Notificación de arritmias (irregular-rhythm-notification): Eventos de alerta contextuales que indican signos de posible FA detectados durante la supervisión pasiva.

Ejemplo de representación de REST

Para consultar los datos de una sesión de electrocardiograma, envía una solicitud GET al extremo list. En el siguiente ejemplo, se muestra un solo punto de datos electrocardiogram de la lista devuelta:

Solicitud

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

Respuesta

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

Alcances y autorización

Para usar la función de datos vitales y de salud cardíaca, tu app debe solicitar los siguientes permisos de OAuth:

  • Lectura: https://www.googleapis.com/auth/googlehealth.ecg.readonly
  • Lectura: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly
  • Escribir: https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly
  • Lectura: https://www.googleapis.com/auth/googlehealth.irn.readonly

Lineamientos

Sigue estos lineamientos cuando diseñes funciones con signos vitales y métricas de salud:

  • Controla las conversiones de unidades: Los valores de temperatura se proporcionan en grados Celsius. Convierte a Fahrenheit en el código de tu frontend según las preferencias localizadas del usuario.
  • Administrar notificaciones de webhook: Suscríbete a las alertas de webhook para las métricas vitales y activa el análisis de backend inmediatamente después de que un usuario sincronice lecturas nuevas (como la frecuencia cardíaca o la glucemia).
  • Respeta la sensibilidad de los datos: Asegúrate de que tu producto explique claramente a los usuarios los contextos clínicos o de bienestar para leer los signos vitales fisiológicos de alta frecuencia. Explica por qué se requieren permisos como health_metrics_and_measurements o ecg antes de llamar a las indicaciones de autorización.