Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f1a3c2c
Merge pull request #850 from medizininformatik-initiative/release
Flow191 Jul 4, 2025
ba8faf4
Merge pull request #854 from medizininformatik-initiative/main
SebStaeubert Jul 8, 2025
4e3e18d
Update pages.yml
SebStaeubert Jul 8, 2025
78f3eb5
Merge pull request #855 from medizininformatik-initiative/825-github-…
SebStaeubert Jul 8, 2025
f69a076
Update _config.yml
SebStaeubert Jul 8, 2025
3559ada
Merge branch 'main' into 825-github-pages-mit-github-actions-erzeugen-1
SebStaeubert Jul 8, 2025
e0d4ef5
Merge pull request #856 from medizininformatik-initiative/825-github-…
SebStaeubert Jul 8, 2025
237546c
Delete _config.yml
SebStaeubert Jul 8, 2025
84f15ea
Delete Gemfile
SebStaeubert Jul 8, 2025
72afdd6
Delete .github/workflows/pages.yml
SebStaeubert Jul 8, 2025
4c3f4d6
Update full_toolchain_description.md
SebStaeubert Jul 8, 2025
1329af3
Update README.md
SebStaeubert Jul 8, 2025
ee72508
Update full_toolchain_description.md
SebStaeubert Jul 8, 2025
4324144
Update full_toolchain_description.md
SebStaeubert Jul 8, 2025
b93ad2e
Update README.md
SebStaeubert Jul 8, 2025
b209e57
Update README.md
SebStaeubert Jul 8, 2025
dc31972
Update README.md
SebStaeubert Jul 8, 2025
41b77e6
Update README.md
SebStaeubert Jul 8, 2025
ffd64f0
Update README.md
SebStaeubert Jul 8, 2025
93c099d
Update DB_description.md
SebStaeubert Jul 8, 2025
6555d0e
Update README.md
SebStaeubert Jul 8, 2025
a5c1df9
Update README.md
SebStaeubert Jul 8, 2025
7f08cca
Update README.md
SebStaeubert Jul 8, 2025
b603c42
Update Readme.md
SebStaeubert Jul 8, 2025
ccbbad0
Update Readme.md
SebStaeubert Jul 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 0 additions & 53 deletions .github/workflows/pages.yml

This file was deleted.

3 changes: 0 additions & 3 deletions Gemfile

This file was deleted.

8 changes: 4 additions & 4 deletions Postgres-cds_hub/DB_description.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ Man kann die verschiedenen Bereiche (Schemata) in Schnittstellenschemata und fun
Funktionale Schemata dienen der inhaltlichen Gliederung der Daten innerhalb der Datenbank. Im Folgenden werden die verschiedenen Bereiche der CDS-HUB DB vorgestellt.

### cds2db_in / cds2db_out
Schnittstellen-Schema zum Importieren von FHIR-Daten (_in) sowie zur Umwandlung dieser Daten in typisierte relationale Datenbanktabellen. Die Umsetzung erfolgt in dieser Referenzimplementierung im Modul CDS2DB mithilfe von R-Skripten ([R-cds2db](../R-cds2db/cds2db/R)
Schnittstellen-Schema zum Importieren von FHIR-Daten (_in) sowie zur Umwandlung dieser Daten in typisierte relationale Datenbanktabellen. Die Umsetzung erfolgt in dieser Referenzimplementierung im Modul CDS2DB mithilfe von R-Skripten ([R-cds2db](../R-cds2db/cds2db)
). Die in diesem Schema angelegten Tabellen entsprechen den Strukturen der FHIR-Ressourcen.


### db2dataprocessor_in / db2dataprocessor_out
Schnittstellen-Schema, um zum einen Daten aus dem Kern dem Modul DataProcessor (_out) zur Verfügung zu stellen und zum anderen berechnete Daten von diesem entgegenzunehmen (_in) und wieder im Kern dauerhaft zu speichern. Sämtliche inhaltliche Logik und Berechnungen finden im Modul DataProcessor statt und können z. B. über R-Skripte implementiert werden ([R-dataprocessor](../R-dataprocessor/dataprocessor/R)). Die in diesem Schema angelegten Tabellen entsprechen den Strukturen der FHIR-Ressourcen (_out) sowie den Strukturen, die fürs Frontend benötigt werden. Weitere Tabellen können für zusätzliche Funktionalitäten erforderlich werden.
Schnittstellen-Schema, um zum einen Daten aus dem Kern dem Modul DataProcessor (_out) zur Verfügung zu stellen und zum anderen berechnete Daten von diesem entgegenzunehmen (_in) und wieder im Kern dauerhaft zu speichern. Sämtliche inhaltliche Logik und Berechnungen finden im Modul DataProcessor statt und können z. B. über R-Skripte implementiert werden ([R-dataprocessor](../R-dataprocessor/dataprocessor)). Die in diesem Schema angelegten Tabellen entsprechen den Strukturen der FHIR-Ressourcen (_out) sowie den Strukturen, die fürs Frontend benötigt werden. Weitere Tabellen können für zusätzliche Funktionalitäten erforderlich werden.

### db2frontend_in / db2frontend_out
Schnittstellen-Schema, um Daten aus dem Kern an ein Frontend zu übergeben (_out) bzw. von diesem entgegenzunehmen (_in) und im Kern zu speichern. Die in diesem Schema angelegten Tabellen entsprechen den Strukturen des Frontends.
Expand Down Expand Up @@ -66,9 +66,9 @@ Die CDS-HUB DB ist ein Bestandteil des Datenflusses. Daher ist der Beschreibung
Um den Datenfluss zu gewährleisten und rückverfolgbar zu machen, werden zu allen Daten (Tabellen) immer datenbankinterne technische Primärschlüssel angelegt und gegebenenfalls bei der Verarbeitung weitergegeben. Diese technischen Primärschlüssel können redundant zu den in den Daten enthaltenen Primärschlüsseln sein (z. B. FHIR-IDs).

## Erzeugung der Datenbank
Zur Erzeugung der Strukturen und Funktionalität der Datenbank werden bei der Initialisierung Skripte in einer durch Nummerierung vorgegebenen Reihenfolge ausgeführt. Diese Skripte initialisieren die Datenbank zum aktuellen Entwicklungsstand und können zukünftigen Änderungen unterliegen. Der genaue Inhalt ist im jeweiligen SQL-Skript nachzulesen (siehe [Postgres-cds_hub/init (SQL-Skripte)](../Postgres-cds_hub/init)).
Zur Erzeugung der Strukturen und Funktionalität der Datenbank werden bei der Initialisierung Skripte in einer durch Nummerierung vorgegebenen Reihenfolge ausgeführt. Diese Skripte initialisieren die Datenbank zum aktuellen Entwicklungsstand und können zukünftigen Änderungen unterliegen. Der genaue Inhalt ist im jeweiligen SQL-Skript nachzulesen (siehe [Postgres-cds_hub/init (SQL-Skripte)](https://github.com/medizininformatik-initiative/INTERPOLAR/tree/main/Postgres-cds_hub/init)).

Teilweise werden diese Skripte mit Hilfe von Templates und Konfigurationsdateien erzeugt. Dies betrifft alle Skripte zum Anlegen von Tabellen und deren Spalten. Die Definition der Tabellen für das Modul 'cds2db' (insbesondere die Definition der Tabellen für die FHIR Ressourcen) finden sich in der Datei [Table_Description.xlsx](../R-cds2db/cds2db/inst/extdata/Table_Description.xlsx). Die Definition der Tabellen für das Modul 'frontend' sind in der Datei [Frontend_Table_Description.xlsx](../R-db2frontend/db2frontend/inst/extdata/Frontend_Table_Description.xlsx) angegeben. Zusätzlich dazu gibt es noch eine Definition der Tabellenschemata und Rechte, die im Generierungsprozess benötigt wird (siehe [User_Schema_Rights_Definition.xlsx](./init/template)) sowie die eigentlichen Templates im selben Ordner. Durch das R-Script [Init_02_Create_Database_Scripts.R](../R-cds2db/cds2db/R/Init_02_Create_Database_Scripts.R) wird der generierte Teil der SQL-Scripte erzeugt.
Teilweise werden diese Skripte mit Hilfe von Templates und Konfigurationsdateien erzeugt. Dies betrifft alle Skripte zum Anlegen von Tabellen und deren Spalten. Die Definition der Tabellen für das Modul 'cds2db' (insbesondere die Definition der Tabellen für die FHIR Ressourcen) finden sich in der Datei [Table_Description.xlsx](../R-cds2db/cds2db/inst/extdata/Table_Description.xlsx). Die Definition der Tabellen für das Modul 'frontend' sind in der Datei [Frontend_Table_Description.xlsx](../R-db2frontend/db2frontend/inst/extdata/Frontend_Table_Description.xlsx) angegeben. Zusätzlich dazu gibt es noch eine Definition der Tabellenschemata und Rechte, die im Generierungsprozess benötigt wird (siehe [User_Schema_Rights_Definition.xlsx](init/template/User_Schema_Rights_Definition.xlsx)) sowie die eigentlichen Templates im selben Ordner. Durch das R-Script [Init_02_Create_Database_Scripts.R](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/Postgres-cds_hub/R-initcdstoolchain/initcdstoolchain/R/Init_02_Create_Database_Scripts.R) wird der generierte Teil der SQL-Scripte erzeugt.

Bei der Initalisierung der Datenbank ist darauf zu achten das alle Skripte fehlerfrei ausgeführt werden, um die Funktionalität zu gewährleisten.

Expand Down
10 changes: 5 additions & 5 deletions R-cds2db/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ Die Ausleitung der FHIR-Daten in die Datenbank sollte möglichst 1 mal täglich

## Konfiguration

Der ETL-Prozess kann über die Datei [cds2db_config.toml](cds2db_config.toml) konfiguriert werden. Alle Parameter sind in der Datei durch Kommentare beschrieben. Hier werden u.a. sowohl die Logging-Parameter, als auch die Parameter zum Zugriff auf den FHIR-Server angegeben. Außerdem stehen Debug-Parameter zur Verfügung. Damit kann man für ältere Zeiträume Daten übertragen, falls für Tests keine aktuellen Daten vorliegen.
Der ETL-Prozess kann über die Datei [cds2db_config.toml](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/R-cds2db/cds2db_config.toml) konfiguriert werden. Alle Parameter sind in der Datei durch Kommentare beschrieben. Hier werden u.a. sowohl die Logging-Parameter, als auch die Parameter zum Zugriff auf den FHIR-Server angegeben. Außerdem stehen Debug-Parameter zur Verfügung. Damit kann man für ältere Zeiträume Daten übertragen, falls für Tests keine aktuellen Daten vorliegen.

### Extraktion relevanter Patienten

Die Ermittlung der Patienten relevanter Stationen erfolgt über eine der beiden folgenden Varianten.

#### Variante 1: Die relevanten Patienten werden über Informationen aus den FHIR-Daten ermittelt

Bei dieser Variante ist es notwendig, dass die relevanten Stationen aus dem FHIR-Profil [Encounter](https://www.medizininformatik-initiative.de/Kerndatensatz/Modul_Fall/EncounterKontaktGesundheitseinrichtung.html) ausgelesen werden können.\
Bei dieser Variante ist es notwendig, dass die relevanten Stationen aus dem FHIR-Profil <a href="https://www.medizininformatik-initiative.de/Kerndatensatz/Modul_Fall/EncounterKontaktGesundheitseinrichtung.html" target="_blank" rel="noopener noreferrer">Encounter</a> ausgelesen werden können.\
Ziel ist es Patienten-IDs von Encountern zu finden, die bestimmte Eigenschaften in den FHIR-Daten aufweisen. Idealerweise sollte es so etwas sein wie, der Encounter ist noch nicht abgeschlossen und als ServiceProvider ist der gesuchte Stationsname angegeben oder der Encounter referenziert eine bestimmte Location.\
Die Encounter können also über beliebige Einträge identifiziert werden. Es ist frei konfigurierbar und auf die lokalen Gegebenheiten am DIZ einstellbar. Die Beschreibung der Einstellungsmöglichkeiten befinden sich direkt in der toml-Datei als Kommentar zu den ENCOUNTER_FILTER_PATTERN.

Expand All @@ -23,11 +23,11 @@ Die Encounter können also über beliebige Einträge identifiziert werden. Es is
#### Variante 2: Die relevanten Patienten werden über Informationen aus einer Textdatei mit Patientenliste ermittelt

Diese Variante sollte genommen werden, wenn es keine Möglichkeit gibt, die aktuellen Fälle der Stationen über die Encounter zu ermitteln.
Bei dieser Variante muss das DIZ eine Textdatei erzeugen, die folgende Form hat: [source_PIDs](source_PIDs.txt). Diese Datei muss ständig aktualisiert werden. Wie ein DIZ diese Datei erzeugt, ist ihm selbst überlassen. Um diese Variante 2 zu aktivieren und damit die Variante 1 auszuschalten, muss der Parameter 'PATH_TO_PID_LIST_FILE' aktiviert werden und der Pfad auf die entsprechende Datei zeigen.
Bei dieser Variante muss das DIZ eine Textdatei erzeugen, die folgende Form hat: [source_PIDs.txt](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/R-cds2db/source_PIDs.txt). Diese Datei muss ständig aktualisiert werden. Wie ein DIZ diese Datei erzeugt, ist ihm selbst überlassen. Um diese Variante 2 zu aktivieren und damit die Variante 1 auszuschalten, muss der Parameter 'PATH_TO_PID_LIST_FILE' aktiviert werden und der Pfad auf die entsprechende Datei zeigen.

## Ausführung des Moduls

Das R-Skript [StartRetrieval.R](StartRetrieval.R) startet das Retrieval für den ETL-Prozess.
Das R-Skript [StartRetrieval.R](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/R-cds2db/StartRetrieval.R) startet das Retrieval für den ETL-Prozess.
Dieses kann an der Console manuell über den folgenden Befehl ausgeführt werden:

```console
Expand All @@ -36,4 +36,4 @@ docker compose run --rm --no-deps r-env Rscript R-cds2db/StartRetrieval.R

## Details der Implementierung

Weitere Details siehe [README](./README.md) des R Packages cds2db.
Weitere Details siehe [README](./cds2db/) des R Packages cds2db.
4 changes: 2 additions & 2 deletions R-cds2db/cds2db/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ Es gibt eines Excel Datei Namens [Table-Description](./inst/extdata/Table_Descr

### Herunterladen und verflachen der FHIR-Ressourcen

Auf Grundlage der relevanten Patienten werden die FHIR-Ressourcen, unter Verwendung der definierten Table-Description, heruntergeladen. Aus den JSON-Struktur der heruntergeladenen Ressourcen entstehen in einen nächsten Schritt flache Tabellen auf Basis der Table-Description. Für diese Schritte wird das [fhircrackr-Package]('https://cran.r-project.org/web/packages/fhircrackr/index.html') verwendet.
Auf Grundlage der relevanten Patienten werden die FHIR-Ressourcen, unter Verwendung der definierten Table-Description, heruntergeladen. Aus den JSON-Struktur der heruntergeladenen Ressourcen entstehen in einen nächsten Schritt flache Tabellen auf Basis der Table-Description. Für diese Schritte wird das <a href="https://cran.r-project.org/web/packages/fhircrackr/index.html" target="_blank" rel="noopener noreferrer">fhircrackr-Package</a> verwendet.

### Schreiben der Ressourcen-Tabellen in die Datenbank

Die flachen Tabellen werden in eine Postgres-Datenbank überführt, dazu wird eine Datenbankverbindung mit den angegebenen Anmeldeinformationen aus der [config-Datei](../../cds_hub_db_config.toml) für die Datenbankverbindungen erstellt.
Die flachen Tabellen werden in eine Postgres-Datenbank überführt, dazu wird eine Datenbankverbindung mit den angegebenen Anmeldeinformationen aus der [config-Datei](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/cds_hub_db_config.toml) für die Datenbankverbindungen erstellt.
6 changes: 3 additions & 3 deletions R-dataprocessor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

Generell ist das Modul "dataprocessor" dazu gedacht, Daten zu transformieren und für eine Ausgabe im Frontend oder für eine Ausleitung zur Verfügung zu stellen.

In Version [0.2.x](tags) nutzt es die im [Modul "cds2db"](R-cds2db) typisierten Daten aus der Postgres-Datenbank, um Tabellen mit relevanten Patienten und Fallinformationen zu erstellen. Diese werden auch zurück in die Postgres-Datenbank geschrieben und anschließend über das [Modul "db2frontend"](R-db2frontend) dem Frontend zur Verfügung gestellt.
Seit Version [0.2.x](https://github.com/medizininformatik-initiative/INTERPOLAR/releases) nutzt es die im [Modul "cds2db"](../R-cds2db) typisierten Daten aus der Postgres-Datenbank, um Tabellen mit relevanten Patienten und Fallinformationen zu erstellen. Diese werden auch zurück in die Postgres-Datenbank geschrieben und anschließend über das [Modul "db2frontend"](../R-db2frontend) dem Frontend zur Verfügung gestellt.

## Konfiguration

Der Data Processor kann über die Datei [dataprocessor_config.toml](dataprocessor_config.toml) konfiguriert werden. Alle Parameter sind in der Datei durch Kommentare beschrieben.
Der Data Processor kann über die Datei [dataprocessor_config.toml](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/R-dataprocessor/dataprocessor_config.toml) konfiguriert werden. Alle Parameter sind in der Datei durch Kommentare beschrieben.

### Anpassung der Codes für Körpergröße, -gewicht und BMI

Expand All @@ -19,7 +19,7 @@ Weitere Informationen stehen direkt in diesem Abschnitt in der toml-Datei.

## Ausführung des Moduls

Das R-Skript [StartDataProcessor.R](StartDataProcessor.R) startet den Data Processor.
Das R-Skript [StartDataProcessor.R](https://github.com/medizininformatik-initiative/INTERPOLAR/blob/main/R-dataprocessor/StartDataProcessor.R) startet den Data Processor.
```console
docker compose run --rm --no-deps r-env Rscript R-dataprocessor/StartDataProcessor.R
```
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# CDS tool chain

Dieses Repository enthält die Bestandteile der CDS tool chain zur Verarbeitung von [`MII KDS FHIR Ressourcen`](https://www.medizininformatik-initiative.de/de/basismodule-des-kerndatensatzes-der-mii). Es handelt sich um eine modular aufgebaute Referenzimplementierung, welche z.B. Datenintegrationszentren (DIZ) der MII eingesetzt werden kann. Hierbei werden FHIR-Ressourcen vom KDS (Kerndatensatz) FHIR Server / Endpunkt heruntergeladen, in eine Tabellenstruktur überführt ([CDS2DB](./README.md#cds2db)) und in eine Posgres-Datenbank (CDS_HUB) geschrieben. In einen nächsten Schritt werden die Daten geprüft, harmonisiert und können mit Hilfe von Algorithmen weiter verarbeitet werden (DataProcessor). Anschließend werden die Daten über ein Frontend (z.B. Redcap) auf einer Benutzeroberfläche sichtbar gemacht (DB2Frontend, Frontend).
Dieses Repository enthält die Bestandteile der CDS tool chain zur Verarbeitung von [`MII KDS FHIR Ressourcen`](https://www.medizininformatik-initiative.de/de/basismodule-des-kerndatensatzes-der-mii). Es handelt sich um eine modular aufgebaute Referenzimplementierung, welche z.B. Datenintegrationszentren (DIZ) der MII eingesetzt werden kann. Hierbei werden FHIR-Ressourcen vom KDS (Kerndatensatz) FHIR Server / Endpunkt heruntergeladen, in eine Tabellenstruktur überführt ([CDS2DB](#cds2db)) und in eine Posgres-Datenbank (CDS_HUB) geschrieben. In einen nächsten Schritt werden die Daten geprüft, harmonisiert und können mit Hilfe von Algorithmen weiter verarbeitet werden (DataProcessor). Anschließend werden die Daten über ein Frontend (z.B. Redcap) auf einer Benutzeroberfläche sichtbar gemacht (DB2Frontend, Frontend).

![CDS tool chain](https://github.com/medizininformatik-initiative/INTERPOLAR/assets/5671404/d8ee4fb8-c9fb-40f2-81cb-2adeda6d20b2)
Der detaillierte Datenfluss zwischen den und innerhalb der Module ist in der Datei [Dataflow.md](Dataflow.md) beschrieben.
Der detaillierte Datenfluss zwischen den und innerhalb der Module ist in der Datei [Dataflow](Dataflow) beschrieben.

Der gesamte Ablauf der CDS Toolchain ist in der Datei [full_toolchain_description.md](full_toolchain_description.md) beschrieben.
Der gesamte Ablauf der CDS Toolchain ist in der Datei [full_toolchain_description](full_toolchain_description) beschrieben.

## Bestandteile der CDS tool chain

Expand All @@ -21,14 +21,14 @@ Dieses R-Modul dient zur Ausleitung Kerndatensatz-konformer Daten in eine Postgr

Der Quellcode (R) dafür befindet sich im Ordner [R-cds2db](./R-cds2db).

Eine Beschreibung zur Konfiguration und Ausführung befindet sich in [R-cds2db/README.md](./R-cds2db/README.md).
Eine Beschreibung zur Konfiguration und Ausführung befindet sich in [R-cds2db](./R-cds2db/).

### CDS_HUB

Beim CDS_HUB handelt es sich um eine relationale Datenbank (Postgres). Im Ordner [Postgres-cds_hub](./Postgres-cds_hub) befinden sich Dateien für die Konfiguration und Initialisierung.

Eine Beschreibung der Datenbankstruktur befindet sich unter [Postgres-cds_hub/DB_description.md](./Postgres-cds_hub/DB_description.md). \
Eine Beschreibung, wie der Zugriff erfolgt befindet sich unter [Postgres-cds_hub/Readme.md](./Postgres-cds_hub/Readme.md) .
Eine Beschreibung der Datenbankstruktur befindet sich unter [Postgres-cds_hub/DB_description](./Postgres-cds_hub/DB_description). \
Eine Beschreibung, wie der Zugriff erfolgt befindet sich unter [Postgres-cds_hub](./Postgres-cds_hub) .

### DataProcessor

Expand Down Expand Up @@ -81,7 +81,7 @@ Es handelt sich dabei um eine Schätzung. Je nach Datenbestand kann es erforderl

## Installation

Folgende Anweisungen müssen ausgeführt werden, um die CDS tool chain zu verwenden: [Install.md](Install.md)
Folgende Anweisungen müssen ausgeführt werden, um die CDS tool chain zu verwenden: [Install](Install)

## Verwendung

Expand Down
Loading