# Interface Web OMOP Pipeline Interface web professionnelle pour gérer le pipeline ETL OMOP CDM 5.4. ## Architecture - **Backend**: FastAPI (Python) - **Frontend**: React + Vite - **Communication**: REST API + WebSocket (temps réel) ## Installation ### Backend (FastAPI) ```bash cd omop # Installer les dépendances API pip install -r requirements-api.txt # Lancer le serveur API python run_api.py ``` L'API sera disponible sur http://localhost:8000 Documentation Swagger: http://localhost:8000/docs ### Frontend (React) ```bash cd omop/frontend # Installer les dépendances npm install # Lancer le serveur de développement npm run dev ``` L'interface sera disponible sur http://localhost:3000 ## Fonctionnalités ### 📊 Dashboard - Vue d'ensemble des statistiques - Nombre de patients, visites, conditions - Historique des exécutions ETL - Graphiques de performance ### ⚙️ ETL Manager - Lancer des pipelines ETL - Configurer les paramètres (batch size, workers) - Suivre les jobs en cours - Voir les statistiques d'exécution ### 🗄️ Schema Manager - Créer les schémas (OMOP, Staging, Audit) - Valider les schémas - Voir l'état des tables ### ✅ Validation - Lancer la validation des données - Voir les codes non mappés - Consulter les erreurs de validation ### 📝 Logs - Consulter les logs système - Filtrer par niveau (INFO, WARNING, ERROR) - Voir les erreurs de validation en base ## API Endpoints ### ETL - `POST /api/etl/run` - Lancer un pipeline ETL - `GET /api/etl/jobs` - Lister les jobs - `GET /api/etl/jobs/{job_id}` - Statut d'un job - `POST /api/etl/extract` - Extraction seule - `POST /api/etl/transform` - Transformation seule - `POST /api/etl/load` - Chargement seul ### Schema - `POST /api/schema/create` - Créer un schéma - `GET /api/schema/validate` - Valider les schémas - `GET /api/schema/info` - Info sur les schémas ### Statistics - `GET /api/stats/etl` - Stats ETL - `GET /api/stats/data-quality` - Métriques qualité - `GET /api/stats/summary` - Résumé global ### Validation - `POST /api/validation/run` - Lancer validation - `GET /api/validation/unmapped-codes` - Codes non mappés ### Logs - `GET /api/logs/` - Logs système - `GET /api/logs/errors` - Erreurs de validation ## Développement ### Structure Frontend ``` frontend/ ├── src/ │ ├── api/ │ │ └── client.js # Client API Axios │ ├── pages/ │ │ ├── Dashboard.jsx # Page dashboard │ │ ├── ETLManager.jsx # Gestion ETL │ │ ├── SchemaManager.jsx # Gestion schémas │ │ ├── Validation.jsx # Validation │ │ └── Logs.jsx # Logs │ ├── App.jsx # Application principale │ ├── App.css # Styles │ └── main.jsx # Point d'entrée ├── index.html ├── package.json └── vite.config.js ``` ### Structure Backend ``` src/api/ ├── routers/ │ ├── etl.py # Routes ETL │ ├── schema.py # Routes schémas │ ├── stats.py # Routes statistiques │ ├── validation.py # Routes validation │ └── logs.py # Routes logs └── main.py # Application FastAPI ``` ## Production ### Build Frontend ```bash cd frontend npm run build ``` Les fichiers statiques seront dans `frontend/dist/` ### Servir avec FastAPI Vous pouvez servir le frontend depuis FastAPI en ajoutant: ```python from fastapi.staticfiles import StaticFiles app.mount("/", StaticFiles(directory="frontend/dist", html=True), name="static") ``` ### Déploiement 1. Build le frontend: `npm run build` 2. Copier `frontend/dist/` vers le serveur 3. Lancer l'API: `uvicorn src.api.main:app --host 0.0.0.0 --port 8000` 4. Configurer un reverse proxy (nginx) si nécessaire ## Configuration ### CORS Le backend autorise les origines: - http://localhost:3000 (dev Vite) - http://localhost:5173 (dev Vite alternatif) Pour la production, modifier dans `src/api/main.py`: ```python app.add_middleware( CORSMiddleware, allow_origins=["https://votre-domaine.com"], ... ) ``` ### Base de données L'API utilise la configuration de `config.yaml` pour se connecter à PostgreSQL. ## Captures d'écran ### Dashboard - Statistiques en temps réel - Graphiques de performance - Historique des exécutions ### ETL Manager - Formulaire de lancement - Suivi des jobs en cours - Configuration des paramètres ### Schema Manager - Création de schémas en un clic - Validation automatique - État des tables ## Support Pour toute question ou problème, consulter la documentation API sur http://localhost:8000/docs