beta 1.2 release #14
@@ -7,7 +7,7 @@ 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
|
||||
> **Projektstatus:** beta1.1
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@@ -344,32 +344,6 @@ werden kann.
|
||||
- JDK über Android Studio
|
||||
- Android-Gerät oder Android Emulator
|
||||
|
||||
### Projekt öffnen
|
||||
|
||||
Repository klonen:
|
||||
|
||||
``` bash
|
||||
git clone <repository-url>
|
||||
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
|
||||
@@ -387,40 +361,40 @@ Run
|
||||
### Phase 2 -- Projektgrundgerüst
|
||||
|
||||
- [x] Android-Projekt
|
||||
- [ ] Room-Datenbank
|
||||
- [ ] Entities
|
||||
- [ ] DAOs
|
||||
- [ ] Repositories
|
||||
- [ ] Navigation
|
||||
- [ ] ViewModels
|
||||
- [x] Room-Datenbank
|
||||
- [x] Entities
|
||||
- [x] DAOs
|
||||
- [x] Repositories
|
||||
- [x] Navigation
|
||||
- [x] ViewModels
|
||||
|
||||
### Phase 3 -- Kernfunktionalität
|
||||
|
||||
- [ ] Patientenverwaltung
|
||||
- [ ] Patientenliste
|
||||
- [ ] Wunddokumentationsliste
|
||||
- [ ] Dokumentation erstellen
|
||||
- [ ] Dokumentationsblöcke
|
||||
- [ ] Blocknavigation
|
||||
- [ ] Autosave
|
||||
- [ ] Dokumentation bearbeiten
|
||||
- [ ] Dokumentation fortsetzen
|
||||
- [x] Patientenverwaltung
|
||||
- [x] Patientenliste
|
||||
- [x] Wunddokumentationsliste
|
||||
- [x] Dokumentation erstellen
|
||||
- [x] Dokumentationsblöcke
|
||||
- [x] Blocknavigation
|
||||
- [x] Autosave
|
||||
- [x] Dokumentation bearbeiten
|
||||
- [x] Dokumentation fortsetzen
|
||||
|
||||
### Phase 4 -- Medien
|
||||
|
||||
- [ ] Fotoimport
|
||||
- [ ] Bildverwaltung
|
||||
- [ ] Digitale Signatur
|
||||
- [ ] Mehrere Signaturen
|
||||
- [x] Fotoimport
|
||||
- [x] Bildverwaltung
|
||||
- [x] Digitale Signatur
|
||||
- [x] Mehrere Signaturen
|
||||
|
||||
### Phase 5 -- PDF
|
||||
|
||||
- [ ] PDF-Exporter
|
||||
- [ ] Dokumentationsblöcke
|
||||
- [ ] Signaturen
|
||||
- [ ] Fotoanhang
|
||||
- [ ] PDF anzeigen
|
||||
- [ ] PDF teilen
|
||||
- [x] PDF-Exporter
|
||||
- [x] Dokumentationsblöcke
|
||||
- [x] Signaturen
|
||||
- [x] Fotoanhang
|
||||
- [x] PDF anzeigen
|
||||
- [x] PDF teilen
|
||||
|
||||
### Phase 6 -- Qualität und Stabilität
|
||||
|
||||
@@ -431,29 +405,15 @@ Run
|
||||
- [ ] Tablet-Optimierung
|
||||
- [ ] Datenschutz-Review
|
||||
|
||||
------------------------------------------------------------------------
|
||||
### Phase 7 -- Multi-Device-Synchronisation
|
||||
|
||||
## 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.
|
||||
- [ ] Geräteidentität und Pairing
|
||||
- [ ] Automatische Geräteerkennung im WLAN
|
||||
- [ ] Differenzabgleich / Sync-Protokoll
|
||||
- [ ] Patienten synchronisieren
|
||||
- [ ] Wunddokumentationen synchronisieren
|
||||
- [ ] Fotos synchronisieren
|
||||
- [ ] Konflikterkennung und Konfliktauflösung
|
||||
- [ ] Automatische Synchronisation
|
||||
- [ ] Sync-Status und manueller Fallback
|
||||
- [ ] Multi-Device- und Recovery-Tests
|
||||
|
||||
@@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
@@ -446,8 +447,28 @@ private fun DocumentationEditContent(
|
||||
onDeleteSignatureRequested: (signatureId: String) -> Unit,
|
||||
loadSignatureBitmap: suspend (documentationId: String, fileName: String) -> Bitmap?,
|
||||
) {
|
||||
val listState = rememberLazyListState()
|
||||
|
||||
// Änderungswunsch: Beim Aufklappen eines Blocks dorthin scrollen, damit sein erster Eintrag
|
||||
// sichtbar wird - wichtig bei langen Formularen, wenn ein weiter unten liegender Block
|
||||
// aufgeklappt wird und sein Inhalt sonst unterhalb des sichtbaren Bereichs läge. Reagiert
|
||||
// NUR auf tatsächliches Aufklappen (expandedBlockId wechselt zu einer konkreten Block-ID),
|
||||
// nicht auf das Zuklappen (expandedBlockId wird null) - dort gibt es nichts, wohin gescrollt
|
||||
// werden müsste. Da jeder Block GENAU EIN LazyColumn-Element ist (Kopfzeile + bei Bedarf
|
||||
// aufgeklappter Inhalt gemeinsam, s. [BlockAccordionItem]) und die Block-Liste die ERSTEN
|
||||
// Elemente der LazyColumn sind, landet der Block-Index 1:1 auf dem passenden
|
||||
// LazyColumn-Index - der Block erscheint dadurch ganz oben im sichtbaren Bereich, sein
|
||||
// erster Eintrag direkt darunter.
|
||||
LaunchedEffect(expandedBlockId) {
|
||||
val targetIndex = blocks.indexOfFirst { it.blockStateId == expandedBlockId }
|
||||
if (targetIndex >= 0) {
|
||||
listState.animateScrollToItem(targetIndex)
|
||||
}
|
||||
}
|
||||
|
||||
LazyColumn(
|
||||
modifier = modifier,
|
||||
state = listState,
|
||||
contentPadding = PaddingValues(16.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp),
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user