Files
aivanov_CIM/test_interface_api.py
2026-03-05 01:20:14 +01:00

163 lines
5.8 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Script de test pour vérifier que l'interface web TIM fonctionne correctement.
"""
import requests
import json
import sys
API_BASE = "http://localhost:8001"
STAY_ID = "15_23096332"
def test_api_connection():
"""Test la connexion à l'API."""
print("🔍 Test 1: Connexion à l'API...")
try:
response = requests.get(f"{API_BASE}/", timeout=5)
if response.status_code == 200:
print("✅ API accessible")
return True
else:
print(f"❌ API retourne le code {response.status_code}")
return False
except requests.exceptions.ConnectionError:
print("❌ Impossible de se connecter à l'API")
print(" Le serveur est-il démarré?")
print(" Commande: python -m uvicorn pipeline_mco_pmsi.api.tim_api:app --host 0.0.0.0 --port 8001")
return False
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def test_coding_proposal():
"""Test l'endpoint de proposition de codage."""
print(f"\n🔍 Test 2: Récupération de la proposition de codage pour {STAY_ID}...")
try:
response = requests.get(f"{API_BASE}/stays/{STAY_ID}/coding-proposal", timeout=10)
if response.status_code == 404:
print(f"❌ Séjour {STAY_ID} non trouvé")
print(" Avez-vous traité ce séjour avec le pipeline?")
return False
if response.status_code != 200:
print(f"❌ Erreur HTTP {response.status_code}")
print(f" Réponse: {response.text}")
return False
data = response.json()
print("✅ Données reçues avec succès")
print(f" - Stay ID: {data.get('stay_id')}")
print(f" - DP: {data.get('dp', {}).get('code')} - {data.get('dp', {}).get('label', 'N/A')[:50]}")
print(f" - DR: {data.get('dr', {}).get('code')} - {data.get('dr', {}).get('label', 'N/A')[:50]}")
print(f" - DAS: {len(data.get('das', []))} codes")
print(f" - CCAM: {len(data.get('ccam', []))} actes")
# Vérifier la structure des données
if not data.get('dp'):
print("⚠️ Attention: Pas de DP")
if not data.get('dr'):
print("⚠️ Attention: Pas de DR")
if not data.get('das'):
print("⚠️ Attention: Pas de DAS")
if not data.get('ccam'):
print("⚠️ Attention: Pas de CCAM")
return True
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def test_documents():
"""Test la récupération des documents."""
print(f"\n🔍 Test 3: Récupération des documents...")
try:
# D'abord, récupérer la proposition de codage pour obtenir les IDs de documents
response = requests.get(f"{API_BASE}/stays/{STAY_ID}/coding-proposal", timeout=10)
if response.status_code != 200:
print("❌ Impossible de récupérer la proposition de codage")
return False
data = response.json()
# Extraire les IDs de documents depuis les preuves
document_ids = set()
for code in [data.get('dp'), data.get('dr')] + data.get('das', []) + data.get('ccam', []):
if code and code.get('evidence'):
for ev in code['evidence']:
if ev.get('document_id'):
document_ids.add(ev['document_id'])
if not document_ids:
print("⚠️ Aucun document trouvé dans les preuves")
return True
print(f" Documents trouvés: {len(document_ids)}")
# Tester la récupération d'un document
doc_id = list(document_ids)[0]
response = requests.get(f"{API_BASE}/documents/{doc_id}", timeout=10)
if response.status_code == 200:
doc_data = response.json()
print(f"✅ Document {doc_id} récupéré")
print(f" - Type: {doc_data.get('document_type')}")
print(f" - Taille: {len(doc_data.get('content', ''))} caractères")
return True
else:
print(f"❌ Erreur lors de la récupération du document {doc_id}")
return False
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def main():
"""Fonction principale."""
print("=" * 60)
print("Test de l'Interface Web TIM")
print("=" * 60)
results = []
# Test 1: Connexion API
results.append(test_api_connection())
if not results[0]:
print("\n❌ Le serveur API n'est pas accessible. Arrêt des tests.")
sys.exit(1)
# Test 2: Proposition de codage
results.append(test_coding_proposal())
# Test 3: Documents
results.append(test_documents())
# Résumé
print("\n" + "=" * 60)
print("Résumé des tests")
print("=" * 60)
print(f"Tests réussis: {sum(results)}/{len(results)}")
if all(results):
print("\n✅ Tous les tests sont passés!")
print("\n📝 Prochaines étapes:")
print(" 1. Ouvrir http://localhost:8001 dans votre navigateur")
print(f" 2. Entrer l'ID du séjour: {STAY_ID}")
print(" 3. Cliquer sur 'Charger le séjour'")
print(" 4. Si rien ne s'affiche, ouvrir la console (F12) pour voir les erreurs")
sys.exit(0)
else:
print("\n❌ Certains tests ont échoué")
print("\n📝 Actions recommandées:")
print(" 1. Vérifier que le serveur API est démarré")
print(" 2. Vérifier que le séjour a été traité par le pipeline")
print(" 3. Consulter DIAGNOSTIC_INTERFACE_WEB.md pour plus de détails")
sys.exit(1)
if __name__ == "__main__":
main()