EHR API Nutzung: Eine Anleitung

Ashley Innocent

Ashley Innocent

24 March 2026

EHR API Nutzung: Eine Anleitung

Apidog für Unternehmen

On-Premises-Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

TL;DR

EHR-APIs greifen auf Patientenakten zu, die in Systemen wie Epic, Cerner und Athenahealth gespeichert sind. Die meisten modernen EHRs unterstützen FHIR (Fast Healthcare Interoperability Resources), ein Standardformat für Gesundheitsdaten. Die Authentifizierung verwendet OAuth 2.0 mit SMART on FHIR-Erweiterungen. Verwenden Sie für Tests Apidog, um FHIR-Ressourcen zu validieren, gegen Sandboxes zu testen und sicherzustellen, dass Ihre Integration Patientendaten korrekt verarbeitet, bevor Sie eine Verbindung zu Produktionssystemen herstellen.

Einleitung

Elektronische Gesundheitsakten enthalten alles über die Patientenversorgung: Diagnosen, Medikamente, Laborergebnisse, Allergien und Behandlungspläne. Krankenhäuser, Kliniken und Gesundheitssysteme speichern diese Daten in EHR-Plattformen wie Epic, Cerner und Athenahealth.

Der Aufbau von Gesundheitsanwendungen bedeutet die Anbindung an diese Systeme. Sie können Krankenhäuser nicht bitten, CSV-Dateien zu exportieren. Sie benötigen APIs. Aber Gesundheits-APIs unterscheiden sich von typischen Web-APIs. Sie verarbeiten geschützte Gesundheitsinformationen (PHI) und müssen die Vorschriften wie HIPAA in den USA einhalten.

Die gute Nachricht: Die meisten EHR-Anbieter unterstützen jetzt FHIR, ein Standard-API-Format. Die herausfordernde Nachricht: Authentifizierung, Autorisierung und Datenmapping bleiben komplex.

Wenn Sie Gesundheitsintegrationen erstellen, hilft Ihnen Apidog, FHIR-Ressourcen zu testen, Datenstrukturen zu validieren und sicherzustellen, dass Ihre Anwendung Patientendaten korrekt verarbeitet. Sie können gegen öffentliche Sandboxes testen, bevor Sie mit realen Krankenhaussystemen arbeiten.

Testen Sie FHIR-APIs mit Apidog - kostenlos

Am Ende dieses Leitfadens werden Sie in der Lage sein:

FHIR verstehen

FHIR (Fast Healthcare Interoperability Resources) ist der moderne Standard für Gesundheits-APIs. Es definiert:

Basis-URL-Struktur

https://ehr.example.com/fhir/r4/{resource-type}/{id}

Beispiel:

GET https://ehr.example.com/fhir/r4/Patient/123

FHIR-Version

Die meisten EHRs verwenden FHIR R4 (Release 4). Einige ältere Systeme verwenden DSTU2. Dieser Leitfaden behandelt R4.

Ressourcentypen

Ressource Zweck
Patient Demografische und administrative Daten
Practitioner Gesundheitsdienstleister
Organization Krankenhäuser, Kliniken
Observation Laborergebnisse, Vitalwerte
MedicationRequest Verschreibungen
Condition Diagnosen, Probleme
Encounter Besuche, Aufnahmen
DocumentReference Klinische Dokumente
AllergyIntolerance Allergien und unerwünschte Reaktionen

FHIR-Ressourcenstruktur

Beispiel für Patientenressource

{
  "resourceType": "Patient",
  "id": "123",
  "active": true,
  "name": [
    {
      "use": "official",
      "family": "Smith",
      "given": ["John", "Michael"]
    }
  ],
  "gender": "male",
  "birthDate": "1985-03-15",
  "address": [
    {
      "use": "home",
      "line": ["123 Main St"],
      "city": "Boston",
      "state": "MA",
      "postalCode": "02101",
      "country": "USA"
    }
  ],
  "telecom": [
    {
      "system": "phone",
      "value": "555-123-4567",
      "use": "home"
    },
    {
      "system": "email",
      "value": "john.smith@example.com"
    }
  ],
  "identifier": [
    {
      "system": "http://hospital.example.org/mrn",
      "value": "MRN-123456"
    }
  ]
}

Beispiel für Beobachtungsressource

{
  "resourceType": "Observation",
  "id": "obs-123",
  "status": "final",
  "category": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/observation-category",
          "code": "vital-signs",
          "display": "Vital Signs"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "8480-6",
        "display": "Systolic blood pressure"
      }
    ]
  },
  "subject": {
    "reference": "Patient/123"
  },
  "effectiveDateTime": "2026-03-24T09:30:00Z",
  "valueQuantity": {
    "value": 120,
    "unit": "mmHg",
    "system": "http://unitsofmeasure.org",
    "code": "mm[Hg]"
  }
}

Authentifizierung mit SMART on FHIR

SMART on FHIR erweitert OAuth 2.0 für das Gesundheitswesen. Es verarbeitet Patientenkontext und EHR-spezifische Scopes.

OAuth-Flow für Patientenzugriff

Schritt 1: Autorisierungs-URL abrufen

GET https://ehr.example.com/fhir/r4/.well-known/smart-configuration

Antwort beinhaltet:

{
  "authorization_endpoint": "https://ehr.example.com/oauth2/authorize",
  "token_endpoint": "https://ehr.example.com/oauth2/token",
  "scopes_supported": [
    "patient/*.read",
    "patient/*.write",
    "user/*.read",
    "launch/patient"
  ]
}

Schritt 2: Benutzer zur Autorisierung umleiten

https://ehr.example.com/oauth2/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https://yourapp.com/callback&
  scope=patient/*.read&
  state=random_state_value

Schritt 3: Code gegen Token austauschen

curl -X POST "https://ehr.example.com/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://yourapp.com/callback" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

Antwort:

{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "patient/*.read",
  "patient": "123"
}

Das Feld patient liefert Ihnen den Patienten-ID-Kontext.

SMART-Scopes

Scope Zugriff
patient/*.read Alle Patientendaten lesen
patient/Patient.read Nur Patientendemografie lesen
patient/Observation.read Nur Beobachtungen lesen
user/*.read Alle Daten für autorisierten Benutzer lesen
launch/patient EHR startet Ihre App mit Patientenkontext

Patientendaten abfragen

Patientendemografie abrufen

curl -X GET "https://ehr.example.com/fhir/r4/Patient/123" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Nach Beobachtungen suchen

curl -X GET "https://ehr.example.com/fhir/r4/Observation?patient=123&category=vital-signs" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Die Antwort ist ein Bundle:

{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 5,
  "entry": [
    {
      "resource": { ... Observation resource ... }
    }
  ]
}

Häufige Suchparameter

# Laborergebnisse nach Datumsbereich
GET /Observation?patient=123&category=laboratory&date=gt2026-01-01

# Spezifischer LOINC-Code
GET /Observation?patient=123&code=http://loinc.org|8480-6

# Medikamente
GET /MedicationRequest?patient=123&status=active

# Zustände (Diagnosen)
GET /Condition?patient=123&clinical-status=active

# Begegnungen
GET /Encounter?patient=123&type=AMB

Paginierung

Große Ergebnismengen werden paginiert:

GET /Observation?patient=123&_count=20

Die Antwort enthält Links:

{
  "link": [
    {
      "relation": "next",
      "url": "https://ehr.example.com/fhir/r4/Observation?patient=123&_count=20&page=2"
    }
  ]
}

Ressourcen erstellen und aktualisieren

Eine Beobachtung erstellen

curl -X POST "https://ehr.example.com/fhir/r4/Observation" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Observation",
    "status": "final",
    "code": {
      "coding": [{
        "system": "http://loinc.org",
        "code": "8480-6",
        "display": "Systolic blood pressure"
      }]
    },
    "subject": {
      "reference": "Patient/123"
    },
    "effectiveDateTime": "2026-03-24T09:30:00Z",
    "valueQuantity": {
      "value": 118,
      "unit": "mmHg",
      "system": "http://unitsofmeasure.org",
      "code": "mm[Hg]"
    }
  }'

Einen Patienten aktualisieren

curl -X PUT "https://ehr.example.com/fhir/r4/Patient/123" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/fhir+json" \
  -d '{
    "resourceType": "Patient",
    "id": "123",
    "name": [{
      "family": "Smith",
      "given": ["John", "Michael"]
    }],
    "telecom": [{
      "system": "phone",
      "value": "555-999-8888",
      "use": "home"
    }]
  }'

EHR-Anbieterspezifika

Epic

Epics FHIR-API ist in den meisten großen Krankenhäusern verfügbar.

Epic erfordert eine App-Registrierung in ihrem App-Marktplatz für den Produktionszugriff.

Cerner

Cerner (Oracle Health) verwendet Standard-FHIR mit einigen Erweiterungen.

Athenahealth

Athenahealth bietet FHIR- und Legacy-APIs.

Testen mit Apidog

Gesundheits-APIs erfordern sorgfältige Tests. Patientendaten sind sensibel.

1. Öffentliche Sandboxes nutzen

Testen Sie gegen öffentliche FHIR-Sandboxes:

# HAPI FHIR (Open Source)
https://hapi.fhir.org/baseR4

# SMART Health IT Sandbox
https://launch.smarthealthit.org

2. FHIR-Ressourcen validieren

pm.test('Resource is valid Patient', () => {
  const response = pm.response.json()
  pm.expect(response.resourceType).to.eql('Patient')
  pm.expect(response.id).to.exist
  pm.expect(response.name).to.be.an('array')
})

pm.test('Observation has required fields', () => {
  const resource = pm.response.json()
  pm.expect(resource.status).to.exist
  pm.expect(resource.code).to.exist
  pm.expect(resource.subject).to.exist
})

3. Authentifizierungs-Flow testen

SMART-Konfiguration als Umgebung speichern:

AUTHORIZATION_ENDPOINT: https://ehr.example.com/oauth2/authorize
TOKEN_ENDPOINT: https://ehr.example.com/oauth2/token
CLIENT_ID: your_client_id
CLIENT_SECRET: your_client_secret
SCOPE: patient/*.read

Testen Sie FHIR-APIs mit Apidog - kostenlos

Compliance-Aspekte

HIPAA

In den USA müssen Gesundheitsanwendungen HIPAA einhalten. Dies betrifft:

SMART on FHIR-Sicherheit

Datenminimierung

Fordern Sie nur die Scopes an, die Sie benötigen:

Häufige Fehler und Behebungen

401 Nicht autorisiert

Ursache: Token abgelaufen oder ungültig.

Behebung: Aktualisieren Sie das Token mit dem Refresh-Token aus der anfänglichen Autorisierung.

403 Verboten

Ursache: Scope beinhaltet nicht die angeforderte Ressource.

Behebung: Überprüfen Sie Ihre Scopes. Wenn Sie mehr Zugriff benötigen, fordern Sie zusätzliche Scopes während der Autorisierung an.

404 Nicht gefunden

Ursache: Patient oder Ressource existiert nicht.

Behebung: Überprüfen Sie die Ressourcen-ID. Stellen Sie sicher, dass der Patient mit dem Patientenkontext Ihres aktuellen Tokens zugänglich ist.

422 Unverarbeitbare Entität

Ursache: FHIR-Ressourcenvalidierung fehlgeschlagen.

Behebung: Überprüfen Sie erforderliche Felder und Terminologien:

{
  "resourceType": "OperationOutcome",
  "issue": [{
    "severity": "error",
    "code": "required",
    "details": {
      "text": "Observation.status is required"
    }
  }]
}

Alternativen und Vergleiche

Merkmal Epic Cerner Athenahealth OpenEMR
FHIR R4 Teilweise
SMART on FHIR Nein
Sandbox-Zugriff Begrenzt Selbst gehostet
API-Dokumentation Exzellent Gut Gut Grundlegend
Marktanteil Große Krankenhäuser Gesundheitssysteme Kleine Praxen Open Source

Epic und Cerner dominieren große Gesundheitssysteme. Athenahealth bedient kleinere Praxen. OpenEMR ist Open Source, hat aber begrenzte API-Unterstützung.

Praktische Anwendungsfälle

Patientenportal. Ein Gesundheitssystem baut ein Patientenportal auf, das Daten von Epic abruft. Patienten sehen Laborergebnisse, Medikamente und anstehende Termine. Das Portal nutzt FHIR-APIs mit SMART on FHIR-Authentifizierung.

Klinische Forschung. Ein Pharmaunternehmen muss geeignete Patienten für klinische Studien identifizieren. Sie fragen FHIR-APIs über mehrere Krankenhaussysteme hinweg ab, um Patienten zu finden, die die Kriterien erfüllen, unter Beachtung des ordnungsgemäßen Einwilligungsmanagements.

Fernüberwachung. Ein Telemedizinunternehmen integriert vom Patienten gemeldete Vitalwerte in EHR-Systeme. Beobachtungen werden über die FHIR-API erstellt und sind sofort für Kliniker in Epic sichtbar.

Zusammenfassung

Das haben Sie gelernt:

Ihre nächsten Schritte:

  1. Erkunden Sie die öffentliche HAPI FHIR Sandbox
  2. Verstehen Sie FHIR-Ressourcentypen für Ihren Anwendungsfall
  3. Registrieren Sie sich für EHR-Entwicklerprogramme
  4. Testen Sie mit Apidog unter Verwendung von Mock-Patientendaten
  5. Implementieren Sie HIPAA-konforme Datenverarbeitung

Testen Sie FHIR-APIs mit Apidog - kostenlos

App herunterladen

FAQ

Was ist der Unterschied zwischen FHIR und HL7 v2?HL7 v2 ist ein älterer Messaging-Standard, der in Krankenhausschnittstellen verwendet wird. FHIR ist ein moderner REST-API-Standard. Die meisten neuen Integrationen verwenden FHIR, aber HL7 v2 ist in Altsystemen immer noch verbreitet.

Benötige ich ein BAA, um EHR-APIs zu nutzen?Ja, wenn Sie PHI verarbeiten. Business Associate Agreements sind zwischen Covered Entities und Business Associates erforderlich. Wenden Sie sich an das Compliance-Team des EHR-Anbieters.

Wie erhalte ich Zugriff auf Epics FHIR-API?Registrieren Sie sich im App Orchard Marktplatz von Epic. Verwenden Sie für Sandbox-Tests deren öffentliche Sandbox. Produktionszugriff erfordert Krankenhausgenehmigung.

Was ist ein Patientenkontext?SMART on FHIR-Tokens enthalten eine Patienten-ID. Ihre API-Aufrufe sind auf die Daten dieses Patienten beschränkt. Dies stellt sicher, dass Apps nur auf Daten zugreifen können, die der Patient autorisiert hat.

Kann ich Daten in EHRs schreiben?Ja, aber mit Einschränkungen. Die meisten EHRs erlauben das Erstellen von Beobachtungen und das Aktualisieren von Patientendemografien. Das Schreiben von Diagnosen oder Medikationen erfordert in der Regel die Genehmigung durch die klinische Entscheidungsunterstützung.

Wie gehe ich mit Terminologie-Codes um?FHIR verwendet Standardterminologien:

Verwenden Sie diese Systeme beim Erstellen von Ressourcen.

Was ist mit dem internationalen Gesundheitswesen?FHIR ist global. Jedes Land kann Implementierungsleitfäden haben. Die USA verwenden US Core-Profile. Überprüfen Sie die Spezifikationen Ihrer Region.

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen