# Model súhlasu a prístupu

> Kto čo vidí: izolácia projektov, párové ID, povolenia, vlastníctvo zápisu, pôvod a čo pacient vidí o každej aplikácii s prístupom.

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

**Pravidlo:** so súhlasom pacienta organizácia vidí celý záznam — vrátane toho, čo napísali iné kliniky — ale môže zmeniť alebo vymazať iba to, čo napísala sama. Každá verzia každého zdroja zaznamenáva projekt, ktorý ho napísal, a organizáciu, v mene ktorej bol napísaný.

## Kto čo vidí
- **Projekt** (API kľúč) vidí pacientov, ktorých vytvoril. V rámci **grant**u (OAuth token) aplikácia vidí presne jedného pacienta, naprieč všetkými zapisovateľmi, obmedzeného na udelené rozsahy (scopes) a filtre kategórií. Všetko ostatné vráti 404, nikdy 403, takže ID nemožno skúmať.
- **Párové ID:** každý projekt dostane svoje vlastné ID pre tú istú osobu; interné ID nikdy neopustia platformu. Odkazy na pacientov mimo vášho rozsahu sú maskované nepriehľadným tokenom pre každý projekt.
- **Adresár** (Organization, Practitioner, PractitionerRole): čitateľný podľa ID naprieč celou rovinou, aby sa odkazy vyriešili; vyhľadávateľný iba v rámci vášho projektu; použiteľný ako `X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of` iba vtedy, keď sú vaše.
- **Sandbox a produkcia** sú rôzne databázy. Sandbox kľúč sa fyzicky nedostane k reálnym pacientom.

## Zápisy a vlastníctvo
- `project_id` pri každej verzii zdroja = autor zápisu. Aktualizácia/vymazanie iným projektom → 403 s vysvetlením; namiesto toho zapíšte vlastný zdroj.
- `Provenance.agent.onBehalfOf` = klinika/organizácia v čase zápisu: `X-Anpheros-On-Behalf-Of`, inak organizácia aktuálneho PractitionerRole, inak organizácia projektu.
- Každý zápis vygeneruje zdroj Provenance a záznam v audite (kto, čo, kedy, pod ktorým grantom, ktorá aplikácia, z ktorého odtlačku prsta zdroja).

## Čo vidí pacient
`/me/patients/{id}/grants` uvádza každú aplikáciu s prístupom, jej rozsahy (scopes) a platnosť; `…/access-log` uvádza, čo každá aplikácia čítala alebo zapisovala – pod súhlasom **a** s vlastným kľúčom projektu. Odvolanie nadobúda účinnosť pri ďalšej požiadavke; aplikácia sa nemôže opätovne obnoviť.
S `format=fhir` sa denník prístupu vracia ako Bundle FHIR R4 `AuditEvent` zdrojov, tvarovaný podľa IHE Basic Audit Log Patterns (typ `rest`, interakcia ako podtyp, aplikácia a osoba konajúca prostredníctvom nej ako agenti, pacient a zdroj ako entity, žiadne klinické údaje), takže iný systém ho môže zlúčiť do pohľadu osoby na to, kto pristupoval k jej záznamu.

Čo zaznamenáva každý zdroj Provenance a ako ho nastaviť: [Vysvetlenie pôvodu lekárskych údajov](https://developers.anpheros.com/sk/guides/medical-data-provenance).

## SMART Health Links (zdieľanie pomocou QR kódu alebo odkazu)

Osoba môže zdieľať svoj záznam bez sprostredkovacej aplikácie: `POST /me/patients/{id}/shl` vytvorí
[SMART Health Link](https://hl7.org/fhir/uv/smart-health-cards-and-links/) pre podmnožinu **núdzových** údajov (alergie,
lieky, problémy, očkovania — žiadne výsledky ani história) alebo **úplný** International Patient Summary, s
voliteľným prístupovým kódom a dátumom vypršania platnosti. Odpoveď obsahuje `shlink:/…` URI (pre QR kód) a adresu prehliadača na `/shl/view`, ktorá sa otvorí v akomkoľvek prehliadači. Ktokoľvek ho naskenuje, odošle požiadavku na URL manifestu a dostane súhrn ako JWE (`dir` + `A256GCM`) šifrovaný kľúčom obsiahnutým v odkaze; funguje akýkoľvek čitateľ SMART Health Link.

- Obsah sa generuje pri každom otvorení (príznak `L`, stav `can-change`), takže karta uložená v telefóne zostáva aktuálna.
- Prístupový kód (príznak `P`) sa kontroluje na serveri; po 10 nesprávnych pokusoch odkaz prestane fungovať.
- `GET /me/patients/{id}/shl` uvádza zoznam odkazov s informáciou, ako často a kedy bol každý z nich otvorený; `…/shl/{link}/revoke` naraz vypne
  jeden odkaz. Každé otvorenie je zaznamenané v denníku prístupov.
- Interné ID osoby nikdy neopustí platformu: dokument ich pomenúva pseudonymom odkazu.

## AI agenti navrhujú, osoba rozhoduje

Pod súhlasom osoby, zápis vykonaný AI agentom (aplikácia registrovaná ako agent, napríklad asistent pripojený cez MCP) alebo akýkoľvek zápis s `author_type` `ai` sa neaplikuje okamžite. Platforma ho validuje a odpovie `202 Accepted` s ID návrhu (hlavička `Anpheros-Proposal`); v zázname sa nič nezmení. Osoba to vidí v `GET /me/patients/{id}/proposals` — čo to je, ktorá aplikácia to poslala — a prijme alebo odmietne (`…/proposals/{proposal}/accept` alebo `…/reject`). Prijatý návrh sa zapíše presne tak, ako bol odoslaný, označený ako napísaný AI (HL7 AI Transparency). Projekty, ktoré vidia záznam, dostanú tenký `proposal.created` webhook. Zápisy vykonané s vlastným kľúčom projektu, na záznamoch, ktoré projekt vytvoril, sa nedržia.
