# API TIM - Interface de Validation et Correction

Cette API REST fournit une interface complète pour le workflow TIM (Technicien d'Information Médicale) du pipeline de codage MCO PMSI.

## Fonctionnalités

### 1. Affichage des Codes Proposés (Exigence 10.1)
- **Endpoint**: `GET /stays/{stay_id}/coding-proposal`
- Affiche tous les codes proposés (DP, DR, DAS, CCAM)
- Inclut les scores de confiance et justifications
- Fournit les preuves textuelles pour chaque code

### 2. Navigation Preuves → Texte Source (Exigences 10.2, 10.3)
- **Endpoint**: `GET /stays/{stay_id}/evidence/{code}`
- Récupère les preuves pour un code spécifique
- Fournit des liens vers les documents sources
- **Endpoint**: `GET /documents/{document_id}`
- Affiche le contenu complet d'un document

### 3. Correction de Codes (Exigence 10.6)
- **Endpoint**: `POST /stays/{stay_id}/correct-code`
- Permet de corriger un code proposé
- Enregistre l'horodatage et l'identifiant utilisateur
- Stocke un commentaire optionnel

### 4. Validation de Dossier (Exigence 10.7)
- **Endpoint**: `POST /stays/{stay_id}/validate`
- Valide un dossier complet
- Statuts possibles: `accepted`, `rejected`, `needs_review`
- Enregistre l'horodatage et l'identifiant utilisateur

### 5. Ajout de Commentaires (Exigence 10.8)
- **Endpoint**: `POST /stays/{stay_id}/comment`
- Ajoute un commentaire à un code spécifique
- Permet la collaboration entre TIM

### 6. Export d'Audit (Exigence 10.9)
- **Endpoint**: `POST /stays/{stay_id}/audit/export`
- Exporte la piste d'audit complète
- Options: chiffré ou non chiffré
- Filtrage optionnel des DIP

## Démarrage

### Installation des dépendances

```bash
pip install fastapi uvicorn python-multipart
```

### Lancement du serveur

```bash
python scripts/start_api.py
```

Ou directement avec uvicorn:

```bash
uvicorn pipeline_mco_pmsi.api.tim_api:app --reload --host 0.0.0.0 --port 8000
```

### Accès à l'interface

Le script détecte automatiquement un port libre (par défaut à partir de 8001).

- **Interface web**: http://localhost:8001 (ou le port affiché au démarrage)
- **Documentation API (Swagger)**: http://localhost:8001/docs
- **Documentation alternative (ReDoc)**: http://localhost:8001/redoc

Vous pouvez aussi spécifier un port manuellement :
```bash
python scripts/start_api.py --port 9000
```

## Interface Web

L'interface web fournie (`static/index.html`) offre:

- 🔍 Recherche de séjours par identifiant
- 📋 Affichage des codes proposés avec scores de confiance
- ✏️ Correction de codes en un clic
- 💬 Ajout de commentaires
- ✅ Validation de dossiers (accepter/rejeter/à revoir)
- 📄 Navigation vers les preuves et documents sources
- 📤 Export d'audit (chiffré ou non)

## Exemples d'utilisation

### Récupérer les codes proposés

```bash
curl http://localhost:8000/stays/STAY001/coding-proposal
```

### Corriger un code

```bash
curl -X POST http://localhost:8000/stays/STAY001/correct-code \
  -H "Content-Type: application/json" \
  -d '{
    "stay_id": "STAY001",
    "original_code": "I10",
    "corrected_code": "I11.9",
    "comment": "Précision du diagnostic"
  }'
```

### Valider un dossier

```bash
curl -X POST http://localhost:8000/stays/STAY001/validate \
  -H "Content-Type: application/json" \
  -d '{
    "stay_id": "STAY001",
    "validation_status": "accepted",
    "comment": "Codage conforme"
  }'
```

### Exporter l'audit

```bash
curl -X POST http://localhost:8000/stays/STAY001/audit/export \
  -H "Content-Type: application/json" \
  -d '{
    "stay_id": "STAY001",
    "include_pii": false,
    "encrypt": true
  }'
```

## Architecture

```
src/pipeline_mco_pmsi/api/
├── __init__.py          # Module principal
├── tim_api.py           # API FastAPI
├── static/              # Fichiers statiques
│   └── index.html       # Interface web
└── README.md            # Cette documentation
```

## Sécurité

### En développement
- CORS ouvert à toutes les origines
- Pas d'authentification requise

### En production (TODO)
- Configurer CORS avec origines spécifiques
- Implémenter l'authentification JWT
- Intégrer avec AccessControl pour RBAC
- Activer HTTPS
- Limiter les taux de requêtes

## Tests

Des tests d'intégration sont disponibles dans `tests/test_tim_api.py`.

```bash
pytest tests/test_tim_api.py -v
```

## Prochaines étapes

- [ ] Implémenter l'authentification JWT
- [ ] Intégrer le contrôle d'accès RBAC
- [ ] Ajouter la pagination pour les listes
- [ ] Implémenter le filtrage et la recherche avancée
- [ ] Ajouter des WebSockets pour les mises à jour en temps réel
- [ ] Créer une interface web plus riche (React/Vue.js)
