9.1 KiB
🏥 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
-
Clonez le projet
git clone https://gitea.louismazin.ovh/LouisMazin/HoDA_Radio.git cd HoDA_Radio
-
Configurez l'environnement
# 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)
-
Lancez l'application
- Windows : Double-cliquez sur
tools\open.bat
- macOS : Exécutez
tools/open.command
- Linux : Exécutez
tools/open.sh
- Windows : Double-cliquez sur
📦 Build de production
-
Build automatique
- Windows :
tools\build.bat
- macOS :
tools/build.command
- Linux :
tools/build.sh
- Windows :
-
Fichier généré
- L'exécutable se trouve dans le dossier
build/
- Nom automatique :
HoDA_Radio-{OS}-{ARCH}-v{VERSION}
- L'exécutable se trouve dans le dossier
🎯 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
:
{
"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
:
{
"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
- Créez votre fenêtre dans
app/ui/windows/
- Ajoutez-la aux onglets dans
main_window.py
- Implémentez les notifications de thème/langue si nécessaire
Tests et debugging
# 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
- Utilisez l'onglet "Suggestion" dans l'application
- Ou ouvrez une issue sur Gitea
- Incluez : OS, version Python, logs d'erreur, étapes de reproduction
Contribuer
- Forkez le dépôt
- Créez une branche feature/fix
- Testez vos modifications
- 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 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 🚀