# Test-Anleitung für dicom2pacs

Diese Anleitung erklärt, wie Sie die dicom2pacs-App testen können.

## Verfügbare Testskripte

### 1. `test_dicom2pacs.sh` - Interaktives Bash-Testskript

Ein interaktives Skript mit Menü für verschiedene Test-Optionen.

**Verwendung:**
```bash
./test_dicom2pacs.sh
```

**Optionen:**
- **Option 1: GUI-Test** - Öffnet die App mit GUI für manuelles Testen
- **Option 2: Unit-Test** - Prüft alle Module ohne GUI
- **Option 3: Integrationstest** - Vollständiger Test mit GUI
- **Option 4: Aufräumen** - Löscht Test-Ordner und Transfer-Ordner

**Was das Skript macht:**
- Erstellt Test-Ordner `~/Downloads/test_dicom`
- Kopiert Test-DICOM-Dateien aus pydicom
- Prüft Konfiguration
- Führt Tests basierend auf Ihrer Auswahl durch

### 2. `test_dicom2pacs.py` - Automatisiertes Python-Testskript

Ein Python-Skript, das automatisch alle Module testet.

**Verwendung:**
```bash
# Mit aktiviertem venv
source venv/bin/activate
python3 test_dicom2pacs.py

# Oder direkt mit venv-Python
venv/bin/python3 test_dicom2pacs.py
```

**Getestete Funktionen:**
- ✓ Module-Imports
- ✓ DICOM-Datei-Erkennung
- ✓ Dateiverwaltung
- ✓ Konfigurationsladen
- ✓ Patientenname-Formatierung
- ✓ Geburtsdatum-Formatierung

## Manuelle Tests

### Test 1: GUI öffnet sich

```bash
source venv/bin/activate
python dicom2pacs.py "Mustermann" "Max" "19800101" "12345"
```

**Erwartetes Verhalten:**
- GUI-Fenster öffnet sich
- "Durchsuchen"-Button ist sichtbar
- "Abbruch"-Button ist sichtbar

### Test 2: DICOM-Dateien finden

1. Erstellen Sie einen Test-Ordner:
```bash
mkdir -p ~/Downloads/test_dicom
```

2. Kopieren Sie Test-DICOM-Dateien:
```bash
# Von der gebauten App
cp dist/dicom2pacs.app/Contents/Resources/lib/python3.13/pydicom/data/test_files/CT_small.dcm ~/Downloads/test_dicom/

# Oder vom venv
cp venv/lib/python3.13/site-packages/pydicom/data/test_files/CT_small.dcm ~/Downloads/test_dicom/
```

3. Starten Sie die App und wählen Sie den Test-Ordner

**Erwartetes Verhalten:**
- App findet DICOM-Dateien
- Fortschrittsanzeige wird angezeigt
- Dateien werden in Transfer-Ordner kopiert

### Test 3: Patientendaten-Vergleich

Die App vergleicht Patientendaten aus den DICOM-Dateien mit den übergebenen Argumenten.

**Erwartetes Verhalten:**
- Wenn Daten übereinstimmen: Kein Dialog
- Wenn Daten abweichen: Dialog mit Vergleichsanzeige
- Benutzer kann wählen: Tomedo-Daten oder Original-Daten

### Test 4: Server-Verfügbarkeit

Die App prüft, ob der PACS-Server erreichbar ist.

**Erwartetes Verhalten:**
- Server erreichbar: Upload startet
- Server nicht erreichbar: Meldung "PACS SERVER NICHT ERREICHBAR"

### Test 5: Upload (mit konfiguriertem Server)

Wenn ein PACS-Server konfiguriert ist, werden Dateien hochgeladen.

**Konfiguration prüfen:**
```bash
cat ~/.dicom2pacs.conf
```

**Erwartetes Verhalten:**
- Fortschrittsanzeige während Upload
- Erfolgsmeldung nach Upload
- Transfer-Ordner wird gelöscht

## Test-Daten vorbereiten

### Automatisch (empfohlen)

Das Bash-Testskript erledigt dies automatisch:
```bash
./test_dicom2pacs.sh
```

### Manuell

1. **Test-Ordner erstellen:**
```bash
mkdir -p ~/Downloads/test_dicom
```

2. **DICOM-Dateien kopieren:**
```bash
# Option A: Von gebauter App
cp dist/dicom2pacs.app/Contents/Resources/lib/python3.13/pydicom/data/test_files/*.dcm ~/Downloads/test_dicom/

# Option B: Von venv
cp venv/lib/python3.13/site-packages/pydicom/data/test_files/*.dcm ~/Downloads/test_dicom/
```

3. **App starten:**
```bash
source venv/bin/activate
python dicom2pacs.py "Mustermann" "Max" "19800101" "12345"
```

## Häufige Probleme

### Problem: "Keine DICOM-Dateien gefunden"

**Lösung:**
- Stellen Sie sicher, dass der Test-Ordner DICOM-Dateien enthält
- Prüfen Sie, ob Dateien die Endung `.dcm` haben oder keine Endung
- Verwenden Sie `test_dicom2pacs.sh` Option 1, um Dateien automatisch zu kopieren

### Problem: "PACS SERVER NICHT ERREICHBAR"

**Lösung:**
- Normal, wenn kein Server konfiguriert ist
- Für vollständigen Test: Orthanc-Server einrichten
- Konfiguration in `~/.dicom2pacs.conf` prüfen

### Problem: "ModuleNotFoundError"

**Lösung:**
```bash
source venv/bin/activate
pip install pydicom aiohttp aiofiles tqdm
```

### Problem: GUI öffnet sich nicht

**Lösung:**
- Prüfen Sie die Konsole auf Fehlermeldungen
- Stellen Sie sicher, dass tkinter installiert ist:
  ```bash
  python3 -m tkinter
  ```

## Aufräumen nach Tests

```bash
# Manuell
rm -rf ~/Downloads/test_dicom
rm -rf ~/Downloads/D2OTrans

# Oder mit Testskript
./test_dicom2pacs.sh
# Option 4 wählen
```

## Test-Zusammenfassung

Nach Ausführung von `test_dicom2pacs.py` erhalten Sie eine Zusammenfassung:

```
=== dicom2pacs Automatisierte Tests ===

Teste Imports...
✓ Alle Module erfolgreich importiert

Teste DICOM-Datei-Erkennung...
✓ DICOM-Datei erkannt: CT_small.dcm -> True

...

==================================================
Test-Zusammenfassung:
==================================================
✓ PASS: Imports
✓ PASS: DICOM-Datei-Erkennung
✓ PASS: Dateiverwaltung
...
==================================================
Ergebnis: 6/6 Tests bestanden
🎉 Alle Tests bestanden!
```

## Nächste Schritte

Nach erfolgreichen Tests können Sie:
1. Die App mit echten DICOM-Dateien testen
2. Einen PACS-Server konfigurieren für Upload-Tests
3. Die App in Produktion einsetzen

Viel Erfolg beim Testen! 🚀
