#!/usr/bin/env python3
"""
Script de prueba para verificar la extracción de procedimientos de factura
"""

# Datos de prueba basados en el ejemplo del usuario
factura_html = """
<p><b>5. SERVICIOS Y PROCEDIMIENTOS MÉDICOS</b></p>
<p><b>Procedimientos quirúrgicos</b></p>
<table>
<thead><tr><th>Concepto</th><th>Código CUPS</th><th>Descripción</th><th>Cantidad</th><th>Valor unitario</th><th>Total</th></tr></thead>
<tbody>
<tr><td>Osteosíntesis en húmero</td><td>13171</td><td>No disponible</td><td>1.00</td><td>$0.00</td><td>$0.00</td></tr>
<tr><td>Reparación del manguito rotador del hombro</td><td>13727</td><td>No disponible</td><td>1.00</td><td>$0.00</td><td>$0.00</td></tr>
<tr><td>Extracción de cuerpos libres intraarticulares en hombro, codo, rodilla, tobillo o articulación temporomandibular</td><td>18211</td><td>No disponible</td><td>1.00</td><td>$0.00</td><td>$0.00</td></tr>
</tbody>
</table>
"""

def extraer_procedimientos(factura_html):
    """Extrae procedimientos de la factura HTML"""
    import re
    from html.parser import HTMLParser
    
    procedimientos = []
    
    # Extraer filas de tabla
    patron = r'<tr>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>'
    matches = re.findall(patron, factura_html, re.DOTALL)
    
    for match in matches:
        concepto = re.sub(r'<.*?>', '', match[0]).strip()
        codigo = re.sub(r'<.*?>', '', match[1]).strip()
        descripcion = re.sub(r'<.*?>', '', match[2]).strip()
        
        # Filtrar encabezados
        if (concepto and concepto not in ['Concepto', 'Procedimiento'] and 
            descripcion and descripcion != 'Descripción' and descripcion != 'No disponible'):
            
            # Usar concepto si no hay descripción válida
            descripcion_final = descripcion if descripcion != 'No disponible' else concepto
            
            procedimientos.append({
                'codigo_soat': codigo,
                'descripcion': descripcion_final
            })
    
    return procedimientos

def main():
    print("🧪 TEST: Extracción de Procedimientos de Factura")
    print("=" * 60)
    
    procedimientos = extraer_procedimientos(factura_html)
    
    print(f"\n✅ Se extrajeron {len(procedimientos)} procedimientos:\n")
    
    for i, proc in enumerate(procedimientos, 1):
        print(f"Procedimiento #{i}:")
        print(f"  Código: {proc['codigo_soat']}")
        print(f"  Descripción: {proc['descripcion']}")
        print()
    
    print("\n" + "=" * 60)
    print("💡 Para probar en la epicrisis:")
    print("1. Ve a la epicrisis de un paciente con factura")
    print("2. Busca el botón '🤖 Procesar Procedimientos de Factura con Gemini'")
    print("3. Haz clic y verifica que se extraigan los procedimientos")
    print("4. Los códigos CIE-10 y CUPS se generarán automáticamente")

if __name__ == "__main__":
    main()
