AnpherosAnpheros PlatformDevelopers

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

Health Connect para FHIR

Ler dados do Android Health Connect de Fitbit, Garmin, Oura, Withings e Wear OS em Flutter e gravá-los num registo FHIR R4: permissões, histórico, revisão na Play Store.

Health Connect é a loja de saúde no dispositivo do Android: Samsung Health, Fitbit, Garmin Connect, Oura, Withings e aplicações Wear OS escrevem nele, e a sua aplicação lê a partir dele com a permissão da pessoa. Para colocar esses dados num registo FHIR, leia totais diários e médias no telemóvel, envie-os para o seu backend e escreva cada métrica como uma Observation com um código LOINC e uma unidade UCUM. Esta página abrange as permissões que o Android requer, um exemplo em Flutter (verificado com flutter analyze) que lê o Health Connect no Android e o Apple Health no iOS com o mesmo código, e as regras para publicação no Google Play.

O que chega ao Health Connect

O Health Connect está integrado no Android 14 e versões posteriores e disponível como uma aplicação em versões mais antigas. Armazena registos como HeartRateRecord, RestingHeartRateRecord, HeartRateVariabilityRmssdRecord, OxygenSaturationRecord, RespiratoryRateRecord, StepsRecord, DistanceRecord, ActiveCaloriesBurnedRecord, SleepSessionRecord, WeightRecord, BloodPressureRecord, BloodGlucoseRecord, BodyTemperatureRecord e ExerciseSessionRecord.

Quem escreve lá, de acordo com a documentação de cada fornecedor:

Origem O que esperar
Fitbit e Pixel Watch A aplicação Fitbit sincroniza com o Health Connect assim que a pessoa a configurar (Ajuda do Google)
Garmin O Garmin Connect suporta o Health Connect no Android 14 e versões posteriores: dados de atividade e bem-estar como frequência cardíaca e calorias (Android Developers, agosto de 2025)
Oura Frequência cardíaca, VFC (Variabilidade da Frequência Cardíaca), sono com fases, passos, distância, calorias e treinos (Oura)
Withings O Health Mate troca dados de atividade, peso, sono e outros através do Health Connect (Blog Android Developers)
Samsung Health, Galaxy Watch Um subconjunto, ao ritmo do Samsung Health — ver Samsung Health para FHIR

Cada aplicação de fornecedor tem de ter permissão para escrever no Health Connect, o que a pessoa concede nessa aplicação ou nas definições do Health Connect. Se uma origem estiver em falta, essa é a primeira coisa a verificar.

Permissões que o Android requer

Ler valores diários em Flutter

O pacote health lê o Health Connect no Android e o Apple Health no iOS por trás de uma única API. O exemplo utiliza a versão 13.2.1, com a qual o Anpheros Daily é fornecido:

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
}

O getTotalStepsInInterval solicita ao Health Connect o seu total agregado, que já resolve fontes sobrepostas (um telemóvel e um relógio a contar a mesma caminhada) de acordo com a prioridade da fonte de dados definida pela pessoa no Health Connect. Somar registos de passos brutos por si só resulta em contagem dupla.

Notas da implementação no Anpheros Daily:

Dos valores do Flutter para Observações FHIR

Envie os valores para o seu backend e escreva uma Observação por pessoa, métrica e dia com um identificador estável, atualizando-a quando o mesmo dia for enviado novamente. A tabela de mapeamento completa (registo Health Connect → LOINC → UCUM), um exemplo FHIR validado e a execução de upsert TypeScript contra a plataforma estão em Dados vestíveis em FHIR.

Publicação no Google Play

As aplicações que leem o Health Connect devem completar a declaração de permissões do Health Connect na Play Console, justificar cada tipo de dados e ter uma política de privacidade correspondente. Os pedidos de tipos de dados que a aplicação não utiliza visivelmente são rejeitados. Planeie a revisão: liste cada tipo ao lado do ecrã que o utiliza.

Wear OS

Num relógio Wear OS, uma aplicação pode ler dados de sensores em tempo real através dos Health Services (frequência cardíaca durante um treino, por exemplo). Os dados que a aplicação de saúde do próprio relógio regista chegam ao Health Connect do telemóvel através da aplicação do fornecedor no telemóvel. Para um registo médico, ler o Health Connect no telemóvel é geralmente suficiente; uma aplicação de relógio destina-se a funcionalidades em tempo real.

Onde o Anpheros se encaixa

A Plataforma Anpheros armazena o resultado: o registo FHIR R4 da pessoa com cada valor de wearable como uma Observation marcada como dados de dispositivo, protegida por consentimento, proveniência e um registo de acesso. Não lê o Health Connect em si; a sua aplicação Android é que o faz. A própria aplicação do Anpheros, Anpheros Daily, lê o Health Connect no Android (planos Plus e Max) e escreve resumos diários no registo.

Perguntas frequentes

O Health Connect tem uma API na nuvem?

Não. O Health Connect armazena dados no telemóvel, e apenas as aplicações nesse telemóvel podem lê-los, com a permissão da pessoa. Para enviar os dados para um servidor, a sua aplicação lê-os e envia-os.

Existe uma API REST ou API web do Health Connect?

Não. O Health Connect é uma API Android no dispositivo, sem um ponto final REST ou web. Um servidor recebe os dados apenas quando uma aplicação no telemóvel os lê e os envia, por exemplo, como Observações FHIR para o Anpheros.

Posso usar a API do Health Connect a partir de Python ou React Native?

Não a partir de Python, porque corre no telemóvel, não num servidor. A partir de React Native ou Flutter, sim, através de plugins da comunidade ou oficiais que chamam a API Android dentro da aplicação.

Por que é que a minha aplicação só consegue ler 30 dias de dados do Health Connect?

Sem a permissão READ_HEALTH_DATA_HISTORY, o Health Connect limita as leituras a 30 dias antes da concessão da primeira permissão. Solicite a permissão de histórico se precisar de dados mais antigos.

O Garmin sincroniza com o Health Connect?

Sim. O Google anunciou em agosto de 2025 que o Garmin Connect suporta o Health Connect no Android 14 e posterior, para dados de atividade e bem-estar, como frequência cardíaca e calorias. As pontuações próprias do Garmin, como a Body Battery, não são partilhadas.

Posso ler dados do Fitbit sem a API Web do Fitbit?

No Android, sim: depois de a pessoa ativar o Health Connect na aplicação Fitbit, os dados do Fitbit ficam disponíveis no Health Connect para as aplicações que autorizar.

Por que é que a contagem de passos do Health Connect difere da minha aplicação do fornecedor?

A aplicação do fornecedor pode ainda não ter exportado os seus dados mais recentes, pode exportar apenas alguns tipos, ou o Health Connect pode preferir outra fonte para o mesmo período. Verifique as fontes de dados e a sua prioridade nas definições do 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