FAQs zum PIO-ULB Editor

Diese Seite geht auf grundlegende Fragen bezüglich dem PIO-ULB Standard, der Funktionsweise des PIO-ULB Editors und dessen Softwarearchitektur ein. Da wir im Projektverlauf immer wieder von Kooperationspartnern, Softwareherstellern oder anderen interessierten Personen ähnliche Fragen gestellt bekamen, entschlossen wir uns diese FAQ-Seite zu veröffentlichen.

Stand der Website: 16.10.2024

1. Allgemeine Fragen zum PIO-ULB Editor:
1.1 Was ist ein PIO-ULB?
Um papierbasierte Gesundheitsdokumente in Deutschland zu digitalisieren und somit die Digitalisierung im Gesundheitssektor voranzutreiben, hat die deutsche Bundesregierung die Entwicklung von sogenannten MIOs (Medizinische Informationsobjekte) und PIOs (Pflegerische Informationsobjekte) gesetzlich beauftragt. Die für diesen Auftrag gegründete mio42 GmbH entwickelt in Zusammenarbeit mit der Kassenärztlichen Bundesvereinigung (KBV) diese Informationsobjekte.
Beispiele für fertig spezifizierte MIOs:
  • Impfpass
  • Medikationsplan
  • Mutterpass
  • Zahnärztliches Bonusheft
Beispiele für PIOs:
  • Überleitungsbogen (fertig spezifiziert)
  • Chronischer Wundbericht (in Arbeit)
  • Elektronischer Hygienebericht (in Planung)
Der PIO-Überleitungsbogen (PIO-ULB) ist das erste Informationsobjekt für die Pflege und bildet einen standardisierten Pflegeüberleitungsbogen ab. Die PIO-ULB Spezifikation wurde im Dezember 2022 final veröffentlicht und soll ab Januar 2025 Gültigkeit besitzen.
MIOs und PIOs sind XML-Dateien, welche medizinische und pflegerische Daten in standardisierter sowie maschinenlesbarer Form speichern. MIOs und PIOs bedienen sich dem internationalen Standard FHIR (Fast Healthcare Interoperability Resources), welcher strukturiert medizinische Daten abbildet. Die Informationsobjekte sollen zukünftig in der elektronischen Patientenakte gespeichert werden.
Weiterführende Informationen:

1.2 Warum wurde der PIO-ULB Editor entwickelt und was kann der Editor?
Das Teilprojekt 3 des Forschungsverbundes Care Regio, hat sich zum Ziel gesetzt, den Datenübertragungsprozess von pflegerelevanten Patientendaten im Rahmen einer Patientenüberleitung von einer Pflegeeinrichtung in eine andere zu digitalisieren und zu optimieren. In diesem Teilprojekt arbeiten die Technische Hochschule Augsburg, das Universitätsklinikum Augsburg und zwei kooperierenden Pflegeeinrichtungen in Augsburg zusammen an der Konzipierung und Implementierung eines PIO-ULB Editors. Unser Editor ist eine der ersten nutzbaren Implementierungen des PIO-ULB Standards überhaupt.
Der Editor soll PIO-ULB Dateien standardkonform generieren und importieren können. Ein nutzerfreundliches User Interface erleichtert dem Pflegepersonal das arbeiten mit dem neuen Standard. Beim Import von PIO-ULB Dateien wird die Datei auf Konformität zum Standard validiert.
Weiterführende Informationen:

1.3 Wo kann ich den PIO-Editor testen?
Der PIO-ULB Editor kann auf unserer Website kostenfrei genutzt werden (siehe hier). Nach einer Anmeldung mittels Vor- und Nachnamen, können beliebige standardkonforme XML-Dateien (= PIOs) generiert und wieder importiert werden. Der angegebene Name wird automatisch als Autor im PIO-ULB hinterlegt.
Die eingetragenen Daten werden nur für die aktive Nutzungsdauer gespeichert und anschließend sofort gelöscht. Es gibt also keine Möglichkeit, Daten nach dem Schließen des Browserfensters oder einem Logout wiederherzustellen.
imageNotFound
Unsere Website erfüllt die Datenschutzanforderungen für Gesundheitsdaten nicht. Daher bitte keine realen Patientendaten auf unserer Website eintragen.

1.4 Wo kann ich den Quellcode des PIO-ULB Editors einsehen?
Der gesamte Quellcode des PIO-ULB Editors ist auf GitHub veröffentlicht und wird auf dem aktuellen Stand gehalten (siehe hier, Stand 09.10.2024).
Weitere Informationen zur Softwarearchitektur sind unter Punkt 3 zu finden.

1.5 Darf ich den Quellcode des PIO-ULB Editors für meine eigenen Projekte verwenden?
Da alle Ergebnisse aus dem Care Regio Forschungsprojekt open source zur Verfügung stehen sollen, kann auch der Quellcode des PIO-ULB Editors für andere (auch kommerzielle) Projekte genutzt werden. Unser PIO-ULB Editor wurde im Dezember 2023 unter der Apache 2.0 Lizenz veröffentlicht.

1.6 Wie kann ich den PIO-ULB Editor auf meinem lokalen Computer zum Laufen bringen?
Alle Komponenten des PIO-ULB Editors sind dockerisiert und können wie ein üblicher Docker Container gestartet werden. Folgende Komponenten / Docker Container müssen gestartet werden, damit der PIO-ULB Editor auf dem lokalen Computer funktioniert:
  • Frontend
  • Backend
  • Validator
Wenn alle Komponenten gestartet wurden, kann der PIO-ULB Editor unter http://localhost:3000/ im Browser aufgerufen werden.
Detailliertere Informationen bezüglich des Starts der Docker Container beinhalten die README Dateien auf GitHub (siehe 1.4).
imageNotFound
Wird der PIO-ULB Editor lokal gestartet, dürfen reale Patientendaten in den Editor eingegeben werden, solange der lokale Computer die Datenschutzanforderungen für Patientendaten erfüllt.

1.7 Bildet der PIO-ULB Editor den gesamten PIO-ULB Standard ab?
Nein, der PIO-ULB Editor implementiert ungefähr nur zwei Drittel des gesamten ULB-Spezifikationsumfangs. Wir haben ein eigenes Dokument verfasst, in dem alle Abweichungen des PIO-ULB Editors zum spezifizierten Standard beschrieben sind. Dieses Dokument kann im PIO-ULB Editor selbst heruntergeladen werden (siehe sich automatisch öffnender Disclaimer beim erstmaligen Starten des Editors).
Alternativ kann das Dokument auch hier heruntergeladen werden: PIOEditorLimitationen.pdf
Grund für die Reduzierung des Umfangs waren knappe Ressourcen im Forschungsprojekt sowie die von Pflegekräften bestätigte Erkenntnis, dass die PIO-ULB Spezifikation zu komplex und zu umfangreich für den alltäglichen Gebrauch ist.
Daten, die der PIO-ULB Editor nicht unterstützt, können vom Nutzer nicht eingegeben und exportiert werden, da die Benutzeroberfläche kein entsprechendes Eingabeelement bereitstellt. Sollte ein PIO-ULB importiert werden, welches nicht unterstützte Informationen enthält, werden diese Daten in einem dritten Reiter angezeigt (siehe Abbildung). Somit können die Informationen wenigstens gelesen werden, ein Editieren oder ein erneuter Export ist für diese Daten jedoch nicht möglich.
imageNotFound
Abbildung: Aktiver dritter Reiter im PIO-ULB Editor, welcher Daten des nicht unterstützten drittel der PIO-ULB Spezifikation unstrukturiert anzeigt.

1.8 Ist der PIO-ULB Editor für den Gebrauch im pflegerischen Alltag vorgesehen?
Nein, der PIO-ULB Editor ist ein Prototyp, der nicht für den pflegerischen Alltag gedacht und zertifiziert ist. Im Wesentlichen soll dieser Prototyp eine Diskussionsgrundlage durch die nutzerverständliche Visualisierung des PIO-ULB Standards schaffen sowie für weiterführende Implementierungen (z.B. durch Primärsystemhersteller) als Vorlage dienen.

1.9 Kann der PIO-ULB Editor die generierte Datei auch gleich an die aufnehmende Pflegeeinrichtung verschicken?
Nein! Durch den Klick auf den “Export” Button im PIO-ULB Editor werden alle eingegebenen Daten als standardkonforme XML-Datei (= PIO) im Downloadmanager des Browsers heruntergeladen. Diese nun lokal verfügbare Datei kann mithilfe anderer Tools an die Einrichtung, die den Patienten empfängt, vorab gesendet werden.
Im Rahmen unseres Forschungsprojektes haben wir die XML-Datei mit Hilfe des KIM-Services versendet. KIM (Kommunikation im Medizinwesen) ist ein E-Mail-Dienst für Gesundheitseinrichtungen, mit dem Patientendaten datenschutzkonform verschickt werden können. Alternativ könnte die XML-Datei in die persönliche elektronische Patientenakte des Patienten hochgeladen werden. Anschließend kann die empfangende Einrichtung die Datei aus der elektronischen Patientenakte herunterladen. Für beide Übertragungsszenarien muss sowohl die sendende als auch die empfangende Einrichtung an die Telematikinfrastruktur (sicheres Netzwerk zum Austausch sensibler Gesundheitsdaten in Deutschland) angeschlossen sein.
Weiterführende Informationen:

1.10 Besitzt der PIO-Editor eine Schnittstelle zu Primärsystemen?
Nein! Eine Schnittstelle zu KIS-Systemen (Krankenhausinformationssystem) oder anderen Pflegedokumentationssystemen ist wünschenswert, um den Erstellungsprozess des PIO-Überleitungsbogens zu automatisieren, kann aber im Rahmen des Forschungsprojektes nicht realisiert werden. Hier müssen die Primärsystemhersteller selbst tätig werden und ihre interne Datenstruktur auf den PIO-ULB mappen. Eine fehlende gesetzliche Verpflichtung zur Umsetzung des PIO-ULBs, der aktuell sehr geringe Verbreitungsgrad des PIO-ULBs und die hohe Komplexität des PIO-ULB Standards lassen Primärsystemhersteller zögern, eine PIO-ULB Schnittstelle zu implementieren.
Aktuell muss das Pflegefachpersonal die Patientendaten manuell in unseren PIO-ULB Editor eingeben. Für einen hochgradig automatisierten und digitalisierten Datenüberleitungsprozess ist es unverzichtbar, dass Primärsystemhersteller den PIO-ULB Standard unterstützen. Deshalb versuchen wir im Rahmen des Forschungsprojektes, diese Thematik an verschiedene Softwarehersteller heranzutragen und bieten unsere Unterstützung an.

1.11 Gibt es eine Bedienungsanleitung für den PIO-ULB Editor?
Ja, wir haben eine eigene Bedienungsanleitung für den PIO-ULB Editor geschrieben. Die Anleitung ist hier zu finden:
Anwenderleitfaden.pdf
2. Strukturelle Fragen zum PIO-ULB Standard:
2.1 Wo finde ich Informationen zum PIO-ULB Standard?
Die mio42 GmbH (Entwickler des PIO-ULB Standards) veröffentlichen alle Informationen bezüglich der MIOs und PIOs auf dieser Website:
Infos zum PIO-ULB Standard [Stand: 10.10.2024]
Speziell für den Überleitungsbogen finden sich hier ein Informationsmodell, welches den Inhalt des PIO-ULBs fachlich darstellt, und eine Auflistung aller FHIR Ressourcen, also eine technische Darstellung aller Inhalte (mehr Infos siehe 2.2).
Alle Informationen über die FHIR Ressourcen und den genauen Aufbau der XML-Datei (= PIO) findet man auf simplifier:
Simplifier PIO-ULB [Stand: 10.10.2024]
Simplifier ist eine Website, auf der FHIR basierte Projekte veröffentlicht werden können. Auch der Überleitungsbogen würde hier veröffentlicht. Wir empfehlen simplifier für die technische Einarbeitung in den PIO-ULB Standard zu verwenden, da hier die XML-Struktur verständlicher nachgebildet wird.
Weiterführende Informationen:

2.2 Wie funktioniert das ressourcenbasierte Konzept von FHIR?
FHIR (Fast Healthcare Interoperability Resources) ist ein international anerkannter Standard zur Abbildung von Gesundheitsdaten. FHIR bietet so viele Freiheiten, dass der Standard leicht an nationale Gegebenheiten und anwendungsspezifische Kontexte angepasst werden kann. Alle MIOs und PIOs wurden als FHIR Projekt umgesetzt.
Ein FHIR Datensatz (z.B. ein Überleitungsbogen) besteht aus vielen verschiedenen FHIR Ressourcen, die als einzelne Bausteine für den gesamten Datensatz dienen. So gibt es zum Beispiel Ressourcen, die Hausärzte, Diagnosen, Vitalwerte, Patientenstammdaten, Kontaktpersonen, Bevollmächtigungen, Medikamente, usw. abbilden und in ihrer Gesamtheit ein PIO-ULB darstellen. Jede Ressource bzw. jeder Baustein in einem FHIR Datensatz ist mit einer eindeutigen ID (z.B. UUID) versehen.

2.3 Aus wie vielen Ressourcen besteht der PIO-ULB Standard?
Der PIO-ULB Standard besteht laut simplifier aus 91 Profilen:
imageNotFound
Abbildung: Simplifier zeigt, dass der PIO-ULB Standrad aus 91 Profilen besteht
Bei genauerem Hinsehen bemerkt man, dass eines der Profile (KBV_PR_MIO_ULB_Identifier_PKV_KVID_10) keine eigenständige FHIR Ressource ist, da der Identifier nur als Abbildung einer 10-stelligen Versicherten-ID innerhalb der Ressource “KBV_PR_MIO_ULB_Patient” verwendet wird:
imageNotFound
Abbildung: Das Identifier_PKV_KVID_10 Profil innerhalb der Patienten-FHIR-Ressource af simplifier
Daher besteht die PIO-ULB Spezifikation unserer Auffassung nach aus 90 FHIR Ressourcen.

2.4 Welcher Dateityp ist für ein PIO-ULB vorgesehen?
Laut FHIR können Datensätze als XML- oder JSON-Datei erstellt werden. Die mio42 GmbH spezifizierte jedoch, dass alle MIOs und PIOs als XML-Datei gespeichert werden müssen.
Quellen:

2.5 Welche Besonderheiten gelten für die Bundle- und Composition-Ressource?
Die Ressourcen “KBV_PR_MIO_ULB_Bundle“ und “KBV_PR_MIO_ULB_Composition“ sind besondere Ressourcen, während alle anderen nur als Informationsbausteine dienen. Diese zwei Ressourcen müssen verpflichtend in einem PIO-ULB vorkommen.
Composition:
Jede Ressource bzw. jeder Informationsbaustein in einem FHIR Datensatz ist mit einer eindeutigen ID (z.B. UUID) versehen. Die Composition ist eine Art Inhaltsverzeichnis, welche alle IDs von jeder im Datensatz vorkommenden Ressource referenziert. Zusätzlich beinhaltet die Composition Informationen wie Erstellungsdatum, Informationen zum Autor und die empfangende Einrichtung.
Bundle:
Das Bundle ist die alles umfassende FHIR Ressource, die alle anderen Ressourcen (inkl. Composition) beinhaltet. Der XML-Root-Tag eines PIO-ULBs ist also <Bundle>. Außerdem beinhaltet das Bundle einen Zeitstempel.
Weiterführende Informationen:

2.6 Aus welchen Elementen / Informationen muss ein PIO-ULB mindestens bestehen?
Die Kardinalitäten (also wie oft ein bestimmtes Element minimal bzw. maximal vorkommen darf) sind für das gesamte PIO-ULB auf folgender Seite abgebildet:
Auflistung aller PIO-ULB Elemente inkl. Kardinalitäten [Stand: 10.10.2024]
Nach längerem Studieren der umfangreichen Tabelle stellt man fest, dass folgende FHIR Ressourcen mindestens im PIO-ULB enthalten sein müssen. Die Unterpunkte zu jeder Ressource geben an, welche Informationen in der jeweiligen Ressource verpflichtend angegeben werden müssen:
  • KBV_PR_MIO_ULB_Bundle
    • Zeitstempel
  • KBV_PR_MIO_ULB_Composition
    • Erstellungsdatum der Composition
    • Referenz auf den Autor (Organization-, Practitioner- oder PractitionerRole-Ressource)
  • KBV_PR_MIO_ULB_Organization oder KBV_PR_MIO_ULB_Practitioner oder KBV_PR_MIO_ULB_PractitionerRole (als Autor des PIO-ULBs)
    • Name des Autors*
  • KBV_PR_MIO_ULB_Patient
    • Patientenname*
    • Geburtsdatum*
  • KBV_PR_MIO_ULB_Observation_Care_Level
    • Antragsstatus des Pflegegrads*
  • KBV_PR_MIO_ULB_Observation_Presence_Problems
    • Vorhandensein von med. Diagnosen (KBV_PR_MIO_ULB_Condition_Medical_Problem_Diagnosis) und pfleg. Nebendiagnosen (KBV_PR_MIO_ULB_Condition_Care_Problem) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Presence_Risks
    • Vorhandensein von Risiken (KBV_PR_MIO_ULB_Observation_Risk) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Presence_Information_Nutrition
    • Vorhandensein von einer dieser drei Ressourcen (KBV_PR_MIO_ULB_Observation_Food_Type, KBV_PR_MIO_ULB_Observation_Food_Administration_Form, KBV_PR_MIO_ULB_Observation_Nutrition) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Isolation_Necessary
    • Vorhandensein von Isolationsangaben (KBV_PR_MIO_ULB_Procedure_Isolation) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Presence_Functional_Assessment
    • Vorhandensein von einer dieser drei Ressourcen (KBV_PR_MIO_ULB_Observation_Total_Barthel_Index, KBV_PR_MIO_ULB_ClinicalImpression_Individual_Functions_Barthel, KBV_PR_MIO_ULB_Observation_Assessment_Free) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Presence_Allergies
    • Vorhandensein von Allergien (KBV_PR_MIO_ULB_AllergyIntolerance) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
  • KBV_PR_MIO_ULB_Observation_Degree_Of_Disability_Available
    • Vorhandensein von einem Grad der Behinderung (KBV_PR_MIO_ULB_Observation_Degree_Of_Disability) anhand der Auswahlmöglichkeiten (ja / nein / unbekannt*)
Alle mit * markierten Angaben müssen vom Nutzer aktiv eingegeben werden, alle anderen Angaben können automatisch generiert werden. Das heißt, ein Editor, der den PIO-ULB Standard abbildet, muss nur für die markierten (*) Informationen ein Eingabefeld bereitstellen.
Die Ressourcen, die lediglich das Vorhandensein von anderen Ressourcen abbilden, werden verwendet, um z.B. alle Allergien (für jede einzelne Allergie des Patienten gibt es ja eine eigene Ressource) zu bündeln. Die Ressource KBV_PR_MIO_ULB_Observation_Presence_Allergies referenziert zum Beispiel alle Allergie-Ressourcen (hält also deren IDs) und bündelt sie somit. Nun muss im Inhaltsverzeichnis (Composition) nicht mehr jede einzelne Allergie-Ressource referenziert werden, sondern lediglich die ID der Ressource KBV_PR_MIO_ULB_Observation_Presence_Allergies angegeben werden. Ein weiterer Vorteil ist, dass diese “Bündel-Ressourcen” zwischen “Nein, der Patient hat keine Allergien“ und “Es ist unbekannt, ob der Patient Allergien hat“ unterscheiden. Diese Differenzierung ist im pflegerischen Fachgebiet ein wichtiges Detail.
Im Fall eines PIO-ULBs mit minimalem Umfang müssen diese “Bündel-Ressourcen” zwar existieren, deren Inhalt lautet dann aber einfach: “Nein, es gibt keine Allergien” etc.!
Weiterführende Informationen:

2.7 Gibt es Beispiel-Dateien, die ein vollständiges PIO-ULB abbilden?
Ja, gibt es. Die mio42 GmbH hat zwei Fallbeispiele auf ihrer Internetseite veröffentlicht:
Fallbeispiele der mio42 GmbH als XML-Datei [Stand: 10.10.2024]
Weiterhin ist es möglich mit unserem PIO-ULB Editor eigene PIO-ULBs zu erstellen. Im Hauptmenü des PIO-ULB Editors kann ein Demo-PIO geöffnet werden (siehe Abbildung), welches einen schnellen Export eines vollständigen1 PIO-ULBs ermöglicht, ohne alle Eingabefelder selbst ausfüllen zu müssen.
imageNotFound
Abbildung: Ausschnitt aus dem Hauptmenü des PIO-ULB Editors (Button "Demo öffnen" erstellt ein voll ausgefülltes PIO-ULB)
imageNotfound
1 Achtung: Unser PIO-ULB Editor unterstützt nur zwei Drittel der gesamten PIO-ULB Spezifikation (siehe 1.7)

2.8 Was ist eine “extension” in FHIR?
Eine extension ist ein Element von FHIR, welches FHIR Basis-Ressourcen erweitert. Dies ermöglicht es, den internationalen Standard an nationale Kontexte anzupassen. Zum Beispiel wurde für die PIO-ULB Spezifikation die Patienten-Basis-Ressource durch drei weitere Informationen erweitert (siehe Abbildung).
image not found
Abbildung: Patienten-Ressource des PIO-ULB Standards um drei extensions erweitert
Quellen:

2.9 Welche Basisressourcen werden in dem PIO-ULB verwendet?
Da die mio42 GmbH und die Kassenärztliche Bundesvereinigung (KBV) viele MIOs und PIOs entwickeln, macht es Sinn, ein Basis-Set an Ressourcen und Profilen zu entwickeln, und diese immer wieder zu verwenden. Zum Beispiel stellt FHIR eine Ressource bereit, die eine Kontaktperson abbildet:
image not found
Abbildung: Kontaktperson-Ressource als Basisressource des FHIR-Standards
Die KBV hat dann auf dessen Basis eine eigene Ressource zur Abbildung einer Kontaktperson erstellt. Diese Ressource gehört zu den KBV-Basisprofilen, was an dem Namen erkenntlich ist (KBV_PR_Base_RelatedPerson):
image not found
Abbildung: Kontaktperson-Ressource als Basisressource der KBV
Die mio42 GmbH hat nun für das spezielle Projekt PIO-Überleitungsbogen wiederum eine eigene Ressource erstellt, die von der KBV-Basisressource abgeleitet wurde:
image not found
Abbildung: Kontaktperson-Ressource als Ressource der PIO-ULB Spezifikation
Nun stellt sich die Frage, welche Basis-Sets für den PIO-ULB verwendet wurden? Das PackageManifest auf simplifier liefert die Antwort (siehe Abbildungen):
image not found
Abbildung: Link zum PackageManifest auf simplifier
image not found
Abbildung: Das PackageManifest des PIO-ULB Spezifikation im JSON Format (Verwendung von drei Packages unter dem Key "dependencies")
Man sieht, dass für den PIO-ULB KBV-Basisprofile ("kbv.basis"), deutsche Basisprofile ("de.basisprofil.r4") und die FHIR Core Profile ("hl7.fhir.r4.core") in verschiedenen Versionen verwendet werden.
Quellen:

2.10 Wie ist eine Ressource strukturell aufgebaut?
Die Allergie-Ressource für den PIO-ULB ist hier zu finden, welche als Beispielressource zur Erklärung dienen soll:
Allergie-Ressource der PIO-ULB Spezifikation auf simplifier [Stand: 27.09.2024]
image not found
Abbildung: Erste Hierarchieebene der Allergie-Ressource aus der PIO-ULB Spezifikation auf simplifier
Simplifier stellt die Ressourcen mithilfe einer aufklappbaren hierarchischen Struktur dar, welche die Schachtelung der XML-Tags eins zu eins widerspiegelt. Für jedes Element sind Kardinalitäten (z.B. 0..*) angegeben. "Must support" elemente sind mit einem roten "S" gekennzeichnet. Im Folgenden soll der Aufbau der Allergie-Ressource genauer erklärt werden:
Der Header:
Der Header ist in jeder Ressource identisch aufgebaut. Hier sind die ID der Ressource (in diesem Fall eine UUID) und die Art der Ressource hinterlegt:
image not found
Abbildung: Header der Allergie-Ressource auf simplifier
image not found
Abbildung: Header der Allergie-Ressource als XML Ausschnitt
Der XML-Tag <id> ist auf simplifier nicht sichtbar, ist aber für jede FHIR Ressource verpflichtend. <id> wird von einer FHIR-Basisressource vererbt.
Binding und Pattern Symbole:
Simplifier verwendet folgende “Binding”- und “Pattern”-Symbole:
image not found
Abbildung: "Binding" und "Pattern" Tags auf simplifier
“Binding” bedeutet, dass der Wert an ein Codesystem gebunden ist, während “Pattern” einen fixen Wert vorgibt, für den keine Nutzereingabe erforderlich ist.
Extension:
Nähere Informationen zu <extension> unter 2.8. Die Repräsentation einer <extension> in der XML-Datei sieht wie folgt aus:
image not found
Abbildung: Extension der Allergie-Ressource auf simplifier (am Beispiel "abatement")
image not found
Abbildung: Extension der Allergie-Ressource als XML Ausschnitt (am Beispiel "abatement")
CodeableConcept:
Oft werden codierte Informationen als CodeableConcept abgebildet. Bei der Allergie-Ressource wird z.B. der Verifikationsstatus mit einem CodeableConcept codiert. CodeableConcepts sind immer identisch aufgebaut und an ein spezielles Codesystem gebunden (siehe Binding-Symbol in der Abbildung). Ein CodeableConcept sieht wie folgt aus:
image not found
Abbildung: Verifikationsstatus der Allergie-Ressource als CodeableConcept auf simplifier
image not found
Abbildung: Verifikationsstatus der Allergie-Ressource als XML Ausschnitt (als CodeableConcept)
Codierung des Allergie-Codes mittels Slice-Element:
Auch der Code der Allergie ist als CodeableConcept repräsentiert.
image not found
Abbildung: Allergy-Code der Allergie-Ressource auf simplifier (als CodeableConcept)
Neu ist hier das blaue Slice-Element, welches dem Nutzer in diesem Fall die Freiheit gibt, die Allergie mittels SNOMED oder ASK Code anzugeben. Die PIO-ULB Spezifikation lässt an dieser Stelle also zwei verschiedene Codesysteme zu. Unser PIO-ULB Editor unterstützt jedoch nur SNOMED Codes. Außerdem sieht man, dass ein CodeableConcept ein <text> Element besitzen kann. Dieses Element dient der Freitextbeschreibung des Codes. Der Nutzer hat also auch die Möglichkeit, keinen Code anzugeben, und die Allergie mit einem Freitext zu benennen. Die XML-Repräsentation könnte dann wie folgt aussehen:
image not found
Abbildung: Allergy-Code der Allergie-Ressource als XML Ausschnitt (als CodeableConcept)
Referenzen auf andere Ressourcen:
Jede Ressource ist mithilfe einer ID (z.B. UUID) innerhalb eines PIO-ULBs eindeutig identifizierbar. Diese ID kann verwendet werden, um von einer Ressource auf eine andere zu referenzieren. Im Fall der Allergie kann der Diagnosesteller referenziert werden. Dies kann der Patient selbst sein oder ein Hausarzt bzw. behandelnde Person (= Practitioner).
image not found
Abbildung: Referenz auf den Diagnosesteller einer Allergie-Ressource auf simplifier
image not found
Abbildung: Referenz auf den Diagnosesteller einer Allergie-Ressource als XML Ausschnitt

2.11 Welche Codesysteme werden im PIO-ULB verwendet?
Für den PIO-ULB werden verschiedene Terminologien verwendet. Das bevorzugte Codesystem ist SNOMED, es kommen aber weitere Codesysteme zum Einsatz wie z.B. LOINC, ICD, ATC, Alpha-ID. Alle verwendeten Codesysteme sind hier aufgelistet:
Verwendete Code Systeme im PIO-ULB (Auflistung der mio42 GmbH) [Stand: 10.10.2024]
Unser PIO-ULB Editor unterstützt jedoch nur SNOMED Codes. Sollte ein PIO-ULB importiert werden, welches andere Terminologien nutzt, kann unser Editor diese anzeigen (siehe Abbildung, “Turkish”):
image not found
Abbildung: Ausschnitt aus dem Demo-PIO des PIO-ULB Editors, in dem ein nicht unterstützter Code ("Turkish") verwendet wird
Entsprechende Codes werden mit dem Vermerk (nicht unterstützter Code) versehen. Der Nutzer kann diesen Code lesen und auch wieder exportieren. Wurde der Code jedoch gelöscht, kann er nicht erneute aus dem Drop Down ausgewählt werden.
Folgende Liste enthält die URLs zu allen Codesystemen, die wir für unseren PIO-ULB Editor heruntergeladen haben:
PIO_ULB_Codes.txt

2.12 Wo finde ich deutsche Übersetzungen für die Codes, die im PIO-ULB verwendet werden?
Leider existieren die meisten SNOMED Codes aktuell nur auf Englisch. Es wird gerade an einer deutschen Übersetzung gearbeitet. An welchen Übersetzungen gerade gearbeitet wird, ist auf folgender Seite ersichtlich:
Bundesinstitut für Arzneimittel und Medizinprodukte: Deutsche Übersetzungen von SNOMED-CT-Konzepten [Stand: 10.10.2024]
Da nur das Bundesinstitut für Arzneimittel und Medizinprodukte (BfArM) deutsche Übersetzungen von SNOMED Codes veröffentlichen darf, hat die mio42 GmbH einen Umweg gewählt, um kleinere Codesysteme zu “übersetzen”. Um nicht von einer “Übersetzung” sprechen zu müssen verwendet die mio42 GmbH sogenannte ConceptMaps. ConceptMaps stammen aus dem FHIR-Standard und mappen die originalen Codes auf eine deutsche Repräsentation.
image not found
Abbildung: Link zur ConceptMap der PIO-ULB Spezifikation auf simplifier
Weiterführende Informationen:

2.13 Wie funktionieren Referenzen innerhalb eines PIO-ULBs?
Jede Ressource ist mithilfe einer ID innerhalb eines PIO-ULBs eindeutig identifizierbar. Diese ID kann verwendet werden, um von einer Ressource auf eine andere zu referenzieren. Im PIO-ULB Editor werden UUIDs als ID verwendet, weil die mio42 GmbH in ihren Beispiel PIO-ULBs (siehe 2.7) ebenfalls UUIDs verwendet hat. Ein Beispiel für eine Referenzierung befindet sich unter 2.10.

2.14 Wird es in Zukunft Änderungen an dem Standard geben?
Der PIO-ULB Standard wurde im Dezember 2022 als Version 1.0.0 festgelegt. Eine Änderung der Spezifikation halten wir für wahrscheinlich. Die Änderungen sollten sich aber auf kleine Anpassungen beschränken. Dies wird aber nicht in naher Zukunft passieren, da das PIO-ULB aufgrund neuer Gesetze des Deutschen Bundes den Fokus verloren hat. Andere MIOs haben aktuell höhere Priorität wie der PIO-ULB.
Simplifier besitzt einen Änderungs-Log, in dem alle Veränderungen an dem Projekt dokumentiert werden.
Änderungs-Log des PIO-ULB Projektes auf simplifier [Stand: 27.09.2024]

2.15 Wie weit ist der PIO-ULB Standard bisher verbreitet?
Leider ist der PIO-ULB Standard bisher nicht weit verbreitet, wodurch ein Ziel der mio42 GmbH (nämlich die flächendeckende Erprobung des PIO-ULBs) bisher noch nicht erreicht wurde. Unser Forschungsprojekt Care-Regio leistet somit Pionierarbeit bei der Umsetzung und Erprobung des neuen PIO-ULB Standards.
Uns sind keine Hersteller von medizinischen und pflegerischen Dokumentationssystem bekannt, die den PIO-ULB Standard verkaufsfertig implementiert haben. Die C&S Computer und Software GmbH in Augsburg haben den PIO-ULB zwar bereits implementiert, sind aber noch nicht marktreif. Weiterhin sind wir mit der ZiemannIT aus München in Kontakt, um bei der ersten beispielhaften Implementierung einiger weniger FHIR Ressourcen beratend zu unterstützen.
3. Technische Fragen zur Softwarearchitektur des PIO-ULB Editors:
3.1 Aus welchen Komponenten besteht der PIO-ULB Editor?
Unser PIO-ULB Editor besteht aus folgenden Komponenten:
image not found
Abbildung: UML-Komponenten-Diagramm des PIO-ULB Editors
Der Backend-Server ermöglicht es mehreren Nutzern gleichzeitig, PIOs zu bearbeiten, insofern jeder Nutzer über ein eigenes Frontend angemeldet ist. Sobald die Nutzer ihren Vor- und Nachnamen eingegeben haben, erstellt der „AnmeldeService“ eine neue Session. Die Eingabe eines Passwortes ist nicht nötig, da der Editor keine interne Nutzerverwaltung anbietet. Der Nutzername wird im PIO automatisch als Autor hinterlegt. Weiterhin stellt das Backend Logik zum Importieren und Exportieren von XML-Dateien bereit. Eine globale serverseitige Datenbank – das Adressbuch – kann FHIR Organisationsressourcen permanent speichern, sodass die Nutzer nicht jedes Mal erneut Daten eines bekannten Pflegeheimes oder Krankenhauses eingeben müssen.
Der Frontend-Server ist als React Webanwendung implementiert und kann über den Browser aufgerufen werden. Die Benutzeroberfläche verwendet vorgefertigte Interface-Komponenten aus der „Ant Design“ Bibliothek für die Dateneingabe. Thematisch zusammengehörende Eingabefelder sind zu einem Ant Design Formular zusammengefasst. Dies ermöglicht eine selbstständige Datenverarbeitung durch jedes Formular selbst. Im Hintergrund speichert der UUID-Service alle bereits erstellten FHIR-Ressourcen und deren UUIDs, damit eingegebene Daten stets der richtigen Ressource zugeordnet werden können. Der Redux Store wird als Zustandsspeicher verwendet. Hier sind Nutzer- und Navigationsinformationen sowie Daten, die über mehrere React Komponenten synchron gehalten werden müssen, temporär abgelegt.
Das Meta- und das FHIR-Repository stellen gewisse Dienste zur Verfügung, die in beiden Hauptkomponenten (Front- und Backend) benötigt werden. Während das FHIR Repository Strukturinformationen über den PIO-ULB sowie verwendete Codesysteme bereitstellt, bündelt das Meta-Repository Klassen, Typen und Interfaces, die in beiden Hauptkomponenten benötigt werden.
Die Validator-Komponente kann ein XML-Dokument gegenüber FHIR spezifischen Strukturdefinitionen offline validieren und wird nur vom Frontend angesprochen, wenn eine neue XML-Datei importiert wird.

3.2 Welche Frameworks und Libraries wurden für die Implementierung des PIO-ULB Editors verwendet?
Alle Komponenten sind als JavaScript (nodeJS) Projekt implementiert. Die einzige Ausnahme stellt die Validator-Komponente dar. Sie ist in C-Sharp (.NET) geschrieben.
Das Frontend verwendet unter anderem folgende Libraries:
  • Diverse React-Libraries
  • Ant Design (für die UI-Komponenten)
  • Axios (für die Kommunikation mit dem Backend)
Das Backend verwendet unter anderem folgende Libraries:
  • Axios (für die Front-Backend-Kommunikation)
  • Express (für die Front-Backend-Kommunikation)
  • fast-xml-parser (für das Parsen von XML-Datein)
  • xml-formatter (für das Formatieren von XML-Datein)
  • lodash (für das einfache Bearbeiten von JSON-Objekten mittels Pfaden in der Punktnotation)
  • mongoDB (Datenbank für das Adressbuch)
  • jsonwebtoken (für das Session-Management)
Der Validator verwendet das Firely Projekt, welches FHIR Bundles gegenüber Strukturdefinitionen offline validieren kann.
Weiterführende Informationen:

3.3 Wie funktioniert das Session-Management des PIO-ULB Editors?
Je nachdem mit welcher Umgebungsvariable das Front- bzw. Backend gestartet wir, verhält sich das Session-Management unterschiedlich:
  • VERSION_ENV=webVersion
  • VERSION_ENV=localVersion
Web-Version:
Da unser PIO-ULB Editor, der öffentlich im Internet abrufbar ist (siehe hier), weltweit Nutzern ermöglicht, auf dasselbe Backend zuzugreifen, wird für jede Anmeldung eine separate Session erstellt. Der Nutzer meldet sich durch die Angabe von Vor- und Nachnamen im Editor an. Das heißt, selbst wenn zwei Personen mit demselben Namen zur selben Zeit den Editor nutzen, erstellt das Backend separate Sessions, sodass es zu keinen ungewollten Überscheidungen kommen kann. Meldet sich der Nutzer wieder ab oder schließt das Browserfenster, wir die Session und alle eingegebenen Daten sofort gelöscht.
Local-Version:
Die lokale Version ist für die Nutzung auf lokalen Computern oder in kleinen Netzwerken (z.B. Pflegeheim) gedacht. Meldet sich hier ein Nutzer (mittels Vor- und Nachname) an, wird eine neue Session erstellt. Sollte der Nutzer von anderen Aufgaben im Arbeitsalltag unterbrochen werden oder wird das Browser Fenster aus Versehen geschlossen, bleibt die Session für eine gewisse Zeit geöffnet und die Daten bleiben gespeichert. Meldet sich der Nutzer erneut mit seinem Namen an, öffnet sich seine Session erneut und er kann mit der Bearbeitung des PIO-ULBs fortfahren.
Es wurde absichtlich auf eine umfangreiche Nutzerverwaltung (mit Passwort und Username) verzichtet, weil dies die Anforderungen an einen prototypischen Editor übertroffen hätte.

3.4 Wie ist das Backend aufgebaut?
Das Herzstück im Backend ist die Klasse RootObject, welches alle Daten eines PIO-ULBs abbildet. Für jede Session wird eine RootObject-Instanz erzeugt. Ein angemeldeter Nutzer kann also immer nur ein PIO-ULB erstellen/bearbeiten.
Das RootObject speichert alle Header-Daten des FHIR Bundles und der FHIR Composition in einer eigenen Klasse (PIOHeader). Eine weitere Klasse (PIOContent) speichert alle weiteren FHIR Ressourcen in einer einzigen großen JSON-Struktur. Diese Struktur wurde extra für das RootObject entwickelt, ähnelt aber sehr stark der Struktur, die später als XML exportiert wird. Weiterhin wurde die Struktur so entwickelt, dass sie möglichst Kompatibel mit der Library “fast-xml-parser“ ist (siehe 3.2).
Die Methode setValue(path: string, data: PrimitiveDataTypes) der PIOContent Klasse ermöglicht das Hinzufügen oder Überschreiben von Daten. Folgender Methodenaufruf würde eine neue Telefonnummer zu einer Kontaktperson hinzufügen:
setValue("31fd1371-7f90-4f47-9ccb-29047dda8f16.KBV_PR_MIO_ULB_RelatedPerson_Contact_Person.telecom[1].value", new StringPIO("0821-234543643"))
Der Pfad (mit der Punktnotation und […]-Arraynotation) kann direkt so von der Library “lodash” verarbeitet werden (siehe 3.2) und beschreibt an welcher Stelle der JSON-Struktur die Daten eingefügt werden sollen. Die Daten selbst werden als PrimitiveDataTypes übergeben. Das Meta-Repository stellt für jeden von FHIR vordefinierten primitiven Datentyp (z.B. code, string, uri, date, etc.) eine entsprechende Klasse bereit (CodePIO, StringPIO, UriPIO, DatePIO, etc.).
Das Backend ist also möglichst generisch implementiert. Das Backend nimmt einfach Daten und Pfade, an denen die Daten gespeichert werden sollen, entgegen, ohne die PIO-ULB Struktur zu validieren.
Das RootObject stellt außerdem zwei Funktionen bereit, mit denen man alle im RootObject gespeicherten Daten in eine valide XML-Datei transformieren kann und umgekehrt:
  • toXML(XMLBuilderOptions?: XmlBuilderOptions)
  • readXML(userData: IUserData, xmlString: string)

3.5 Wie ist das Frontend aufgebaut?
Das Frontend definiert Basic-UI-Komponenten (z.B. InputTextField, InputDropDown, etc.), sodass die Eingabefelder über den gesamten PIO-ULB Editor stehts gleich erscheinen.
Diese Basic-UI-Komponenten werden dann in Formularen wiederverwendet. Die Formulare orientieren sich fast ausnahmslos an den FHIR Ressourcen. Das heißt, dass es für jede FHIR Ressource auch ein entsprechendes Formular gibt (z.B. ContactPersonForm). Jedes Formular hält die für sich relevanten Daten in einem React-State. Bei einem XML-Import initialisieren sich alle Formulare selbständig, indem sie ihre relevanten Daten beim Backend anfragen (die ContactPersonForm holt sich z.B. alle Daten über Kontaktpersonen). Editiert der Nutzer ein Eingabefeld wird der lokale State im Formular geupdated, der dann direkt an das Backend übermittelt wird. Nutzereingaben werden also in Echtzeit gespeichert. Die Front-Backend-Kommunikation funktioniert mittels SubTrees (siehe 3.6).
Da das Backend generisch ist, müssen die Formulare selbst die Nutzereingaben an die richtige Stelle in der PIO-ULB Struktur schreiben (mit Hilfe des Pfades, siehe 3.4). Das Wissen über den strukturellen Aufbau eines PIO-ULBs liegt also im Frontend und nicht im Backend.

3.6 Wie kommunizieren Frontend und Backend?
Die Frontend-Formulare holen und senden die Daten in Form von SubTrees an das Backend. SubTrees sind beliebige Ausschnitte aus der Backend-Datenstruktur. Die Formulare können SubTrees auslesen und editieren. Zum Speichern von editierten SubTrees, wird dieser an das Backend geschickt. Dort wird der ausgeschnittene Teil wieder in die Datenstruktur eingefügt.
Mehr zur Front-Backend-Kommunikation unter 3.9.

3.7 Wie funktioniert die Validator-Komponente?
Der Validator ist in C-Sharp (.NET) geschrieben, da das verwendete Projekt (Firely) in C-Sharp geschrieben ist. Firely ermöglicht es, ein FHIR-Bundle gegenüber FHIR-Strukturdefinitionen offline zu validieren. FHIR-Strukturdefinitionen enthalten detaillierte Informationen über den strukturellen Aufbau einer FHIR-Ressource oder den Inhalt von Codesystemen.
Die verwendeten FHIR-Strukturdefinitionen sind auf GitHub zu finden (src/Firely.Fhir.Validation.R4/structureDefinitions):
Quellcode des Validators auf GitHub [Stand: 27.09.2024]
Weiterführende Informationen:

3.8 Wie kann ich den PIO-ULB Editor in eine andere (meine eigene) Software integrieren?
Der PIO-ULB Editor ist als Stand-alone Software konzipiert und hat keine offenen Schnittstellen.
Eine Integration des gesamten PIO-Editors kann mittels <iframe> erfolgen. Laufen die Docker-Container auf ihrem System, ist der PIO-ULB Editor unter http://localhost:3000/ erreichbar (siehe 1.6). Folgender Code würde den PIO-ULB Editor dann in einem HTML-Dokument aufrufen:
<iframe src="http://localhost:3000/" width="1500" height="1000" style="border:1px solid">

3.9 Wo finde ich weitere Informationen zur Softwarearchitektur?
Wir haben einen eigenen Artikel bezüglich der Softwarearchitektur des PIO-ULB Editors veröffentlicht. Der Artikel befindet sich gerade in der Veröffentlichungsphase bei der "GMS Medizinische Informatik Biometrie und Epidemiologie 2024". Sobald der Artikel veröffentlicht wurde, werden wir ihn hier verlinken.