#!/usr/bin/env python3
"""
Script pour améliorer le reasoning des codes de test.
"""

from pipeline_mco_pmsi.database.base import get_engine, get_session_factory
from pipeline_mco_pmsi.database.models import StayDB, CodeDB

def update_reasoning():
    """Mettre à jour le reasoning des codes de test."""
    engine = get_engine()
    session_factory = get_session_factory(engine)
    db = session_factory()
    
    try:
        # Récupérer le séjour TEST001
        stay = db.query(StayDB).filter(StayDB.stay_id == "TEST001").first()
        if not stay:
            print("Séjour TEST001 non trouvé")
            return
        
        # Récupérer les codes
        codes = db.query(CodeDB).filter(CodeDB.stay_id == stay.id).all()
        
        for code in codes:
            if code.type == "dp" and code.code == "K35.8":
                code.reasoning = """Le diagnostic principal K35.8 (Appendicite aiguë, autres et sans précision) est justifié par :
- Présence de douleurs abdominales aiguës dans la fosse iliaque droite
- Signes cliniques d'appendicite confirmés à l'examen
- Intervention chirurgicale réalisée (appendicectomie)
- Confirmation anatomopathologique de l'appendicite aiguë
- Absence de complications (pas de péritonite, pas d'abcès)

Ce code correspond au motif principal d'hospitalisation et à la pathologie ayant mobilisé l'essentiel des ressources."""
            
            elif code.type == "ccam":
                code.reasoning = """L'acte CCAM est justifié par :
- Réalisation effective de l'intervention chirurgicale
- Technique chirurgicale : appendicectomie par laparoscopie
- Durée opératoire : environ 45 minutes
- Anesthésie générale
- Absence de complications per-opératoires
- Geste technique principal du séjour

Cet acte correspond à la prise en charge chirurgicale du diagnostic principal."""
        
        db.commit()
        print("✅ Reasoning mis à jour avec succès")
        
        # Afficher les résultats
        for code in codes:
            print(f"\n{code.type.upper()} {code.code}:")
            print(f"  Reasoning: {code.reasoning[:100]}...")
    
    finally:
        db.close()

if __name__ == "__main__":
    update_reasoning()
