# Versionare și depreciere

> Cum se modifică interfețele FHIR R4 și REST v1, payload-urile webhook și SDK-urile, și cum sunt anunțate modificările incompatibile.

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

- **FHIR R4** la `/fhir/R4` și **REST v1** la `/v1` sunt interfețe stabile. Modificările aditive (câmpuri noi, tipuri de resurse noi, endpoint-uri noi, tipuri de evenimente noi) sunt livrate fără notificare; SDK-urile și `docs/openapi.json` sunt regenerate în același commit, altfel un test eșuează.
- **Modificările incompatibile** primesc un prefix nou (`/v2`) și cel puțin **6 luni** de funcționare paralelă; prefixul vechi răspunde cu un antet `Deprecation` și `Sunset` în această perioadă.
- **Payload-urile webhook** conțin un `type`; tipurile noi sunt aditive. Un abonat la `*` trebuie să ignore tipurile necunoscute.
- **SDK-urile** urmează semver; o versiune majoră de SDK poate renunța la un prefix de API apus.
- **Remediile de securitate** pot întări validarea (de exemplu, seturi de valori) fără o actualizare de versiune; o astfel de întărire este anunțată în logul de modificări cu o notificare de 30 de zile, cu excepția cazului în care închide o vulnerabilitate activă.

## Jurnal de modificări

### 14 octombrie 2026 (adăugare: branding pagină de consimțământ, autentificare unică pentru echipă)

- Autentificare unică pentru echipă: o organizație poate fi legată de furnizorul său SAML sau OIDC și de domeniile sale de e-mail
  (`PUT /admin/organizations/{id}/sso`, administratori de platformă) și autentificarea unică poate fi obligatorie pentru
  membri. `GET /admin/sso/discover?email=` (fără autentificare) returnează furnizorul pentru un e-mail de serviciu. `OrganizationOut`
  câștigă `sso_provider_id`, `sso_domains` și `sso_required`. Vezi [Autentificare unică pentru echipa ta](https://developers.anpheros.com/ro/guides/team-sso).

- `PUT /admin/applications/{id}/branding` setează logo-ul unei aplicații (dată URI PNG/JPEG/WebP, până la 64 KB) și
  culoarea de accent (contrast de cel puțin 4,5:1 cu text alb), afișată pe pagina de consimțământ găzduită. `ApplicationOut`
  câștigă `logo` și `brand_color`. Vezi [Autentificare și OAuth](auth-and-oauth.md#your-brand-on-the-consent-page).
- Pagina de prețuri și [prețuri](https://developers.anpheros.com/ro/guides/pricing): o notă de beta privat. Producția se deschide după verificare și un DPA semnat,
  planurile sunt facturate prin e-mail, iar alocațiile nu sunt încă aplicate automat.

### 14 octombrie 2026 (corecții formă eroare și mapare laborator)
- Import laborator: *Uree* / *Urea* se mapează la uree (`3091-6`; `22664-7` în mmol/L) în loc de azot ureic (`3094-0`), care
  este păstrat pentru *BUN* / *Urea nitrogen* (`14937-7` în mmol/L). Valorile nu sunt convertite. Niciun fel de date de producție nu au utilizat vechea mapare.
- Import laborator: LDL cu o metodă pe raport se mapează la LDL calculat (`13457-7`) sau LDL direct (`18262-6`); fără o
  metodă rămâne `2089-1`. *Direct* este acum un calificativ, deci *Bilirubina directa* nu mai este mapată la bilirubina totală
  (`1975-2`); păstrează codul laboratorului. Niciun fel de date de producție nu au utilizat vechea mapare.
- Endpoint-uri și metode necunoscute sub `/v1` răspund în forma de eroare documentată (`404 not-found`, `405 not-supported`)
  în loc de `{"detail": "Not Found"}`; parametrii de interogare invalizi și limita de rate per IP sub `/v1` utilizează
  `{"error": …}` în loc de un `OperationOutcome` (neschimbat sub `/fhir/R4`); un `500` neașteptat sub `/v1` poartă
  `error.type = "exception"` (purta `error.code`).
- Import laborator: rezultatele HL7 v2 cu un sistem de codificare local sau non-LOINC păstrează codul laboratorului sub `urn:anpheros:lab-code`
  (anterior `urn:hl7:<system>`, de exemplu `urn:hl7:l`). Rezultatele deja stocate nu sunt modificate.
- Import laborator: numele și sinonimele LOINC în limba engleză sunt recunoscute (*Hemoglobin A1c*, *Glycated hemoglobin*, *HDL cholesterol*,
  *LDL cholesterol*, *Haemoglobin*); un *Glucose* simplu se mapează la ser sau plasmă (2345-7) ca *Glicemie*. Numele cu un
  calificativ pe care conceptul nu îl are (*urine*, *non-HDL*…) nu mai sunt potrivite cu un test înrudit: înainte de această modificare
  *HDL cholesterol* și *LDL cholesterol* trimise fără un cod LOINC au fost stocate ca colesterol total (2093-3).
- Import laborator: re-trimiterea unui raport nu mai duplică rezultatele atunci când maparea LOINC se modifică. Rezultatele noi poartă un
  al doilea identificator, `urn:anpheros:lab-import:v2`, construit din raport (ID raport, nume și cod pe raport,
  dată, valoare, unitate); identificatorii existenți rămân neschimbați, iar rezultatele anterioare sunt recunoscute după nume, dată, valoare, unitate
  și ID raport. Două rezultate cu nume diferite pe raport, dar același cod LOINC, dată și valoare (de exemplu
  *Glucose* și *Glicemie*) nu mai sunt fuzionate într-unul singur.

### 13 octombrie 2026 (adăugare, fără modificare contract)
- Consimțământul este aplicat pe fiecare vizualizare derivată (`/v1/context`, `/v1/patients/{id}/timeline`, portal, `$everything`) cu o
  regulă comună; o secțiune solicitată, dar neacoperită, apare în `omitted` contextului.
- OpenAPI declară acum `servers`, `securitySchemes` (`bearer`, `apiKey`, `oauth2`, `firebase`), `security` per operațiune
  și un schema de răspuns pentru fiecare operațiune; clienții generați primesc răspunsuri tipizate.
- Fiecare `401` poartă `WWW-Authenticate: Bearer`.
- CapabilityStatement anunță SMART (extensie `oauth-uris`, serviciu `SMART-on-FHIR`) și ghidul de implementare IPS.
- Redirecționările din spatele proxy păstrează `https://`.
- `python-multipart` 0.0.20 → 0.0.32; `pip-audit` blochează build-ul la vulnerabilități cunoscute.
- URL-urile Webhook trebuie să fie HTTPS public: localhost (acceptat anterior în sandbox, dar niciodată livrat), adrese private și rezervate, și nume care rezolvă la acestea sunt refuzate la înregistrare cu 400 pe `url`; livrările se conectează doar la adresele IP pe care tocmai le-au verificat (DNS rebinding).

## Aplicarea conformității (anunțat la 23 septembrie 2026)

Scrierile care nu respectă cerințele de laborator IPS / HL7 Europe returnează în prezent `201`/`200` cu un antet `Anpheros-Conformance`. După o perioadă de observație (planificată: 60–90 de zile de la această notificare), platforma va trece la modul **blocare**: astfel de scrieri vor răspunde cu `422` și un `OperationOutcome` care listează fiecare neconformitate. Integratorii care au nevoie de mai mult timp pot fi scutiți per proiect pe durata tranziției. Tipurile de resurse adăugate la 23 septembrie 2026: `Procedure`, `DiagnosticReport`, `CarePlan`, `FamilyMemberHistory`, `ServiceRequest`, `Goal` (aditive).
