AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Health Connect a FHIR

Lee datos de Android Health Connect de Fitbit, Garmin, Oura, Withings y Wear OS en Flutter y escríbelos en un registro FHIR R4: permisos, historial, revisión de Play.

Health Connect es el almacén de salud en el dispositivo de Android: las aplicaciones Samsung Health, Fitbit, Garmin Connect, Oura, Withings y Wear OS escriben en él, y tu aplicación lee de él con el permiso de la persona. Para poner esos datos en un registro FHIR, lee los totales y promedios diarios en el teléfono, envíalos a tu backend y escribe cada métrica como una Observation con un código LOINC y una unidad UCUM. Esta página cubre los permisos que requiere Android, un ejemplo de Flutter (verificado con flutter analyze) que lee Health Connect en Android y Apple Health en iOS con el mismo código, y las reglas para publicar en Google Play.

Qué llega a Health Connect

Health Connect está integrado en Android 14 y versiones posteriores, y está disponible como una aplicación en versiones anteriores. Almacena registros como HeartRateRecord, RestingHeartRateRecord, HeartRateVariabilityRmssdRecord, OxygenSaturationRecord, RespiratoryRateRecord, StepsRecord, DistanceRecord, ActiveCaloriesBurnedRecord, SleepSessionRecord, WeightRecord, BloodPressureRecord, BloodGlucoseRecord, BodyTemperatureRecord y ExerciseSessionRecord.

Quién escribe allí, según la documentación de cada proveedor:

Fuente Qué esperar
Fitbit y Pixel Watch La aplicación Fitbit se sincroniza con Health Connect una vez que la persona la configura (Ayuda de Google)
Garmin Garmin Connect es compatible con Health Connect en Android 14 y versiones posteriores: datos de actividad y bienestar como frecuencia cardíaca y calorías (Android Developers, agosto de 2025)
Oura Frecuencia cardíaca, HRV, sueño con etapas, pasos, distancia, calorías y entrenamientos (Oura)
Withings Health Mate intercambia datos de actividad, peso, sueño y otros a través de Health Connect (Blog de Android Developers)
Samsung Health, Galaxy Watch Un subconjunto, al ritmo de Samsung Health; consulta Samsung Health a FHIR

Cada aplicación de proveedor debe tener permiso para escribir en Health Connect, lo cual la persona concede en esa aplicación o en la configuración de Health Connect. Si falta una fuente, eso es lo primero que se debe comprobar.

Permisos que Android requiere

Lectura de valores diarios en Flutter

El paquete health lee Health Connect en Android y Apple Health en iOS detrás de una única API. El ejemplo utiliza la versión 13.2.1, la que Anpheros Daily envía con:

import 'dart:math' as math;

import 'package:health/health.dart';

/// One day of data from Health Connect (Android) or Apple Health (iOS), ready for your backend.
class DailyValue {
  DailyValue(this.metric, this.day, this.value, {this.min, this.max});
  final String metric; // 'heart_rate', 'steps'
  final String day; // '2026-10-01', the user's local day
  final double value;
  final double? min, max;

  Map<String, Object?> toJson() => {'metric': metric, 'day': day, 'value': value, 'min': min, 'max': max};
}

final health = Health();

Future<List<DailyValue>> collectLastDays({int days = 30}) async {
  await health.configure();
  if (!await health.isHealthConnectAvailable()) {
    await health.installHealthConnect(); // opens the Play Store on Android; always available on iOS
    return [];
  }
  const types = [HealthDataType.HEART_RATE, HealthDataType.STEPS];
  final granted = await health.requestAuthorization(types, permissions: [HealthDataAccess.READ, HealthDataAccess.READ]);
  if (!granted) return [];

  final now = DateTime.now();
  final out = <DailyValue>[];
  for (var i = days - 1; i >= 0; i--) {
    final start = DateTime(now.year, now.month, now.day - i); // local midnight, safe across DST changes
    final end = DateTime(start.year, start.month, start.day + 1);
    final day = start.toIso8601String().substring(0, 10);

    final steps = await health.getTotalStepsInInterval(start, end);
    if (steps != null) out.add(DailyValue('steps', day, steps.toDouble()));

    final samples = await health.getHealthDataFromTypes(types: [HealthDataType.HEART_RATE], startTime: start, endTime: end);
    final bpm = [for (final p in samples) if (p.value is NumericHealthValue) (p.value as NumericHealthValue).numericValue.toDouble()];
    if (bpm.isNotEmpty) {
      out.add(DailyValue('heart_rate', day, bpm.reduce((a, b) => a + b) / bpm.length,
          min: bpm.reduce(math.min), max: bpm.reduce(math.max)));
    }
  }
  return out; // POST these to your backend, which writes them to the FHIR record
}

getTotalStepsInInterval solicita a Health Connect su total agregado, que ya resuelve fuentes superpuestas (un teléfono y un reloj contando el mismo paseo) según la prioridad de la fuente de datos que la persona estableció en Health Connect. Sumar registros de pasos brutos por sí mismo genera recuentos duplicados.

Notas de la implementación en Anpheros Daily:

De valores de Flutter a Observaciones FHIR

Envía los valores a tu backend y escribe una Observación por persona, métrica y día con un identificador estable, actualizándola cuando se envíe el mismo día de nuevo. La tabla de mapeo completa (registro de Health Connect → LOINC → UCUM), un ejemplo FHIR validado y la ejecución de upsert de TypeScript contra la plataforma se encuentran en Datos de wearables en FHIR.

Publicación en Google Play

Las aplicaciones que leen Health Connect deben completar la declaración de permisos de Health Connect en la Play Console, justificar cada tipo de dato y tener una política de privacidad que coincida. Las solicitudes de tipos de datos que la aplicación no utiliza visiblemente son rechazadas. Planifique la revisión: enumere cada tipo junto con la pantalla que lo utiliza.

Wear OS

En un reloj Wear OS, una aplicación puede leer datos de sensores en vivo a través de Health Services (por ejemplo, la frecuencia cardíaca durante un entrenamiento). Los datos que registra la propia aplicación de salud del reloj llegan a Health Connect del teléfono a través de la aplicación del proveedor en el teléfono. Para un registro médico, leer Health Connect en el teléfono suele ser suficiente; una aplicación de reloj es para funciones en vivo.

Dónde encaja Anpheros

La Plataforma Anpheros almacena el resultado: el registro FHIR R4 de la persona con cada valor del dispositivo wearable como una Observation marcada como datos del dispositivo, detrás de un consentimiento, procedencia y un registro de acceso. No lee Health Connect directamente; tu aplicación Android lo hace. La propia aplicación de Anpheros, Anpheros Daily, lee Health Connect en Android (planes Plus y Max) y escribe resúmenes diarios en el registro.

Preguntas frecuentes

¿Health Connect tiene una API en la nube?

No. Health Connect almacena datos en el teléfono, y solo las aplicaciones de ese teléfono pueden leerlos, con el permiso de la persona. Para enviar los datos a un servidor, tu aplicación los lee y los envía.

¿Existe una API REST o web de Health Connect?

No. Health Connect es una API de Android en el dispositivo sin un punto final REST o web. Un servidor recibe los datos solo cuando una aplicación en el teléfono los lee y los envía, por ejemplo, como Observaciones FHIR a Anpheros.

¿Puedo usar la API de Health Connect desde Python o React Native?

No desde Python, porque se ejecuta en el teléfono, no en un servidor. Desde React Native o Flutter, sí, a través de plugins comunitarios u oficiales que llaman a la API de Android dentro de la aplicación.

¿Por qué mi aplicación solo puede leer 30 días de datos de Health Connect?

Sin el permiso READ_HEALTH_DATA_HISTORY, Health Connect limita las lecturas a 30 días antes de que se otorgara el primer permiso. Solicita el permiso de historial si necesitas datos más antiguos.

¿Garmin se sincroniza con Health Connect?

Sí. Google anunció en agosto de 2025 que Garmin Connect es compatible con Health Connect en Android 14 y versiones posteriores, para datos de actividad y bienestar como la frecuencia cardíaca y las calorías. Las propias puntuaciones de Garmin, como Body Battery, no se comparten.

¿Puedo leer datos de Fitbit sin la API web de Fitbit?

En Android, sí: una vez que la persona habilita Health Connect en la aplicación Fitbit, los datos de Fitbit están disponibles en Health Connect para las aplicaciones que autoricen.

¿Por qué el recuento de pasos de Health Connect difiere de mi aplicación del proveedor?

La aplicación del proveedor puede no haber exportado sus datos más recientes todavía, puede exportar solo algunos tipos, o Health Connect puede preferir otra fuente para el mismo período. Comprueba las fuentes de datos y su prioridad en la configuración de Health Connect.

Relacionado

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy