205 lines
4.6 KiB
Markdown
205 lines
4.6 KiB
Markdown
# 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
|