Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Medizinische Akten mit FHIR R4 speichern
Tutorial: Erstellen Sie einen Patienten, eine Blutdruck-Observation und eine Erkrankung, verwenden Sie eine Transaktion, suchen Sie, aktualisieren Sie mit Historie und lesen Sie die Herkunft – jede Anfrage mit curl und die reale Antwort, auf der kostenlosen Sandbox.
Dieses Tutorial speichert eine kleine Krankenakte als HL7 FHIR R4-Ressourcen: einen Patient, eine Blutdruck-Observation und eine Diagnose als Condition, dann einen Patienten und eine Messung zusammen in einer Transaktion. Es sucht diese, aktualisiert die Diagnose, ohne die frühere Version zu verlieren, und liest, wer was geschrieben hat. Jede Anfrage ist ein einfacher curl gegen die kostenlose Anpheros-Sandbox, und jede gezeigte Antwort ist das, was die API zurückgibt.
Wenn Sie neu bei FHIR sind, lesen Sie zuerst FHIR platform für die Konzepte. Diese Seite ist der praktische Teil.
Die drei Ressourcen, mit denen die meisten Datensätze beginnen
| Ressource | Was sie enthält | Kodiert mit |
|---|---|---|
Patient |
Wer der Datensatz betrifft: Name, Geburtsdatum, Geschlecht, Identifikatoren aus anderen Systemen | Ihre Identifikationssysteme |
Observation |
Alles, was gemessen oder berichtet wird: Vitalparameter, Laborergebnisse, ein Gewicht, ein Symptom-Score | LOINC, UCUM-Einheiten |
Condition |
Eine Diagnose oder ein Gesundheitsproblem mit seinem Status über die Zeit | ICD-10 (SNOMED CT hinter einem Lizenz-Flag) |
Medikamente (MedicationStatement), Allergien (AllergyIntolerance), Impfungen und Dokumente folgen demselben Muster; die 26 unterstützten Ressourcentypen sind in der Capability Statement unter /fhir/R4/metadata aufgeführt.
Bevor Sie beginnen
Holen Sie sich einen Sandbox-Schlüssel (sk_test_…) unter platform.anpheros.com/dashboard mit der Option Get a sandbox key. Nichts, was Sie dort erstellen, sind echte Patientendaten, und nichts ist für andere Projekte sichtbar.
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
Schritt 1: Einen Patienten erstellen
curl -X POST "$BASE/Patient" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}],
"gender": "female",
"birthDate": "1979-04-12"
}'
201 Created, mit der vom Server zugewiesenen ID und Version:
{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}], "gender": "female", "birthDate": "1979-04-12",
"id": "d09e3942-ed86-4458-b099-fa674ab21b84",
"meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:16:51.043Z"}}
Behalten Sie Ihre eigenen IDs in identifier mit einer system, die Sie kontrollieren (hier eine Klinik-Aufzeichnungsnummer), damit Sie den Patienten immer mit GET $BASE/Patient?identifier=https://clinic.example/mrn|MRN-10442 wiederfinden können. Die FHIR id ist die des Servers und spezifisch für Ihr Projekt: Ein anderes Projekt sieht dieselbe Person unter einer anderen ID.
export PID=d09e3942-ed86-4458-b099-fa674ab21b84
Schritt 2: Eine Messung als Observation speichern
Blutdruck ist eine Observation mit zwei Komponenten, systolisch und diastolisch, jede mit eigenem LOINC-Code. Geben Sie an, wer gemessen hat: hier ein Heimgerät.
curl -X POST "$BASE/Observation" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: device" -H "Idempotency-Key: bp-2026-10-10-0830" -d '{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel"}]},
"subject": {"reference": "Patient/'$PID'"},
"effectiveDateTime": "2026-10-10T08:30:00Z",
"component": [
{"code": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]},
"valueQuantity": {"value": 138, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}},
{"code": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]},
"valueQuantity": {"value": 88, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}}
]
}'
Die Antwort ist die gespeicherte Ressource mit id und meta.versionId: "1". Drei Details sind für eine nutzbare Aufzeichnung wichtig:
- Codes statt Bezeichnungen.
85354-9bedeutet "Blutdruck-Panel" in jedem FHIR-System; ein Freitext "BP" nicht. Codes finden Sie mitGET /v1/terminology/loinc?q=blood pressure(FHIR-Codesysteme). - UCUM-Einheiten (
mm[Hg],kg,mg/dL) invalueQuantity.code, damit Werte verglichen und umgerechnet werden können. Idempotency-Key. Ein erneuter Versuch nach einem Timeout gibt die erste Antwort zurück, anstatt die Messung doppelt zu speichern.
Laborergebnisse sind dieselbe Ressource mit category laboratory und normalerweise einem referenceRange. Um ganze Laborberichte zu importieren, siehe Wie Laborergebnisse in eine FHIR-Aufzeichnung importiert werden.
Schritt 3: Eine Diagnose als Condition aufzeichnen
curl -X POST "$BASE/Condition" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: practitioner" -d '{
"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I10", "display": "Essential (primary) hypertension"}]},
"onsetDateTime": "2026-03-02"
}'
clinicalStatus (active, resolved, in remission) und verificationStatus (confirmed, provisional) sind bewusst getrennt: eine vermutete Diagnose ist nicht dasselbe wie eine bestätigte, und ein behobenes Problem ist immer noch Teil der Historie.
Schritt 4: Verwandte Ressourcen in einer Transaktion erstellen
Wenn ein Patient und seine erste Messung zusammen ankommen, zum Beispiel aus einem Kliniksystem, senden Sie diese als transaction Bundle. Entweder wird alles gespeichert oder nichts. Referenzen zwischen neuen Ressourcen verwenden temporäre urn:uuid: IDs, die der Server ersetzt:
curl -X POST "$BASE" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001",
"resource": {"resourceType": "Patient", "name": [{"family": "Stan", "given": ["Mihai"]}], "gender": "male", "birthDate": "1990-02-01"},
"request": {"method": "POST", "url": "Patient"}},
{"resource": {"resourceType": "Observation", "status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "29463-7", "display": "Body weight"}]},
"subject": {"reference": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-10",
"valueQuantity": {"value": 82.4, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg"}},
"request": {"method": "POST", "url": "Observation"}}
]
}'
Das transaction-response hat einen Eintrag pro Ressource, mit "status": "201 Created", seiner location und der gespeicherten Ressource. Die subject der Observation verweist nun auf die echte Patient/fad3665a-….
Schritt 5: Suche
curl "$BASE/Observation?patient=$PID&code=http://loinc.org|85354-9&date=ge2026-10-01&_sort=-date" \
-H "Authorization: Bearer $KEY"
Sie erhalten ein searchset Bundle mit total und den passenden Ressourcen, die neuesten zuerst. Andere Suchanfragen, die Sie oft verwenden werden: Condition?patient=$PID&clinical-status=active, Observation?patient=$PID&category=laboratory und Patient/$PID/$everything für den gesamten Datensatz.
Schritt 6: Aktualisieren ohne Verlust der Historie
Die Hypertonie wird behoben. Ändern Sie den Status und fügen Sie das Enddatum hinzu. Verwenden Sie If-Match mit der Version, die Sie gelesen haben, um sicherzustellen, dass Sie niemals die Änderungen einer anderen Person überschreiben:
curl -X PUT "$BASE/Condition/$CID" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H 'If-Match: W/"1"' -d '{ …the same Condition…, "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved"}]}, "abatementDateTime": "2026-10-11" }'
mit 200 OK und ETag: W/"2". Wenn ein anderer Schreibvorgang zuerst erfolgreich war, erhalten Sie 412 und lesen erneut. Die frühere Version ist immer noch vorhanden:
curl "$BASE/Condition/$CID/_history" -H "Authorization: Bearer $KEY"
gibt beide Versionen zurück: versionId 2 (resolved) und 1 (active). GET $BASE/Condition/$CID/_history/1 liest die alte Version. Nichts in einem Datensatz wird stillschweigend überschrieben.
Schritt 7: Sehen Sie, wer was geschrieben hat
Jeder Schreibvorgang erstellt eine Provenance-Ressource. Für den Blutdruckwert:
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
{"resourceType": "Provenance",
"target": [{"reference": "Observation/d83d9075-…/_history/1"}],
"recorded": "2026-10-12T20:16:51.056000Z",
"activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
"agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
"who": {"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "device"}, "display": "proj_…"},
"onBehalfOf": {"identifier": {"system": "https://anpheros.com/fhir/sid/organization", "value": "org_…"}, "display": "…"}}]}
Der von Ihnen gesendete Autorentyp (device) wird zusammen mit dem Projekt und der Organisation aufgezeichnet. Senden Sie X-Anpheros-Author-Ref: Practitioner/<id>, um den Kliniker hinter einem Schreibvorgang zu benennen.
Schritt 8: Der Datensatz als Zusammenfassung
curl "$BASE/Patient/$PID/\$summary" -H "Authorization: Bearer $KEY"
gibt eine International Patient Summary zurück: ein document Bundle, das mit einem Composition beginnt und Abschnitte wie Probleme, Medikamente, Allergien und Vitalwerte enthält, die aus den oben genannten Ressourcen aufgebaut sind. Dies ist das Format, das an ein anderes System übergeben oder für einen Arzt ausgedruckt werden kann (FHIR-Plattform).
Bevorzugen Sie JSON ohne FHIR?
Dieselbe Daten sind über eine einfachere REST-Ansicht verfügbar, /v1, mit denselben IDs: POST /v1/patients/{id}/observations nimmt {"code": "85354-9", "category": "vital-signs", "effective_at": "…", "components": […]} und speichert dieselbe FHIR Observation. Verwenden Sie, was immer zu Ihrem Code passt. Siehe Medical data API und die SDKs.
Häufig gestellte Fragen
Was ist der beste Weg, medizinische Aufzeichnungen zu speichern?
Als kodierte, versionierte Ressourcen mit einem Protokoll, wer sie erstellt hat. HL7 FHIR R4 bietet Ihnen die Struktur (Patient, Observation, Condition und andere), Standard-Codesysteme wie LOINC und ICD-10 sowie die Historie; ein FHIR-Backend fügt Suche, Zustimmung und Provenienz hinzu.
Benötige ich einen FHIR-Server, um FHIR zu verwenden?
Sie benötigen einen Ort, der FHIR-Ressourcen speichert und durchsucht und durchsetzt, wer sie lesen darf. Sie können einen Open-Source-FHIR-Server selbst betreiben oder einen verwalteten wie Anpheros nutzen; Wie Anpheros im Vergleich zu anderen FHIR-Servern abschneidet wägt die Optionen ab, und FHIR vs. eine benutzerdefinierte medizinische Datenbank behandelt den Aufbau Ihres eigenen Schemas.
Wie speichere ich Blutdruck in FHIR?
Als eine Observation mit dem Code LOINC 85354-9 und zwei component Einträgen: systolisch 8480-6 und diastolisch 8462-4, jeweils mit einer valueQuantity in mm[Hg].
Kann ich eine gespeicherte Ressource ändern?
Ja, mit PUT und If-Match. Jede Änderung erstellt eine neue Version; frühere Versionen bleiben über _history lesbar, und Provenance-Datensätze protokollieren, wer jede Änderung vorgenommen hat. Löschungen sind "soft" und behalten die Historie.
Verwandte Themen
- FHIR-Plattform: Konzepte, Ressourcentypen und Operationen
- FHIR-Codesysteme: LOINC, ICD-10, ATC, UCUM
- Importieren von Laborergebnissen in einen FHIR-Datensatz
- Medical Data API: die einfachere REST-Ansicht derselben Daten
- Kostenlose FHIR-Datenbank und Sandbox
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card