4.6 KiB
4.6 KiB
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)
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)
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 ETLGET /api/etl/jobs- Lister les jobsGET /api/etl/jobs/{job_id}- Statut d'un jobPOST /api/etl/extract- Extraction seulePOST /api/etl/transform- Transformation seulePOST /api/etl/load- Chargement seul
Schema
POST /api/schema/create- Créer un schémaGET /api/schema/validate- Valider les schémasGET /api/schema/info- Info sur les schémas
Statistics
GET /api/stats/etl- Stats ETLGET /api/stats/data-quality- Métriques qualitéGET /api/stats/summary- Résumé global
Validation
POST /api/validation/run- Lancer validationGET /api/validation/unmapped-codes- Codes non mappés
Logs
GET /api/logs/- Logs systèmeGET /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
cd frontend
npm run build
Les fichiers statiques seront dans frontend/dist/
Servir avec FastAPI
Vous pouvez servir le frontend depuis FastAPI en ajoutant:
from fastapi.staticfiles import StaticFiles
app.mount("/", StaticFiles(directory="frontend/dist", html=True), name="static")
Déploiement
- Build le frontend:
npm run build - Copier
frontend/dist/vers le serveur - Lancer l'API:
uvicorn src.api.main:app --host 0.0.0.0 --port 8000 - 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:
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