Skip to content

Conversation

@reinkrul
Copy link
Member

@reinkrul reinkrul commented Nov 5, 2025

Today I made a diagram that reflects how a typical eOverdracht data exchange can be authorized. It shows:
Interaction between the Policy Decision Point and Policy Information Point (PIP)
Interaction between the EHR and the Policy Information Point
3 different types of policies:

  • a CapabilityStatement Policy (authorizing the client software), that can be used to:
    • authorize software systems for a specific use case
    • limit what a client (for a use case) can do on a FHIR server, e.g.;
      • mCSD Update Clients may only perform _history query,
      • allow only specific search params (e.g. no _revinclude)
  • a Resource-Level Policy (authorizing the care organization), that can be used to authorize specific resources (e.g. eOverdracht Task resource)
  • a Patient-Level Policy (authorizing the care organization), that can be used to authorize sets of resources (e.g. all FHIR resources that relate to a patient)

I believe this covers most, if not all, use cases we currently envision.

I modeled the PIP as a FHIR API, because FHIR resources and interactions seem to be a perfect fit. This can be:

  • A separate FHIR server (e.g. HAPI FHIR)
    The EHR itself (e.g. Epic/whatever)
  • A FHIR API implementation that just implements the required FHIR operations (for CapabilityStatement and Consent resources)
  • The Knooppunt component (PIP component, backed by a database)

If you think "all these REST calls, isn't that going to be very slow?", Open Policy Agent aggresively caches HTTP requests as well as policy decisions, so I think it can be very performent, while being flexible.

@reinkrul reinkrul requested a review from a team as a code owner November 5, 2025 17:23
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates architecture diagrams to use a larger font size (24pt) for titles and improves visual consistency. Additionally, it adds two new PlantUML sequence diagrams for authentication and data exchange authorization flows, along with documentation updates to reference these diagrams.

  • Updated SVG diagram titles to use 24pt font size instead of 14pt
  • Changed text color from black (#000000) to gray (#444444) for titles
  • Changed relationship line styles from solid to dashed with updated colors
  • Added new sequence diagrams for authentication and authorization flows
  • Updated ARCHITECTURE.md to reference the new diagrams

Reviewed Changes

Copilot reviewed 2 out of 12 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
docs/images/structurizr-GF_SystemContext.svg Updated title styling with larger font and dashed relationship lines
docs/images/structurizr-GF_Localization_ContainerDiagram.svg Updated title styling with larger font and dashed relationship lines
docs/images/structurizr-GF_Localization_ComponentDiagram.svg Updated title styling with larger font and dashed relationship lines
docs/images/structurizr-GF_Addressing_ContainerDiagram.svg Updated title styling with larger font and dashed relationship lines
docs/images/structurizr-DataExchange_ContainerDiagram.svg Updated title styling with larger font and dashed relationship lines
docs/dataexchange-authorization-sd.puml New PlantUML sequence diagram for data exchange authorization
docs/authentication-sd.puml New PlantUML sequence diagram for authentication flows
docs/ARCHITECTURE.md Added references to the new sequence diagrams

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants