# Hozzájárulási és hozzáférési modell

> Ki mit lát: projektizoláció, páronkénti azonosítók, engedélyek, írási tulajdonjog, származás és mit lát a beteg minden hozzáféréssel rendelkező alkalmazásról.

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

**Szabály:** A beteg hozzájárulásával egy szervezet látja a teljes rekordot – beleértve azt is, amit más klinikák írtak –, de csak azt változtathatja meg vagy törölheti, amit maga írt. Minden erőforrás minden verziója rögzíti azt a projektet, amelyik írta, és azt a szervezetet, amelynek nevében írták.

## Ki mit lát
- Egy **projekt** (API kulcs) látja az általa létrehozott betegeket. Egy **grant** (OAuth token) alatt egy alkalmazás pontosan egy beteget lát, minden írótól függetlenül, a megadott hatókörökre és kategóriaszűrőkre korlátozva. Minden más 404-et ad vissza, soha nem 403-at, így az azonosítók nem próbálhatók ki.
- **Párban lévő azonosítók:** minden projekt ugyanazon személyhez a saját azonosítóját kapja; a belső azonosítók soha nem hagyják el a platformot. A hatókörödön kívüli betegekre való hivatkozások átlátszatlan, projektenkénti tokenekkel vannak elrejtve.
- **Könyvtár** (Organization, Practitioner, PractitionerRole): az azonosító alapján olvasható az egész síkon, így a hivatkozások feloldódnak; csak a projekteden belül kereshető; `X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of`-ként csak akkor használható, ha a tiéd.
- **Sandbox és éles környezet** különböző adatbázisok. Egy sandbox kulcs fizikailag nem érheti el a valós betegeket.

## Írás és tulajdonjog
- Minden erőforrás-verzió `project_id`-a az író. Frissítés/törlés egy másik projekt által → 403 magyarázattal; írjon saját erőforrást helyette.
- `Provenance.agent.onBehalfOf` az írás időpontjában a klinika/szervezet: `X-Anpheros-On-Behalf-Of`, egyébként az aktuális PractitionerRole szervezete, egyébként a projekt szervezete.
- Minden írás egy Provenance erőforrást és egy audit sort hoz létre (ki, mi, mikor, melyik engedély alapján, melyik alkalmazás, melyik forrás ujjlenyomatából).

## Mit lát a páciens
A `/me/patients/{id}/grants` felsorolja az összes hozzáféréssel rendelkező alkalmazást, annak hatóköreit és lejárati idejét; a `…/access-log` felsorolja, hogy mit olvasott vagy írt az egyes alkalmazások – a beleegyezés **és** a projekt saját kulcsa alapján. A visszavonás a következő kérésre lép életbe; az alkalmazás nem tud újra frissülni.
A `format=fhir` segítségével a hozzáférési napló FHIR R4 `AuditEvent` erőforrások Bundle-jeként tér vissza, az IHE Basic Audit Log Patterns (típus `rest`, az interakció mint altípus, az alkalmazás és az azon keresztül cselekvő személy mint ügynökök, a páciens és az erőforrás mint entitások, klinikai adatok nélkül) alakja szerint, így egy másik rendszer összeolvaszthatja azt a személy azon nézetébe, hogy ki férhetett hozzá a rekordjához.

Mit rögzít az egyes Provenance erőforrások és hogyan kell beállítani: [Orvosi adatok eredetének magyarázata](https://developers.anpheros.com/hu/guides/medical-data-provenance).

## SMART Health Links (QR-kód vagy hivatkozás általi megosztás)

Egy személy az alkalmazás közbeiktatása nélkül is megoszthatja a rekordját: a `POST /me/patients/{id}/shl` létrehoz egy
[SMART Health Link](https://hl7.org/fhir/uv/smart-health-cards-and-links/) hivatkozást a **sürgősségi** adathalmaz (allergia,
gyógyszerek, problémák, oltások – nincsenek eredmények vagy kórtörténet) vagy a
**teljes** Nemzetközi Betegösszefoglaló (International Patient Summary) számára, opcionális
jelszóval és lejárati dátummal. A válasz tartalmazza a `shlink:/…` URI-t (QR-kódhoz) és egy
megtekintő címet a `/shl/view`-on, amely bármely böngészőben megnyitja azt. Aki beolvassa,
az a manifest URL-re küld kérést, és az összefoglalót JWE (`dir` + `A256GCM`) formátumban
kapja meg, a hivatkozásban található kulccsal titkosítva; bármely SMART Health Link
olvasó működik.

- A tartalom minden megnyitáskor generálódik (jelző `L`, státusz `can-change`), így a
  telefonban tárolt kártya naprakész marad.
- A jelszót (jelző `P`) a szerver ellenőrzi; 10 sikertelen kísérlet után a
  hivatkozás nem működik tovább.
- A `GET /me/patients/{id}/shl` felsorolja a hivatkozásokat, hogy az egyes hivatkozásokat hányszor és
  mikor nyitották meg; a `…/shl/{link}/revoke` egy hivatkozást azonnal kikapcsol. Minden
  megnyitás a hozzáférési naplóban szerepel.
- A személy belső azonosítója soha nem hagyja el a platformot: a dokumentum a
  hivatkozás álnéven nevezi meg azt.

## AI-ügynökök javasolnak, az ember dönt

Az ember beleegyezése mellett az AI-ügynök által végzett írás (például egy MCP-n keresztül csatlakoztatott asszisztensként regisztrált alkalmazás) vagy bármilyen `author_type` `ai` használatával végzett írás nem kerül azonnal alkalmazásra. A platform érvényesíti azt, és a javaslat azonosítójával (`Anpheros-Proposal` fejléc) válaszol `202 Accepted`; a rekordban semmi sem változik. Az ember `GET /me/patients/{id}/proposals`-ben látja azt – hogy mi az, melyik alkalmazás küldte –, és elfogadja vagy elutasítja azt (`…/proposals/{proposal}/accept` vagy `…/reject`). Az elfogadott javaslat pontosan úgy kerül beírásra, ahogy elküldték, AI-írottként megjelölve (HL7 AI Transparency). A rekordot látó projektek vékony `proposal.created` webhookot kapnak. A projekt saját kulcsával végzett írások, a projekt által létrehozott rekordokon, nem kerülnek felfüggesztésre.
