Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Údaje z nositeľných zariadení vo FHIR (Apple Health, Health Connect)
Dostaňte údaje z inteligentných hodiniek, prsteňov a váh do FHIR záznamu: ktoré zariadenia sa dostanú do ktorého zdravotného úložiska, tabuľka mapovania LOINC, denné súhrny a testovaný upsert.
Na získanie údajov z inteligentných hodiniek, prsteňa alebo inteligentnej váhy do lekárskeho záznamu ich prečítajte na telefóne z úložiska zdravia operačného systému — Apple Health na iOS, Health Connect na Android — zhrňte ich na dennej báze, namapujte každú metriku na kód LOINC a jednotku UCUM a zapíšte ich ako FHIR R4 Observations označené ako údaje zo zariadenia. Čítanie z úložiska zdravia telefónu namiesto z cloudu každého predajcu umožňuje jedinej integrácii pokryť Apple Watch, Galaxy Watch, Pixel Watch, Garmin, Fitbit, Oura a Withings, pokiaľ osoba povolila zdieľanie prostredníctvom aplikácie svojho predajcu. Táto stránka poskytuje dátovú cestu, opakovane použiteľnú mapovaciu tabuľku, validovaný FHIR príklad a kód, ktorý bol spustený na platforme.
Dátová 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: dáta môže čítať iba aplikácia na telefóne používateľa. Vaša aplikácia ich číta, posiela kompaktné denné hodnoty na váš backend a backend ich zapisuje do záznamu.
Ktoré zariadenia dosahujú ktorý zdravotný úložisko
Čo každý predajca zdieľa, sa mení s verziami aplikácií; referenciou je vlastná dokumentácia predajcu.
| Zariadenie alebo aplikácia | Apple Health (iOS) | Health Connect (Android) | Poznámky |
|---|---|---|---|
| Apple Watch | Áno, natívne | — | Všetko, čo hodinky merajú, sa dostane do Apple Health |
| Samsung Galaxy Watch, Samsung Health | — | Čiastočne | Samsung Health rozhoduje, aké typy exportuje a ako často; pozri Samsung Health |
| Pixel Watch, Fitbit | Žiadna oficiálna synchronizácia | Áno, prostredníctvom aplikácie Fitbit (Pomocník Google) | |
| Garmin | Áno, z Garmin Connect po každej synchronizácii zariadenia | Áno, Garmin Connect podporuje Health Connect na Androide 14 a novšom (Android Developers, august 2025) | Skóre špecifické pre Garmin, ako napríklad Body Battery, sa nezdieľajú |
| Oura | Áno | Áno (Oura) | Readiness a ďalšie skóre Oura zostávajú v aplikácii Oura |
| Withings | Áno, prostredníctvom Health Mate | Áno (blog Android Developers) | Váhy, monitory krvného tlaku, hodinky |
Dva praktické dôsledky. Po prvé, vaša aplikácia závisí od toho, či osoba zapla zdieľanie vo svojej predajcovej aplikácii; onboarding by to mal uviesť. Po druhé, zdravotné úložisko môže obsahovať rovnaké kroky z dvoch zdrojov (telefón a hodinky); čítajte denné súčty samotného úložiska namiesto sčítavania vzoriek, pretože Apple Health a Health Connect už odstraňujú duplicity z prekrývajúcich sa zdrojov.
Mapovanie typu úložiska zdravia → FHIR Observation
Kódy, ktoré Anpheros Daily používa pri zápise údajov z nositeľných zariadení do FHIR záznamu:
| Metrika | Apple HealthKit | Health Connect | LOINC | UCUM jednotka | Kategória |
|---|---|---|---|---|---|
| Tepová frekvencia | heartRate |
HeartRateRecord |
8867-4 | /min |
vital-signs |
| Pokojová tepová frekvencia | restingHeartRate |
RestingHeartRateRecord |
40443-4 | /min |
vital-signs |
| Variabilita srdcovej frekvencie | heartRateVariabilitySDNN |
HeartRateVariabilityRmssdRecord |
80404-7 (iba SDNN) | ms |
vital-signs |
| Kyslík v krvi (SpO₂) | oxygenSaturation |
OxygenSaturationRecord |
59408-5 | % |
vital-signs |
| Dychová frekvencia | respiratoryRate |
RespiratoryRateRecord |
9279-1 | /min |
vital-signs |
| Kroky za deň | stepCount |
StepsRecord |
41950-7 | {steps} |
activity |
| Aktívna energia | activeEnergyBurned |
ActiveCaloriesBurnedRecord |
41981-2 | kcal |
activity |
| Dĺžka spánku | sleepAnalysis (kategória) |
SleepSessionRecord |
93832-4; štádiá 93831-6 hlboký, 93830-8 ľahký, 93829-0 REM | min |
activity |
| Telesná hmotnosť | bodyMass |
WeightRecord |
29463-7 | kg |
vital-signs |
| Krvný tlak | bloodPressure (korelácia) |
BloodPressureRecord |
85354-9 s 8480-6 a 8462-4 | mm[Hg] |
vital-signs |
| Glukóza v krvi (glukomer) | bloodGlucose |
BloodGlucoseRecord |
2339-0 | mg/dL |
vital-signs |
| Telesná teplota | bodyTemperature |
BodyTemperatureRecord |
8310-5 | Cel |
vital-signs |
Pozrite si riadok variability srdcovej frekvencie: Apple Health ukladá SDNN, Health Connect ukladá RMSSD. Sú to rôzne štatistiky a nesmú sa zapisovať pod rovnakým kódom. LOINC 80404-7 je SDNN; pre RMSSD používa Anpheros Daily svoj vlastný kódový systém namiesto toho, aby predstieral, že sú tieto dve veci rovnaké.
Zhrnutia, nie každý vzorok
Hodinky produkujú tisíce vzoriek srdcovej frekvencie denne. Lekársky záznam potrebuje niečo, čo si môže prečítať osoba alebo lekár:
- Jedna Observation na metrike za deň, s
effectivePeriodpokrývajúcimi lokálny deň osoby, denný priemer alebo celok vvalueQuantitya pre rýchlosti, minimum a maximum ako komponenty. - Jemnejšie série zostávajú tam, kde sú užitočné. Anpheros Daily uchováva 4-hodinové zhrnutia srdcovej frekvencie pre svoje vlastné grafy a zapisuje denné hodnoty do FHIR záznamu.
- Udalosti sú oddelené. Upozornenie na nepravidelný rytmus alebo jedno meranie krvného tlaku je samostatná Observation s vlastným časom, nie súčasť denného priemeru.
Denné zhrnutie srdcovej frekvencie ako FHIR R4 (prejde FHIR R4 validátorom):
{
"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)"}
}
Zapisovanie denných hodnôt bez duplikátov
Telefóny synchronizujú dáta niekoľkokrát denne a posledná hodnota dňa sa mení až do polnoci. Každému Observation priraďte stabilný identifikátor — osoba, deň, metrika — a aktualizujte ho namiesto vytvárania nového. S Anpheros TypeScript SDK na vašom backend:
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 });
}
Spustenie proti lokálnej inštancii platformy s sandbox kľúčom, dve denné hodnoty nasledované neskoršou synchronizáciou krokov toho istého dňa zanechali dve Observations, pričom kroky boli vo verzii 2 s novou hodnotou a provenance v1 device apple-health · v2 device. História si ponecháva skoršiu hodnotu a každý čitateľ vidí, že dáta pochádzajú zo zariadenia, nie od lekára.
V produkcii použite skutočné denné hranice v časovej zóne osoby (príklad vyššie používa UTC pre stručnosť), rovnako ako kód HealthKit a Health Connect na stránkach platformy.
Čítanie z telefónu
- iPhone a Apple Watch: Apple Health (HealthKit) do FHIR, s kódom Swift pre denné štatistiky.
- Android, Wear OS, Fitbit, Garmin, Oura, Withings: Health Connect do FHIR, s kódom Flutter, ktorý funguje na oboch platformách.
- Samsung Galaxy Watch a Samsung Health: Samsung Health do FHIR: čo sa dostane do Health Connect a čo potrebuje vlastné SDK od Samsungu.
Pravidlá, ktorých sa oplatí dodržiavať
- Čítajte iba to, čo používate, a žiadajte o každý typ osobitne; ľudia udeľujú čiastočné povolenia.
- Označte zdroj. Nositeľné zariadenia pre spotrebiteľov nie sú diagnostické zariadenia. Zapisujte ich dáta ako dáta zariadenia (
author_type: device) a uveďte, z ktorej aplikácie pochádzajú, aby ich lekár mohol patrične zhodnotiť. - Rešpektujte pravidlá platformy. Pokyny pre recenzie aplikácií spoločnosti Apple (5.1.3) zakazujú používanie zdravotných údajov na reklamu a ukladanie osobných zdravotných informácií v službe iCloud; Google Play vyžaduje vyhlásenie o zdravotných aplikáciách pre aplikácie, ktoré používajú Health Connect.
- Umožnite ľuďom odpojiť sa a rozhodnúť sa, či údaje, ktoré už boli skopírované, zostanú v zázname.
Čo Anpheros robí a nerobí
Platforma Anpheros sa sama o sebe nepripája k Apple Health, Health Connect ani k žiadnemu predajcovskému cloudu: vaša aplikácia číta dáta z telefónu a zapisuje ich cez API. Vlastná aplikácia Anpheros, Anpheros Daily, robí presne toto: číta Apple Health na iPhone a Health Connect na Androide, uchováva denné súhrny a zapisuje ich do FHIR záznamu osoby s vyššie uvedenými kódmi. Pripojenie zariadení je súčasťou jej plánov Plus a Max.
Často kladené otázky
Ako dostanem dáta z Apple Watch na FHIR server?
Prečítajte si ich na iPhone z Apple Health pomocou HealthKit (neexistuje žiadne serverové API), zhrňte ich na dennej báze a nechajte svoj backend zapísať každú metriku ako Observation s LOINC kódom a UCUM jednotkou, označenú ako dáta zo zariadenia.
Existuje cloudové API pre Health Connect alebo Apple Health?
Nie. Obe uchovávajú dáta na telefóne; aplikácia nainštalovaná na telefóne si ich prečíta s povolením osoby. Cloudové služby predajcov ako Garmin, Fitbit alebo Oura majú vlastné API, ale čítanie zdravotného úložiska telefónu pokrýva väčšinu z nich jednou integráciou.
Aký LOINC kód mám použiť pre kroky?
41950-7, "Number of steps in 24 hour Measured", s denným effectivePeriod. Pre srdcovú frekvenciu použite 8867-4, pre SpO₂ 59408-5, pre dĺžku spánku 93832-4.
Mám ukladať každý vzor srdcovej frekvencie vo FHIR?
Zvyčajne nie. Denné zhrnutie s priemerom, minimom a maximom je to, čo si osoba alebo lekár prečíta; jednotlivé údaje patria do záznamu iba vtedy, keď majú samy o sebe význam, napríklad udalosť nepravidelného rytmu.
Môžem použiť jeden kód pre HRV z Apple Health a Health Connect?
Nie. Apple Health hlási SDNN a Health Connect hlási RMSSD; merajú rôzne veci a potrebujú rôzne kódy.
Súvisiace
- API pre nositeľné zariadenia: Fitbit, Garmin, Oura a Withings
- API pre zdravotné trackery: ukladanie údajov z trackerov na server so súhlasom
- Ako vytvoriť aplikáciu osobného zdravotného záznamu
- Integrácie v zdravotníctve: zariadenia popri laboratóriách, klinikách a aplikáciách
- Kódové systémy FHIR: LOINC a UCUM
- Vysvetlenie pôvodu lekárskych údajov
- Ako normalizovať lekárske údaje
- Diaľkové monitorovanie pacientov s FHIR: jednotlivé údaje, webhooks a upozornenia
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card