From 9b8dc89e8170a57c2c9c88f9db018cd0a63bcd74 Mon Sep 17 00:00:00 2001 From: "niklas.ortmann" Date: Wed, 19 Aug 2026 10:51:44 +0200 Subject: [PATCH] Dateien nach "/" hochladen --- README.md | 459 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 459 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..61210ad --- /dev/null +++ b/README.md @@ -0,0 +1,459 @@ +# 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.