Skip to content

Commit 41c0d8a

Browse files
authored
Merge pull request #36 from Health-RI/translation-and-fl-additions
Translation and fl additions
2 parents ae107e3 + ed6081f commit 41c0d8a

File tree

17 files changed

+249
-49
lines changed

17 files changed

+249
-49
lines changed

docs/assets/aioc-bestand-flow.png

64.5 KB
Loading

docs/data-stations-als-hoeksteen.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ In **laag 2** wordt een begin gemaakt met het standaardiseren van de data. Het i
4242

4343
**Laag 3 is het hart van de zandloper** en fungeert als een brug tussen de twee onderste en twee bovenste lagen. In deze laag worden de data en metadata (1) klaargezet voor gebruik en FAIRificatie proces en (2) verbonden aan het netwerk van beveiligde verwerkingsomgevingen. Deze laag is het meest cruciale om interoperabiliteit te realiseren. Daarvoor wordt een set van minimale, open en technologie-neutrale standaarden gedefinieert. Het idee van een datastation sluit aan bij het concept van data producten in de DSSC.
4444

45-
4645
??? abstract "Data product"
4746
Primair gebruik heeft betrekking op de directe zorgverlening aan een patiënt, terwijl secundair gebruik betrekking heeft op het hergebruik van gegevens voor onder andere onderzoek, beleid en innovatie.
4847

docs/discussie/centraal-vs-decentraal.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ Om dit punt te adresseren zou een (inter)nationaal certificeringskader komen waa
2323

2424
De grondslag voor secundair gebruik in de EHDS is gebaseerd op een vergunning of een gegevensverzoek. De HDAB is verantwoordelijk voor de uitgifte van de attestatie dat een datagebruiker beide vormen van secundair gebruik.
2525

26-
In het geval dat een centrale BVO wordt gebruikt om uitvoering te geven aan de vergunning of gegevensverzoek, zullen de autorisatie mechanismen ook in het centrale systeem geimplementeerd moeten worden. Dit zou bijvoorbeeld kunnen met een persoonsgebonden credential waarmee de gebruiker toegang krijgt tot de BVO.
26+
In het geval dat een centrale BVO wordt gebruikt om uitvoering te geven aan de vergunning of gegevensverzoek, zullen de autorisatie mechanismen ook in het centrale systeem geïmplementeerd moeten worden. Dit zou bijvoorbeeld kunnen met een persoonsgebonden credential waarmee de gebruiker toegang krijgt tot de BVO.
2727

28-
Het autorisatiemechanisme is voor een decentrale BVO complexer: er zal een mechanisme moeten worden geimplementeerd waarbij het datastation kan verifieren of een bepaald algoritme daadwerklijk uitgevoerd mag worden. Binnen KIK-V wordt het NUTS framework gebruikt om de vertrouwensrelaties digitaal vast te leggen binnen het netwerk. Deze oplossingsrichting is generaliseerbaar op termijn dit te combineren met de eIDAS business wallet.
28+
Het autorisatiemechanisme is voor een decentrale BVO complexer: er zal een mechanisme moeten worden geïmplementeerd waarbij het datastation kan verifieren of een bepaald algoritme daadwerkelijk uitgevoerd mag worden. Binnen KIK-V wordt het NUTS framework gebruikt om de vertrouwensrelaties digitaal vast te leggen binnen het netwerk. Deze oplossingsrichting is generaliseerbaar op termijn dit te combineren met de eIDAS business wallet.
2929

30-
Kijkend naar PLUGIN en het onderliggende vantage6 framework zien wij dat een dergelijk _trust_ mechanisme nog niet is geimplementeerd. Het belagnrijkste autorisatiemechanisme loopt via de container registry waar goedgekeurde algoritmes in zijn opgeslagen. In het geval van federated processing, met een vergunning als grondslag, zal er dus nog een _trust_ mechanisme geimplementeerd moeten worden waarbij de DAAMS het bronsysteem is dat de (digitale) certificaten uitgeeft. Het concept van _smart contracts_ zou hier een technische oplossing voor kunnen bieden.[@short2021execution] Alhoewel dergelijke oplossingen technisch bewezen zijn, is er nog geen uniforme standaard noch is de technologie voldoende volwassen voor grootschalig gebruik.
30+
Kijkend naar PLUGIN en het onderliggende vantage6 framework zien wij dat een dergelijk _trust_ mechanisme nog niet is geïmplementeerd. Het belangrijkste autorisatiemechanisme loopt via de container registry waar goedgekeurde algoritmes in zijn opgeslagen. In het geval van federated processing, met een vergunning als grondslag, zal er dus nog een _trust_ mechanisme geïmplementeerd moeten worden waarbij de DAAMS het bronsysteem is dat de (digitale) certificaten uitgeeft. Het concept van _smart contracts_ zou hier een technische oplossing voor kunnen bieden.[@short2021execution] Alhoewel dergelijke oplossingen technisch bewezen zijn, is er nog geen uniforme standaard noch is de technologie voldoende volwassen voor grootschalig gebruik.
3131

3232
## 7.1.4. Specificatie van _data visting_ standaarden
3333

docs/implementaties/PLUGIN/applicatie.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ 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+
2830

2931
## Federatief leren met PLUGIN/vantage6
3032

docs/implementaties/PLUGIN/architectuur.md

Whitespace-only changes.

docs/implementaties/PLUGIN/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PLUGIN Healthcare
22

3-
Het Platform voor Uitwisseling en Hergebruik van Klinische Data Nederland (PLUGIN) beoogt klinische data in de Elektronische Patiëntendossiers (EPDs) van Nederlandse ziekenhuizen te ontsluiten op een veilige, schaalbare en duurzame wijze. PLUGIN is van oorsprong een initiatief van [Dutch Hospital Data](https://www.dhd.nl/), [Integraal Kankercentrum Nederland](https://iknl.nl/) en [Expertisecentrum Zorgalgoritmen](https://zorgalgoritmen.nl/) De basis infrastructuur maakt gebruik van [vantage6](https://vantage6.ai/) en maakt het mogelijk medische data decentraal beschikbaar te stellen voor zowel algemene gegevensuitwisseling als federatief leren en analyseren.
3+
Het Platform voor Uitwisseling en Hergebruik van Klinische Data Nederland (PLUGIN) beoogt klinische data in de Elektronische Patiëntendossiers (EPDs) van Nederlandse ziekenhuizen te ontsluiten op een veilige, schaalbare en duurzame wijze. PLUGIN is van oorsprong een initiatief van [Dutch Hospital Data](https://www.dhd.nl/), [Integraal Kankercentrum Nederland](https://iknl.nl/) en [Expertisecentrum Zorgalgoritmen](https://zorgalgoritmen.nl/) De basis infrastructuur maakt gebruik van [vantage6](https://vantage6.ai/) en maakt het mogelijk medische data decentraal beschikbaar te stellen voor zowel algemene gegevensuitwisseling als federatief leren en analyseren.
44

5-
Met use-cases [AI-ondersteund coderen](https://www.dhd.nl/producten-diensten/registratie-data/ondersteuning-bij-medische-codering/ai-ondersteund-coderen) en [het vullen en verrijken van de NKR](https://www.icthealth.nl/nieuws/veilig-en-efficient-data-delen-dankzij-het-plugin-initiatief) is aangetoond dat de infrastructuur schaalbaar in kan worden gezet voor de drie soorten van gefedereerde gegevensbewerking:
5+
Met use-cases [AI-ondersteund coderen](https://www.dhd.nl/producten-diensten/registratie-data/ondersteuning-bij-medische-codering/ai-ondersteund-coderen) en [het vullen en verrijken van de NKR](https://www.icthealth.nl/nieuws/veilig-en-efficient-data-delen-dankzij-het-plugin-initiatief) is aangetoond dat de infrastructuur schaalbaar in kan worden gezet voor de drie soorten van gefedereerde gegevensbewerking.
66

77
De PLUGIN infrastructuur implementeert verschillende componenten zoals in onderstaand diagram en tabel is weergegeven en worden in de volgende pagina's uitgelegd.
88

@@ -21,7 +21,7 @@ De PLUGIN infrastructuur implementeert verschillende componenten zoals in onders
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 |
2323
| vantage6 node | decentrale component van processing hub die de lokale berekeningen uitvoert |
24-
| algoritme container | tijdelijke lokale kopie van het algoritme dat wordt uitgevoeerd, wordt aangemaakt en verwijderd door de vantage6 node |
24+
| algoritme container | tijdelijke lokale kopie van het algoritme dat wordt uitgevoerd, wordt aangemaakt en verwijderd door de vantage6 node |
2525
| PLUGIN-Lake | Lakehouse voor serverless opslag en ETL transformaties op het datastation |
2626

2727

docs/implementaties/PLUGIN/informatie.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
# Informatie
2+
3+
## Use Cases
4+
5+
Een vijftal use cases worden in PLUGIN uitgewerkt:
6+
7+
* [AI-ondersteund coderen](https://www.dhd.nl/producten-diensten/registratie-data/ondersteuning-bij-medische-codering/ai-ondersteund-coderen)
8+
* [het vullen en verrijken van de NKR](https://www.icthealth.nl/nieuws/veilig-en-efficient-data-delen-dankzij-het-plugin-initiatief)
9+
* Signalering van metastasen op afstand
10+
* Dashboard voor de Palliatieve Zorg
11+
* Voorspellen klinische verslechtering, delier, en kwetsbaarheid na ontslag
12+
13+
### AIOC
14+
15+
Medisch codeurs leggen de aandoeningen waaraan patiënten lijden vast in ICD-10 codes. Leidend hierbij zijn de brieven en verslagen die medisch specialisten hebben geschreven over de patiënt, de aandoeningen waaraan de patiënt lijdt en de behandelingen die de patiënt ondergaat. vanaf 2023 is de codering van dagopnamen verplicht. Echter, de kwaliteit en uniformiteit van de diagnoseregistratie van dagopnamen in de LBZ nam al jaren af. Daarnaast neemt het aantal medisch codeurs in ziekenhuizen drastisch af.
16+
17+
Daarom is besloten om een AI-model te ontwikkelen dat automatisch dagopnamen kan voorzien van een ICD-10 codering. Het NLP-model (AI) is ontwikkeld op ongestructureerde data (ontslabrieven, polibrieven, OK-verslagen en PA-verslagen). Het model is momenteel (okt 2023) in staat om 70% van de dagopnamen te voorzien van een automatische codering. Het AI-model heeft aan de hand van honderdduizenden opnamen, ICD-10 coderingen en miljoenen brieven en verslagen verbanden leren leggen tussen de termen die medisch specialisten gebruiken om de aandoeningen van de patiënten te omschrijven en de ICD-10 codes waarmee deze aandoeningen dienen te worden gecodeerd. Het AI-model is nu in staat om een substantieel deel (gemiddeld 65%) van de codering van de dagopnamen van medisch codeurs uit handen te nemen. Hierdoor krijgen medisch codeurs meer ruimte om zich te richten op ingewikkelder codeerwerk, zoals dat van de klinische opnamen.
18+
19+
## Data
20+
21+
Om de interoperabiliteit van data te garanderen (zie Semantische en syntactische interoperabiliteit) voor het trainen en toepassen van modellen binnen PLUGIN, wordt EPD-data gestandaardiseerd naar een landelijk model, uitgedrukt in [FHIR profielen](https://plugin.healthcare/fhir/artifacts.html#plugin-profielen). Vereiste data wordt door middel van extractiescripts en handmatig werk klaar gezet in een uniforme standaard, en in een vaste folderstructuur. De gefedereerde analyses, modellen en vragen kunnen hierdoor uitgaan van vaste terminologie en locaties van data, ongeacht op welke node ze worden uitgevoerd. Dankzij deze standaardisering is data hierna voor meerdere doeleinden bruikbaar.
22+
23+
### Data-extractie
24+
25+
De extractie en standaardisering van EPD-data naar de gewenste FHIR profielen is afhankelijk van de EPD-leverancier. In het geval van Chipsoft Hix is scripting beschikbaar. In het geval van dagopname gerelateerde brongegevens biedt Epic functionaliteit aan voor het exporteren hiervan.Data dient te worden gepseudonimiseerd voordat het beschikbaar wordt gemaakt in het data station. Hiervoor zijn voor zowel EPIC als Chipsoft HiX scripts. In het geval van AIOC worden gegevens beschikbaar gesteld op het niveau van de individuele opname, informatie over zorgactiviteiten en ongestructureerde data. Deze data is afkomstig uit ontslagbrieven, polibrieven, operatieverslagen en de PA-verslagen.
126
# Gebruik van informatiemodellen en thesauri in PLUGIN
227

328

docs/implementaties/PLUGIN/infrastructuur.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
### Datastation Hardware
1+
# Infrastructuur
2+
3+
Onderscheid wordt gemaakt tussen *trainingsziekenhuizen* en *inferentieziekenhuizen*. Bij inferentieziekenhuizen wordt wel gebruik gemaakt van het AI-model, maar hier vindt geen training plaats. Deze ziekenhuizen leveren dus geen data waarmee het model wordt ontwikkeld. In dit geval zijn er lichtere systeemeisen voor het datastation.
4+
5+
Het datastation voor PLUGIN is te realiseren als een standaard Linux server. Dit mag ook een VM zijn. Hierop wordt een Vantage6 Node geinstalleerd, een aantal gebruikersaccounts aangemaakt en een standaard folderstructuur ingesteld. Zowel de Node zelf als de daarop uitgevoerde algoritmen zoals de PLUGIN-ML pipeline worden gedraaid binnen Docker.
6+
7+
## Benodigdheden
8+
9+
### Data Station Hardware
210

311
PLUGIN verwacht bij voorkeur de volgende hardware-specificaties:
412

513
* ≥ 16 cores, x86/x64 CPU
614
* ≥ 56 GB CPU RAM
715
* ≥ 360 GB SSD
816
* virtualization enabled
9-
* GPU (optioneel, maar aanbevolen):
17+
* GPU (voor trainingsziekenhuizen):
1018
* CUDA compatible NVIDIA kaart
1119
* 16 GB GPU RAM
1220

13-
1421
Specificaties zijn echter sterk afhankelijk van de uit te voeren algoritmen.
1522

1623
### Netwerk
@@ -24,3 +31,17 @@ Specificaties zijn echter sterk afhankelijk van de uit te voeren algoritmen.
2431
* Besturingssysteem: Ubuntu 22.04+, Windows 10 of hoger, macOS 13.x of hoger
2532
* Docker of Docker Desktop
2633
* Python versie 3.10+
34+
35+
## AIOC Folderstructuur
36+
37+
Een eenduidige folderstructuur wordt aangehouden op de geïnstalleerde server voor de werking van het model. In de configuratie wordt per ziekenhuis aangegeven waar het model naar de data moet zoeken. Hiervoor wordt een standaard folderstructuur aangehouden.
38+
39+
![AIOC bestand flow](../../assets/aioc-bestand-flow.png)
40+
41+
De bestanden aangeleverd door het ziekenhuis komen binnen in een map aanleveringen per aanlevering. De resultaten van het model kunnen vanuit de map epd_output opgehaald worden en ingelezen worden in het EPD.
42+
43+
* **aanleveringen** - In deze map levert het ziekenhuis de aanleverfolders aan
44+
* **coderingen** - De AIOC applicatie maakt hier een werkmap aan waar onder andere een kopie van de aangeleverde data, checkpoint bestanden en resultaten komen te staan. Dit is vooral een werkmap voor de data scientists.
45+
* **epd_output** - Hier worden de uiteindelijke resultaten/output bestanden klaargezet. Deze bestanden kunnen direct in het EPD geïmporteerd worden.
46+
* **latest** - In deze map wordt het laatste outputbestand van de AIOC applicatie geplaatst. Het bestand in deze map kan gebruikt worden om de resultaten te importeren in het EPD.
47+
* **TRAIN_DATA** - In deze map worden de trainingsdata opgeslagen. Deze map is alleen voor trainingsziekenhuizen en bevat data van meerdere jaren met ICD-10 codering om het model te trainen.

docs/implementaties/PLUGIN/proces.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,36 @@ PLUGIN/vantage6 is van oorsprong opgezet voor het ondersteunen van federatief le
6666

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

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+
```
98+
6999
=== "Data pooling (doorleveren van data)"
70100

71101
De infrastructuur kan ook worden gebruikt om data te verzamelen op een centrale locatie, zoals een Processing Hub. Dit wordt "Data Pooling" genoemd. Hierbij is het "algoritme" een selectiequery.

docs/infrastructuur/standaarden.en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The following are the standards that have been used or are in the process of bei
2525

2626
**Component** | **Purpose**
2727
:--|:--
28-
[DuckDB](https://duckdb.org) | **DuckDB** is an in-memory, embeddable, columnar database management system designed for analytical workloads. It is simple to use becasue it requires no external dependencies and data can be stored in a persistent, single-file database. It offers a flexible extension mechanism that allows defining new data types, file formats and SQL syntax.
28+
[DuckDB](https://duckdb.org) | **DuckDB** is an in-memory, embeddable, columnar database management system designed for analytical workloads. It is simple to use because it requires no external dependencies and data can be stored in a persistent, single-file database. It offers a flexible extension mechanism that allows defining new data types, file formats and SQL syntax.
2929
[Polars](https://pola.rs) | **Polars** is an open-source library for data manipulation, known for being one of the fastest data processing solutions on a single machine. It features a well-structured, typed API that is both expressive and easy to use.
3030
[Kuzu](https://docs.kuzudb.com/) | **Kuzu** is an embedded property graph database that supports the Cypher query language. It is optimized for handling complex join-heavy analytical workloads on very large graphs.
3131
[LanceDB](https://lancedb.com/) | **LanceDB** is an open-source multimodal lakehouse that can be used as a vector database and memory for large-scale Generative AI and Search applications, and as a data management platform for large-scale AI workflows: model fine-tuning and training, feature engineering and explorative data analytics over petabyte-size Lance datasets.

0 commit comments

Comments
 (0)