# Persönliche Gesundheitsakte (PHR) App mit FHIR

> Tutorial: Das Backend einer vernetzten PHR auf FHIR R4 – Daten von Personen, Laboren, Dokumenten und Geräten, eine Zeitachse, ein IPS zum Teilen, Zustimmung. Getesteter Code.

Source: https://developers.anpheros.com/de/guides/personal-health-record-app

**Eine App für persönliche Gesundheitsakten (PHR) speichert die Gesundheitsinformationen einer Person – Ergebnisse, Messungen, Diagnosen, Medikamente, Dokumente – in einer Akte, die die Person kontrolliert. Diese Daten werden aus vielen Quellen gesammelt, nicht nur aus einem Krankenhaus.** Die schwierigen Teile sind nicht die Bildschirme: Es geht darum, Daten aus Laboren, Kliniken und Geräten in nutzbarer Form zu erhalten, den Überblick zu behalten, woher jeder Eintrag stammt, und der Person zu ermöglichen, die Akte zu teilen, ohne die Kontrolle darüber zu verlieren. Dieses Tutorial erstellt das Backend einer PHR auf HL7 FHIR R4 mit dem Anpheros TypeScript SDK; der unten stehende Code wurde gegen eine lokale Instanz der Plattform mit einem Sandbox-Schlüssel ausgeführt.

## Gekoppelte, ungekoppelte und vernetzte PHRs

| Art | Wo die Daten gespeichert sind | Einschränkung |
|---|---|---|
| Gekoppelt (Patientenportal eines Krankenhauses) | Das EHR des Anbieters | Zeigt nur die Daten dieses Anbieters; ändert sich, wenn die Person den Arzt wechselt |
| Ungekoppelt (eigenständige App oder Notizbuch) | Die eigene Datenbank der App | Die Person gibt alles manuell ein; Daten verlassen die App selten |
| Vernetzt | Ein Standarddatensatz, den Apps, Labore und Kliniken mit Zustimmung der Person lesen und schreiben | Benötigt Standards, Zustimmung und Herkunftsinformationen im Hintergrund |

Ein vernetztes PHR ist das, was sich heute zu bauen lohnt. Es ist auch das, worauf die Politik zusteuert: In den Vereinigten Staaten müssen zertifizierte EHRs Patienten einen FHIR-basierten API-Zugriff auf ihre Daten anbieten (US Core), und in der Europäischen Union gibt der European Health Data Space den Menschen das Recht, auf ihre elektronischen Gesundheitsdaten zuzugreifen und sie mit Anbietern ihrer Wahl zu teilen, gestaffelt ab 2029.

## Woher die Daten einer PHR stammen

1.  **Die Person:** Heimessungen, Symptome, eingenommene Medikamente, bekannte Erkrankungen. Kennzeichnen Sie diese als vom Patienten berichtet.
2.  **Laborberichte:** Die meisten Personen erhalten PDFs; einige Labore können HL7 v2 oder CSV senden. Jedes Ergebnis sollte zu einer kodierten Observation werden ([Lab results API](https://developers.anpheros.com/de/guides/lab-results-api)).
3.  **Dokumente:** Entlassungsbriefe, Bildgebungsberichte, Rezepte. Bewahren Sie die Originaldatei unverändert neben den strukturierten Daten auf.
4.  **Geräte und Wearables:** Tägliche Schritte, Herzfrequenz, Schlaf, Blutdruck von Apple Health oder Health Connect ([wearable data in FHIR](https://developers.anpheros.com/de/guides/wearable-data-fhir)).
5.  **Anbieter:** In den USA patienten-zugängliche FHIR APIs von Krankenhäusern und Versicherern, erreichbar mit SMART on FHIR; anderswo hauptsächlich Dokumente und Zusammenfassungen wie der International Patient Summary.

Jede Quelle schreibt in denselben Datensatz. Was ihn vertrauenswürdig macht, ist, dass jeder Eintrag festhält, wer ihn geschrieben hat und aus welchem System ([medical data provenance](https://developers.anpheros.com/de/guides/medical-data-provenance)).

## Die Architektur

```
 person ──► your PHR app (mobile / web) ──► your backend ──► Anpheros: one FHIR R4 record per person
                                               │                 ├─ Observations, Conditions, Medications, Documents…
   lab report, PDF, device data ───────────────┘                 ├─ Provenance on every write
                                                                 ├─ access log the person can see
   other apps, doctors, AI assistants ◄── consent (OAuth) ───────┴─ $summary (IPS) to share
```

Ihr Backend speichert den Projektschlüssel (`sk_test_…` in der Sandbox, niemals in der App). Ihre App meldet Personen mit Ihrer eigenen Authentifizierung an und spricht mit Ihrem Backend; das Backend ordnet jeden Benutzer einem Patienten-Datensatz zu.

## Schritt für Schritt

Installieren Sie das SDK (`npm install @anpheros/sdk`) und erhalten Sie einen kostenlosen Sandbox-Schlüssel vom [Dashboard](https://platform.anpheros.com/dashboard/). Das Beispiel verwendet ein HL7 v2 Lipidpanel mit zwei Ergebnissen (`lipid-panel.hl7`) und eine beliebige PDF-Datei (`report.pdf`).

```ts
import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// 1. One record per person who signs up in your PHR app
const jane = await anpheros.patients.create({ given: 'Jane', family: 'Doe', birth_date: '1984-07-19', gender: 'female' });

// 2. Something the person measured at home
await anpheros.observations.create(jane.id, {
  code: '85354-9', category: 'vital-signs', effective_at: '2026-10-01T08:30:00-05:00', author_type: 'patient',
  components: [{ code: '8480-6', value: 128, unit: 'mm[Hg]' }, { code: '8462-4', value: 82, unit: 'mm[Hg]' }],
});

// 3. A diagnosis and a medication the person reports
await anpheros.conditions.create(jane.id, { code: 'E11.9', system: 'http://hl7.org/fhir/sid/icd-10',
  display: 'Type 2 diabetes mellitus without complications', clinical_status: 'active', onset: '2021-03-15', author_type: 'patient' });
await anpheros.medications.create(jane.id, { code: 'A10BA02', display: 'Metformin 500 mg', status: 'active',
  dosage: '500 mg twice a day', start: '2021-03-20', author_type: 'patient' });

// 4. A lab report the person received, as the lab sent it (HL7 v2)
const lab = await anpheros.labs.importHl7(jane.id, await readFile('lipid-panel.hl7', 'utf8'), { sourceSystem: 'springfield-lis' });

// 5. A PDF they want to keep with the record
const doc = await anpheros.documents.upload(jane.id,
  { title: 'Chest X-ray report', kind: 'imaging_report', content_type: 'application/pdf', date: '2026-10-03' },
  await readFile('report.pdf'));

// 6. One timeline for the home screen
const timeline = await anpheros.timeline.list(jane.id, { limit: 10 });

// 7. A summary to share with a new doctor: the International Patient Summary
const ips = await anpheros.fhir.summary(jane.id);

// 8. Who else can read this record (empty until the person consents to another app)
const grants = await anpheros.grants.of(jane.id);
```

Aus diesem Lauf gedruckt:

```
lab:       created 2, unmapped []
document:  final
timeline:  2026-10-03  document    Chest X-ray report
           2026-10-02  observation Cholesterol in HDL [Mass/volume] in Serum or Plasma
           2026-10-02  observation Cholesterol [Mass/volume] in Serum or Plasma
           2026-10-01  observation Blood pressure panel
           2021-03-20  medication  Metformin 500 mg
           2021-03-15  condition   Type 2 diabetes mellitus without complications
IPS:       Allergies, Medications, Problems, Results, Vital signs
grants:    0
```

Alles oben Genannte wird als FHIR R4 gespeichert – Patient, Observation, Condition, MedicationStatement, DocumentReference – sodass derselbe Datensatz mit jedem FHIR-Client (`GET /fhir/R4/Patient/{id}/$everything`) gelesen und intakt an einen anderen Ort verschoben werden kann. Die `/v1` Aufrufe im SDK sind eine vereinfachte Ansicht derselben Ressourcen; die [Medical data API](https://developers.anpheros.com/de/guides/medical-data-api) listet sie auf.

## Teilen ohne die Kontrolle zu verlieren

Eine PHR existiert, um geteilt zu werden, zu den Bedingungen der Person:

- **Mit einem Arzt:** die International Patient Summary (`$summary`) ist ein FHIR-Dokument für Kliniker – Probleme, Medikamente, Allergien, Ergebnisse –, das Ihre App anzeigen, ausdrucken oder senden kann. [FHIR platform](https://developers.anpheros.com/de/guides/fhir) beschreibt `$summary` und `$everything`.
- **Mit einer anderen App:** die andere App fordert die Zustimmung über OAuth 2.1 und SMART on FHIR an; die Person wählt aus, welche Daten (z. B. nur Laborergebnisse) und für wie lange, und kann diese jederzeit widerrufen. [How to implement patient consent with SMART on FHIR](https://developers.anpheros.com/de/guides/smart-on-fhir-backend) führt Sie durch den Prozess.
- **Mit einem KI-Assistenten:** `POST /v1/context` erstellt eine budgetierte, quellengekennzeichnete Zusammenfassung des Datensatzes für ein Modell, und der Lesezugriff wird im Zugriffslogbuch angezeigt ([How to build an AI healthcare app](https://developers.anpheros.com/de/guides/build-ai-healthcare-app)).
- **Transparenz:** jeder Lese- und Schreibvorgang, durch jede Anwendung, wird pro Anwendung protokolliert, und die Person kann das Protokoll und die aktiven Berechtigungen einsehen.

## Familien

Viele PHRs werden von einer Person für mehrere Personen geführt: Kinder, ein Partner, ein älterer Elternteil. Geben Sie jeder Person ihren eigenen Datensatz und verknüpfen Sie sie mit dem Erziehungsberechtigten, anstatt die Daten aller in einem zu vermischen. Die Zustimmung wird dann pro Datensatz erteilt. [Patienten-medizinischer Datensatz](https://developers.anpheros.com/de/guides/patient-medical-record) beschreibt das Modell.

## Was Sie selbst erstellen und was nicht

Sie erstellen das Erlebnis: Onboarding, die Erklärung von Ergebnissen, Erinnerungen, Diagramme, die Sprache, die die Person liest. Anpheros stellt den Datensatz, die Standardformate, die Zustimmung, die Herkunft, das Zugriffsprotokoll und die Labor-, Dokumenten- und Zusammenfassungsoperationen bereit.

Was Anpheros heute nicht für eine PHR leistet: Es meldet sich nicht im Namen der Person bei Krankenhaus-Patientenportalen oder US-Patienten-Zugriffs-APIs an (Ihre App kann dies mit einem SMART on FHIR-Client tun und das Empfangene schreiben), es liest keine PDF-Berichte über die API und es gibt keine medizinischen Ratschläge. Die eigene PHR-App von Anpheros, **Anpheros Daily**, basiert auf derselben API.

## Häufig gestellte Fragen

### Was ist eine Personal Health Record (PHR)?
Eine Aufzeichnung von Gesundheitsinformationen einer Person, die die Person selbst führt und kontrolliert. Diese Daten werden aus mehreren Quellen gesammelt – eigene Einträge, Labore, Kliniken, Geräte – anstatt von einem einzelnen Anbieter verwaltet zu werden.

### Was ist der Unterschied zwischen einer PHR und einer EHR?
Eine EHR wird von einer Gesundheitsorganisation geführt und umfasst die Aufzeichnungen ihrer Anbieter. Eine PHR wird von der Person selbst geführt und kann Daten von all ihren Anbietern und Geräten zusammenführen. Eine angegliederte PHR ist ein Fenster in die EHR eines einzelnen Anbieters; eine verbundene PHR verwendet Standards, um mehrere Quellen zusammenzuführen.

### Sollte eine PHR FHIR verwenden?
Wenn die Daten jemals mit einem Arzt, einer anderen App oder einem KI-Assistenten geteilt werden sollen, ja: FHIR R4 bietet kodierte, versionierte Ressourcen, die andere Systeme bereits verstehen, und es ist das Format von Patientenzugriffs-APIs in den USA und der europäischen Patientenübersicht.

### Wie erhält eine PHR-App Daten von Krankenhäusern?
In den USA über die FHIR-Patientenzugriffs-APIs, die zertifizierte EHRs und viele Versicherer bereitstellen, unter Verwendung von SMART on FHIR, um der Person die Autorisierung der App zu ermöglichen. Anderswo handelt es sich meist um Dokumente und Zusammenfassungen, die importiert und neben strukturierten Daten gespeichert werden.

### Wo sollte eine PHR-App API-Schlüssel speichern?
Auf Ihrem Server. Ein Projektschlüssel kann jeden Datensatz lesen, den Ihr Projekt erstellt hat. Daher darf er niemals in einer mobilen oder Web-App ausgeliefert werden. Die App kommuniziert mit Ihrem Backend, und die Apps anderer Personen verwenden OAuth mit Zustimmung der Person.

## Verwandte Themen

- [Eine Gesundheits-App erstellen](https://developers.anpheros.com/de/guides/build-a-healthcare-app): die allgemeine Anleitung
- [Medizinische Patientenakte](https://developers.anpheros.com/de/guides/patient-medical-record): was die Akte enthält und wer darauf zugreifen kann
- [Digitale Infrastruktur für medizinische Akten](https://developers.anpheros.com/de/guides/digital-medical-record)
- [Wearable-Daten in FHIR](https://developers.anpheros.com/de/guides/wearable-data-fhir): Apple Health, Health Connect und Samsung Health
- [API für Laborergebnisse](https://developers.anpheros.com/de/guides/lab-results-api)
- [SDKs](https://developers.anpheros.com/de/guides/sdks)
