In diesem Beitrag zeigen wir dir, wie und warum wir JSON Forms genutzt haben, um eine Plattform zur Verwaltung medizinischer Formulare und Berichte zu entwickeln â robust, verlĂ€sslich und flexibel.
JSON Forms
Im Rahmen des Projekts MedAI brauchten wir eine flexible und effiziente Lösung fĂŒr die Erstellung und Bearbeitung dynamischer Formulare. Nach einem internen Austausch zu bisherigen Erfahrungen haben wir uns fĂŒr JSON Forms entschieden â eine Open-Source-Bibliothek, die hervorragend zu unseren Anforderungen passt.
Unsere spezifischen Anforderungen
In MedAI bilden die Formulare und die daraus resultierenden medizinischen Berichte das HerzstĂŒck der Plattform. Dabei sind verschiedene Nutzer*innengruppen in unterschiedlichen Phasen eingebunden:
- Administrator*innen: erstellen die Formulare direkt auf der Plattform, fĂŒgen Schritte, Felder und Informationen hinzu. Ziel ist es, die bisherigen Microsoft-Word-Formulare abzulösen.
- Manager*innen: können beim Erstellen eines Berichts bestimmte Anpassungen am Formular vornehmen, z.âŻB. zusĂ€tzliche Fragen einbauen oder irrelevante Felder entfernen.
- Ărzt*innen und Pflegepersonal: fĂŒllen die medizinischen Berichte mit den Informationen der betreuten Person aus. Dabei orientieren sie sich an den von Administrator*innen und Manager*innen vordefinierten Feldern.
Nach dem AusfĂŒllen und Abschicken des Berichts wird eine PDF-Version erzeugt und an das System zur elektronischen Dokumentenverwaltung (GED) ĂŒbermittelt. Dieses System wird von GILAI betrieben, der IT-Struktur der IV-Stellen des Kantons Waadt und 19 weiterer Kantone.
In dieser Umgebung mit verschiedenen Rollen und Einsatzzwecken brauchten wir ein Tool, das den gesamten Lebenszyklus von Formularen dynamisch abbildet â von der Erstellung bis hin zum finalen PDF. Der perfekte Anwendungsfall, um JSON Forms einzusetzen.
Wie funktioniert JSON Forms?
Zur Definition eines Formulars nutzt JSON Forms mehrere Komponenten. Im Folgenden zeigen wir dir, wie sich ein Formular zusammensetzt:
Das Data Schema
JSON Forms basiert auf JSON Schema, das die Struktur und Validierung der Formulardaten definiert â z.âŻB. Feldtypen (Text, Zahl, Datum etc.), Regeln (Pflichtfelder, erlaubte Werte, Formate) und den allgemeinen Aufbau des Formulars.
const schema: JsonSchema = {
properties: {
username: { type: 'string' },
password: { type: 'string' },
},
required: ['username', 'password'],
};
Das UI Schema
Das UI-Schema erlaubt es, die Darstellung des Formulars unabhÀngig vom Datenschema zu gestalten. Es definiert die Anordnung, Gruppierung und Reihenfolge der Felder.
const uiSchema: VerticalLayout = {
type: 'VerticalLayout',
elements: [
{
type: 'Control',
label: t('views.admin.auth.form.username'),
scope: '#/properties/username',
options: { props: { autofocus: true } },
},
{
type: 'Control',
label: t('views.admin.auth.form.password'),
scope: '#/properties/password',
options: { format: 'password' },
},
],
};
Die Daten
Die eingegebenen Informationen werden im JSON-Format gespeichert und folgen der Struktur des Datenschemas.
{"username": "bryan", "password": "secret"}
Renderer
Renderer bestimmen, welches UI-Element in AbhÀngigkeit vom Daten- und UI-Schema verwendet wird.
export const renderers: JsonFormsRendererRegistryEntry[] = [
{ renderer: markRaw(TextFieldControl), tester: textFieldControlTester },
{ renderer: markRaw(PasswordFieldControl), tester: passwordFieldControlTester },
{ renderer: markRaw(VerticalLayout), tester: verticalLayoutTester },
];
In MedAI verwenden wir unterschiedliche Renderer fĂŒr:
- das Formular im Admin-Modus,
- den medizinischen Bericht im Formularmodus fĂŒr Ărzt*innen,
- die PDF-Version des Berichts im Lesemodus.
Automatisches Rendering
Durch das Zusammenspiel der oben genannten Elemente lassen sich Formulare mit einem benutzerdefinierten Aufbau von Schritten, Abschnitten und Feldern darstellen. Auch die Validierung beim Absenden des Formulars ist eingebaut.
<JsonForms
ref="jsonformsEl"
:i18n="jsonFormsI18n"
:data="modelValue"
:schema="schema"
:renderers="renderers"
:uischema="uiSchema"
:ajv="ajv"
validation-mode="ValidateAndShow"
:additional-errors="combinedErrors"
@change="onChange"
/>
Und wie sieht das visuell aus?
Seite zur Bearbeitung eines Formulars
Administrator*innen und Sachbearbeitende können das Formular bearbeiten, indem sie auf der linken Seite neue Schritte hinzufĂŒgen. Innerhalb dieser Schritte lassen sich wiederum Abschnitte und Felder einfĂŒgen. Zu jedem Feld können zusĂ€tzliche Informationen ergĂ€nzt werden: Bezeichnung, Beschreibung, Infotext, Hilfetext usw.
Auch Benutzer*innen haben die Möglichkeit, Schritte, Abschnitte und Felder zu verschieben. Das Formular wird dabei in einer festgelegten Ansicht dargestellt. Die Felder selbst sind nicht ausfĂŒllbar â sie dienen lediglich dazu, eine Vorschau zu zeigen, wie ein medizinischer Bericht spĂ€ter aussehen wird.
In dieser Bearbeitungsphase beeinflussen die Nutzer*innen hauptsÀchlich zwei Bestandteile:
- Das Datenschema (Schema)
- Das Benutzungsschnittstellen-Schema (UI Schema)

Seite fĂŒr medizinische Berichte
Auf dieser Seite wird das medizinische Formular angezeigt, das zuvor durch Administrator*innen und Manager*innen definiert wurde. Hier tragen Ărzt*innen und Pflegefachpersonen die Informationen schrittweise ein. Beim Absenden werden ausschliesslich die Formulardaten aktualisiert, nicht aber das Schema. Verwendet werden die Standard-Renderer, die auch an anderen Stellen der Plattform zum Einsatz kommen.

PDF-Generierung
Das PDF wird durch die Kombination aller ausgefĂŒllten Informationen aus den Rollen Administrator*in, Managerin und Mediziner\in generiert. Hier kommen spezielle Renderer zum Einsatz, die eine reduzierte Darstellung ohne ĂŒberflĂŒssige Gestaltungselemente erzeugen. Das PDF wird mit WeasyPrint erstellt, was eine spezielle CSS-Styling-Anpassung der Komponenten erforderlich machte.

Weitere Formulare
Auf der Plattform gibt es neben den medizinischen Berichten viele weitere Formulare. Auch diese werden mit JSON Forms erstellt und verwaltet. Dank seiner ModularitĂ€t eignet sich JSON Forms hervorragend fĂŒr unterschiedliche Formulararten.

Die Entscheidung fĂŒr JSON Forms hat sich fĂŒr uns als sehr positiv erwiesen. Sobald die grundlegenden Konzepte verstanden und die ersten Features umgesetzt waren, lief die Erstellung und Anpassung von Formularen reibungslos. JSON Forms ist besonders geeignet fĂŒr Anwendungen, die viele und unterschiedlich komplexe Formulare verwalten. Durch den dynamischen und modularen Ansatz ist es ein echter Gewinn fĂŒr fortgeschrittene AnwendungsfĂ€lle im Formularmanagement.