Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Health Connect FHIR-re
Android Health Connect adatok olvasása Fitbit, Garmin, Oura, Withings és Wear OS készülékekről Flutterben, és írás FHIR R4 rekordba: engedélyek, előzmények, Play áruház értékelés.
A Health Connect az Android eszközön belüli egészségügyi adattára: a Samsung Health, a Fitbit, a Garmin Connect, az Oura, a Withings és a Wear OS alkalmazások írnak bele, és az Ön alkalmazása az illető engedélyével olvassa ki belőle az adatokat. Ahhoz, hogy ezeket az adatokat FHIR rekordba helyezze, olvassa be a napi összesítéseket és átlagokat a telefonon, küldje el a backendjére, és írja be minden egyes mérőszámot egy Observationként, LOINC kóddal és UCUM egységgel. Ez az oldal ismerteti az Android által megkövetelt engedélyeket, egy Flutter példát (ellenőrizve flutter analyze), amely ugyanazzal a kóddal olvassa be a Health Connectet Androidon és az Apple Health-et iOS-en, valamint a Google Playen való publikálás szabályait.
Mi kerül a Health Connectbe
A Health Connect az Android 14-től és újabb verzióktól kezdve beépített funkció, régebbi verziókon pedig alkalmazásként érhető el. Olyan rekordokat tárol, mint a HeartRateRecord, RestingHeartRateRecord, HeartRateVariabilityRmssdRecord, OxygenSaturationRecord, RespiratoryRateRecord, StepsRecord, DistanceRecord, ActiveCaloriesBurnedRecord, SleepSessionRecord, WeightRecord, BloodPressureRecord, BloodGlucoseRecord, BodyTemperatureRecord és ExerciseSessionRecord.
Ki ír oda, az egyes gyártók dokumentációja szerint:
| Forrás | Mire számíthat |
|---|---|
| Fitbit és Pixel Watch | A Fitbit alkalmazás szinkronizál a Health Connecttel, miután a felhasználó beállította azt (Google súgó) |
| Garmin | A Garmin Connect támogatja a Health Connectet Android 14-től és újabb verzióktól: tevékenység és wellness adatok, mint például pulzus és kalóriák (Android Developers, 2025. augusztus) |
| Oura | Pulzus, HRV, alvás szakaszokkal, lépések, távolság, kalóriák és edzések (Oura) |
| Withings | A Health Mate tevékenységi, súly-, alvás- és egyéb adatokat cserél a Health Connecten keresztül (Android Developers blog) |
| Samsung Health, Galaxy Watch | Egy részhalmaz, a Samsung Health saját ütemében – lásd: Samsung Health to FHIR |
Minden gyártói alkalmazásnak engedéllyel kell rendelkeznie a Health Connectbe való írásra, amelyet a felhasználó az adott alkalmazásban vagy a Health Connect beállításaiban ad meg. Ha egy forrás hiányzik, ez az első dolog, amit ellenőrizni kell.
Engedélyek, amelyekre az Androidnak szüksége van
- Engedélyenként egy rekordtípusonként és irányonként, például
android.permission.health.READ_HEART_RATEésandroid.permission.health.READ_STEPS, deklarálva a manifestben és futásidőben kérve. - Előzmények:
android.permission.health.READ_HEALTH_DATA_HISTORYnélkül az alkalmazás csak az engedély megadása előtti utolsó 30 napot tudja olvasni. - Háttér: Az alkalmazás háttérben történő olvasásához
android.permission.health.READ_HEALTH_DATA_IN_BACKGROUNDszükséges. - Engedélyek indoklása képernyő (egy tevékenység, amely kezeli a
ACTION_SHOW_PERMISSIONS_RATIONALE-et, plusz egy tevékenység alias az Android 14-en), amely elmagyarázza az adatvédelmi irányelveit; enélkül az engedély párbeszédablak nem nyílik meg. - Flutterben a
MainActivity-nekFlutterFragmentActivity-et kell kiterjesztenie, nemFlutterActivity-et, különben az engedélykérések meghiúsulnak.
Napi értékek olvasása Flutterben
A health csomag egyetlen API mögött olvassa a Health Connect-et Androidon és az Apple Health-et iOS-en. A példa a 13.2.1 verziót használja, amellyel az Anpheros Daily szállítva van:
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
}
A getTotalStepsInInterval a Health Connect-től kéri az összesített értéket, amely már feloldja az átfedő forrásokat (egy telefon és egy óra ugyanazt a sétát számolja) a személy által a Health Connect-ben beállított adatforrás-prioritás szerint. A nyers lépésrekordok saját magad általi összeadása kettős számlálást eredményez.
Megjegyzések az Anpheros Daily-ben történő szállításból:
- Szinkronizálás, amikor az alkalmazás előtérbe kerül, rövid védelemmel az ismételt szinkronizálások ellen. Más alkalmazások saját ütemezésük szerint írnak a Health Connect-be, így az adatok, amelyeket egy személy lát a gyártói alkalmazásban, percekkel vagy órákkal később érkezhetnek meg.
- A pulzusszám egy sorozat, nem egy érték mintánként: összegzi azt a telefonon (napi vagy 4 órás ablakokban a diagramokhoz) ahelyett, hogy minden egyes leolvasást feltöltene.
- A HRV itt RMSSD. Ne tárolja az Apple Health-hez használt SDNN kód alatt.
Flutter értékeiből FHIR megfigyelésekre
Küldje el az értékeket a backendjére, és írjon egy megfigyelést személyenként, mérőszámonként és naponta, stabil azonosítóval, frissítve azt, ha ugyanazt a napot ismét elküldik. A teljes megfeleltetési táblázat (Health Connect rekord → LOINC → UCUM), egy validált FHIR példa és a platform ellen futtatott TypeScript upsert a Wearable data in FHIR oldalon található.
Google Play-en való közzététel
A Health Connect-et olvasó alkalmazásoknak el kell végezniük a Health Connect engedélyek nyilatkozatát a Play Console-ban, igazolniuk kell minden adat típust, és rendelkezniük kell egy ehhez illeszkedő adatvédelmi irányelvvel. Az alkalmazás által láthatóan nem használt adat típusokra vonatkozó kéréseket elutasítják. Tervezze meg az áttekintést: sorolja fel az egyes típusokat a használó képernyő mellett.
Wear OS
Wear OS órán egy alkalmazás képes élő szenzoradatokat olvasni a Health Services segítségével (például pulzus edzés közben). Az óra saját egészségügyi alkalmazása által rögzített adatok a gyártó telefonos alkalmazásán keresztül jutnak el a telefonon futó Health Connectbe. Orvosi nyilvántartás esetén általában elegendő a telefonon lévő Health Connect olvasása; egy óraalkalmazás az élő funkciókhoz való.
Hol illeszkedik be az Anpheros
Az Anpheros Platform tárolja az eredményt: a személy FHIR R4 rekordját, ahol minden viselhető érték egy megfigyelésként (Observation) van jelölve, mint eszközadat, beleegyezés, származás és hozzáférési napló mögött. Nem olvassa a Health Connect-et maga; az Android alkalmazásod teszi. Az Anpheros saját alkalmazása, az Anpheros Daily, olvassa a Health Connect-et Androidon (Plus és Max csomagok) és naponta ír összefoglalókat a rekordba.
Gyakran ismételt kérdések
Van a Health Connect-nek felhő API-ja?
Nem. A Health Connect az adatokat a telefonon tárolja, és csak az adott telefonon lévő alkalmazások olvashatják, a személy engedélyével. Az adatok szerverre juttatásához az Ön alkalmazása elolvassa azokat, és elküldi.
Van Health Connect REST API vagy web API?
Nem. A Health Connect egy eszközön futó Android API, amelynek nincs REST vagy web végpontja. A szerver csak akkor fogadja az adatokat, amikor a telefonon lévő alkalmazás elolvassa azokat és elküldi, például FHIR Observations formájában az Anpheros-nak.
Használhatom a Health Connect API-t Pythonból vagy React Native-ből?
Pythonból nem, mert az a telefonon fut, nem szerveren. React Native-ből vagy Flutterből igen, közösségi vagy hivatalos bővítményeken keresztül, amelyek az alkalmazáson belüli Android API-t hívják.
Miért tud az alkalmazásom csak 30 napnyi Health Connect adatot olvasni?
A READ_HEALTH_DATA_HISTORY engedély nélkül a Health Connect az első engedély megadása előtti 30 napra korlátozza az olvasást. Kérje a history engedélyt, ha régebbi adatokra van szüksége.
Szinkronizál a Garmin a Health Connect-tel?
Igen. A Google 2025 augusztusában jelentette be, hogy a Garmin Connect támogatja a Health Connect-et Android 14 és újabb verziókon, tevékenységi és wellness adatokhoz, mint például pulzusszám és kalória. A Garmin saját pontszámai, mint például a Body Battery, nem kerülnek megosztásra.
El tudom olvasni a Fitbit adatokat a Fitbit Web API nélkül?
Androidon igen: miután a személy engedélyezte a Health Connect-et a Fitbit alkalmazásban, a Fitbit adatok elérhetőek a Health Connect-ben az általuk engedélyezett alkalmazások számára.
Miért különbözik a Health Connect lépésszámlálása a gyártói alkalmazásétól?
Lehetséges, hogy a gyártói alkalmazás még nem exportálta a legfrissebb adatait, csak bizonyos típusokat exportál, vagy a Health Connect egy másik forrást részesít előnyben ugyanarra az időszakra. Ellenőrizze az adatforrásokat és azok prioritását a Health Connect beállításaiban.
Kapcsolódó
- Fitbit Web API leállítása (2026. október)
- Viselhető eszközök adatai FHIR formátumban: a leképezési táblázat és a backend kód
- Samsung Health FHIR-re
- Apple Health (HealthKit) FHIR-re
- Egészségügyi alkalmazás készítése Flutterrel
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card