# Model souhlasu a přístupu

> Kdo co vidí: izolace projektů, párová ID, udělení přístupu, vlastnictví zápisu, původ dat a co pacient vidí o každé aplikaci s přístupem.

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

**Pravidlo:** se souhlasem pacienta organizace vidí celý záznam — včetně toho, co napsaly jiné kliniky — ale může měnit nebo mazat pouze to, co napsala sama. Každá verze každého zdroje zaznamenává projekt, který jej zapsal, a organizaci, jejímž jménem byl zapsán.

## Kdo co vidí
- **Projekt** (API klíč) vidí pacienty, které vytvořil. V rámci **grantu** (OAuth token) aplikace vidí přesně jednoho pacienta napříč všemi zapisovateli, omezeno na udělené rozsahy (scopes) a filtry kategorií. Vše ostatní vrací 404, nikdy 403, takže ID nelze zkoumat.
- **Párová ID:** každý projekt obdrží své vlastní ID pro stejnou osobu; interní ID nikdy neopustí platformu. Odkazy na pacienty mimo váš rozsah jsou maskovány neprůhledným, per-projektovým tokenem.
- **Adresář** (Organization, Practitioner, PractitionerRole): čitelný podle ID napříč celou platformou, aby se odkazy vyřešily; prohledávatelný pouze v rámci vašeho projektu; použitelný jako `X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of` pouze tehdy, pokud je váš.
- **Sandbox a produkce** jsou různé databáze. Sandbox klíč se fyzicky nemůže dostat k reálným pacientům.

## Zápisy a vlastnictví
- `project_id` u každé verze zdroje = zapisovatel. Aktualizace/smazání jiným projektem → 403 s vysvětlením; zapište si vlastní zdroj.
- `Provenance.agent.onBehalfOf` = klinika/organizace v době zápisu: `X-Anpheros-On-Behalf-Of`, jinak organizace aktuálně působícího PractitionerRole, jinak organizace projektu.
- Každý zápis vytváří zdroj Provenance a řádek auditu (kdo, co, kdy, pod jakým grantem, jakou aplikací, z jakého otisku zdroje).

## Co vidí pacient
`/me/patients/{id}/grants` vypisuje každou aplikaci s přístupem, její rozsahy (scopes) a datum vypršení platnosti; `…/access-log` vypisuje, co každá aplikace přečetla nebo zapsala — pod souhlasem **a** s vlastním klíčem projektu. Odvolání má účinnost při dalším požadavku; aplikace se nemůže znovu obnovit.
S `format=fhir` se protokol přístupu vrací jako Bundle zdrojů FHIR R4 `AuditEvent`, tvarovaný podle IHE Basic Audit Log Patterns (typ `rest`, interakce jako podtyp, aplikace a osoba jednající skrze ni jako agenti, pacient a zdroj jako entity, žádná klinická data), takže jiný systém jej může sloučit do pohledu osoby na to, kdo přistupoval k jejímu záznamu.

Co zaznamenává každý zdroj Provenance a jak jej nastavit: [Vysvětlení původu lékařských dat](https://developers.anpheros.com/cs/guides/medical-data-provenance).

## SMART Health Links (sdílení pomocí QR kódu nebo odkazu)

Osoba může sdílet svůj záznam bez zprostředkování aplikace: `POST /me/patients/{id}/shl` vytvoří
[SMART Health Link](https://hl7.org/fhir/uv/smart-health-cards-and-links/) pro **nouzovou** podmnožinu (alergeny,
léky, problémy, imunizace – žádné výsledky ani historie) nebo **úplný** International Patient Summary, s
volitelným heslem a expirací. Odpověď nese `shlink:/…` URI (pro QR kód) a adresu prohlížeče na
`/shl/view`, která jej otevře v libovolném prohlížeči. Kdokoli jej naskenuje, odešle požadavek na manifest URL a obdrží souhrn jako
JWE (`dir` + `A256GCM`) šifrovaný klíčem uvnitř odkazu; funguje jakýkoli čtečka SMART Health Link.

- Obsah je generován při každém otevření (příznak `L`, stav `can-change`), takže karta uložená v telefonu zůstává aktuální.
- Heslo (příznak `P`) je kontrolováno na serveru; po 10 nesprávných pokusech odkaz přestane fungovat.
- `GET /me/patients/{id}/shl` vypisuje odkazy s informací, jak často a kdy byl každý otevřen; `…/shl/{link}/revoke`
  okamžitě jeden deaktivuje. Každé otevření je v přístupovém logu.
- Interní ID osoby nikdy neopustí platformu: dokument je pojmenovává pseudonymem odkazu.

## AI agent navrhuje, člověk rozhoduje

Podle souhlasu osoby, zápis provedený AI agentem (aplikace registrovaná jako agent, například asistent
připojený přes MCP) nebo jakýkoli zápis s `author_type` `ai` se neprovede okamžitě. Platforma jej validuje a
odpoví `202 Accepted` s ID návrhu (hlavička `Anpheros-Proposal`); v záznamu se nic nezmění. Osoba
ji vidí v `GET /me/patients/{id}/proposals` — co to je, která aplikace to poslala — a přijme nebo odmítne
(`…/proposals/{proposal}/accept` nebo `…/reject`). Přijatý návrh se zapíše přesně tak, jak byl odeslán, označen jako
napsaný AI (HL7 AI Transparency). Projekty, které vidí záznam, obdrží tenký `proposal.created` webhook. Zápisy provedené
s vlastním klíčem projektu, na záznamech, které projekt vytvořil, nejsou zadržovány.
