AnpherosAnpheros PlatformDevelopers

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

Health Connect do FHIR

Čtěte data z Android Health Connect od Fitbit, Garmin, Oura, Withings a Wear OS ve Flutter a zapisujte je do záznamu FHIR R4: oprávnění, historie, kontrola v Obchodě Play.

Health Connect je lokální úložiště zdraví pro Android: aplikace Samsung Health, Fitbit, Garmin Connect, Oura, Withings a Wear OS do něj zapisují a vaše aplikace z něj čte s povolením uživatele. Chcete-li tato data umístit do záznamu FHIR, čtěte denní součty a průměry na telefonu, odešlete je na svůj backend a zapište každou metriku jako Observation s kódem LOINC a jednotkou UCUM. Tato stránka pokrývá oprávnění, která Android vyžaduje, příklad ve Flutteru (zkontrolovaný s flutter analyze), který čte Health Connect na Androidu a Apple Health na iOS se stejným kódem, a pravidla pro publikování na Google Play.

Co se ukládá do Health Connect

Health Connect je součástí Androidu 14 a novějších verzí a je k dispozici jako aplikace i pro starší verze. Uchovává záznamy jako HeartRateRecord, RestingHeartRateRecord, HeartRateVariabilityRmssdRecord, OxygenSaturationRecord, RespiratoryRateRecord, StepsRecord, DistanceRecord, ActiveCaloriesBurnedRecord, SleepSessionRecord, WeightRecord, BloodPressureRecord, BloodGlucoseRecord, BodyTemperatureRecord a ExerciseSessionRecord.

Kdo tam zapisuje, podle dokumentace jednotlivých dodavatelů:

Zdroj Co očekávat
Fitbit a Pixel Watch Aplikace Fitbit synchronizuje data s Health Connect po jejím nastavení (Nápověda Google)
Garmin Garmin Connect podporuje Health Connect na Androidu 14 a novějších verzích: data o aktivitě a wellness, jako je srdeční tep a kalorie (Android Developers, srpen 2025)
Oura Srdeční tep, HRV, spánek s fázemi, kroky, vzdálenost, kalorie a cvičení (Oura)
Withings Health Mate si vyměňuje data o aktivitě, hmotnosti, spánku a další data prostřednictvím Health Connect (Blog Android Developers)
Samsung Health, Galaxy Watch Podmnožina dat, vlastním tempem Samsung Health — viz Samsung Health to FHIR

Každá aplikace dodavatele musí mít oprávnění zapisovat do Health Connect, které uživatel udělí v dané aplikaci nebo v nastavení Health Connect. Pokud nějaký zdroj chybí, je to první věc, kterou je třeba zkontrolovat.

Požadovaná oprávnění pro Android

Čtení denních hodnot ve Flutteru

Balíček health čte Health Connect na Androidu a Apple Health na iOS pod jedním API. Příklad používá verzi 13.2.1, se kterou Anpheros Daily dodává:

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 žádá Health Connect o jeho agregovaný součet, který již řeší překrývající se zdroje (telefon a hodinky počítající stejnou procházku) podle priority zdroje dat, kterou si osoba nastavila v Health Connect. Sčítání surových záznamů kroků sami vede k dvojímu započítání.

Poznámky z dodání tohoto ve Anpheros Daily:

Z hodnot Flutter do FHIR Observations

Odešlete hodnoty na váš backend a pro každou osobu, metriku a den vytvořte jedno Observation se stabilním identifikátorem, které budete aktualizovat, pokud bude stejný den odeslán znovu. Kompletní mapovací tabulka (Health Connect record → LOINC → UCUM), validní FHIR příklad a TypeScript upsert spuštěný proti platformě naleznete v Wearable data in FHIR.

Publikování na Google Play

Aplikace, které čtou Health Connect, musí v konzoli Play Console dokončit deklaraci oprávnění Health Connect, zdůvodnit každý datový typ a mít odpovídající zásady ochrany osobních údajů. Žádosti o datové typy, které aplikace viditelně nepoužívá, jsou zamítnuty. Plánujte revizi: uveďte každý typ vedle obrazovky, která jej používá.

Wear OS

Na hodinkách Wear OS může aplikace číst živá data ze senzorů prostřednictvím Health Services (například srdeční tep během cvičení). Data zaznamenaná vlastní zdravotní aplikací hodinek se dostávají do Health Connect v telefonu prostřednictvím telefonní aplikace výrobce. Pro lékařský záznam obvykle stačí číst Health Connect v telefonu; aplikace pro hodinky je určena pro živé funkce.

Kde Anpheros zapadá

Platforma Anpheros ukládá výsledek: záznam osoby ve formátu FHIR R4 s každou hodnotou ze zařízení jako Observation označenou jako data ze zařízení, chráněný souhlasem, původem a logem přístupu. Sama o sobě nečte Health Connect; to dělá vaše Android aplikace. Vlastní aplikace Anpheros, Anpheros Daily, čte Health Connect na Androidu (plány Plus a Max) a zapisuje denní souhrny do záznamu.

Často kladené dotazy

Má Health Connect cloudové API?

Ne. Health Connect ukládá data na telefonu a číst je mohou pouze aplikace z tohoto telefonu, a to s povolením uživatele. Chcete-li data dostat na server, vaše aplikace je přečte a odešle.

Existuje REST API nebo webové API pro Health Connect?

Ne. Health Connect je API pro zařízení Android bez REST nebo webového koncového bodu. Server přijímá data pouze tehdy, když je aplikace z telefonu přečte a odešle, například jako FHIR Observations do Anpheros.

Mohu použít Health Connect API z Pythonu nebo React Native?

Z Pythonu ne, protože běží na telefonu, nikoli na serveru. Z React Native nebo Flutter ano, prostřednictvím komunitních nebo oficiálních pluginů, které volají Android API uvnitř aplikace.

Proč moje aplikace může číst pouze 30 dní dat z Health Connect?

Bez oprávnění READ_HEALTH_DATA_HISTORY omezuje Health Connect čtení na 30 dní před udělením prvního oprávnění. Požádejte o oprávnění k historii, pokud potřebujete starší data.

Synchronizuje se Garmin s Health Connect?

Ano. Google oznámil v srpnu 2025, že Garmin Connect podporuje Health Connect na Androidu 14 a novějších pro data o aktivitě a wellness, jako je srdeční tep a kalorie. Vlastní skóre Garminu, jako je Body Battery, se nesdílejí.

Mohu číst data z Fitbitu bez Fitbit Web API?

Na Androidu ano: jakmile uživatel povolí Health Connect v aplikaci Fitbit, data z Fitbitu jsou dostupná v Health Connect pro aplikace, které autorizuje.

Proč se počet kroků v Health Connect liší od mého dodavatelského aplikace?

Dodavatelská aplikace nemusela ještě exportovat svá nejnovější data, může exportovat pouze některé typy, nebo Health Connect může preferovat jiný zdroj pro stejné období. Zkontrolujte zdroje dat a jejich prioritu v nastavení Health Connect.

Související

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