1+ @startuml
2+ title Data Exchange Authorization Sequence Diagrams
3+
4+ box Local XIS - Data Holder (Bronhouder )
5+ participant ehr as "EHR\n [ FHIR Server ]"
6+ participant pip as "Policy Information Point\n [ TBD ]"
7+ participant pdp as "Policy Decision Point\n[ Knooppunt ]"
8+ participant pep as "Policy Enforcement Point\n[ NGINX ]"
9+ end box
10+ box Remote XIS - Data Requester (Afnemer )
11+ participant remoteXIS as "FHIR Client/Server"
12+ end box
13+
14+ == Referral (Verwijzing), e.g. eOverdracht ==
15+ activate ehr
16+ ehr -> pip : Record resource-level consent\nPOST /Consent\n custodian, actor, provision
17+ activate pip
18+ pip --> ehr : 201 Created
19+ deactivate pip
20+ ehr -> pip : Record patient-level consent\nPOST /Consent\n custodian, actor, patient
21+ activate pip
22+ pip --> ehr : 201 Created
23+ deactivate pip
24+ ehr -> remoteXIS : Notify\nPOST Task/123
25+ activate remoteXIS
26+ remoteXIS --> ehr : 200 OK
27+ deactivate ehr
28+
29+ group Read Task
30+ remoteXIS -> pep : GET Task/123\nscope=eOverdracht-server
31+ activate pep
32+ pep -> pdp : Evaluate access request\nPOST v1/data/main
33+ note right : 'main' policy includes all use case-policies
34+ activate pdp
35+ loop Evaluate scope - mapped - policy
36+ group CapabilityStatement Policy
37+ pdp -> pdp : Evaluate
38+ activate pdp
39+ pdp -> pip : GET /CapabilityStatement\n ?url=canonical-url
40+ activate pip
41+ pip --> pdp : CapabilityStatement
42+ deactivate pip
43+ pdp -> pdp : Check FHIR operation v.s.\nCapabilityStatement
44+ pdp --> pdp : Permit/Deny
45+ deactivate
46+ end group
47+ pdp --> pep : If <i>Deny</i>,\nend evaluation
48+ group Resource - Level Policy
49+ pdp -> pdp : Evaluate
50+ activate pdp
51+ pdp -> pip : GET /Consent\n ?data=Task/123\n &custodian=URA|9876\n &actor=URA|4321
52+ activate pip
53+ pip --> pdp : 200 OK\n(Consents)
54+ deactivate pip
55+ pdp -> pdp : Verify consent\n(period, t.b.d.)
56+ pdp --> pdp : Permit/Deny
57+ deactivate
58+ end group
59+ pdp --> pep : If <i>Permit</i>,\nend evaluation
60+ group Patient - Level Policy \n (if 'patient ' input parameter exists )
61+ pdp -> pdp : Evaluate
62+ activate pdp
63+ pdp -> pip : GET /Consent\n ?data=Task/123\n &custodian=URA|9876\n &actor=URA|4321
64+ activate pip
65+ pip --> pdp : 200 OK\n(Consents)
66+ deactivate pip
67+ pdp -> pdp : Verify consent\n(period, t.b.d.)
68+ pdp --> pdp : Permit/Deny
69+ deactivate
70+ end group
71+ pdp --> pep : Permit/Deny
72+ end group
73+ deactivate pdp
74+ pep --> remoteXIS : 200 OK\n(Task)
75+ deactivate
76+ end group
77+
78+ deactivate remoteXIS
79+
80+ @enduml
0 commit comments