Initial commit
This commit is contained in:
204
omop/README_WEB_INTERFACE.md
Normal file
204
omop/README_WEB_INTERFACE.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user