AnpherosAnpheros PlatformDevelopers

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

Wearable-Daten in FHIR (Apple Health, Health Connect)

Smartwatch-, Ring- und Waagen-Daten in eine FHIR-Akte übertragen: Welche Geräte erreichen welchen Health Store, eine LOINC-Zuordnungstabelle, tägliche Zusammenfassungen und ein getesteter Upsert.

Um Daten von einer Smartwatch, einem Ring oder einer Smartwaage in einen medizinischen Datensatz zu übertragen, lesen Sie diese auf dem Telefon aus dem Health Store des Betriebssystems – Apple Health unter iOS, Health Connect unter Android –, fassen Sie sie pro Tag zusammen, ordnen Sie jede Metrik einem LOINC-Code und einer UCUM-Einheit zu und schreiben Sie sie als FHIR R4 Observations, die als Gerätedaten markiert sind. Das Lesen aus dem Health Store des Telefons anstelle der Cloud jedes Anbieters ermöglicht eine einzige Integration, die Apple Watch, Galaxy Watch, Pixel Watch, Garmin, Fitbit, Oura und Withings abdeckt, solange die Person ihrer Anbieter-App die Freigabe erlaubt hat. Diese Seite bietet den Datenpfad, eine Mapping-Tabelle, die Sie wiederverwenden können, ein validiertes FHIR-Beispiel und Code, der gegen die Plattform ausgeführt wurde.

Der Datenpfad

 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

Weder Apple Health noch Health Connect verfügen über eine Server-API: Daten können nur von einer App auf dem Telefon der Person gelesen werden. Ihre App liest diese Daten, sendet kompakte tägliche Werte an Ihr Backend, und das Backend schreibt sie in den Datensatz.

Welche Geräte erreichen welchen Health Store

Was jeder Anbieter teilt, ändert sich mit den App-Versionen; die eigene Dokumentation des Anbieters ist die Referenz.

Gerät oder App Apple Health (iOS) Health Connect (Android) Anmerkungen
Apple Watch Ja, nativ — Alles, was die Uhr misst, landet in Apple Health
Samsung Galaxy Watch, Samsung Health — Teilweise Samsung Health entscheidet, welche Typen exportiert werden und wie oft; siehe Samsung Health
Pixel Watch, Fitbit Keine offizielle Synchronisierung Ja, über die Fitbit-App (Google Hilfe)
Garmin Ja, von Garmin Connect nach jeder Gerätesynchronisierung Ja, Garmin Connect unterstützt Health Connect ab Android 14 (Android Developers, August 2025) Garmin-spezifische Werte wie Body Battery werden nicht geteilt
Oura Ja Ja (Oura) Readiness und andere Oura-Werte bleiben in der Oura-App
Withings Ja, über Health Mate Ja (Android Developers Blog) Waagen, Blutdruckmessgeräte, Uhren

Zwei praktische Konsequenzen. Erstens hängt Ihre App davon ab, dass die Person das Teilen in ihrer Anbieter-App aktiviert hat; das Onboarding sollte dies erwähnen. Zweitens kann der Health Store dieselben Schritte aus zwei Quellen (ein Telefon und eine Uhr) enthalten; lesen Sie die eigenen Tagesgesamtsummen des Stores, anstatt Stichproben zusammenzuzählen, da Apple Health und Health Connect bereits überlappende Quellen de-duplizieren.

Mappingtabelle: Health Store Typ → FHIR Observation

Die Codes, die Anpheros Daily beim Schreiben von Wearable-Daten in einen FHIR-Datensatz verwendet:

Metrik Apple HealthKit Health Connect LOINC UCUM-Einheit Kategorie
Herzfrequenz heartRate HeartRateRecord 8867-4 /min vital-signs
Ruheherzfrequenz restingHeartRate RestingHeartRateRecord 40443-4 /min vital-signs
Herzfrequenzvariabilität heartRateVariabilitySDNN HeartRateVariabilityRmssdRecord 80404-7 (nur SDNN) ms vital-signs
Blutsauerstoff (SpO₂) oxygenSaturation OxygenSaturationRecord 59408-5 % vital-signs
Atemfrequenz respiratoryRate RespiratoryRateRecord 9279-1 /min vital-signs
Schritte pro Tag stepCount StepsRecord 41950-7 {steps} activity
Aktive Energie activeEnergyBurned ActiveCaloriesBurnedRecord 41981-2 kcal activity
Schlafdauer sleepAnalysis (Kategorie) SleepSessionRecord 93832-4; Stadien 93831-6 Deep, 93830-8 Light, 93829-0 REM min activity
Körpergewicht bodyMass WeightRecord 29463-7 kg vital-signs
Blutdruck bloodPressure (Korrelation) BloodPressureRecord 85354-9 mit 8480-6 und 8462-4 mm[Hg] vital-signs
Blutzucker (Messgerät) bloodGlucose BloodGlucoseRecord 2339-0 mg/dL vital-signs
Körpertemperatur bodyTemperature BodyTemperatureRecord 8310-5 Cel vital-signs

Beachten Sie die Zeile für die Herzfrequenzvariabilität: Apple Health speichert SDNN, Health Connect speichert RMSSD. Dies sind unterschiedliche Statistiken und dürfen nicht unter demselben Code geschrieben werden. LOINC 80404-7 ist SDNN; für RMSSD verwendet Anpheros Daily ein eigenes Codesystem, anstatt vorzugeben, die beiden seien identisch.

Zusammenfassungen, nicht jede Stichprobe

Eine Uhr produziert Tausende von Herzfrequenz-Stichproben pro Tag. Eine Krankenakte benötigt etwas, das eine Person oder ein Arzt lesen kann:

Eine tägliche Herzfrequenz-Zusammenfassung als FHIR R4 (sie besteht den FHIR R4 Validator):

{
  "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)"}
}

Tägliche Werte ohne Duplikate schreiben

Telefone synchronisieren mehrmals täglich, und der letzte Wert eines Tages ändert sich bis Mitternacht. Geben Sie jeder Observation eine stabile Kennung – Person, Tag, Metrik – und aktualisieren Sie diese, anstatt eine neue zu erstellen. Mit dem Anpheros TypeScript SDK auf Ihrem 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 });
}

Wenn Sie gegen eine lokale Instanz der Plattform mit einem Sandbox-Schlüssel ausführen, führten zwei tägliche Werte, gefolgt von einer späteren Synchronisierung desselben Tages, zu zwei Observations, wobei die Schritte eine bei Version 2 mit dem neuen Wert und die Herkunft v1 device apple-health · v2 device waren. Die Historie behält den früheren Wert, und jeder Leser kann sehen, dass die Daten von einem Gerät und nicht von einem Kliniker stammen.

In der Produktion verwenden Sie die tatsächlichen Tagesgrenzen in der Zeitzone der Person (das obige Beispiel verwendet UTC zur Kürze), wie der HealthKit- und Health Connect-Code auf den Plattformseiten.

Lesen von Telefondaten

Regeln, die es wert sind, befolgt zu werden

Was Anpheros leistet und was nicht

Die Anpheros Platform verbindet sich nicht von selbst mit Apple Health, Health Connect oder einer Anbieter-Cloud: Ihre App liest die Daten auf dem Telefon und schreibt sie über die API. Die eigene App von Anpheros, Anpheros Daily, tut genau das: Sie liest Apple Health auf dem iPhone und Health Connect auf Android, erstellt tägliche Zusammenfassungen und schreibt diese mit den oben genannten Codes in den FHIR-Datensatz der Person. Die Verbindung von Geräten ist Teil der Plus- und Max-Pläne.

Häufig gestellte Fragen

Wie bekomme ich Apple Watch-Daten auf einen FHIR-Server?

Lesen Sie sie auf dem iPhone aus Apple Health mit HealthKit (es gibt keine Server-API), fassen Sie sie pro Tag zusammen und lassen Sie Ihr Backend jede Metrik als Observation mit einem LOINC-Code und einer UCUM-Einheit schreiben, die als Gerätedaten gekennzeichnet sind.

Gibt es eine Cloud-API für Health Connect oder Apple Health?

Nein. Beide speichern Daten auf dem Telefon; eine auf dem Telefon installierte App liest sie mit der Erlaubnis der Person. Anbieter-Clouds wie Garmin, Fitbit oder Oura haben ihre eigenen APIs, aber das Lesen des Gesundheitsspeichers des Telefons deckt die meisten davon mit einer einzigen Integration ab.

Welchen LOINC-Code soll ich für Schritte verwenden?

41950-7, "Number of steps in 24 hour Measured", mit einem täglichen effectivePeriod. Für die Herzfrequenz verwenden Sie 8867-4, für SpO₂ 59408-5, für die Schlafdauer 93832-4.

Sollte ich jede Herzfrequenz-Stichprobe in FHIR speichern?

Normalerweise nicht. Eine tägliche Zusammenfassung mit Durchschnitt, Minimum und Maximum ist das, was eine Person oder ein Kliniker liest; einzelne Messwerte gehören nur dann in den Datensatz, wenn sie für sich genommen wichtig sind, wie z. B. ein unregelmäßiges Rhythmusereignis.

Kann ich einen Code für HRV von Apple Health und Health Connect verwenden?

Nein. Apple Health meldet SDNN und Health Connect meldet RMSSD; sie messen unterschiedliche Dinge und benötigen unterschiedliche Codes.

Verwandte Themen

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