Direct naar inhoud
Curanta
Architectuurbesluiten

Waarom wij bouwen zoals wij bouwen.

Voor uw I&A en architect: waarom wij een keuze maakten, niet alleen welke. Zo kunt u vóór een aanbesteding beoordelen of onze afwegingen bij uw organisatie passen.

Iedere ADR volgt de standaard context → besluit → consequenties-structuur. Aanvaard betekent: het besluit is in de code doorgevoerd. Wij houden wijzigingen bij in versies; een nieuwe ADR vervangt zo nodig een oude.

ADR-001
2025-09
Aanvaard

Modulaire monolith in plaats van microservices

Context

Voor zorgsoftware die klein begint, met beperkte ontwikkelcapaciteit, zijn microservices in beheer te duur. Tegelijk moeten modules per klant los aan te zetten zijn.

Besluit

Wij bouwen een modulaire monolith op .NET 10, met strikt afgebakende modules (Application/Domain/Infrastructure per module). Wij leveren hem uit als één geheel. Modules zijn per organisatie aan of uit te zetten.

Consequenties

Eenvoudiger uitrol en lagere kosten voor infrastructuur. Later splitsen in aparte services kan, maar is niet gepland. Risico: de grenzen tussen modules bewaken vraagt discipline; daarvoor zijn code-reviews en architectuurtests nodig.

ADR-002
2025-10
Aanvaard

FHIR R4 als standaard voor uitwisseling

Context

De Nederlandse zorgketen beweegt naar verplichte interoperabiliteit (Wegiz, MedMij). HL7v2 is verouderd. Eigen formaten betekenen lock-in en maken aansluiten op de keten lastig.

Besluit

FHIR R4 (niet R5) is de canonieke representatie voor cliënt, dossier, observaties en medicatie aan de API-grens. Intern houden wij een eigen relationele structuur: FHIR is een formaat voor de grens, niet voor opslag.

Consequenties

De publieke API levert FHIR R4. Bij een overstap naar R5 gaat het onderhoud van de compatibiliteit voor. Nederlandse profielen (Nictiz zib-mapping) voegen wij stap voor stap toe.

ADR-003
2025-11
Aanvaard

Hosting binnen de EU

Context

Zorgaanbieders eisen aantoonbaar dat zorggegevens niet buiten de EER worden verwerkt. Voor de marketingsite (curanta.nl, ook in Duitsland) gelden deze eisen niet: daar staan geen zorggegevens.

Besluit

De zorgapplicatie (app.curanta.nl) en de databases draaien op een server in Duitsland (EU), versleuteld opgeslagen. Wie de hostingpartij is, staat in de subverwerkerslijst. Geen hosting buiten de EER. Een wijziging in de subverwerkerslijst melden wij 30 dagen van tevoren.

Consequenties

Meer vertraging (latency) voor bezoekers buiten de EU; voor de Nederlandse zorg maakt dat niet uit. De AI-functies draaien standaard bij Mistral AI via het EU-endpoint. Alleen een organisatie die zelf voor Anthropic kiest, maakt een uitzondering op "alles in de EER". Dan gaat gepseudonimiseerde tekst naar Anthropic in de VS, onder modelcontractbepalingen (SCC).

ADR-004
2025-12
Aanvaard

BSN-versleuteling op veldniveau met AES-256-GCM

Context

Het BSN is een wettelijk identificatienummer (art. 87 AVG, art. 46 UAVG), in de zorg geregeld in de Wabvpz. Versleuteling op kolomniveau beschermt het BSN ook tegen wie de databasebestanden of een back-up in handen krijgt. Daarnaast staat de hele database sinds 21 oktober 2026 versleuteld opgeslagen (volumeversleuteling op de server).

Besluit

Curanta slaat het BSN op veldniveau versleuteld op, met AES-256-GCM. Zoeken gaat via een apart, gepeperd hash-veld, zodat een gelijkheidsvraag geen ontsleuteling nodig heeft.

Consequenties

Index-scans op BSN gebruiken het hash-veld, niet de versleutelde kolom. De sleutel staat buiten de database, in de configuratie van de server; een productieserver zonder eigen sleutel start niet.

ADR-005
2026-02
Aanvaard

Nis2Care als zustermerk naast de NIS2-module in Curanta

Context

NIS2 is een vak apart. Onderwerpen als Z-CERT, de IGJ-meldplicht en de registratie van medische apparatuur horen niet vanzelf in het ECD van Curanta. ECD-klanten willen de meldplicht wel in hun eigen omgeving.

Besluit

Curanta heeft een eigen NIS2-incidentmodule (registratie en de meldtermijnen van 24 uur, 72 uur en één maand). Een uitgebreider NIS2-product voor zorgaanbieders met een ander ECD werken wij apart uit, onder de naam Nis2Care. Dat is nog niet beschikbaar.

Consequenties

Curanta-klanten hebben de meldplicht-registratie in hun eigen omgeving. Nis2Care krijgt, zodra het er is, eigen marketing. Klanten kopen ze samen of apart. Dat is een commerciële keuze.

Mist u een onderwerp?

Vragen over de architectuur ontvangen wij graag rechtstreeks. Bijvoorbeeld: hoe wij een spoedherstel controleren voordat het live gaat, of waarom wij bewust geen Kubernetes draaien. Mail info@curanta.nl; wij reageren binnen 1 werkdag.

Wilt u onze architectuurplaat zien?

Wij stellen op aanvraag een architectuurplaat op met netwerkzones, gegevensstromen en subverwerkers, zonder NDA.