HoDA_Radio/README.md

274 lines
9.1 KiB
Markdown

# 🏥 HoDA Radio - Anonymisation d'Images Médicales
**HoDA Radio** est une application moderne et intuitive pour l'anonymisation d'images médicales DICOM. Développée en Python avec PyQt6, elle offre une interface élégante et des outils professionnels pour protéger la confidentialité des patients tout en conservant l'utilité médicale des images.
---
## ✨ Fonctionnalités principales
### 🔒 Anonymisation avancée
- **Importation DICOM** : Support complet des fichiers et dossiers DICOM
- **Édition en temps réel** : Outils de gomme et masquage intuitifs
- **Prévisualisation instantanée** : Visualisation des modifications avant export
- **Métadonnées** : Nettoyage automatique des informations sensibles
### 🎨 Interface moderne
- **Thèmes dynamiques** : Clair/sombre avec personnalisation complète
- **Multi-langues** : Français, anglais, espagnol (extensible)
- **Navigation fluide** : Barre d'onglets verticale avec icônes SVG
- **Responsive** : Interface adaptative selon la taille d'écran
### 📤 Export flexible
- **Formats multiples** : PNG, PDF, DCM, DICOMDIR
- **Métadonnées** : Export JSON et XLS des informations
- **Batch processing** : Traitement par lots pour l'efficacité
- **Préservation qualité** : Compression optimisée
### 🔄 Système intelligent
- **Mise à jour automatique** : Vérification et téléchargement des nouvelles versions
- **Splash screen utile** : Chargement avec feedback en temps réel
- **Gestion d'erreurs** : Messages informatifs et récupération gracieuse
- **Cache optimisé** : Performance améliorée pour les gros volumes
---
## 🗂️ Architecture du projet
```
HoDA_Radio/
├── app/
│ ├── core/ # Gestionnaires principaux
│ │ ├── main_manager.py # Chef d'orchestre
│ │ ├── dicom_manager.py # Gestion des fichiers DICOM
│ │ ├── theme_manager.py # Thèmes et styles
│ │ ├── language_manager.py # Traductions
│ │ ├── settings_manager.py # Paramètres utilisateur
│ │ ├── update_manager.py # Mises à jour
│ │ └── alert_manager.py # Messages et alertes
│ ├── ui/
│ │ ├── widgets/ # Composants réutilisables
│ │ │ ├── tabs_widget.py # Barre d'onglets personnalisée
│ │ │ ├── loading_spinner.py # Indicateur de chargement
│ │ │ ├── loading_bar.py # Barre de progression
│ │ │ └── image_viewer.py # Visualiseur d'images DICOM
│ │ └── windows/ # Fenêtres principales
│ │ ├── main_window.py # Fenêtre principale
│ │ ├── splash_screen.py # Écran de chargement
│ │ ├── dicom_window.py # Interface d'édition DICOM
│ │ ├── import_window.py # Interface d'importation
│ │ ├── export_window.py # Interface d'exportation
│ │ ├── settings_window.py # Paramètres
│ │ └── suggestion_window.py # Feedback utilisateur
│ └── utils/ # Utilitaires
│ └── paths.py # Gestion des chemins
├── data/
│ ├── assets/ # Ressources (icônes, images)
│ ├── lang/ # Fichiers de traduction
│ │ ├── fr.json # Français
│ │ ├── en.json # Anglais
│ │ └── es.json # Espagnol
│ ├── themes/ # Thèmes visuels
│ │ ├── dark.json # Thème sombre
│ │ └── light.json # Thème clair
│ └── others/ # Configurations
│ └── defaults_settings.json
├── tools/ # Scripts de développement
│ ├── build.bat # Build Windows
│ ├── build.command # Build macOS
│ └── open.bat # Environnement de dev
├── config.json # Configuration principale
├── requirements.txt # Dépendances Python
├── BUILD.spec # Configuration PyInstaller
└── main.py # Point d'entrée
```
---
## ⚡ Installation et utilisation
### Pré-requis
- **Python 3.10+** (recommandé 3.11)
- **Système** : Windows 10+, macOS 10.15+, ou Linux Ubuntu 20.04+
### 🚀 Démarrage rapide
1. **Clonez le projet**
```bash
git clone https://gitea.louismazin.ovh/LouisMazin/HoDA_Radio.git
cd HoDA_Radio
```
2. **Configurez l'environnement**
```bash
# Copiez le fichier d'environnement
cp .env.example .env
# Éditez .env avec vos paramètres
# PYTHON_PATH=/chemin/vers/python
# EMAIL_USER=votre.email@gmail.com (optionnel)
# EMAIL_PASSWORD=votre_mot_de_passe (optionnel)
```
3. **Lancez l'application**
- **Windows** : Double-cliquez sur `tools\open.bat`
- **macOS** : Exécutez `tools/open.command`
- **Linux** : Exécutez `tools/open.sh`
### 📦 Build de production
1. **Build automatique**
- **Windows** : `tools\build.bat`
- **macOS** : `tools/build.command`
- **Linux** : `tools/build.sh`
2. **Fichier généré**
- L'exécutable se trouve dans le dossier `build/`
- Nom automatique : `HoDA_Radio-{OS}-{ARCH}-v{VERSION}`
---
## 🎯 Utilisation de l'application
### 1. **Import des images DICOM**
- Glissez-déposez vos fichiers ou dossiers DICOM
- Support des archives et structures complexes
- Validation automatique des formats
### 2. **Anonymisation interactive**
- Utilisez l'outil gomme pour masquer les zones sensibles
- Prévisualisez en temps réel vos modifications
- Ajustez la taille du pinceau selon vos besoins
### 3. **Export sécurisé**
- Choisissez vos formats de sortie
- Sélectionnez les images à exporter
- Nettoyage automatique des métadonnées
---
## 🎨 Personnalisation
### Thèmes personnalisés
Créez votre thème dans `data/themes/mon_theme.json` :
```json
{
"theme_name": "Mon Thème",
"colors": {
"background_color": "#1a1a1a",
"primary_color": "#007acc",
"text_color": "#ffffff"
}
}
```
### Nouvelles langues
Ajoutez une traduction dans `data/lang/code_langue.json` :
```json
{
"lang_name": "Deutsch",
"language": "Sprache :",
"theme": "Thema :",
"loading": "Laden..."
}
```
---
## 🔧 Développement avancé
### Architecture des managers
- **MainManager** : Singleton coordonnant tous les autres managers
- **DicomManager** : Logique métier pour les fichiers médicaux
- **ThemeManager** : Système de thèmes dynamiques avec cache
- **ObserverManager** : Pattern Observer pour les notifications inter-composants
### Ajout de fonctionnalités
1. Créez votre fenêtre dans `app/ui/windows/`
2. Ajoutez-la aux onglets dans `main_window.py`
3. Implémentez les notifications de thème/langue si nécessaire
### Tests et debugging
```bash
# Mode développement avec logs
python main.py --debug
# Tests unitaires (si implémentés)
python -m pytest tests/
```
---
## 📋 Dépendances principales
- **PyQt6** : Interface graphique moderne
- **pydicom** : Manipulation des fichiers DICOM
- **pillow** : Traitement d'images
- **numpy** : Calculs numériques
- **requests** : Mises à jour automatiques
- **packaging** : Gestion des versions
- **python-dotenv** : Variables d'environnement
---
## 🔒 Sécurité et confidentialité
### Protection des données
- **Traitement local** : Aucune donnée médicale envoyée sur internet
- **Cache temporaire** : Nettoyage automatique à la fermeture
- **Métadonnées** : Suppression des informations personnelles
### Bonnes pratiques
- Utilisez des mots de passe d'application pour Gmail
- Ne versionnez jamais le fichier `.env`
- Vérifiez les exports avant diffusion
---
## 🔄 Mise à jour automatique
L'application vérifie automatiquement les nouvelles versions :
- **Au démarrage** : Vérification silencieuse
- **Notification** : Proposition de téléchargement si disponible
- **Installation** : Téléchargement avec barre de progression
- **Compatibilité** : Détection automatique OS/architecture
---
## 🆘 Support et contribution
### Signaler un problème
1. Utilisez l'onglet "Suggestion" dans l'application
2. Ou ouvrez une issue sur [Gitea](https://gitea.louismazin.ovh/LouisMazin/HoDA_Radio)
3. Incluez : OS, version Python, logs d'erreur, étapes de reproduction
### Contribuer
1. Forkez le dépôt
2. Créez une branche feature/fix
3. Testez vos modifications
4. Soumettez une pull request
### Règles de contribution
- Code Python PEP 8 compliant
- Documentation des nouvelles fonctionnalités
- Tests unitaires pour la logique métier critique
- Respect de l'architecture existante
---
## 📝 Licence
**Attribution License** - voir [LICENSE](LICENSE) pour les détails complets.
Toute utilisation, reproduction ou distribution doit inclure une attribution visible à l'auteur : **LouisMazin**.
---
## 🙏 Remerciements
- **PyQt6** pour le framework d'interface
- **pydicom** pour la manipulation des fichiers médicaux
- **Communauté open source** pour les contributions et retours
---
**HoDA Radio - Protégez la confidentialité, préservez l'utilité médicale** 🚀