diff --git a/app/src/main/java/de/medapp/wunddoku/domain/catalog/DocumentationCatalog.kt b/app/src/main/java/de/medapp/wunddoku/domain/catalog/DocumentationCatalog.kt index f36502a..063e1c2 100644 --- a/app/src/main/java/de/medapp/wunddoku/domain/catalog/DocumentationCatalog.kt +++ b/app/src/main/java/de/medapp/wunddoku/domain/catalog/DocumentationCatalog.kt @@ -3,11 +3,30 @@ package de.medapp.wunddoku.domain.catalog /** * Zentrale, statische Definition aller Dokumentationsblöcke und ihrer Checkboxen. * - * Enthält die mit dem Kunden final abgestimmten 22 Dokumentationsabschnitte in der - * verbindlichen, handschriftlich vorgegebenen Reihenfolge (nicht alphabetisch, nicht die - * frühere Chat-Reihenfolge). Frühere, im Kundenchat zwischenzeitlich diskutierte, aber später - * ausdrücklich verworfene Inhalte (u. a. Wundart-Checkboxen, Verlauf-Checkboxen, - * "Schmerzempfinden 1-10", "Weitere Überlegungen") sind bewusst NICHT enthalten. + * Enthält die mit dem Kunden final abgestimmten Dokumentationsabschnitte. Basis ist die + * handschriftlich vorgegebene 22-Punkte-Reihenfolge, ergänzt/verfeinert nach Abgleich mit dem + * ursprünglichen Papierformular ("Wunddokumentation" von Harald Klock) - dabei wurden: + * + * - mehrere Abschnitte, die im Chat/der handschriftlichen Liste nur als Freitext geführt waren, + * auf dem Papierbogen aber eine differenzierte Checkbox-Struktur zeigen, entsprechend + * erweitert (Wundgrund, Belag, Wundrand, Exsudat, Größe, Fistel/Tasche, Lokalisation, + * Empfohlene Wundversorgung), + * - zwei auf dem Papierbogen vorhandene, aber in der handschriftlichen Liste fehlende + * Abschnitte wieder aufgenommen ("Weitere Überlegung" - vermutlich versehentlich in der + * handschriftlichen Liste ausgelassen; "Nächster Termin" - auf dem Bogen als eigenes Feld + * vorhanden), + * - "Verlauf" bewusst NICHT um die alten Papier-Checkboxen erweitert (explizit vom Kunden + * bestätigt: bleibt reiner Freitext, die alte Checkbox-Auswahl wurde bewusst verworfen), + * - "Wundumgebung" und "Auswirkungen auf das alltägliche Leben" um die Papier-Checkbox-Listen + * ergänzt, jeweils MIT vorangestelltem freiem Textfeld (die ohnehin an jedem Block + * automatisch vorhandene generische Freitext-Option deckt das ab, s. [FREE_TEXT_LABEL]), + * - "Wundart" um die Papier-Checkbox "nicht bekannt/diagnostiziert" ergänzt (zusätzlich zum + * Freitext - NICHT Teil der früher verworfenen Wundarten-Liste, sondern ein eigenständiges + * Status-Flag). + * + * Frühere, im Kundenchat zwischenzeitlich diskutierte, aber später ausdrücklich verworfene + * Inhalte (Wundart-Typenliste, Verlauf-Checkboxen, "Schmerzempfinden 1-10") sind weiterhin + * bewusst NICHT enthalten. * * Diese Definitionen sind bewusst reiner Kotlin-Code und keine Room-Tabellen: Sie ändern sich * nur durch neue App-Versionen, nicht durch Nutzerinteraktion. Siehe Architektur-Dokument @@ -17,20 +36,19 @@ package de.medapp.wunddoku.domain.catalog * Metadatum in Documentation.catalogVersion übernommen. Erhöhe diesen Wert, wenn sich Blöcke * oder Checkboxen inhaltlich ändern (nicht bei rein redaktionellen Korrekturen wie * Tippfehlern) – rein zu Nachvollziehbarkeitszwecken, nicht sicherheitsrelevant für die - * historische Korrektheit (das übernehmen die Label-/Titel-Snapshots). Auf 2 erhöht mit - * Einführung dieser finalen fachlichen Inhalte (vorher: neutrale Platzhalter "Block 1"-"Block 3"). + * historische Korrektheit (das übernehmen die Label-/Titel-Snapshots). Auf 3 erhöht mit dem + * Abgleich gegen das ursprüngliche Papierformular. */ object DocumentationCatalog { - const val CATALOG_VERSION: Int = 2 + const val CATALOG_VERSION: Int = 3 /** * Label der automatisch an jeden Block angehängten Freitext-Option (Änderungswunsch: * "Freitext soll selbst wie eine weitere auswählbare Option behandelt werden"). Zentral * hier definiert, damit Repository (Erstellung/Fortsetzen) und PDF-Export dieselbe * Bezeichnung verwenden. Gilt weiterhin unverändert für ALLE Blöcke, auch für solche, die - * laut Kundenvorgabe fachlich "nur Checkboxen" wären (z. B. Entzündungszeichen, Geruch, - * Schmerz, Juckreiz) - das wurde ausdrücklich so bestätigt und ist kein Fehler. + * fachlich "nur Checkboxen" wären - ausdrücklich bestätigt und kein Fehler. */ const val FREE_TEXT_LABEL: String = "Freitext" @@ -39,19 +57,29 @@ object DocumentationCatalog { id = "wundart", title = "Wundart", order = 1, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "wundart_nicht_bekannt_diagnostiziert", label = "nicht bekannt/diagnostiziert", order = 1), + ), ), BlockDefinition( id = "lokalisation", title = "Lokalisation", order = 2, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "lokalisation_multiple_wunden", label = "multiple Wunden im Bereich", order = 1), + ), ), BlockDefinition( id = "groesse", title = "Größe", order = 3, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "groesse_multiple_wunden_max", label = "multiple Wunden mit max. (cm)", order = 1, isFreeText = true), + CheckItemDefinition(id = "groesse_wunde", label = "Wunde", order = 2), + CheckItemDefinition(id = "groesse_areal", label = "Areal", order = 3), + CheckItemDefinition(id = "groesse_masse", label = "Maße (Länge x Breite, ca. cm)", order = 4, isFreeText = true), + CheckItemDefinition(id = "groesse_vertikale_tiefe", label = "Vertikale Tiefe (ca. cm)", order = 5, isFreeText = true), + ), ), BlockDefinition( id = "verlauf", @@ -69,6 +97,16 @@ object DocumentationCatalog { CheckItemDefinition(id = "exsudat_maessig", label = "Mäßig", order = 3), CheckItemDefinition(id = "exsudat_viel", label = "Viel", order = 4), CheckItemDefinition(id = "exsudat_uebermaessig", label = "Übermäßig", order = 5), + CheckItemDefinition(id = "exsudat_waessrig", label = "Wässrig", order = 6), + CheckItemDefinition(id = "exsudat_zaehfluessig", label = "Zähflüssig", order = 7), + CheckItemDefinition(id = "exsudat_eitrig", label = "Eitrig", order = 8), + CheckItemDefinition(id = "exsudat_blutig", label = "Blutig", order = 9), + CheckItemDefinition(id = "exsudat_klar", label = "Klar", order = 10), + CheckItemDefinition(id = "exsudat_gelblich", label = "Gelblich", order = 11), + CheckItemDefinition(id = "exsudat_gruenlich", label = "Grünlich", order = 12), + CheckItemDefinition(id = "exsudat_braeunlich", label = "Bräunlich", order = 13), + CheckItemDefinition(id = "exsudat_roetlich", label = "Rötlich", order = 14), + CheckItemDefinition(id = "exsudat_weisslich", label = "Weißlich", order = 15), ), ), BlockDefinition( @@ -76,33 +114,99 @@ object DocumentationCatalog { title = "Wundgrund + Erscheinung", order = 6, items = listOf( - CheckItemDefinition(id = "wundgrund_erscheinung_wundgrund", label = "Wundgrund", order = 1, isFreeText = true), - CheckItemDefinition(id = "wundgrund_erscheinung_erscheinung", label = "Erscheinung", order = 2, isFreeText = true), + CheckItemDefinition(id = "wundgrund_eben", label = "Eben", order = 1), + CheckItemDefinition(id = "wundgrund_unregelmaessig", label = "Unregelmäßig", order = 2), + CheckItemDefinition(id = "wundgrund_knospig", label = "Knospig", order = 3), + CheckItemDefinition(id = "wundgrund_auf_niveau", label = "Auf Niveau", order = 4), + CheckItemDefinition(id = "wundgrund_ueber_niveau", label = "Über Niveau", order = 5), + CheckItemDefinition(id = "wundgrund_glaenzend", label = "Glänzend", order = 6), + CheckItemDefinition(id = "wundgrund_grob", label = "Grob", order = 7), + CheckItemDefinition(id = "wundgrund_fein", label = "Fein", order = 8), + CheckItemDefinition(id = "wundgrund_glatt", label = "Glatt", order = 9), + CheckItemDefinition(id = "wundgrund_rot", label = "Rot", order = 10), + CheckItemDefinition(id = "wundgrund_blass", label = "Blass", order = 11), + CheckItemDefinition(id = "wundgrund_knochen_sehnen", label = "Knochen/Sehnen", order = 12), + CheckItemDefinition(id = "wundgrund_haemorrhagie", label = "Hämorrhagie", order = 13), + CheckItemDefinition(id = "wundgrund_nicht_kaum_einsehbar", label = "Nicht/kaum einsehbar", order = 14), + CheckItemDefinition(id = "wundgrund_erscheinung_erscheinung", label = "Erscheinung", order = 15, isFreeText = true), ), ), BlockDefinition( id = "belag", title = "Belag", order = 7, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "belag_nein", label = "Nein", order = 1), + CheckItemDefinition(id = "belag_ja", label = "Ja", order = 2), + CheckItemDefinition(id = "belag_fibrin", label = "Fibrin", order = 3), + CheckItemDefinition(id = "belag_fremdkoerper", label = "Fremdkörper", order = 4), + CheckItemDefinition(id = "belag_nekrose", label = "Nekrose", order = 5), + CheckItemDefinition(id = "belag_kruste", label = "Kruste", order = 6), + CheckItemDefinition(id = "belag_mit_fibrinsaum", label = "Mit Fibrinsaum", order = 7), + CheckItemDefinition(id = "belag_trocken", label = "Trocken", order = 8), + CheckItemDefinition(id = "belag_feucht", label = "Feucht", order = 9), + CheckItemDefinition(id = "belag_100_prozent", label = "100%", order = 10), + CheckItemDefinition(id = "belag_75_prozent", label = "75%", order = 11), + CheckItemDefinition(id = "belag_50_prozent", label = "50%", order = 12), + CheckItemDefinition(id = "belag_25_prozent_plus", label = "25%+<", order = 13), + ), ), BlockDefinition( id = "wundrand", title = "Wundrand", order = 8, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "wundrand_unauffaellig", label = "Unauffällig", order = 1), + CheckItemDefinition(id = "wundrand_partiell_unterschiedlich", label = "Partiell unterschiedlich", order = 2), + CheckItemDefinition(id = "wundrand_rosarot", label = "Rosarot", order = 3), + CheckItemDefinition(id = "wundrand_rot", label = "Rot", order = 4), + CheckItemDefinition(id = "wundrand_blaeulich", label = "Bläulich", order = 5), + CheckItemDefinition(id = "wundrand_blass", label = "Blass", order = 6), + CheckItemDefinition(id = "wundrand_blutig", label = "Blutig", order = 7), + CheckItemDefinition(id = "wundrand_mit_kruste_belegt", label = "Mit Kruste belegt", order = 8), + CheckItemDefinition(id = "wundrand_mazeriert", label = "Mazeriert", order = 9), + CheckItemDefinition(id = "wundrand_unterminiert", label = "Unterminiert", order = 10), + CheckItemDefinition(id = "wundrand_trocken", label = "Trocken", order = 11), + CheckItemDefinition(id = "wundrand_glatt", label = "Glatt", order = 12), + CheckItemDefinition(id = "wundrand_flach_einlaufend", label = "Flach einlaufend", order = 13), + CheckItemDefinition(id = "wundrand_wallartig", label = "Wallartig", order = 14), + CheckItemDefinition(id = "wundrand_wulstig", label = "Wulstig", order = 15), + CheckItemDefinition(id = "wundrand_zerklueftet", label = "Zerklüftet", order = 16), + CheckItemDefinition(id = "wundrand_ueberhaengende_strukturen_lefzen", label = "Überhängende Strukturen/Lefzen", order = 17), + ), ), BlockDefinition( id = "wundumgebung", title = "Wundumgebung", order = 9, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "wundumgebung_unauffaellig", label = "Unauffällig", order = 1), + CheckItemDefinition(id = "wundumgebung_oedem", label = "Ödem", order = 2), + CheckItemDefinition(id = "wundumgebung_ekzem", label = "Ekzem", order = 3), + CheckItemDefinition(id = "wundumgebung_schuppig", label = "Schuppig", order = 4), + CheckItemDefinition(id = "wundumgebung_narbengewebe", label = "Narbengewebe", order = 5), + CheckItemDefinition(id = "wundumgebung_hornhaut_verhaertet", label = "Hornhaut/verhärtet", order = 6), + CheckItemDefinition(id = "wundumgebung_geroetet", label = "Gerötet", order = 7), + CheckItemDefinition(id = "wundumgebung_blaeulich", label = "Bläulich", order = 8), + CheckItemDefinition(id = "wundumgebung_blass", label = "Blass", order = 9), + CheckItemDefinition(id = "wundumgebung_hyperkeratose", label = "Hyperkeratose", order = 10), + CheckItemDefinition(id = "wundumgebung_pergamenthaut", label = "Pergamenthaut", order = 11), + CheckItemDefinition(id = "wundumgebung_rissig_kratzspuren", label = "Rissig/Kratzspuren", order = 12), + CheckItemDefinition(id = "wundumgebung_spannungsblasen", label = "Spannungsblasen", order = 13), + CheckItemDefinition(id = "wundumgebung_haematome", label = "Hämatome", order = 14), + ), ), BlockDefinition( id = "fistel_tasche", title = "Fistel / Tasche", order = 10, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "fistel_tasche_nein", label = "Nein", order = 1), + CheckItemDefinition(id = "fistel_tasche_ja", label = "Ja", order = 2), + CheckItemDefinition(id = "fistel_tasche_zirkulaer", label = "Zirkulär", order = 3), + CheckItemDefinition(id = "fistel_tasche_von_bis_uhr", label = "Von ... bis ... Uhr", order = 4, isFreeText = true), + CheckItemDefinition(id = "fistel_tasche_tiefe", label = "Tiefe (ca. cm)", order = 5, isFreeText = true), + ), ), BlockDefinition( id = "entzuendungszeichen", @@ -166,7 +270,11 @@ object DocumentationCatalog { id = "auswirkungen_alltag", title = "Auswirkungen auf das alltägliche Leben", order = 16, - items = emptyList(), + items = listOf( + CheckItemDefinition(id = "auswirkungen_alltag_ja", label = "Ja", order = 1), + CheckItemDefinition(id = "auswirkungen_alltag_nein", label = "Nein", order = 2), + CheckItemDefinition(id = "auswirkungen_alltag_nicht_ermittelbar", label = "Nicht ermittelbar", order = 3), + ), ), BlockDefinition( id = "bekannte_allergie", @@ -187,27 +295,72 @@ object DocumentationCatalog { CheckItemDefinition(id = "beratung_hautpflege", label = "Hautpflege", order = 6), ), ), + BlockDefinition( + id = "weitere_ueberlegung", + title = "Weitere Überlegung", + order = 19, + items = listOf( + CheckItemDefinition(id = "weitere_ueberlegung_hausarztvisite", label = "Hausarztvisite", order = 1), + CheckItemDefinition(id = "weitere_ueberlegung_kompressionstherapie", label = "Kompressionstherapie", order = 2), + CheckItemDefinition(id = "weitere_ueberlegung_wundabstrich", label = "Wundabstrich", order = 3), + CheckItemDefinition(id = "weitere_ueberlegung_angepasste_schmerztherapie", label = "Angepasste Schmerztherapie", order = 4), + CheckItemDefinition(id = "weitere_ueberlegung_anpassung_wundversorgung", label = "Anpassung der Wundversorgung", order = 5), + CheckItemDefinition(id = "weitere_ueberlegung_facharztliches_konsil", label = "Fachärztliches Konsil", order = 6), + CheckItemDefinition(id = "weitere_ueberlegung_ernaehrungsberatung", label = "Ernährungsberatung", order = 7), + CheckItemDefinition(id = "weitere_ueberlegung_pflegeberatung", label = "Pflegeberatung", order = 8), + CheckItemDefinition(id = "weitere_ueberlegung_hilfsmittel", label = "Hilfsmittel", order = 9), + CheckItemDefinition(id = "weitere_ueberlegung_bewegung_lagerungsplan", label = "Bewegung / Lagerungsplan", order = 10), + CheckItemDefinition(id = "weitere_ueberlegung_verbandwechsel_pflegedienst", label = "Verbandwechsel durch Pflegefachkräfte / Pflegedienst", order = 11), + CheckItemDefinition( + id = "weitere_ueberlegung_aerztliche_abklaerung_dringend", + label = "Ärztliche Abklärung zeitnah/dringend erforderlich / erbeten, Gefahr von bleibenden körperlichen Schäden / lebensbedrohlichen Prozessen", + order = 12, + ), + ), + ), BlockDefinition( id = "sonstiges", title = "Sonstiges", - order = 19, + order = 20, items = emptyList(), ), BlockDefinition( id = "empfohlene_wundversorgung", title = "Empfohlene Wundversorgung", - order = 20, + order = 21, items = listOf( - CheckItemDefinition( - id = "empfohlene_wundversorgung_hinweis_bedarf", - label = "+ bei Bedarf", - order = 1, - isStaticHint = true, - ), + CheckItemDefinition(id = "empfohlene_wundversorgung_hinweis_reinigen_mit", label = "Reinigen mit:", order = 1, isStaticHint = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_sterile_kompresse", label = "Sterile Kompresse", order = 2), + CheckItemDefinition(id = "empfohlene_wundversorgung_nacl", label = "NaCl 0,9%", order = 3), + CheckItemDefinition(id = "empfohlene_wundversorgung_octenisept", label = "Octenisept", order = 4), + CheckItemDefinition(id = "empfohlene_wundversorgung_granudacyn", label = "Granudacyn", order = 5), + CheckItemDefinition(id = "empfohlene_wundversorgung_getraenkte_kompresse", label = "Getränkte Kompresse für ca. ... Min. auflegen", order = 6, isFreeText = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_tupfend", label = "Tupfend", order = 7), + CheckItemDefinition(id = "empfohlene_wundversorgung_wischend", label = "Wischend", order = 8), + CheckItemDefinition(id = "empfohlene_wundversorgung_nachspuelen_nacl", label = "Nachspülen mit NaCl 0,9%", order = 9), + CheckItemDefinition(id = "empfohlene_wundversorgung_umgebung_trocken_tupfen", label = "Umgebung trocken tupfen", order = 10), + CheckItemDefinition(id = "empfohlene_wundversorgung_primaer_abdecken_austamponieren", label = "Primär Wunde abdecken/austamponieren", order = 11), + CheckItemDefinition(id = "empfohlene_wundversorgung_ueber_wundrand_hinaus", label = "Über Wundrand hinaus", order = 12), + CheckItemDefinition(id = "empfohlene_wundversorgung_nicht_ueber_wundrand_mit", label = "Nicht über Wundrand mit", order = 13, isFreeText = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_hinweis_wundrandschutz_mit", label = "Wundrandschutz mit (bis 3x Wo.):", order = 14, isStaticHint = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_secura", label = "Secura", order = 15), + CheckItemDefinition(id = "empfohlene_wundversorgung_cavilon", label = "Cavilon", order = 16), + CheckItemDefinition(id = "empfohlene_wundversorgung_hinweis_sekundaere_wundauflage", label = "Sekundäre Wundauflage:", order = 17, isStaticHint = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_sekundaer_sterile_kompresse", label = "Sterile Kompresse", order = 18), + CheckItemDefinition(id = "empfohlene_wundversorgung_saugkompresse", label = "Saugkompresse", order = 19), + CheckItemDefinition(id = "empfohlene_wundversorgung_hinweis_fixieren_mit", label = "Fixieren mit:", order = 20, isStaticHint = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_mullbinde", label = "Mullbinde", order = 21), + CheckItemDefinition(id = "empfohlene_wundversorgung_klebevlies", label = "Klebevlies", order = 22), + CheckItemDefinition(id = "empfohlene_wundversorgung_folienverband", label = "Folienverband", order = 23), + CheckItemDefinition(id = "empfohlene_wundversorgung_schlauchverband", label = "Schlauchverband", order = 24), + CheckItemDefinition(id = "empfohlene_wundversorgung_kohaesive_fixierbinde", label = "Kohäsive Fixierbinde", order = 25), + CheckItemDefinition(id = "empfohlene_wundversorgung_kompressionsverband", label = "Kompressionsverband", order = 26), + CheckItemDefinition(id = "empfohlene_wundversorgung_wechselintervall", label = "Wechselintervall", order = 27, isFreeText = true), + CheckItemDefinition(id = "empfohlene_wundversorgung_hinweis_bedarf", label = "+ bei Bedarf", order = 28, isStaticHint = true), CheckItemDefinition( id = "empfohlene_wundversorgung_hinweis_abklaerung", label = "Generell: bei akuter Verschlechterung sofort ärztliche Abklärung", - order = 2, + order = 29, isStaticHint = true, ), ), @@ -215,7 +368,7 @@ object DocumentationCatalog { BlockDefinition( id = "ziel", title = "Ziel", - order = 21, + order = 22, items = listOf( CheckItemDefinition(id = "ziel_sauberes_wundmilieu", label = "Sauberes Wundmilieu", order = 1), CheckItemDefinition(id = "ziel_infektionsprophylaxe", label = "Infektionsprophylaxe", order = 2), @@ -233,7 +386,7 @@ object DocumentationCatalog { BlockDefinition( id = "kopie_nachrichtlich_an", title = "Kopie nachrichtlich an", - order = 22, + order = 23, items = listOf( CheckItemDefinition(id = "kopie_nachrichtlich_an_arzt", label = "Ärztin / Arzt", order = 1, isFreeText = true), CheckItemDefinition(id = "kopie_nachrichtlich_an_pflege", label = "Pflege", order = 2, isFreeText = true), @@ -241,6 +394,12 @@ object DocumentationCatalog { CheckItemDefinition(id = "kopie_nachrichtlich_an_sonstige", label = "Sonstige", order = 4, isFreeText = true), ), ), + BlockDefinition( + id = "naechster_termin", + title = "Nächster Termin", + order = 24, + items = emptyList(), + ), ) fun findBlock(blockDefinitionId: String): BlockDefinition? = @@ -269,13 +428,14 @@ data class BlockDefinition( * Normalfall: reine Checkbox ([isFreeText] = false, [isStaticHint] = false). * * [isFreeText] = true: eine vom Katalog selbst definierte, fachlich eigenständig benannte - * Freitext-Checkbox (z. B. "Wundgrund", "Erscheinung", oder ein Empfänger bei "Kopie + * Freitext-Checkbox (z. B. "Erscheinung", "Wechselintervall", oder ein Empfänger bei "Kopie * nachrichtlich an") - technisch identisch zur automatisch an JEDEN Block angehängten * generischen Freitext-Option (s. DocumentationRepository.insertBlocksFromCatalog), nur mit * eigenem Label statt "Freitext". Ein Block kann beliebig viele solcher Einträge definieren. * - * [isStaticHint] = true: reiner, nicht editierbarer Hinweistext (z. B. "+ bei Bedarf") - [label] - * ist hier direkt der anzuzeigende Hinweistext selbst, keine Checkbox-Beschriftung. + * [isStaticHint] = true: reiner, nicht editierbarer Hinweistext (z. B. "+ bei Bedarf" oder eine + * optische Zwischenüberschrift wie "Reinigen mit:") - [label] ist hier direkt der anzuzeigende + * Text selbst, keine Checkbox-Beschriftung. * * [isFreeText] und [isStaticHint] schließen sich fachlich gegenseitig aus (ein Eintrag ist * entweder normale Checkbox, Freitext-Checkbox oder Hinweistext) - es gibt aber bewusst keine