AnpherosAnpheros PlatformDevelopers

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:

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

Pravidlá, ktorých sa oplatí dodržiavať

Č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

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