# Μοντέλο συναίνεσης και πρόσβασης

> Ποιος βλέπει τι: απομόνωση έργου, αναγνωριστικά ζευγών, παραχωρήσεις, ιδιοκτησία εγγραφής, προέλευση και τι βλέπει ο ασθενής για κάθε εφαρμογή με πρόσβαση.

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

**Κανόνας:** με τη συναίνεση του ασθενούς, ένας οργανισμός βλέπει ολόκληρο το αρχείο — συμπεριλαμβανομένων όσων έγραψαν άλλα ιατρεία — αλλά μπορεί να αλλάξει ή να διαγράψει μόνο ό,τι έγραψε ο ίδιος. Κάθε έκδοση κάθε πόρου καταγράφει το έργο που το έγραψε και τον οργανισμό για λογαριασμό του οποίου γράφτηκε.

## Ποιος βλέπει τι
- Ένα **project** (κλειδί API) βλέπει τους ασθενείς που δημιούργησε. Κάτω από ένα **grant** (διακριτικό OAuth) μια εφαρμογή βλέπει ακριβώς έναν ασθενή, από όλους τους συγγραφείς, περιορισμένο στα χορηγηθέντα πεδία (scopes) και φίλτρα κατηγορίας. Οτιδήποτε άλλο επιστρέφει 404, ποτέ 403, οπότε τα αναγνωριστικά δεν μπορούν να ερευνηθούν.
- **Αναγνωριστικά ανά ζεύγη (Pairwise ids):** κάθε project λαμβάνει το δικό του αναγνωριστικό για το ίδιο άτομο· τα εσωτερικά αναγνωριστικά δεν φεύγουν ποτέ από την πλατφόρμα. Αναφορές σε ασθενείς εκτός του πεδίου σας καλύπτονται με ένα αδιαφανές, ανά project διακριτικό.
- **Κατάλογος** (Οργανισμός, Επαγγελματίας υγείας, Ρόλος Επαγγελματία υγείας): αναγνώσιμος ανά αναγνωριστικό σε ολόκληρο το επίπεδο ώστε να επιλύονται οι αναφορές· αναζητήσιμος μόνο εντός του project σας· χρησιμοποιήσιμο ως `X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of` μόνο όταν είναι δικό σας.
- **Sandbox και παραγωγή** είναι διαφορετικές βάσεις δεδομένων. Ένα κλειδί sandbox φυσικά δεν μπορεί να φτάσει σε πραγματικούς ασθενείς.

## Εγγραφές και ιδιοκτησία
- `project_id` σε κάθε έκδοση πόρου = ο συντάκτης. Ενημέρωση/διαγραφή από άλλο project → 403 με εξήγηση· γράψτε τον δικό σας πόρο αντ' αυτού.
- `Provenance.agent.onBehalfOf` = η κλινική/οργανισμός κατά τη στιγμή της εγγραφής: `X-Anpheros-On-Behalf-Of`, αλλιώς ο οργανισμός του ενεργού PractitionerRole, αλλιώς ο οργανισμός του project.
- Κάθε εγγραφή παράγει έναν πόρο Provenance και μια γραμμή ελέγχου (ποιος, τι, πότε, υπό ποια άδεια, ποια εφαρμογή, από ποιο δακτυλικό αποτύπωμα πηγής).

## Τι βλέπει ο ασθενής
Το `/me/patients/{id}/grants` παραθέτει κάθε εφαρμογή με πρόσβαση, τα πεδία εμβέλειας (scopes) και την ημερομηνία λήξης της. Το `…/access-log` παραθέτει τι διάβασε ή έγραψε η κάθε εφαρμογή — υπό τη συγκατάθεση **και** με το δικό της κλειδί του έργου. Η ανάκληση τίθεται σε ισχύ στην επόμενη αίτηση. Η εφαρμογή δεν μπορεί να ανανεωθεί ξανά.
Με το `format=fhir`, το αρχείο καταγραφής πρόσβασης επιστρέφει ως Bundle πόρων FHIR R4 `AuditEvent`, διαμορφωμένο σύμφωνα με τα πρότυπα IHE Basic Audit Log Patterns (ο τύπος `rest`, η αλληλεπίδραση ως υποτύπος, η εφαρμογή και το πρόσωπο που ενεργεί μέσω αυτής ως παράγοντες, ο ασθενής και ο πόρος ως οντότητες, χωρίς κλινικά δεδομένα), ώστε ένα άλλο σύστημα να μπορεί να το συγχωνεύσει στην προβολή του ατόμου σχετικά με το ποιος προσπέλασε το αρχείο του.

Τι καταγράφει κάθε πόρος Provenance και πώς να τον ορίσετε: [Επεξήγηση της προέλευσης ιατρικών δεδομένων](https://developers.anpheros.com/el/guides/medical-data-provenance).

## SMART Health Links (κοινή χρήση μέσω QR ή συνδέσμου)

Ένα άτομο μπορεί να μοιραστεί το αρχείο του χωρίς ενδιάμεση εφαρμογή: `POST /me/patients/{id}/shl` δημιουργεί έναν
[SMART Health Link](https://hl7.org/fhir/uv/smart-health-cards-and-links/) για το υποσύνολο **έκτακτης ανάγκης** (αλλεργίες,
φαρμακευτική αγωγή, προβλήματα, εμβολιασμοί — χωρίς αποτελέσματα ή ιστορικό) ή το **πλήρες** International Patient Summary, με
προαιρετικό κωδικό πρόσβασης και ημερομηνία λήξης. Η απόκριση φέρει το URI `shlink:/…` (για κωδικό QR) και μια διεύθυνση προβολής στο
`/shl/view`, η οποία τον ανοίγει σε οποιοδήποτε πρόγραμμα περιήγησης. Όποιος τον σαρώνει, δημοσιεύει στο URL του manifest και λαμβάνει την περίληψη ως
JWE (`dir` + `A256GCM`) κρυπτογραφημένη με το κλειδί εντός του συνδέσμου. οποιοσδήποτε αναγνώστης SMART Health Link λειτουργεί.

- Το περιεχόμενο δημιουργείται σε κάθε άνοιγμα (σημαία `L`, κατάσταση `can-change`), οπότε μια κάρτα που διατηρείται στο τηλέφωνο παραμένει ενημερωμένη.
- Ένας κωδικός πρόσβασης (σημαία `P`) ελέγχεται στον διακομιστή. μετά από 10 λανθασμένες προσπάθειες, ο σύνδεσμος σταματά να λειτουργεί.
- Το `GET /me/patients/{id}/shl` παραθέτει τους συνδέσμους με τη συχνότητα και την ώρα που άνοιξε ο καθένας. το `…/shl/{link}/revoke` απενεργοποιεί
  έναν αμέσως. Κάθε άνοιγμα καταγράφεται στο αρχείο καταγραφής πρόσβασης.
- Το εσωτερικό αναγνωριστικό του ατόμου δεν φεύγει ποτέ από την πλατφόρμα: το έγγραφο τα ονομάζει με ψευδώνυμο του συνδέσμου.

## Οι πράκτορες AI προτείνουν, ο άνθρωπος αποφασίζει

Με τη συγκατάθεση ενός ατόμου, μια εγγραφή από έναν πράκτορα AI (μια εφαρμογή εγγεγραμμένη ως πράκτορας, για παράδειγμα ένας βοηθός συνδεδεμένος μέσω MCP) ή οποιαδήποτε εγγραφή με `author_type` `ai` δεν εφαρμόζεται αμέσως. Η πλατφόρμα την επικυρώνει και απαντά `202 Accepted` με το αναγνωριστικό της πρότασης (header `Anpheros-Proposal`); τίποτα δεν αλλάζει στο αρχείο. Το άτομο το βλέπει στο `GET /me/patients/{id}/proposals` — τι είναι, ποια εφαρμογή το έστειλε — και το αποδέχεται ή το απορρίπτει (`…/proposals/{proposal}/accept` ή `…/reject`). Μια αποδεκτή πρόταση εγγράφεται ακριβώς όπως στάλθηκε, σημειωμένη ως γραμμένη από AI (HL7 AI Transparency). Τα έργα που μπορούν να δουν το αρχείο λαμβάνουν ένα λεπτό webhook `proposal.created`. Οι εγγραφές που γίνονται με το δικό τους κλειδί ενός έργου, σε αρχεία που δημιούργησε το έργο, δεν κρατούνται.
