Initial commit

This commit is contained in:
Dom
2026-03-05 01:20:15 +01:00
commit c0c50e56f0
364 changed files with 62207 additions and 0 deletions

367
omop/INTERFACE_PREVIEW.md Normal file
View File

@@ -0,0 +1,367 @@
# 🖼️ Aperçu de l'Interface Web OMOP Pipeline
## Navigation (Sidebar)
```
┌─────────────────────────┐
│ OMOP Pipeline │
│─────────────────────────│
│ 📊 Dashboard │
│ ⚙️ ETL Manager │
│ 🗄️ Schema │
│ ✅ Validation │
│ 📝 Logs │
└─────────────────────────┘
```
---
## 📊 Dashboard
```
╔═══════════════════════════════════════════════════════════════╗
║ Dashboard OMOP Pipeline ║
║ Vue d'ensemble du système ETL ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ║
║ │ PATIENTS │ │ VISITES │ │ CONDITIONS │ ║
║ │ OMOP │ │ │ │ │ ║
║ │ │ │ │ │ │ ║
║ │ 100 │ │ 194 │ │ 222 │ ║
║ └──────────────┘ └──────────────┘ └──────────────┘ ║
║ ║
║ ┌──────────────┐ ║
║ │ EN ATTENTE │ ║
║ │ │ ║
║ │ │ ║
║ │ 662 │ ║
║ └──────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Exécutions récentes (24h) │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ Total: 5 Réussies: 4 Échouées: 1 │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Historique ETL │ ║
║ ├──────────┬──────────┬─────────┬──────────┬──────────────┤ ║
║ │ Pipeline │ Début │ Statut │ Records │ Durée (s) │ ║
║ ├──────────┼──────────┼─────────┼──────────┼──────────────┤ ║
║ │ person │ 14:30:22 │ ✓ OK │ 100 │ 2.34 │ ║
║ │ visits │ 14:25:10 │ ✓ OK │ 194 │ 3.12 │ ║
║ │ drugs │ 14:20:05 │ ✗ FAIL │ 0 │ 0.45 │ ║
║ └──────────┴──────────┴─────────┴──────────┴──────────────┘ ║
╚═══════════════════════════════════════════════════════════════╝
```
---
## ⚙️ ETL Manager
```
╔═══════════════════════════════════════════════════════════════╗
║ Gestionnaire ETL ║
║ Lancer et gérer les pipelines ETL ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Nouveau Pipeline ETL │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ │ ║
║ │ Table source │ ║
║ │ [staging.raw_patients ▼] │ ║
║ │ │ ║
║ │ Table cible │ ║
║ │ [person ▼] │ ║
║ │ │ ║
║ │ Taille de batch │ ║
║ │ [1000] │ ║
║ │ │ ║
║ │ Nombre de workers │ ║
║ │ [8] │ ║
║ │ │ ║
║ │ ☐ Mode séquentiel (pas de parallélisation) │ ║
║ │ │ ║
║ │ [ 🚀 Lancer le pipeline ] │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Jobs en cours │ ║
║ ├──────────────┬─────────┬────────────┬──────────────────┤ ║
║ │ Job ID │ Statut │ Progression│ Détails │ ║
║ ├──────────────┼─────────┼────────────┼──────────────────┤ ║
║ │ etl_person_1 │ running │ 45% │ 450/1000 records │ ║
║ │ etl_visits_2 │ queued │ 0% │ En attente │ ║
║ └──────────────┴─────────┴────────────┴──────────────────┘ ║
╚═══════════════════════════════════════════════════════════════╝
```
---
## 🗄️ Schema Manager
```
╔═══════════════════════════════════════════════════════════════╗
║ Gestion des Schémas ║
║ Créer et valider les schémas de base de données ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Créer les schémas │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ │ ║
║ │ [Créer tous les schémas] [Schéma OMOP] │ ║
║ │ [Schéma Staging] [Schéma Audit] │ ║
║ │ │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ État des schémas │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ │ ║
║ │ ✓ Schema is valid │ ║
║ │ │ ║
║ │ ┌──────────┬────────────────┐ │ ║
║ │ │ Schéma │ Nombre tables │ │ ║
║ │ ├──────────┼────────────────┤ │ ║
║ │ │ omop │ 32 │ │ ║
║ │ │ staging │ 12 │ │ ║
║ │ │ audit │ 9 │ │ ║
║ │ └──────────┴────────────────┘ │ ║
║ │ │ ║
║ └─────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════╝
```
---
## ✅ Validation
```
╔═══════════════════════════════════════════════════════════════╗
║ Validation des données ║
║ Vérifier la qualité et la conformité OMOP ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Actions │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ │ ║
║ │ [ ✅ Lancer la validation ] │ ║
║ │ │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Codes non mappés │ ║
║ ├────────────┬──────┬─────────────┬──────────┬───────────┤ ║
║ │ Vocabulaire│ Code │ Nom │ Fréquence│ Dernière │ ║
║ ├────────────┼──────┼─────────────┼──────────┼───────────┤ ║
║ │ ICD-10 │E11.9 │ Diabète T2 │ [42] │ 14:30:22 │ ║
║ │ ICD-10 │I10 │ HTA │ [38] │ 14:25:10 │ ║
║ │ ATC │A10BA │ Metformine │ [35] │ 14:20:05 │ ║
║ │ ICD-10 │J45.9 │ Asthme │ [28] │ 14:15:33 │ ║
║ └────────────┴──────┴─────────────┴──────────┴───────────┘ ║
╚═══════════════════════════════════════════════════════════════╝
```
---
## 📝 Logs
```
╔═══════════════════════════════════════════════════════════════╗
║ Logs système ║
║ Consulter les logs et erreurs ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Filtres │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ Nombre de lignes: [100 ▼] Niveau: [ERROR ▼] │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Logs récents │ ║
║ ├─────────────────────────────────────────────────────────┤ ║
║ │ ┌─────────────────────────────────────────────────────┐ │ ║
║ │ │ 2024-02-07 14:30:22 - INFO - Starting ETL pipeline │ │ ║
║ │ │ 2024-02-07 14:30:23 - INFO - Extracted 100 records │ │ ║
║ │ │ 2024-02-07 14:30:24 - WARNING - Unmapped code E11.9 │ │ ║
║ │ │ 2024-02-07 14:30:25 - ERROR - Validation failed │ │ ║
║ │ │ 2024-02-07 14:30:26 - INFO - Pipeline completed │ │ ║
║ │ └─────────────────────────────────────────────────────┘ │ ║
║ └─────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐ ║
║ │ Erreurs de validation │ ║
║ ├────────┬──────────┬──────────┬─────────────┬───────────┤ ║
║ │ Table │ Record │ Type │ Message │ Date │ ║
║ ├────────┼──────────┼──────────┼─────────────┼───────────┤ ║
║ │ person │ PAT00042 │ [ERROR] │ Invalid DOB │ 14:30:22 │ ║
║ │ visits │ VIS00123 │ [ERROR] │ Missing FK │ 14:25:10 │ ║
║ └────────┴──────────┴──────────┴─────────────┴───────────┘ ║
╚═══════════════════════════════════════════════════════════════╝
```
---
## 🎨 Palette de couleurs
```
Primaire:
Bleu: #3498db ████ (Boutons, liens)
Bleu foncé: #2c3e50 ████ (Texte, sidebar)
Statuts:
Vert: #27ae60 ████ (Succès)
Jaune: #f39c12 ████ (Warning)
Rouge: #e74c3c ████ (Erreur)
Gris: #7f8c8d ████ (Texte secondaire)
Fond:
Blanc: #ffffff ████ (Cards)
Gris clair: #f5f7fa ████ (Background)
Noir: #1e1e1e ████ (Console logs)
```
---
## 📱 Responsive
### Desktop (> 1024px)
```
┌────────────┬──────────────────────────────────────┐
│ │ │
│ Sidebar │ Main Content │
│ (250px) │ (Flexible) │
│ │ │
│ 📊 Dash │ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ ⚙️ ETL │ │Stat│ │Stat│ │Stat│ │Stat│ │
│ 🗄️ Schema │ └────┘ └────┘ └────┘ └────┘ │
│ ✅ Valid │ │
│ 📝 Logs │ ┌──────────────────────────────┐ │
│ │ │ Table / Chart │ │
│ │ └──────────────────────────────┘ │
└────────────┴──────────────────────────────────────┘
```
### Mobile (< 768px)
```
┌──────────────────────────────────────┐
│ ☰ OMOP Pipeline │
├──────────────────────────────────────┤
│ │
│ ┌────────────────────────────────┐ │
│ │ Stat 1 │ │
│ └────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────┐ │
│ │ Stat 2 │ │
│ └────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────┐ │
│ │ Table │ │
│ │ (Scrollable horizontalement) │ │
│ └────────────────────────────────┘ │
│ │
└──────────────────────────────────────┘
```
---
## 🔄 Flux de données
```
┌─────────────┐
│ React │
│ Frontend │
└──────┬──────┘
│ HTTP REST
│ (Axios)
┌─────────────┐
│ FastAPI │
│ Backend │
└──────┬──────┘
│ SQLAlchemy
┌─────────────┐
│ PostgreSQL │
│ Database │
└─────────────┘
```
---
## 🚀 Démarrage
```bash
$ cd omop
$ ./start_web.sh
🚀 Démarrage de l'interface web OMOP Pipeline
📦 Installation des dépendances...
✅ Démarrage des serveurs...
Backend API: http://localhost:8000
Documentation: http://localhost:8000/docs
Frontend: http://localhost:3000
✅ Serveurs démarrés!
API PID: 12345
Frontend PID: 12346
Appuyez sur Ctrl+C pour arrêter les serveurs
```
---
## 📊 Exemple d'utilisation
### Scénario : Lancer un pipeline ETL
1. **Ouvrir l'interface** : http://localhost:3000
2. **Aller dans ETL Manager** (menu gauche)
3. **Configurer le pipeline** :
- Source : `staging.raw_patients`
- Cible : `person`
- Batch : `1000`
- Workers : `8`
4. **Cliquer sur "Lancer le pipeline"**
5. **Suivre la progression** dans le tableau "Jobs en cours"
6. **Voir les résultats** dans le Dashboard
### Résultat attendu
```
Job ID: etl_staging.raw_patients_person
Statut: ✓ completed
Progression: 100%
Détails: 100 enregistrements traités en 2.34s
```
---
## ✨ Points forts
-**Interface intuitive** : Navigation claire et simple
-**Temps réel** : Refresh automatique des données
-**Responsive** : Fonctionne sur tous les écrans
-**Moderne** : Design professionnel et épuré
-**Complet** : Toutes les fonctionnalités ETL disponibles
-**Documenté** : Documentation complète et exemples
---
## 🎯 Prêt à l'emploi !
L'interface est **complète** et **fonctionnelle**. Tu peux :
1. Lancer les serveurs avec `./start_web.sh`
2. Ouvrir http://localhost:3000
3. Commencer à gérer ton pipeline OMOP !
**Bon développement ! 🚀**