AnpherosAnpheros PlatformDevelopers

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

Health Connect do FHIR

Odczytaj dane z Android Health Connect od Fitbit, Garmin, Oura, Withings i Wear OS we Flutter i zapisz je do rekordu FHIR R4: uprawnienia, historia, weryfikacja w Google Play.

Health Connect to wbudowana w Androida baza danych zdrowotnych: aplikacje Samsung Health, Fitbit, Garmin Connect, Oura, Withings i Wear OS zapisują do niej dane, a Twoja aplikacja odczytuje je za zgodą użytkownika. Aby umieścić te dane w rekordzie FHIR, odczytaj dzienne sumy i średnie na telefonie, wyślij je do swojego backendu i zapisz każdą metrykę jako Observation z kodem LOINC i jednostką UCUM. Ta strona omawia uprawnienia wymagane przez Androida, przykład we Flutter (sprawdzony z flutter analyze), który odczytuje Health Connect na Androidzie i Apple Health na iOS przy użyciu tego samego kodu, oraz zasady publikowania w Google Play.

Co trafia do Health Connect

Health Connect jest wbudowany w system Android 14 i nowsze wersje, a także dostępny jako aplikacja na starszych wersjach. Przechowuje rekordy takie jak HeartRateRecord, RestingHeartRateRecord, HeartRateVariabilityRmssdRecord, OxygenSaturationRecord, RespiratoryRateRecord, StepsRecord, DistanceRecord, ActiveCaloriesBurnedRecord, SleepSessionRecord, WeightRecord, BloodPressureRecord, BloodGlucoseRecord, BodyTemperatureRecord i ExerciseSessionRecord.

Kto tam zapisuje dane, zgodnie z dokumentacją poszczególnych dostawców:

Źródło Czego można się spodziewać
Fitbit i Pixel Watch Aplikacja Fitbit synchronizuje się z Health Connect po jej skonfigurowaniu przez użytkownika (Pomoc Google)
Garmin Garmin Connect obsługuje Health Connect na Androidzie 14 i nowszych: dane dotyczące aktywności i samopoczucia, takie jak tętno i kalorie (Android Developers, sierpień 2025)
Oura Tętno, HRV, sen z fazami, kroki, dystans, kalorie i treningi (Oura)
Withings Health Mate wymienia dane dotyczące aktywności, wagi, snu i inne dane za pośrednictwem Health Connect (Blog Android Developers)
Samsung Health, Galaxy Watch Podzbiór danych, w tempie narzuconym przez Samsung Health — zobacz Samsung Health do FHIR

Każda aplikacja dostawcy musi mieć uprawnienia do zapisu w Health Connect, których użytkownik udziela w tej aplikacji lub w ustawieniach Health Connect. Jeśli brakuje jakiegoś źródła, to jest to pierwsza rzecz, którą należy sprawdzić.

Uprawnienia wymagane przez Androida

Odczytywanie dziennych wartości we Flutter

Pakiet health odczytuje dane z Health Connect na Androidzie i Apple Health na iOS za jednym API. Przykład używa wersji 13.2.1, z którą dostarczany jest Anpheros Daily:

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 żąda od Health Connect zagregowanej sumy, która już rozwiązuje nakładające się źródła (telefon i zegarek zliczające ten sam spacer) zgodnie z priorytetem źródła danych ustawionym przez użytkownika w Health Connect. Sumowanie surowych rekordów kroków samodzielnie prowadzi do podwójnego zliczania.

Uwagi z dostarczenia tej funkcji w Anpheros Daily:

Z wartości Flutter do FHIR Observations

Wyślij wartości do swojego backendu i zapisz jedno Observation na osobę, metrykę i dzień ze stabilnym identyfikatorem, aktualizując je, gdy ten sam dzień zostanie wysłany ponownie. Pełna tabela mapowania (Health Connect record → LOINC → UCUM), zweryfikowany przykład FHIR oraz wykonanie upsert w TypeScript przeciwko platformie znajdują się w Wearable data in FHIR.

Publikowanie w Google Play

Aplikacje, które odczytują dane z Health Connect, muszą wypełnić deklarację uprawnień Health Connect w Play Console, uzasadnić każdy typ danych i posiadać zgodną politykę prywatności. Żądania dotyczące typów danych, których aplikacja nie używa w widoczny sposób, są odrzucane. Zaplanuj przegląd: wymień każdy typ obok ekranu, który go używa.

Wear OS

Na zegarku z systemem Wear OS aplikacja może odczytywać dane z czujników w czasie rzeczywistym za pośrednictwem Health Services (np. tętno podczas treningu). Dane zapisane przez natywną aplikację zdrowotną zegarka trafiają do Health Connect na telefonie za pośrednictwem aplikacji producenta na telefon. W przypadku dokumentacji medycznej zazwyczaj wystarczy odczytanie danych z Health Connect na telefonie; aplikacja na zegarek służy do funkcji w czasie rzeczywistym.

Gdzie Anpheros się mieści

Platforma Anpheros przechowuje wynik: rekord FHIR R4 osoby z każdą wartością z urządzenia noszonego jako Observation oznaczona jako dane urządzenia, chroniona zgodą, pochodzeniem i dziennikiem dostępu. Nie odczytuje ona sama Health Connect; robi to Twoja aplikacja na Androida. Własna aplikacja Anpheros, Anpheros Daily, odczytuje Health Connect na Androida (plany Plus i Max) i zapisuje codzienne podsumowania do rekordu.

Często zadawane pytania

Czy Health Connect posiada API chmurowe?

Nie. Health Connect przechowuje dane na telefonie, a dostęp do nich, za zgodą użytkownika, mają tylko aplikacje zainstalowane na tym telefonie. Aby przesłać dane na serwer, Twoja aplikacja musi je odczytać i wysłać.

Czy istnieje REST API lub Web API dla Health Connect?

Nie. Health Connect to API działające na urządzeniu z systemem Android, bez punktu końcowego REST lub Web. Serwer otrzymuje dane tylko wtedy, gdy aplikacja na telefonie odczyta je i wyśle, na przykład jako obserwacje FHIR do Anpheros.

Czy mogę używać Health Connect API z Pythona lub React Native?

Z Pythona nie, ponieważ działa on na serwerze, a nie na telefonie. Z React Native lub Flutter tak, poprzez wtyczki społecznościowe lub oficjalne, które wywołują API Androida wewnątrz aplikacji.

Dlaczego moja aplikacja może odczytywać tylko 30 dni danych z Health Connect?

Bez uprawnienia READ_HEALTH_DATA_HISTORY, Health Connect ogranicza odczyt do 30 dni przed udzieleniem pierwszego uprawnienia. Poproś o uprawnienie do historii, jeśli potrzebujesz starszych danych.

Czy Garmin synchronizuje się z Health Connect?

Tak. Google ogłosiło w sierpniu 2025 roku, że Garmin Connect obsługuje Health Connect na Androidzie 14 i nowszych, dla danych dotyczących aktywności i samopoczucia, takich jak tętno i kalorie. Własne wskaźniki Garmin, takie jak Body Battery, nie są udostępniane.

Czy mogę odczytywać dane Fitbit bez Fitbit Web API?

Na Androidzie tak: po włączeniu Health Connect w aplikacji Fitbit, dane Fitbit są dostępne w Health Connect dla autoryzowanych przez użytkownika aplikacji.

Dlaczego liczba kroków w Health Connect różni się od tej w mojej aplikacji producenta?

Aplikacja producenta mogła jeszcze nie wyeksportować swoich najnowszych danych, może eksportować tylko niektóre typy danych, lub Health Connect może preferować inne źródło dla tego samego okresu. Sprawdź źródła danych i ich priorytet w ustawieniach Health Connect.

Powiązane

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