# Versionierung und Deprecation

> Wie sich die FHIR R4- und REST v1-Schnittstellen, Webhook-Payloads und SDKs ändern und wie Breaking Changes angekündigt werden.

Source: https://developers.anpheros.com/de/guides/versioning

- **FHIR R4** unter `/fhir/R4` und **REST v1** unter `/v1` sind stabile Schnittstellen. Additive Änderungen (neue Felder, neue Ressourcentypen, neue Endpunkte, neue Ereignistypen) werden ohne Vorankündigung veröffentlicht; die SDKs und `docs/openapi.json` werden im selben Commit neu generiert, andernfalls schlägt ein Test fehl.
- **Breaking Changes** erhalten ein neues Präfix (`/v2`) und mindestens **6 Monate** parallelen Betrieb; das alte Präfix antwortet während dieser Zeit mit einem `Deprecation`- und `Sunset`-Header.
- **Webhook-Payloads** tragen eine `type`; neue Typen sind additiv. Ein Abonnent von `*` muss unbekannte Typen ignorieren.
- **SDKs** folgen Semver; eine Hauptversion eines SDKs kann ein veraltetes API-Präfix entfernen.
- **Sicherheitsfixes** können die Validierung verschärfen (z. B. Wertesätze) ohne Versionsänderung; eine solche Verschärfung wird im Changelog mit 30 Tagen Vorankündigung bekannt gegeben, es sei denn, sie schließt eine aktive Schwachstelle.

## Changelog

### 14. Oktober 2026 (additiv: Branding der Zustimmungsseite, Single Sign-On für Teams)

- Single Sign-On für Teams: Eine Organisation kann mit ihrem SAML- oder OIDC-Provider und ihren E-Mail-Domänen
  (`PUT /admin/organizations/{id}/sso`, Plattformadministratoren) verknüpft werden, und Single Sign-On kann für
  Mitglieder erforderlich sein. `GET /admin/sso/discover?email=` (keine Authentifizierung) gibt den Provider für eine geschäftliche E-Mail zurück. `OrganizationOut`
  erhält `sso_provider_id`, `sso_domains` und `sso_required`. Siehe [Single Sign-On für Ihr Team](https://developers.anpheros.com/de/guides/team-sso).

- `PUT /admin/applications/{id}/branding` legt das Logo einer Anwendung (PNG/JPEG/WebP Data URI, bis zu 64 KB) und
  die Akzentfarbe (Kontrast mindestens 4,5:1 zu weißem Text) fest, die auf der gehosteten Zustimmungsseite angezeigt werden. `ApplicationOut`
  erhält `logo` und `brand_color`. Siehe [Authentifizierung und OAuth](auth-and-oauth.md#your-brand-on-the-consent-page).
- Preisseite und [Preise](https://developers.anpheros.com/de/guides/pricing): ein Hinweis auf die private Beta. Die Produktion wird nach Verifizierung und einem unterzeichneten
  DPA eröffnet, Pläne werden per E-Mail in Rechnung gestellt und Freibeträge werden noch nicht automatisch durchgesetzt.

### 14. Oktober 2026 (Korrekturen an Fehlerstruktur und Labormappings)
- Laborimport: *Uree* / *Harnstoff* wird als Harnstoff (`3091-6`; `22664-7` in mmol/L) und nicht als Harnstoffstickstoff (`3094-0`) zugeordnet,
  welcher für *BUN* / *Harnstoffstickstoff* (`14937-7` in mmol/L) beibehalten wird. Werte werden nicht konvertiert. Keine Produktionsdaten nutzten das alte Mapping.
- Laborimport: LDL mit einer Methode auf dem Bericht wird als berechnetes LDL (`13457-7`) oder direktes LDL (`18262-6`) zugeordnet; ohne Methode bleibt es `2089-1`. *Direkt* ist jetzt ein Qualifikator, daher wird *Bilirubina directa* nicht mehr dem Gesamtbilirubin (`1975-2`) zugeordnet; es behält den Code des Labors. Keine Produktionsdaten nutzten das alte Mapping.
- Unbekannte Endpunkte und Methoden unter `/v1` antworten in der dokumentierten Fehlerstruktur (`404 not-found`, `405 not-supported`)
  anstatt `{"detail": "Not Found"}`; ungültige Abfrageparameter und die Pro-IP-Ratenbegrenzung unter `/v1` verwenden
  `{"error": …}` anstelle eines `OperationOutcome` (unverändert unter `/fhir/R4`); ein unerwarteter `500` unter `/v1` trägt
  `error.type = "exception"` (er trug `error.code`).
- Laborimport: HL7 v2-Ergebnisse mit einem lokalen oder nicht-LOINC-Codierungssystem behalten den Code des Labors unter `urn:anpheros:lab-code`
  (zuvor `urn:hl7:<system>`, z. B. `urn:hl7:l`). Bereits gespeicherte Ergebnisse werden nicht geändert.
- Laborimport: Englische LOINC-Namen und Synonyme werden erkannt (*Hämoglobin A1c*, *Glykiertes Hämoglobin*, *HDL-Cholesterin*,
  *LDL-Cholesterin*, *Hämoglobin*); ein einfaches *Glukose* wird wie *Glicemie* als Serum oder Plasma (2345-7) zugeordnet. Namen mit einem
  Qualifikator, den das Konzept nicht hat (*Urin*, *Non-HDL*…), werden nicht mehr mit einem verwandten Test abgeglichen: Vor dieser Änderung
  wurden *HDL-Cholesterin* und *LDL-Cholesterin*, die ohne LOINC-Code gesendet wurden, als Gesamtcholesterin (2093-3) gespeichert.
- Laborimport: Das erneute Senden eines Berichts dupliziert keine Ergebnisse mehr, wenn sich das LOINC-Mapping ändert. Neue Ergebnisse tragen eine zweite Kennung, `urn:anpheros:lab-import:v2`, die aus dem Bericht (Berichts-ID, Name und Code auf dem Bericht,
  Datum, Wert, Einheit) erstellt wird; bestehende Kennungen bleiben unverändert und frühere Ergebnisse werden anhand von Name, Datum, Wert, Einheit
  und Berichts-ID erkannt. Zwei Ergebnisse mit unterschiedlichen Namen auf dem Bericht, aber demselben LOINC-Code, Datum und Wert (z. B.
  *Glukose* und *Glicemie*) werden nicht mehr zu einem zusammengeführt.

### 13. Oktober 2026 (additiv, keine Vertragsänderung)
- Die Zustimmung wird für jede abgeleitete Ansicht (`/v1/context`, `/v1/patients/{id}/timeline`, Portal, `$everything`) mit einer
  gemeinsamen Regel durchgesetzt; ein angeforderter, aber nicht abgedeckter Abschnitt erscheint im `omitted` des Kontexts.
- OpenAPI deklariert nun `servers`, `securitySchemes` (`bearer`, `apiKey`, `oauth2`, `firebase`), pro Operation `security`
  und ein Antwortschema für jede Operation; generierte Clients erhalten typisierte Antworten.
- Jede `401` trägt `WWW-Authenticate: Bearer`.
- Die CapabilityStatement wirbt für SMART (`oauth-uris`-Erweiterung, `SMART-on-FHIR`-Dienst) und den IPS-Implementierungsleitfaden.
- Weiterleitungen hinter dem Proxy behalten `https://`.
- `python-multipart` 0.0.20 → 0.0.32; `pip-audit` blockiert den Build bei bekannten Schwachstellen.
- Webhook-URLs müssen öffentliche HTTPS-URLs sein: localhost (zuvor im Sandbox akzeptiert, aber nie zugestellt), private und reservierte Adressen sowie Namen, die darauf auflösen, werden bei der Registrierung mit 400 unter `url` abgelehnt; Zustellungen verbinden sich nur mit den IP-Adressen, die sie gerade überprüft haben (DNS-Rebinding).

## Konformitätsprüfung (angekündigt am 23. September 2026)

Schreibvorgänge, die die IPS / HL7 Europe Laboranforderungen nicht erfüllen, geben derzeit `201`/`200` mit einem `Anpheros-Conformance`-Header zurück. Nach einer Beobachtungsphase (geplant: 60–90 Tage ab dieser Mitteilung) schaltet die Plattform in den **Blockierungsmodus**: Solche Schreibvorgänge antworten mit `422` und einem `OperationOutcome`, das jede Lücke auflistet. Integratoren, die mehr Zeit benötigen, können während der Übergangsphase pro Projekt ausgenommen werden. Ressourcentypen, die am 23. September 2026 hinzugefügt werden: `Procedure`, `DiagnosticReport`, `CarePlan`, `FamilyMemberHistory`, `ServiceRequest`, `Goal` (additiv).
