Skip to content

Commit ee1fc5d

Browse files
committed
Add PLUGIN/applicatie.md
1 parent c3369b1 commit ee1fc5d

File tree

7 files changed

+110
-46
lines changed

7 files changed

+110
-46
lines changed

docs/implementaties/PLUGIN/applicatie.md

Lines changed: 81 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,115 @@
1-
# Architectuur
1+
# Applicatie componenten voor decentrale verwerking
22

3-
Om een federatieve infrastructuur mogelijk te maken, zijn er op technisch vlak twee vereisten:
3+
## Applicatiecomponenten van PLUGIN
44

5-
* Software voor het federatief toegankelijk maken van data
6-
* De data op de verschillende bronnen dient interoperabel te zijn.
5+
![](./plugin-overzicht.drawio.svg)
76

8-
PLUGIN maakt gebruik van **[Vantage6](https://vantage6.ai/)** om data te ontsluiten voor federatief gebruik. De data zelf wordt FAIR (en dus interoperabel) gemaakt door middel van **[HL7 FHIR](https://hl7.org/fhir/)**.
7+
Het datastation (links) en de federated processing hub (rechts) vormen de twee-eenheid van de PLUGIN/vantage6 architectuur. Hieronder wordt de functie van elke component in meer detail beschreven.
98

10-
## Vantage6
9+
!!! note "Gedetailleerde beschrijving applicatiecomponenten vantage6"
1110

12-
Vantage6 is een open-source infrastructuur voor het uitvoeren van een breed spectrum aan federatieve algoritmen. Bij ieder data station wordt een Vantage6 node geïnstalleerd. Een centraal Vantage6 server component faciliteert communicatie en bewaart slechts de tussentijdse resultaten, welke niet terug te herleiden zijn naar een patiënt. Vanuit een user interface en een client kunnen bevoegde gebruikers nieuwe analyses en algoritmen starten, welke rechtstreeks worden opgehaald uit een vertrouwde bibliotheek.
11+
=== "**vantage6 server**"
1312

14-
![PLUGIN architectuur](../../assets/Architectuurplaat-PLUGIN.jpeg)
13+
Om communicatie mogelijk te maken tussen de verschillende nodes, slaat de Vantage6 Server informatie op over onder andere de deelnemende organisaties, de beschikbare nodes, en de invoer en resultaten van alle aangemaakte taken in het systeem. Deze informatie wordt opgevraagd door de nodes met behulp van een REST api en websockets, waardoor het niet nodig is binnenkomende poorten te openen op het data station.
1514

16-
### Vantage6 Server
15+
Door middel van authenticatie en authorisatie op basis van aan te wijzen rollen wordt bijgehouden welke acties toegestaan zijn voor o.a. gebruikers en nodes.
1716

18-
Om communicatie mogelijk te maken tussen de verschillende nodes, slaat de Vantage6 Server informatie op over onder andere de deelnemende organisaties, de beschikbare nodes, en de invoer en resultaten van alle aangemaakte taken in het systeem. Deze informatie wordt opgevraagd door de nodes met behulp van een REST api en websockets, waardoor het niet nodig is binnenkomende poorten te openen op het data station.
19-
Door middel van authenticatie en authorisatie op basis van aan te wijzen rollen wordt bijgehouden welke acties toegestaan zijn voor o.a. gebruikers en nodes.
17+
=== "**vantage6 node**"
2018

21-
### Algoritmen en Bibliotheek
19+
De Vantage6 Node voert openstaande taken uit. Hierbij wordt het aangegeven Docker image uit de bibliotheek gehaald en uitgevoerd, en gekoppeld aan een van de vooraf geconfigureerde databronnen. Voor elke taak wordt door middel van configuratie gecontroleerd of het uitvoeren van de Docker image toegestaan is.
2220

23-
Voor een maximale flexibiliteit in het soort uit te voeren taak, wordt in Vantage6 gebruik gemaakt van [Docker images](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/). Een sjabloon-image bevat vereiste logica zoals het verwerken van inputs en terugsturen van resultaten. Deze kan vervolgens worden uitgebreid met de specifieke logica voor de use-case, zoals bijvoorbeeld een federatieve query of een federated learning algoritme. Het Docker image dat hieruit resulteert wordt opgeslagen in een centrale [Docker registry](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/) (een bibliotheek voor Docker images).
21+
Om het algoritme uit te voeren start de node op basis van het binnengehaalde Docker image een Docker container op het data station. Communicatie vanuit het algoritme verloopt hierbij altijd via de node naar de server.
2422

25-
### Vantage6 Node
23+
=== "**Algoritmen en bibliotheek**"
2624

27-
De Vantage6 Node voert openstaande taken uit. Hierbij wordt het aangegeven Docker image uit de bibliotheek gehaald en uitgevoerd, en gekoppeld aan een van de vooraf geconfigureerde databronnen. Voor elke taak wordt door middel van configuratie gecontroleerd of het uitvoeren van de Docker image toegestaan is.
25+
Voor een maximale flexibiliteit in het soort uit te voeren taak, wordt in Vantage6 gebruik gemaakt van [Docker images](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/). Een sjabloon-image bevat vereiste logica zoals het verwerken van inputs en terugsturen van resultaten. Deze kan vervolgens worden uitgebreid met de specifieke logica voor de use-case, zoals bijvoorbeeld een federatieve query of een federated learning algoritme. Het Docker image dat hieruit resulteert wordt opgeslagen in een centrale [Docker registry](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/) (een bibliotheek voor Docker images).
2826

29-
Om het algoritme uit te voeren start de node op basis van het binnengehaalde Docker image een Docker container op het data station. Communicatie vanuit het algoritme verloopt hierbij altijd via de node naar de server.
3027

31-
## HL7 FHIR
3228

29+
## Federatief leren met PLUGIN/vantage6
3330

31+
De PLUGIN-architectuur is gebaseerd op vantage6. Het gefedereerd leren van een algoritme omvat een reeks gecoördineerde stappen tussen de onderzoeker, de centrale server en de datastations. Dit proces is ontworpen om de analyse uit te voeren zonder dat de brongegevens de lokale omgeving van het datastation verlaten. Hieronder volgt een detailleerde beschrijving wat elk van de applicatiecomponenten hierin doen.
3432

33+
![](./pht-workflow.png)
3534

36-
## Benodigdheden
35+
???+ note "**Authenticatie**"
3736

38-
### Juridisch
37+
De onderzoeker start het proces door te authenticeren bij de centrale Vantage6-server.
3938

40-
https://www.medicaldataworks.nl/governance
39+
??? note "**Taak specificatie**"
40+
41+
Na succesvolle authenticatie definieert de onderzoeker een taak. Hierbij wordt opgegeven:
42+
* Welk algoritme (Docker-image) gebruikt moet worden.
43+
* Specifieke inputparameters voor de analyse.
44+
* Het aantal iteraties (indien van toepassing, voor machine learning).
45+
* De identiteit van de *Secure Aggregation Server* (SAS), de node die verantwoordelijk is voor het aggregeren van resultaten.
4146

47+
??? note "**Verzending naar nodes**"
48+
49+
De centrale server stuurt de taak door naar de betrokken nodes. De SAS (Secure Aggregation Server, een specifieke node) ontvangt het verzoek als eerste.
4250

43-
### Data Station Hardware
51+
??? note "**Start hoofdalgoritme (SAS)**"
52+
53+
De SAS downloadt het Docker-image, start het hoofd-algoritme en orkestreert de subtaken die door de datastations uitgevoerd moeten worden.
4454

45-
PLUGIN verwacht bij voorkeur de volgende hardware-specificaties:
55+
??? note "**Start subtaken (datastations)**"
56+
57+
De datastations ontvangen hun subtaak van de centrale server, downloaden hetzelfde Docker-image en starten het lokale deel van het algoritme. De analyse wordt uitgevoerd op de lokale data.
4658

47-
* ≥ 16 cores, x86/x64 CPU
48-
* ≥ 56 GB CPU RAM
49-
* ≥ 360 GB SSD
50-
* virtualization enabled
51-
* GPU (optioneel, maar aanbevolen):
52-
* CUDA compatible NVIDIA kaart
53-
* 16 GB GPU RAM
59+
??? note "**Verzending lokale resultaten**"
60+
61+
Na elke trainingscyclus of analysestap stuurt het algoritme op het datastation de lokale resultaten (bijv. modelgewichten of statistische coëfficiënten) naar de SAS. De brongegevens verlaten het datastation niet.
5462

63+
??? note "**Verificatie en aggregatie**"
64+
65+
De SAS verifieert de resultaten, extraheert de metadata en voegt de resultaten van alle datastations samen tot een geaggregeerd tussenmodel. Dit voltooit één iteratie.
5566

56-
Specificaties zijn echter sterk afhankelijk van de uit te voeren algoritmen.
67+
??? note "**Vervolg-iteraties**"
68+
69+
Voor vervolgstappen vragen de datastations de geaggregeerde resultaten van de vorige ronde op bij de SAS om hun lokale modellen verder te trainen. Deze cyclus herhaalt zich totdat het model convergeert of het gewenste aantal iteraties is bereikt.
5770

58-
### Netwerk
71+
??? note "**Afronding**"
72+
73+
De SAS informeert de onderzoeker dat de taak is voltooid. De onderzoeker kan vervolgens het finale, globale model downloaden van de server. Gedurende het proces heeft niemand, ook de onderzoeker niet, toegang tot de tussenresultaten, wat de veiligheid waarborgt.
5974

60-
* ≥ 100Mbit ethernet
61-
* Poort 443/TCP (https) open voor **uitgaand** verkeer naar de server
62-
* Een Publiek IP-adres voor whitelisting bij de server
75+
## PLUGIN en de European Interoperability Reference Architecture (EIRA)
6376

64-
### Software
77+
De architectuur van PLUGIN, gebaseerd op de principes van de Personal Health Train en Vantage6, kan worden beschreven aan de hand van de **European Interoperability Reference Architecture (EIRA)**. EIRA biedt een raamwerk om interoperabele architecturen te ontwerpen door herbruikbare *Architectural Building Blocks (ABBs)* te identificeren.
6578

66-
* Besturingssysteem: Ubuntu 22.04+, Windows 10 of hoger, macOS 13.x of hoger
67-
* Docker of Docker Desktop
68-
* Python versie 3.10+
79+
Hoewel een gedetailleerde mapping naar specifieke EIRA ABB's een technische oefening is (vaak vastgelegd in een Archimate-model), kunnen we de componenten van PLUGIN conceptueel positioneren binnen de EIRA-gedachte. De architectuur is opgebouwd uit logische componenten die elk een specifieke rol vervullen, wat aansluit bij de EIRA-visie. De belangrijkste componenten, beschouwd als ABBs, zijn hieronder weergegeven.
80+
81+
82+
!!! note "PLUGIN in termen van EIRA architectural building blocks"
83+
84+
=== "**Processing hub**"
85+
86+
Fungeert als een intermediair voor communicatie, beheert metadata van taken en orkestreert de interacties. Dit kan worden gezien als een combinatie van EIRA ABBs gerelateerd aan *Message Exchange*, *Service Registry* en *Process Control*.
87+
88+
=== "**Datastation**"
89+
90+
De component binnen de jurisdictie van de datahouder (bv. een ziekenhuis). Het voorziet in de rekenkracht voor de lokale analyse en waarborgt dat data de eigen omgeving niet verlaat. Dit komt overeen met EIRA ABBs voor *Secure Data Processing* en *Service Consumption*.
91+
92+
=== "**Secure Aggregation Server (SAS)**"
93+
94+
Een gespecialiseerde node die verantwoordelijk is voor het veilig aggregeren van de lokale resultaten. Dit is een specifieke invulling van een *Data Processing* en *Security* ABB.
95+
96+
=== "**Algoritme (Docker Image)**"
97+
98+
Het "treintje" dat de analyse definieert. Het is een zelfstandige, uitvoerbare component die de logica, het model en de API bevat. Dit sluit aan bij het idee van een *Business Logic Component* of *Application Service* in EIRA.
99+
100+
=== "**Beveiligde Communicatiekanalen**"
101+
102+
De infrastructuur die veilige data-uitwisseling (van geaggregeerde resultaten, niet brongegevens) mogelijk maakt. Dit valt onder EIRA ABBs zoals *Secure Communication* en *Network Infrastructure*.
103+
104+
Door de architectuur op deze manier in componenten op te delen, wordt een modulaire en interoperabele opzet gerealiseerd die in lijn is met de principes van EIRA voor het bouwen van grensoverschrijdende en sector-overstijgende digitale diensten.
105+
106+
107+
## PLUGIN en de composable data stack
108+
109+
![](./datastation-eira.png)
110+
111+
TO DO: uitleggen hoe al deze componenten eigenlijk een-op-een te vertalen zijn naar de moderne lakehouse architectuur.
69112

70-
## Data
71113

72114

73115

170 KB
Loading

docs/implementaties/PLUGIN/index.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ De PLUGIN infrastructuur implementeert verschillende componenten zoals in onders
1616
| PLUGIN-ML | gefedereerd leren |
1717
| PLUGIN-Hub | data pooling |
1818
| vantage6 server | centrale processing hub waarop gebruikers, organizaties, samenwerkingsverbanden taken en resultaten worden beheerd en georchestreerd |
19-
| vantage6 UI | webapplicatie waarmee gebruikers kunnen interacteren met de serve |
19+
| vantage6 UI | webapplicatie waarmee gebruikers kunnen interacteren met de server |
2020
| vantage6 API | programmatische aansturing van de server, incl. Python client en R client |
2121
| Docker registry | containers die zijn geautoriseerd om decentraal op de datastations uit te voeren |
2222
| Algorithm store | de metadata over de (algoritme) containers, inclusief ondersteuning van goedkeuringsproces |
@@ -25,8 +25,6 @@ De PLUGIN infrastructuur implementeert verschillende componenten zoals in onders
2525
| PLUGIN-Lake | Lakehouse voor serverless opslag en ETL transformaties op het datastation |
2626

2727

28-
29-
3028
??? info "Externe documentatie"
3129

3230
- [PLUGIN programma website](https://plugin.healthcare/)

docs/implementaties/PLUGIN/informatie.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ In de doorontwkkeling van PLUGIN is voorzien dat andere informatiemodellen (OMOP
3434

3535
## DHD thesauri als basis voor semantische interoperabiliteit
3636

37-
Voor semantische interoperabiliteit leunt PLUGIN sterk op de expertise en standaarden van DHD (Dutch Hospital Data), en specifiek de [Diagnose- en Verrichtingenthesaurus](https://www.dhd.nl/producten-diensten/registratie-data/oplossingen-voor-registratievraagstukken). Deze thesauri zijn zijn de landelijke standaarden voor de registratie van medische diagnosen respectievelijk verrichtingen. De thesauri bestaan uit lijsten met uniforme termen die worden ingeladen in het epd. Hierdoor kunnen artsen en andere zorgprofessionals de termen aan de bron vastleggen in de taal die zij in de praktijk gebruiken. Elke twee maanden verschijnen nieuwe versies, zodat de lijsten altijd actueel zijn. Gebruikers kunnen verzoeken voor wijzigingen bij ons indienen.
38-
39-
Omdat iedereen volgens dezelfde standaarden registreert, kan de informatie soepel worden uitgewisseld en voor meerdere doeleinden worden gebruikt. De termen leiden automatisch af naar DBC-codes, ICD-10-codes, conciliumcodes (opleidingscodes) en het internationale terminologiestelsel SNOMED. Door deze thesaurus te gebruiken, zorgt PLUGIN ervoor dat analyses die over verschillende ziekenhuizen heen worden uitgevoerd, gebaseerd zijn op data met een consistente en gedeelde betekenis.
37+
Voor semantische interoperabiliteit leunt PLUGIN sterk op de expertise en standaarden van DHD (Dutch Hospital Data), en specifiek de [Diagnose- en Verrichtingenthesaurus](https://www.dhd.nl/producten-diensten/registratie-data/oplossingen-voor-registratievraagstukken). Deze thesauri zijn zijn de landelijke standaarden voor de registratie van medische diagnosen respectievelijk verrichtingen. De thesauri bestaan uit lijsten met uniforme termen die worden ingeladen in het epd. Hierdoor kunnen artsen en andere zorgprofessionals de termen aan de bron vastleggen in de taal die zij in de praktijk gebruiken. Elke twee maanden verschijnen nieuwe versies, zodat de lijsten altijd actueel zijn. Door deze thesauri te gebruiken, zorgt PLUGIN ervoor dat analyses die over verschillende ziekenhuizen heen worden uitgevoerd, gebaseerd zijn op data met een consistente en gedeelde betekenis. Zo kunnen concepten automatisch worden afgeleid naar DBC-codes, ICD-10-codes, conciliumcodes (opleidingscodes) en het internationale terminologiestelsel SNOMED.
4038

4139
In de doorontwikkeling van PLUGIN wordt gedacht om de thesauri uit te breiden met de [SSSOM-methode](https://mapping-commons.github.io/sssom/). Daarmee kunnen niet alleen mappings tussen verschillende codestelsel gemaakt worden, maar kan ook aangegeven worden of een mapping een `exactMatch`, een `broadMatch` of een `narrowMatch` is. Dit is van waarde omdat bijvoorbeeld in de huisartsen zorg veel bredere diagnosen worden geregistreerd zoals epilepsie, terwijl in een ziekenhuis of UMC in meer detail de diagnose wordt gecodeerd, bijvoorbeeld focale epilepsie.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
### Data Station Hardware
2+
3+
PLUGIN verwacht bij voorkeur de volgende hardware-specificaties:
4+
5+
* ≥ 16 cores, x86/x64 CPU
6+
* ≥ 56 GB CPU RAM
7+
* ≥ 360 GB SSD
8+
* virtualization enabled
9+
* GPU (optioneel, maar aanbevolen):
10+
* CUDA compatible NVIDIA kaart
11+
* 16 GB GPU RAM
12+
13+
14+
Specificaties zijn echter sterk afhankelijk van de uit te voeren algoritmen.
15+
16+
### Netwerk
17+
18+
* ≥ 100Mbit ethernet
19+
* Poort 443/TCP (https) open voor **uitgaand** verkeer naar de server
20+
* Een Publiek IP-adres voor whitelisting bij de server
21+
22+
### Software
23+
24+
* Besturingssysteem: Ubuntu 22.04+, Windows 10 of hoger, macOS 13.x of hoger
25+
* Docker of Docker Desktop
26+
* Python versie 3.10+
164 KB
Loading

docs/implementaties/PLUGIN/proces.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Om een federatief proces te starten, moet eerst een samenwerkingsverband worden
1717
* **Taak (Task):** Een specifieke opdracht, zoals het trainen van een model of het uitvoeren van een analyse, die naar een of meerdere nodes wordt gestuurd.
1818
* **Rol (Role) en Regel (Rule):** Definiëren de permissies van een gebruiker.
1919

20-
De **vantage6 Server** beheert deze entiteiten en zorgt voor veilige communicatie en correcte autorisatie, in lijn met de governance-eisen van de dataspace.
20+
De **vantage6 Server** beheert deze entiteiten en zorgt voor veilige communicatie en correcte autorisatie, in lijn met de governance-eisen van de dataspace. Medical Dataworks heeft afgelopen jaren veel ervaring opgedaan met het opzetten van dergelijke samenwerkingsverbanden en heeft hiertoe standaard [overeenkomsten en governance documenten](https://www.medicaldataworks.nl/governance) opgesteld en open source beschikbaar gesteld.
2121

2222
## Uitvoeren van een federatieve taak
2323

0 commit comments

Comments
 (0)