Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Test simplifié de l'agent NER médical + Mapper de template | |
| Extraction → Affichage → Mapping → Affichage → Fichier TXT | |
| """ | |
| import os | |
| import sys | |
| from type3_extract_entities import MedicalNERAgent, ExtractedData | |
| from medical_template3_mapper import MedicalTemplateMapper, create_filled_medical_report | |
| def main(): | |
| """Test simplifié : extraction + mapping + génération fichier""" | |
| print("🏥 TEST AGENT NER MÉDICAL + MAPPER") | |
| print("=" * 50) | |
| # Transcription à analyser | |
| transcription = """Compte rendu classique. L'utérus est antéversé de taille 7,8 cm 60 d'hystérométrie | |
| 3,7 d'endomètre triangulaire zone jonctionnelle épaissie focale d'adénomyose diffuse fibromes | |
| myomètre pas de fibromes. Le col voulut le laisser comme il est la morphologie triangulaire. | |
| L'ovaire droit mesure 26 x 20 mm, 5 follicules. L'ovaire gauche accessibilité au maître rétro | |
| thérape par contre l'autre il est normal il mesure 25 x 19 mm siège de CFA : 22 follicules. | |
| Le Doppler : IP 3,24 - IR 0,91 et le reste tout en fait qui est l'ovaire gauche d'accès | |
| difficile à rétro-utérin.""" | |
| try: | |
| # ÉTAPE 1: EXTRACTION DES ENTITÉS | |
| print("🔬 ÉTAPE 1: EXTRACTION DES ENTITÉS MÉDICALES") | |
| print("-" * 50) | |
| agent = MedicalNERAgent() | |
| extracted_data = agent.extract_medical_entities(transcription) | |
| # Affichage des résultats d'extraction | |
| print(agent.print_extraction_report(extracted_data)) | |
| # ÉTAPE 2: MAPPING VERS TEMPLATE | |
| print("\n📋 ÉTAPE 2: MAPPING VERS TEMPLATE") | |
| print("-" * 50) | |
| mapper = MedicalTemplateMapper() | |
| mapping_result = mapper.map_extracted_data_to_template(extracted_data) | |
| # Affichage des résultats de mapping | |
| print(mapper.print_mapping_report(mapping_result)) | |
| # ÉTAPE 3: GÉNÉRATION DU FICHIER | |
| print("\n💾 ÉTAPE 3: GÉNÉRATION DU FICHIER") | |
| print("-" * 50) | |
| output_file = "rapport_medical_final.txt" | |
| with open(output_file, 'w', encoding='utf-8') as f: | |
| f.write("RAPPORT MÉDICAL GÉNÉRÉ AUTOMATIQUEMENT\n") | |
| f.write("=" * 50 + "\n\n") | |
| f.write("📋 DONNÉES EXTRAITES:\n") | |
| f.write(agent.print_extraction_report(extracted_data)) | |
| f.write("\n\n📄 TEMPLATE REMPLI:\n") | |
| f.write("-" * 50 + "\n") | |
| f.write(mapping_result.filled_template) | |
| # Ajouter les statistiques | |
| f.write("\n\n📊 STATISTIQUES:\n") | |
| f.write("-" * 30 + "\n") | |
| f.write(f"Score d'extraction: {extracted_data.extraction_confidence:.1%}\n") | |
| f.write(f"Champs mappés: {len(mapping_result.mapped_fields)}\n") | |
| f.write(f"Score de mapping: {mapping_result.mapping_confidence:.1%}\n") | |
| f.write(f"Erreurs de mapping: {len(mapping_result.errors)}\n") | |
| print(f"✅ Rapport médical sauvegardé dans: {output_file}") | |
| # Affichage du résumé final | |
| print(f"\n📊 RÉSUMÉ FINAL:") | |
| print(f" 🎯 Score d'extraction: {extracted_data.extraction_confidence:.1%}") | |
| print(f" 🎯 Champs mappés: {len(mapping_result.mapped_fields)}") | |
| print(f" 🎯 Score de mapping: {mapping_result.mapping_confidence:.1%}") | |
| print(f" ⚠️ Erreurs: {len(mapping_result.errors)}") | |
| print(f" 📝 Placeholders non mappés: {len(mapping_result.unmapped_placeholders)}") | |
| # Affichage des erreurs si présentes | |
| if mapping_result.errors: | |
| print(f"\n⚠️ ERREURS DE MAPPING:") | |
| for error in mapping_result.errors: | |
| print(f" - {error}") | |
| # Affichage de quelques placeholders non mappés | |
| if mapping_result.unmapped_placeholders: | |
| print(f"\n📝 QUELQUES PLACEHOLDERS NON MAPPÉS:") | |
| for placeholder in mapping_result.unmapped_placeholders[:5]: | |
| print(f" - {placeholder[:60]}...") | |
| print("\n🎉 PROCESSUS TERMINÉ AVEC SUCCÈS!") | |
| # Affichage d'un aperçu du template rempli | |
| print(f"\n👁️ APERÇU DU TEMPLATE REMPLI (100 premiers caractères):") | |
| print("-" * 50) | |
| preview = mapping_result.filled_template[:200] + "..." if len(mapping_result.filled_template) > 200 else mapping_result.filled_template | |
| print(preview) | |
| except Exception as e: | |
| print(f"\n💥 ERREUR: {e}") | |
| import traceback | |
| traceback.print_exc() | |
| if __name__ == "__main__": | |
| main() |