Skip to content

Commit 2fba0bb

Browse files
authored
Merge pull request #41 from Health-RI/plugin-implementatie-toevoegingen
Plugin implementatie toevoegingen
2 parents 6d4dd4c + 39d78bf commit 2fba0bb

File tree

4 files changed

+61
-36
lines changed

4 files changed

+61
-36
lines changed
123 KB
Loading

docs/discussie/ontwikkelagenda.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,22 @@
33
De grootste gaps die we zien zijn:
44

55
- Output controle: nog _unsolved problem_ voor deep learning modellen
6-
- Smart contracts als extra waarborg in federatieve BVO. Alleen een
6+
- Smart contracts als extra waarborg in federatieve BVO. Alleen een
7+
8+
## Imaging Data voorzieningen
9+
Voor het faciliteren van onderzoek en registraties op basis van medische beelden zouden een aantal componenten aan het data station kunnen worden toegevoegd. Een voorbeeldimplementatie wordt momenteel ontwikkeld door [MDW](https://www.medicaldataworks.nl/) in de context van [DIGIONE](https://digicore-cancer.eu/).
10+
11+
![](../assets/data-station-imaging-architecture.png)
12+
13+
### PACS voor onderzoek
14+
Voor rechstreeks gebruik van beelddata worden de DICOM beelden opgeslagen in een onderzoeksgerichte Picture Archiving System. Tijdens opslag worden de beelden geconverteerd naar opslagformaten als NIfTI en NRRD, deze formaten lenen zich meer voor rechtstreeks in de gefedereerde algoritmen.
15+
16+
### DICOM Service
17+
Beelden worden na ontvangst direct geanonimiseerd, en lokaal gebruikte structuurnamen van segmentaties worden vertaald naar globaal bekende standaarden. Afhankelijk van de benodigde berekeningen worden gekoppelde modaliteiten samen opgevraagd, zoals bijvoorbeeld de CT beelden, intekeningen en informatie over geplande dosisdistributie.
18+
19+
### Computatieservice
20+
Bij beeldontvangst worden automatisch afgeleide analyses uitgevoerd, zoals DVH-berekeningen en radiomics-extracties. Door gebruik te maken van de genormaliseerde naamgeving van intekeningen is ook mogelijk deze berekeningen te baseren op samengestelde structuren (bijvoorbeeld de gemiddelde dosis in beide longen, afgezien van de primaire tumor). De resultaten van deze configureerbare analyses worden opgeslagen in een relationele database en beschikbaar gesteld voor gebruik door de node.
21+
22+
### interoperabiliteit
23+
Om interoperabiliteit van de data te garanderen worden zowel beelddata als afgeleide resultaten geconverteerd naar OMOP en graphDB door middel van automatische conversies.
24+

docs/implementaties/PLUGIN/applicatie.md

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,43 @@ Het datastation (links) en de federated processing hub (rechts) vormen de twee-e
2525
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).
2626

2727

28-
Wanneer gesproken wordt over specifieke implementaties wordt vaak de term *Aggregator Node* gebruikt. Hiermee wordt de node bedoeld waar aggregatie van deelresultaten plaats vindt. Hoewel het mogelijk is deze node op een aparte locatie te realiseren, verschilt deze technisch gezien niet van andere Vantage6 nodes. Elke Vantage6 Node is dus in potentie een aggregator node. Uitzondering hierop is de [*Secure Aggregator Node*](https://ai.jmir.org/2025/1/e60847). Deze oplossing wordt niet gebruikt binnen PLUGIN, maar bij specifieke use-cases om datalek problematiek tegen te gaan.
29-
28+
Wanneer gesproken wordt over specifieke implementaties wordt vaak de term *Aggregator Node* gebruikt. Hiermee wordt de node bedoeld waar aggregatie van deelresultaten plaats vindt. Hoewel het mogelijk is deze node op een aparte locatie te realiseren, verschilt deze technisch gezien niet van andere Vantage6 nodes. Elke Vantage6 Node is dus in potentie een aggregator node. Uitzondering hierop is de [*Secure Aggregator Node*](https://ai.jmir.org/2025/1/e60847). Deze oplossing kan gebruikt worden in specifieke gevallen waarin samengestelde data nog steeds gevoelig kan zijn, om het risico op een datalek verder te verkleinen.
3029

3130
## Federatief leren met PLUGIN/vantage6
3231

3332
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.
3433

35-
![](./pht-workflow.png)
34+
```mermaid
35+
sequenceDiagram
36+
actor Onderzoeker
37+
participant Server
38+
participant Aggregator as Secure Aggregation Server (SAS)
39+
participant Registry as Docker Registry
40+
41+
box "Meerdere worker-nodes"
42+
participant Node as Node(s)
43+
end
44+
45+
Onderzoeker->>Server: Authenticatie
46+
Onderzoeker->>Server: Taak specificatie (Server API)
47+
48+
Aggregator->>Server: Hoofdtaak ophalen
49+
Aggregator->>Registry: Docker-image ophalen (hoofdtaak)
50+
51+
Aggregator->>Server: Subtaken aanmaken
52+
53+
loop Voor elke subtaak (parallel uitgevoerd)
54+
Node->>Server: Subtaak ophalen
55+
Node->>Registry: Docker-image ophalen (subtaak)
56+
Node->>Server: Resultaat van subtaak opslaan
57+
Aggregator->>Server: Subtaakresultaten ophalen
58+
Aggregator->>Aggregator: Verificatie en aggregatie
59+
end
60+
61+
Aggregator->>Server: Eindresultaat van hoofdtaak indienen
62+
63+
Onderzoeker->>Server: Eindresultaat ophalen
64+
```
3665

3766
???+ note "**Authenticatie**"
3867

@@ -112,9 +141,12 @@ Door de architectuur op deze manier in componenten op te delen, wordt een modula
112141

113142
TO DO: uitleggen hoe al deze componenten eigenlijk een-op-een te vertalen zijn naar de moderne lakehouse architectuur.
114143

144+
Om te voldoen aan uiteenlopende databehoeften (zoals klassieke rapportages, analyses, delen van data en data science) wordt door gezondheidsinstellingen veelal gebruik gemaakt van een gescheiden data warehouse, een datalake en andere analytische omgevingen. Deze scheiding leidt tot duplicatie van data, extra complexiteit en vermoeilijking van data governance.
115145

146+
Een lakehouse architectuur lost deze problematiek op door de functionaliteiten van de verschillende omgevingen samen te voegen. Alle data wordt opgeslagen in een flexibel en schaalbaar platform. Er is slechts één opslaglaag op basis van open standaarden, waarbij zowel ongestructureerde als gestructureerde data kan worden opgeslagen. De PLUGIN datastation componenten vormen de basis voor een moderne lakehouse architectuur.
116147

148+
### gestandaardiseerde data modellen (FHIR/OMOP/openEHR)
117149

118-
### Node Beheerder
150+
### APIs (SQL/No-SQL/Docker)
119151

120-
Vereist voor PLUGIN?
152+
### Storage

docs/implementaties/PLUGIN/proces.md

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ 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. 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.
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](https://cris.maastrichtuniversity.nl/en/publications/a-governance-framework-for-federated-learning-projects-in-healthc/).
21+
22+
* **Infrastructure User Agreement:** Een overeenkomst tussen elk data station en de beheerder van de infrastructuur. Hierin staan de rollen en verantwoordelijkheden op het gebied van infrastructuur van de partijen beschreven. Dit contract staat los van het project of de samenwerking, en kan dus worden hergebruikt voor toekomstige projecten.
23+
* **Consortium Agreement:** Hoewel er patientdata op individuele basis wordt verstuurd, beschrijft dit document de omgang met intellectueel eigendom, welke partijen toestemming hebben om nieuwe taken te starten, en wie recht heeft de resultaten te publiceren.
24+
* **Data Processing or Joint Controller Agreement:** In het geval van federated learning vindt verwerking op het data station plaats van de eigenaar van de data, op verzoek van de instantie die het algoritme rondstuurt. Voor de AVG is dan ook een data processing agreement nodig. Wanneer deelnemende ziekenhuizen ook deelnemen in de ontwikkeling van de rondgestuurde algoritmen, is een joint controller agreement nodig om aan te geven dat beide partijen betrokken waren bij de uitwerking van de verwerking.
2125

2226
## Uitvoeren van een federatieve taak
2327

@@ -66,35 +70,6 @@ PLUGIN/vantage6 is van oorsprong opgezet voor het ondersteunen van federatief le
6670

6771
Dit sluit direct aan bij de usecase [Geef antwoord op dataverzoek](../../applicatie/laag-3/data-station.md#415-geef-antwoord-op-dataverzoek).
6872

69-
```mermaid
70-
sequenceDiagram
71-
actor Onderzoeker
72-
participant Server
73-
participant Aggregator as Aggregator-node
74-
participant Registry as Docker Registry
75-
76-
box "Meerdere worker-nodes"
77-
participant Node as Node(s)
78-
end
79-
80-
Onderzoeker->>Server: Taak aanmaken (Server API)
81-
82-
Aggregator->>Server: Hoofdtaak ophalen
83-
Aggregator->>Registry: Docker-image ophalen (hoofdtaak)
84-
85-
Aggregator->>Server: Subtaken aanmaken
86-
87-
loop Voor elke subtaak (parallel uitgevoerd)
88-
Node->>Server: Subtaak ophalen
89-
Node->>Registry: Docker-image ophalen (subtaak)
90-
Node->>Server: Resultaat van subtaak opslaan
91-
end
92-
93-
Aggregator->>Server: Subtaakresultaten ophalen
94-
Aggregator->>Server: Eindresultaat van hoofdtaak indienen
95-
96-
Onderzoeker->>Server: Eindresultaat ophalen
97-
```
9873

9974
=== "Data pooling (doorleveren van data)"
10075

0 commit comments

Comments
 (0)