# Verzování a zastarávání

> Jak se mění rozhraní FHIR R4 a REST v1, datové struktury webhooků a SDK, a jak jsou oznámeny zásadní změny.

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

- **FHIR R4** na `/fhir/R4` a **REST v1** na `/v1` jsou stabilní rozhraní. Aditivní změny (nová pole, nové typy zdrojů, nové koncové body, nové typy událostí) jsou zaváděny bez předchozího upozornění; SDK a `docs/openapi.json` jsou ve stejném commitu znovu vygenerovány a jinak by test selhal.
- **Zásadní změny** dostanou nový prefix (`/v2`) a minimálně **6 měsíců** paralelního provozu; starý prefix během této doby odpovídá s hlavičkou `Deprecation` a `Sunset`.
- **Datové struktury webhooků** nesou `type`; nové typy jsou aditivní. Odběratel `*` musí ignorovat neznámé typy.
- **SDK** se řídí semver; hlavní verze SDK může opustit zastaralý prefix API.
- **Bezpečnostní opravy** mohou zpřísnit validaci (například hodnotové sady) bez zvýšení verze; takové zpřísnění je oznámeno v changelogu s 30denním předstihem, pokud neuzavírá aktivní zranitelnost.

## Změnový seznam

### 14. října 2026 (přírůstkové: branding stránky souhlasu, jednotné přihlašování týmu)

- Jednotné přihlašování týmu: organizace může být propojena se svým SAML nebo OIDC poskytovatelem a svými e-mailovými doménami
  (`PUT /admin/organizations/{id}/sso`, administrátoři platformy) a jednotné přihlašování může být vyžadováno pro
  členy. `GET /admin/sso/discover?email=` (bez ověření) vrátí poskytovatele pro pracovní e-mail. `OrganizationOut`
  získává `sso_provider_id`, `sso_domains` a `sso_required`. Viz [Jednotné přihlašování pro váš tým](https://developers.anpheros.com/cs/guides/team-sso).

- `PUT /admin/applications/{id}/branding` nastavuje logo aplikace (datový URI ve formátu PNG/JPEG/WebP, až 64 KB) a
  akcentní barvu (kontrast minimálně 4,5:1 s bílým textem), zobrazené na hostované stránce souhlasu. `ApplicationOut`
  získává `logo` a `brand_color`. Viz [Ověřování a OAuth](auth-and-oauth.md#your-brand-on-the-consent-page).
- Stránka s cenami a [ceny](https://developers.anpheros.com/cs/guides/pricing): poznámka o soukromé beta verzi. Produkční provoz začíná po ověření a podepsané
  DPA, plány jsou fakturovány e-mailem a povolené limity zatím nejsou automaticky vynucovány.

### 14. října 2026 (opravy tvaru chyb a mapování laboratoří)
- Import laboratoří: *Uree* / *Urea* se mapuje na urea (`3091-6`; `22664-7` v mmol/l) místo na dusík močoviny (`3094-0`), který
  je ponechán pro *BUN* / *Urea nitrogen* (`14937-7` v mmol/l). Hodnoty se nepřevádějí. Staré mapování nepoužila žádná produkční data.
- Import laboratoří: LDL s metodou na zprávě se mapuje na vypočtené LDL (`13457-7`) nebo přímé LDL (`18262-6`); bez metody zůstává `2089-1`.
  *Direct* je nyní kvalifikátor, takže *Bilirubina directa* se již nemapuje na celkový bilirubin
  (`1975-2`); ponechává si kód laboratoře. Staré mapování nepoužila žádná produkční data.
- Neznámé koncové body a metody pod `/v1` odpovídají v dokumentovaném tvaru chyby (`404 not-found`, `405 not-supported`)
  místo `{"detail": "Not Found"}`; neplatné parametry dotazu a limit požadavků na IP adresu pod `/v1` používají
  `{"error": …}` místo `OperationOutcome` (nezměněno pod `/fhir/R4`); neočekávaný `500` pod `/v1` nese
  `error.type = "exception"` (nesl `error.code`).
- Import laboratoří: výsledky HL7 v2 s lokálním nebo neloincovým kódovacím systémem si ponechávají kód laboratoře pod `urn:anpheros:lab-code`
  (dříve `urn:hl7:<system>`, například `urn:hl7:l`). Již uložené výsledky se nemění.
- Import laboratoří: anglické názvy a synonyma LOINC jsou rozpoznány (*Hemoglobin A1c*, *Glycated hemoglobin*, *HDL cholesterol*,
  *LDL cholesterol*, *Haemoglobin*); samotné *Glucose* se mapuje na sérum nebo plazmu (2345-7) jako *Glicemie*. Názvy s kvalifikátorem, který koncept postrádá (*urine*, *non-HDL*…), se již neshodují s příbuzným testem: před touto změnou
  *HDL cholesterol* a *LDL cholesterol* odeslané bez LOINC kódu byly uloženy jako celkový cholesterol (2093-3).
- Import laboratoří: opětovné odeslání zprávy již nedupluje výsledky při změně mapování LOINC. Nové výsledky nesou druhý identifikátor, `urn:anpheros:lab-import:v2`, sestavený ze zprávy (ID zprávy, název a kód ve zprávě,
  datum, hodnota, jednotka); stávající identifikátory zůstávají nezměněny a dřívější výsledky jsou rozpoznány podle názvu, data, hodnoty, jednotky
  a ID zprávy. Dva výsledky s různými názvy ve zprávě, ale stejným LOINC kódem, datem a hodnotou (například
  *Glucose* a *Glicemie*) se již neslučují do jednoho.

### 13. října 2026 (přírůstkové, bez změny smlouvy)
- Souhlas je vynucován na každém odvozeném pohledu (`/v1/context`, `/v1/patients/{id}/timeline`, portál, `$everything`) s jedním
  sdíleným pravidlem; požadovaná, ale nepokrytá sekce se zobrazí v kontextu `omitted`.
- OpenAPI nyní deklaruje `servers`, `securitySchemes` (`bearer`, `apiKey`, `oauth2`, `firebase`), per-operation `security`
  a schéma odpovědi pro každou operaci; generovaní klienti získávají typované odpovědi.
- Každý `401` nese `WWW-Authenticate: Bearer`.
- CapabilityStatement inzeruje SMART (rozšíření `oauth-uris`, služba `SMART-on-FHIR`) a implementační příručku IPS.
- Přesměrování za proxy zachovávají `https://`.
- `python-multipart` 0.0.20 → 0.0.32; `pip-audit` blokuje sestavení při známých zranitelnostech.
- URL webhooků musí být veřejné HTTPS: localhost (dříve akceptováno v sandboxu, ale nikdy nedoručeno), soukromé a rezervované adresy a názvy na ně odkazující jsou při registraci odmítnuty s chybou 400 na `url`; doručení se připojuje pouze k IP adresám, které právě zkontrolovaly (DNS rebinding).

## Vynucování shody (oznámeno 23. září 2026)

Zápisy, kterým chybí požadavky na laboratoře IPS / HL7 Europe, aktuálně vracejí `201`/`200` s hlavičkou `Anpheros-Conformance`. Po období pozorování (plánováno: 60–90 dnů od tohoto oznámení) platforma přejde do režimu **blokování**: takové zápisy budou vracet `422` s `OperationOutcome` uvádějícím každou mezeru. Integrátoři, kteří potřebují více času, mohou být během přechodu z projektu vyjmuti. Typy zdrojů přidané 23. září 2026: `Procedure`, `DiagnosticReport`, `CarePlan`, `FamilyMemberHistory`, `ServiceRequest`, `Goal` (aditivní).
