Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Data z nositelných zařízení ve FHIR (Apple Health, Health Connect)
Dostaňte data z chytrých hodinek, prstenů a vah do FHIR záznamu: která zařízení se dostanou do kterého zdravotního úložiště, tabulka mapování LOINC, denní souhrny a testovaný upsert.
Chcete-li získat data z chytrých hodinek, prstenů nebo chytrých vah do lékařského záznamu, přečtěte si je v telefonu z úložiště zdraví operačního systému — Apple Health na iOS, Health Connect na Androidu — shrňte je denně, namapujte každou metriku na kód LOINC a jednotku UCUM a zapište je jako FHIR R4 Observations označené jako data ze zařízení. Čtení z úložiště zdraví telefonu namísto z cloudu každého dodavatele umožňuje jedné integraci pokrýt Apple Watch, Galaxy Watch, Pixel Watch, Garmin, Fitbit, Oura a Withings, pokud osoba povolila sdílení prostřednictvím své aplikace dodavatele. Tato stránka poskytuje datovou cestu, tabulku mapování, kterou můžete znovu použít, ověřený příklad FHIR a kód, který byl spuštěn na platformě.
Datová cesta
watch, ring, scale ──► vendor app (Garmin Connect, Fitbit, Oura, Withings, Samsung Health…)
│ shares, with the person's permission
▼
Apple Health (iOS) / Health Connect (Android)
│ your app reads, with the person's permission, on the phone
▼
your app ──► your backend ──► FHIR R4 Observations in the person's record
Apple Health ani Health Connect nemají serverové API: data může číst pouze aplikace v telefonu dané osoby. Vaše aplikace je čte, posílá kompaktní denní hodnoty na váš backend a backend je zapisuje do záznamu.
Která zařízení dosáhnou na které zdravotní úložiště
Co jednotliví dodavatelé sdílejí, se mění s verzemi aplikací; referencí je dokumentace samotného dodavatele.
| Zařízení nebo aplikace | Apple Health (iOS) | Health Connect (Android) | Poznámky |
|---|---|---|---|
| Apple Watch | Ano, nativně | — | Vše, co hodinky měří, se ukládá do Apple Health |
| Samsung Galaxy Watch, Samsung Health | — | Částečně | Samsung Health rozhoduje, jaké typy dat exportuje a jak často; viz Samsung Health |
| Pixel Watch, Fitbit | Žádná oficiální synchronizace | Ano, prostřednictvím aplikace Fitbit (Nápověda Google) | |
| Garmin | Ano, z Garmin Connect po každé synchronizaci zařízení | Ano, Garmin Connect podporuje Health Connect na Androidu 14 a novějším (Android Developers, srpen 2025) | Skóre specifická pro Garmin, jako je Body Battery, se nesdílejí |
| Oura | Ano | Ano (Oura) | Readiness a další skóre Oura zůstávají v aplikaci Oura |
| Withings | Ano, prostřednictvím Health Mate | Ano (blog Android Developers) | Váhy, monitory krevního tlaku, hodinky |
Dva praktické důsledky. Zaprvé, vaše aplikace závisí na tom, zda si osoba zapnula sdílení ve své dodavatelské aplikaci; onboarding by to měl uvádět. Zadruhé, zdravotní úložiště může obsahovat stejné kroky ze dvou zdrojů (telefon a hodinky); čtěte denní součty samotného úložiště, nikoli sčítání vzorků, protože Apple Health a Health Connect již duplicitní překrývající se zdroje odstraňují.
Tabulka mapování: typ úložiště zdraví → FHIR Observation
Kódy, které Anpheros Daily používá při zápisu dat z nositelných zařízení do záznamu FHIR:
| Metrika | Apple HealthKit | Health Connect | LOINC | Jednotka UCUM | Kategorie |
|---|---|---|---|---|---|
| Tepová frekvence | heartRate |
HeartRateRecord |
8867-4 | /min |
vital-signs |
| Klidová tepová frekvence | restingHeartRate |
RestingHeartRateRecord |
40443-4 | /min |
vital-signs |
| Variabilita srdeční frekvence | heartRateVariabilitySDNN |
HeartRateVariabilityRmssdRecord |
80404-7 (pouze SDNN) | ms |
vital-signs |
| Kyslík v krvi (SpO₂) | oxygenSaturation |
OxygenSaturationRecord |
59408-5 | % |
vital-signs |
| Dechová frekvence | respiratoryRate |
RespiratoryRateRecord |
9279-1 | /min |
vital-signs |
| Kroky za den | stepCount |
StepsRecord |
41950-7 | {steps} |
activity |
| Aktivní energie | activeEnergyBurned |
ActiveCaloriesBurnedRecord |
41981-2 | kcal |
activity |
| Délka spánku | sleepAnalysis (kategorie) |
SleepSessionRecord |
93832-4; fáze 93831-6 hluboký, 93830-8 lehký, 93829-0 REM | min |
activity |
| Tělesná hmotnost | bodyMass |
29463-7 | WeightRecord |
kg |
vital-signs |
| Krevní tlak | bloodPressure (korelace) |
85354-9 s 8480-6 a 8462-4 | BloodPressureRecord |
mm[Hg] |
vital-signs |
| Krevní glukóza (glukometr) | bloodGlucose |
2339-0 | BloodGlucoseRecord |
mg/dL |
vital-signs |
| Tělesná teplota | bodyTemperature |
8310-5 | BodyTemperatureRecord |
Cel |
vital-signs |
Věnujte pozornost řádku variability srdeční frekvence: Apple Health ukládá SDNN, Health Connect ukládá RMSSD. Jedná se o různé statistiky a nesmí být zapsány pod stejným kódem. LOINC 80404-7 je SDNN; pro RMSSD používá Anpheros Daily vlastní kódový systém, místo aby předstíral, že jsou tyto dvě hodnoty stejné.
Souhrny, nikoli každý vzorek
Hodinky produkují tisíce vzorků srdeční frekvence denně. Lékařský záznam potřebuje něco, co si může přečíst člověk nebo lékař:
- Jedna Observation na metriku za den, s
effectivePeriodpokrývající místní den osoby, denní průměr nebo celkový součet vvalueQuantitya pro rychlosti, minimum a maximum jako komponenty. - Jemnější série zůstávají tam, kde jsou užitečné. Anpheros Daily uchovává 4hodinové souhrny srdeční frekvence pro své vlastní grafy a zapisuje denní hodnoty do FHIR záznamu.
- Události jsou oddělené. Upozornění na nepravidelný rytmus nebo jedno měření krevního tlaku je vlastní Observation s vlastním časem, nikoli součást denního průměru.
Denní souhrn srdeční frekvence jako FHIR R4 (projde FHIR R4 validátorem):
{
"resourceType": "Observation",
"status": "final",
"identifier": [{"system": "https://your-app.test/fhir/sid/daily-wearable", "value": "p-123:2026-10-01:heart_rate"}],
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "8867-4", "display": "Heart rate"}]},
"subject": {"reference": "Patient/p-123"},
"effectivePeriod": {"start": "2026-10-01T00:00:00-04:00", "end": "2026-10-02T00:00:00-04:00"},
"valueQuantity": {"value": 71.4, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"},
"component": [
{"code": {"text": "minimum"}, "valueQuantity": {"value": 52, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}},
{"code": {"text": "maximum"}, "valueQuantity": {"value": 138, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}}
],
"device": {"display": "Apple Watch (via Apple Health)"}
}
Zápis denních hodnot bez duplicit
Telefony synchronizují data několikrát denně a poslední hodnota dne se mění až do půlnoci. Každému Observation přiřaďte stabilní identifikátor – osoba, den, metrika – a aktualizujte jej místo vytváření nového. Pomocí Anpheros TypeScript SDK na vašem backendu:
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
// What the phone sends: one value per metric per local day
type DailyValue = { metric: 'heart_rate' | 'steps'; day: string; value: number; min?: number; max?: number };
const CODES = {
heart_rate: { code: '8867-4', display: 'Heart rate', unit: '/min', category: 'vital-signs' },
steps: { code: '41950-7', display: 'Number of steps in 24 hour Measured', unit: '{steps}', category: 'activity' },
} as const;
// One Observation per person, metric and day: re-sending a day updates it instead of adding a copy.
async function upsertDaily(patientId: string, v: DailyValue, source: string) {
const c = CODES[v.metric];
const identifier = { system: 'https://your-app.test/fhir/sid/daily-wearable', value: `${patientId}:${v.day}:${v.metric}` };
const resource: any = {
resourceType: 'Observation', status: 'final',
identifier: [identifier],
category: [{ coding: [{ system: 'http://terminology.hl7.org/CodeSystem/observation-category', code: c.category }] }],
code: { coding: [{ system: 'http://loinc.org', code: c.code, display: c.display }] },
subject: { reference: `Patient/${patientId}` },
effectivePeriod: { start: `${v.day}T00:00:00Z`, end: `${v.day}T23:59:59Z` },
valueQuantity: { value: v.value, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit },
};
if (v.min !== undefined && v.max !== undefined) {
resource.component = [
{ code: { text: 'minimum' }, valueQuantity: { value: v.min, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit } },
{ code: { text: 'maximum' }, valueQuantity: { value: v.max, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit } },
];
}
const found = await anpheros.fhir.search('Observation', { identifier: `${identifier.system}|${identifier.value}` });
const existing = found.entry?.[0]?.resource;
return existing
? anpheros.fhir.update({ ...resource, id: existing.id }, { author_type: 'device' })
: anpheros.fhir.create(resource, { author_type: 'device', source_system: source });
}
Spuštění proti lokální instanci platformy s sandbox klíčem, dvě denní hodnoty následované pozdější synchronizací kroků téhož dne zanechaly dvě Observation, přičemž kroky byly ve verzi 2 s novou hodnotou a provenance v1 device apple-health · v2 device. Historie uchovává dřívější hodnotu a každý čtenář vidí, že data pocházejí ze zařízení, nikoli od klinika.
V produkci používejte skutečné hranice dne v časovém pásmu osoby (příklad výše používá UTC pro stručnost), stejně jako kód HealthKit a Health Connect na stránkách platformy.
Čtení z telefonu
- iPhone a Apple Watch: Apple Health (HealthKit) do FHIR, s kódem Swift pro denní statistiky.
- Android, Wear OS, Fitbit, Garmin, Oura, Withings: Health Connect do FHIR, s kódem Flutter, který funguje na obou platformách.
- Samsung Galaxy Watch a Samsung Health: Samsung Health do FHIR: co se dostane do Health Connect a co vyžaduje vlastní SDK od Samsungu.
Pravidla, která stojí za to dodržovat
- Čtěte pouze to, co používáte, a žádejte o každý typ zvlášť; lidé udělují částečná oprávnění.
- Označte zdroj. Spotřebitelská nositelná zařízení nejsou diagnostické přístroje. Zapisujte jejich data jako data zařízení (
author_type: device) a uveďte, ze které aplikace pocházejí, aby je lékař mohl náležitě zvážit. - Dodržujte pravidla platformy. Pokyny pro revizi aplikací společnosti Apple (5.1.3) zakazují používání zdravotních dat pro reklamu a ukládání osobních zdravotních informací v iCloudu; Google Play vyžaduje prohlášení o zdravotních aplikacích pro aplikace, které používají Health Connect.
- Umožněte lidem odpojení a rozhodnutí, zda již zkopírovaná data zůstanou v záznamu.
Co Anpheros dělá a nedělá
Platforma Anpheros se sama o sobě nepřipojuje k Apple Health, Health Connect ani k žádnému cloudovému řešení dodavatele: vaše aplikace čte data z telefonu a zapisuje je prostřednictvím API. Vlastní aplikace Anpheros, Anpheros Daily, dělá přesně toto: čte Apple Health na iPhonu a Health Connect na Androidu, udržuje denní souhrny a zapisuje je do FHIR záznamu osoby s výše uvedenými kódy. Připojení zařízení je součástí jejích plánů Plus a Max.
Často kladené dotazy
Jak dostanu data z Apple Watch na FHIR server?
Přečtěte si je na iPhonu z Apple Health pomocí HealthKit (neexistuje žádné serverové API), shrňte je denně a nechte svůj backend zapsat každou metriku jako Observation s LOINC kódem a UCUM jednotkou, označenou jako data ze zařízení.
Existuje cloudové API pro Health Connect nebo Apple Health?
Ne. Obě ukládají data na telefonu; aplikace nainstalovaná na telefonu si je přečte s povolením uživatele. Cloudová řešení dodavatelů, jako jsou Garmin, Fitbit nebo Oura, mají svá vlastní API, ale čtení zdravotního úložiště telefonu pokrývá většinu z nich jedinou integrací.
Jaký LOINC kód mám použít pro kroky?
41950-7, "Number of steps in 24 hour Measured", s denním effectivePeriod. Pro srdeční tep použijte 8867-4, pro SpO₂ 59408-5, pro délku spánku 93832-4.
Mám ukládat každý vzorek srdečního tepu do FHIR?
Obvykle ne. Denní souhrn s průměrem, minimem a maximem je to, co si uživatel nebo lékař přečte; jednotlivá měření patří do záznamu pouze tehdy, když mají sama o sobě význam, například událost nepravidelného rytmu.
Mohu použít jeden kód pro HRV z Apple Health a Health Connect?
Ne. Apple Health hlásí SDNN a Health Connect hlásí RMSSD; měří různé věci a vyžadují různé kódy.
Související
- API pro nositelná zařízení: Fitbit, Garmin, Oura a Withings
- API pro sledování zdraví: ukládání dat ze sledovacích zařízení na server se souhlasem
- Jak vytvořit aplikaci pro osobní zdravotní záznamy
- Integrace ve zdravotnictví: zařízení vedle laboratoří, klinik a aplikací
- Kódovací systémy FHIR: LOINC a UCUM
- Vysvětlení původu lékařských dat
- Jak normalizovat lékařská data
- Monitorování pacientů na dálku s FHIR: jednotlivá měření, webhooks a upozornění
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card