# VulneraDoc **VulneraDoc** ist eine native Android-Anwendung zur strukturierten, offlinefähigen Wunddokumentation. Die App ermöglicht die Verwaltung von Patienten und Wunddokumentationen, unterstützt Fotos und digitale Unterschriften und erzeugt aus abgeschlossenen Dokumentationen PDF-Dateien. > **Projektstatus:** In Entwicklung ------------------------------------------------------------------------ ## Features ### Patientenverwaltung - Patienten anlegen und bearbeiten - Stammdatenverwaltung: - Vor- und Nachname - Geburtsdatum - Adresse - bis zu drei Telefonnummern - Patienten durchsuchen - Datum der letzten Wunddokumentation anzeigen ### Wunddokumentation Eine Wunddokumentation besteht aus mehreren datengetriebenen Dokumentationsblöcken. Jeder Block kann enthalten: - vordefinierte Checkboxen - Freitext - automatische Speicherung bei Änderungen Zwischen den Dokumentationsblöcken kann auf Smartphone und Tablet navigiert werden. Bestehende Dokumentationen können: - bearbeitet - gelöscht - als Grundlage einer neuen Dokumentation fortgesetzt werden. Beim **Fortsetzen** wird eine neue Dokumentation aus dem vorherigen Stand erzeugt. Die ursprüngliche Dokumentation bleibt unverändert erhalten. ### Autosave VulneraDoc benötigt keinen klassischen Speichern-Button. Änderungen an Checkboxen werden unmittelbar persistiert. Freitexte werden nach einem kurzen Debounce automatisch gespeichert. Die lokale Datenbank bildet jederzeit den maßgeblichen persistierten Stand der Dokumentation. ### Fotos Einer Dokumentation können mehrere Fotos hinzugefügt werden. Der Import erfolgt über den Android Photo Picker. Importierte Bilder werden in den internen App-Speicher kopiert und dadurch unabhängig von der ursprünglichen Datei in der Galerie verwaltet. ### Digitale Unterschriften Dokumentationen können direkt auf dem Android-Gerät per Finger oder Stylus unterschrieben werden. Das Datenmodell unterstützt mehrere Unterschriften pro Dokumentation, beispielsweise für unterschiedliche Wundversorger. ### PDF-Export Aus einer Dokumentation kann ein PDF erzeugt werden. Dabei werden ausschließlich tatsächlich bearbeitete Dokumentationsblöcke ausgegeben. Das PDF enthält: 1. Patienten- und Dokumentationsinformationen 2. bearbeitete Dokumentationsblöcke 3. vorhandene Unterschriften 4. angehängte Fotos Anschließend kann das PDF mit einem installierten PDF-Reader geöffnet oder über den Android Sharesheet geteilt werden. Das Dateinamensschema lautet: ``` text Erstelldatum_Patientenname_Geburtsdatum.pdf ``` Beispiel: ``` text 2026-08-19_Max_Mustermann_1980-03-14.pdf ``` ------------------------------------------------------------------------ ## Offline First VulneraDoc ist als vollständig offlinefähige Anwendung konzipiert. Für die Kernfunktionen ist keine Internetverbindung erforderlich: - Patientenverwaltung - Dokumentationen erstellen und bearbeiten - Autosave - Fotos - Signaturen - Suche - PDF-Erzeugung Eine optionale Synchronisation mehrerer Geräte innerhalb eines lokalen WLANs ist für eine spätere Version vorgesehen, aber nicht Bestandteil von Version 1. ------------------------------------------------------------------------ ## Tech Stack Bereich Technologie --------------- ------------------------------------ Sprache Kotlin UI Jetpack Compose Design Material 3 UI-State ViewModel + StateFlow Asynchronität Kotlin Coroutines Persistenz Room Datenbank SQLite Navigation Navigation Compose Fotos Android Photo Picker PDF `android.graphics.pdf.PdfDocument` Dateifreigabe Android FileProvider ------------------------------------------------------------------------ ## Architektur VulneraDoc verwendet eine bewusst schlanke Schichtenarchitektur: ``` text Jetpack Compose UI │ ▼ ViewModel │ ▼ Repository │ ▼ DAO │ ▼ Room │ ▼ SQLite ``` ### UI Jetpack Compose stellt den aktuellen Zustand dar und leitet Benutzeraktionen an das jeweilige ViewModel weiter. Die UI enthält keine SQL-, Datei- oder PDF-Logik. ### ViewModel ViewModels verwalten den UI-State über `StateFlow` und koordinieren Benutzeraktionen. ### Repository Repositories bilden die zentrale Datenzugriffsschicht und koordinieren DAOs sowie bei Bedarf lokale Dateien. ### DAO DAOs enthalten ausschließlich Room-/SQLite-bezogene Datenbankoperationen. ### Domain Model Fachliche Datenmodelle sind von Room und Compose getrennt. Room-spezifische Entities werden ausschließlich für die Persistenz verwendet. ------------------------------------------------------------------------ ## Datenmodell Die wichtigsten Relationen sind: ``` text Patient │ │ 1:n ▼ Documentation │ ├── 1:n ── BlockState │ │ │ └── 1:n ── CheckItemState │ ├── 1:n ── Photo │ └── 1:n ── Signature ``` Als Primärschlüssel werden UUIDs verwendet. Dies erleichtert insbesondere eine mögliche spätere Synchronisation zwischen mehreren Geräten. ------------------------------------------------------------------------ ## Historische Dokumentationen Die Struktur einer neuen Wunddokumentation wird durch einen zentralen `DocumentationCatalog` definiert. Beim Erstellen einer Dokumentation werden die verwendeten: - Blocktitel - Checkboxtexte - Reihenfolgen als Snapshot persistiert. ``` text DocumentationCatalog │ │ neue Dokumentation ▼ persistierter Snapshot │ ▼ historische Dokumentation ``` Dadurch verändern spätere Änderungen des Dokumentationskatalogs nicht rückwirkend bereits vorhandene Dokumentationen. ------------------------------------------------------------------------ ## Projektstruktur Die Anwendung orientiert sich an folgender Struktur: ``` text app/ ├── data/ │ ├── database/ │ ├── dao/ │ ├── entity/ │ ├── mapper/ │ └── repository/ │ ├── domain/ │ └── model/ │ ├── ui/ │ ├── documentation/ │ ├── patients/ │ ├── components/ │ ├── navigation/ │ └── theme/ │ ├── media/ │ ├── photo/ │ └── signature/ │ ├── pdf/ ├── di/ └── MainActivity.kt ``` Dependency Injection wird zunächst ohne zusätzliches Framework über einen zentralen `AppContainer` umgesetzt. ------------------------------------------------------------------------ ## Datenschutz und lokale Speicherung VulneraDoc verarbeitet sensible personenbezogene und medizinische Daten. Daher gelten unter anderem folgende Architekturentscheidungen: - Patientendaten werden lokal gespeichert. - Fotos, Signaturen und PDFs werden bevorzugt im internen App-Speicher abgelegt. - Bilder werden nicht als BLOB in SQLite gespeichert. - Es werden keine Patientendaten in normalen Logs ausgegeben. - Es werden keine Analytics-Dienste verwendet. - Cloud-/Android-Backups werden deaktiviert bzw. bewusst eingeschränkt. - Unnötige Android-Berechtigungen werden vermieden. - `FLAG_SECURE` verhindert Screenshots und Recent-Apps-Vorschaubilder. - Dateien werden extern ausschließlich gezielt über `FileProvider` und `content://`-URIs freigegeben. ------------------------------------------------------------------------ ## PDF und Schreibschutz VulneraDoc erzeugt in Version 1 ein statisches PDF ohne interaktive Formularfelder. Mit „schreibgeschützt" ist derzeit **kein kryptographischer Manipulationsschutz** gemeint. Insbesondere sind in Version 1 nicht vorgesehen: - PDF-Owner-Passwort - Berechtigungsschutz - kryptographische PDF-Signatur Die PDF-Erzeugung wird hinter einem `DocumentationPdfExporter` abstrahiert, sodass die konkrete PDF-Implementierung später ausgetauscht werden kann. ------------------------------------------------------------------------ ## Entwicklung ### Voraussetzungen - Android Studio - Android SDK - JDK über Android Studio - Android-Gerät oder Android Emulator ### Projekt öffnen Repository klonen: ``` bash git clone cd VulneraDoc ``` Anschließend den Projektordner in Android Studio öffnen. Android Studio führt beim ersten Öffnen einen Gradle-Sync durch und lädt die benötigten Dependencies. Danach: ``` text Gradle Sync ↓ Build / Make Project ↓ Android-Gerät oder Emulator auswählen ↓ Run ``` ------------------------------------------------------------------------ ## Projektphasen ### Phase 1 -- Architektur - [x] Projektarchitektur - [x] Datenmodell - [x] Datenbankschema - [x] Navigation - [x] PDF-Konzept - [x] Autosave-Konzept - [x] Medien- und Signaturkonzept ### Phase 2 -- Projektgrundgerüst - [ ] Android-Projekt - [ ] Room-Datenbank - [ ] Entities - [ ] DAOs - [ ] Repositories - [ ] Navigation - [ ] ViewModels ### Phase 3 -- Kernfunktionalität - [ ] Patientenverwaltung - [ ] Patientenliste - [ ] Wunddokumentationsliste - [ ] Dokumentation erstellen - [ ] Dokumentationsblöcke - [ ] Blocknavigation - [ ] Autosave - [ ] Dokumentation bearbeiten - [ ] Dokumentation fortsetzen ### Phase 4 -- Medien - [ ] Fotoimport - [ ] Bildverwaltung - [ ] Digitale Signatur - [ ] Mehrere Signaturen ### Phase 5 -- PDF - [ ] PDF-Exporter - [ ] Dokumentationsblöcke - [ ] Signaturen - [ ] Fotoanhang - [ ] PDF anzeigen - [ ] PDF teilen ### Phase 6 -- Qualität und Stabilität - [ ] Unit Tests - [ ] Room Tests - [ ] UI Tests - [ ] Fehlerbehandlung - [ ] Tablet-Optimierung - [ ] Datenschutz-Review ------------------------------------------------------------------------ ## Dokumentation Die ausführliche technische Architektur befindet sich in der Projektdokumentation: ``` text docs/ └── Architekturplanung.md ``` Dort werden unter anderem Datenmodell, Datenbankschema, Navigationskonzept, Autosave, PDF-Erzeugung und Medienverwaltung detailliert beschrieben. ------------------------------------------------------------------------ ## Status **VulneraDoc befindet sich aktuell in Entwicklung und ist nicht für den produktiven Einsatz freigegeben.** Insbesondere bei der Verarbeitung realer Patientendaten müssen vor einem Produktiveinsatz die rechtlichen, datenschutzrechtlichen und sicherheitstechnischen Anforderungen abschließend geprüft werden.