Consolida historia clínica, soporte quirúrgico, factura, codificación y ayudas diagnósticas en una
única vista trazable para auditoría.
Paciente{{ nombre_paciente }}
{% if case_key %}
Caso{{ case_key }}
{% endif %}
Usuario{{ user.username if user else '---' }}
Historia clínica{{ historia.nombre_archivo if historia else 'No disponible' }}
{% if historia and historia.fecha_analisis %}
{% else %}
-
{% endif %}
Documento quirúrgico{{ quirurgico.nombre_archivo if quirurgico else 'No disponible' }}
{% if quirurgico and quirurgico.fecha_analisis %}
{% else %}
-
{% endif %}
Factura{{ factura.nombre_archivo if factura else 'No disponible' }}
{% if factura and factura.fecha_analisis %}
{% else %}
-
{% endif %}
Historia clínica{{ "Disponible" if historia else "Pendiente" }}Documento quirúrgico{{ "Disponible" if quirurgico else "Pendiente" }}Factura{{ "Disponible" if factura else "Pendiente" }}Salida PDF{{ "Lista" if pdf_draft else "Editable" }}
{% set extraction = historia.extraction_metadata if historia and historia.extraction_metadata else {} %}
{% set processing = historia.historia_processing if historia and historia.historia_processing else {} %}
{% set quality = historia.analysis_quality if historia and historia.analysis_quality else {} %}
{% if historia and (extraction or processing or quality or historia.analysis_model_name) %}
Trazabilidad técnica
Calidad del procesamiento
{{ 'Requiere revisión' if historia.review_required or quality.status == 'degraded' else 'Cobertura completa' }}
Tipo efectivo
{{ historia.effective_document_type or historia.tipo_documento or 'No informado' }}
{% if extraction %}
Páginas con texto
{{ extraction.pages_with_text or 0 }} de {{ extraction.total_pages or 0 }}
{% endif %}
{% if processing %}
Cobertura de entrada
{{ '%.0f'|format((processing.coverage_ratio or 0) * 100) }} % · {{ processing.chunks_succeeded or 0 }}/{{ processing.chunks_total or 0 }} bloques
{% endif %}
{% if historia.analysis_model_name or historia.analysis_provider %}
Proveedor / modelo
{{ historia.analysis_provider or 'No informado' }} / {{ historia.analysis_model_name or 'No informado' }}
{% endif %}
{% if historia.review_messages or extraction.warnings %}
Advertencias
{% for warning in historia.review_messages or [] %}
{{ warning }}
{% endfor %}
{% if extraction.pages_without_text %}
{{ extraction.pages_without_text|length }} página(s) no entregaron texto extraíble.
{% endif %}
{% if not historia.review_messages and extraction.warnings and not extraction.pages_without_text %}
La extracción registró {{ extraction.warnings|length }} advertencia(s) técnicas.
{% endif %}
{% endif %}
{% endif %}
{% if curation_schema_version %}
{% set review_statuses = ['pendiente_revision', 'pendiente_servicio_externo', 'conflicto'] %}
{% set diagnosticos_por_revisar = (diagnosticos_curados or []) | selectattr('status', 'in', review_statuses) | list %}
{% set procedimientos_por_revisar = (procedimientos_curados or []) | selectattr('status', 'in', review_statuses) | list %}
Conciliación clínica trazable
Diagnósticos y procedimientos objetivos
Revisa únicamente los candidatos que requieren una decisión humana.
{{ 'Revisión pendiente' if curation_generation_blocked else 'Conciliación al día' }}
{% if curation_generation_blocked %}
La conciliación clínica tiene revisiones pendientes.
{{ curation_blocking_reason or 'Existe un conflicto principal sin resolver.' }}
Puedes generar el PDF con la selección actual sin resolver primero estas revisiones.
{% endif %}
{% macro evidence_panel(item) %}
{% if item.evidence %}
Ver evidencia ({{ item.evidence|length }})
{% for evidence in item.evidence %}
{{ evidence.document_type }}
{% if evidence.filename %} · {{ evidence.filename }}{% endif %}
{% if evidence.page %} · página {{ evidence.page }}{% endif %}
{% if evidence.section %} · {{ evidence.section }}{% endif %}
{% if evidence.excerpt %}
{{ evidence.excerpt }}
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
{% macro review_actions(item) %}
{% if item.status in review_statuses and case_key %}
{% endif %}
{% endmacro %}
{% if diagnosticos_por_revisar or procedimientos_por_revisar %}
{% for item in antecedentes_hc_view.negatives %}
{{ item.descripcion }}
{% endfor %}
{% endif %}
{% endif %}
{% if procedimientos_hc and procedimientos_hc|length > 0 %}
🔧 Procedimientos Realizados (Historia
Clínica)
{% for proc in procedimientos_hc %}
{{ proc }}
{% endfor %}
{% endif %}
{% if pdf_primary_medicamentos and pdf_primary_medicamentos|length > 0 %}
Medicamentos
Medicamento
Posología
Dosis
Cantidad
Estado
{% for med in pdf_primary_medicamentos %}
{{ med.nombre }}
{% if med.presentacion %}{{ med.presentacion }}{% endif %}
{% if med.codigo_referencia %}CUM/IUM {{ med.codigo_referencia }}{% endif %}
{{ med.posologia or '—' }}
{{ med.dosis or '—' }}
{{ med.cantidad if med.cantidad is not none else '—' }}
{% if med.discrepancia_cantidad %}Requiere conciliación{% endif %}
{% for estado in med.estados %}{{ estado|replace('_', ' ') }}{% endfor %}
{% if med.pertinencia and med.pertinencia.estado %}
{{ med.pertinencia.estado|replace('_', ' ') }}
Orden: {{ med.pertinencia.cadena.orden|replace('_', ' ') }}Administración: {{ med.pertinencia.cadena.administracion|replace('_', ' ') }}Facturación: {{ med.pertinencia.cadena.facturacion|replace('_', ' ') }}Asociación: {{ med.asociacion_factura|replace('_', ' ') }}
{% endif %}
{% endfor %}
{% endif %}
{% else %}
⚠️ No se encontró historia clínica para este paciente o no se pudieron extraer los metadatos.
{% endif %}
📊 Codificación CIE-10
1. Diagnósticos - Historia Clínica
{% set cie_historia = historia.codigos_cie10 if historia and historia.codigos_cie10 else [] %}
{% if cie_historia and cie_historia|length > 0 %}
Diagnóstico
Código CIE-10
{% for item in cie_historia %}
{{ item.descripcion or item.diagnostico }}
{{ item.codigo or 'PENDIENTE' }}
{% endfor %}
{% else %}
⚠️ No se encontraron códigos CIE-10 en la historia clínica.
{% endif %}
2. Diagnósticos Prequirúrgicos y Postquirúrgicos
{% set cie_qx = quirurgico.codigos_cie10 if quirurgico and quirurgico.codigos_cie10 else [] %}
{% if cie_qx and cie_qx|length > 0 %}
Diagnóstico Original
Tipo
Código CIE-10
Descripción CIE-10
{% for item in cie_qx %}
{{ item.descripcion or item.diagnostico }}
{% if 'POP' in item.diagnostico or 'POST' in item.diagnostico.upper() %}
POST
{% else %}
PRE
{% endif %}
{{ item.codigo or 'PENDIENTE' }}
{{ item.descripcion or item.diagnostico }}
{% endfor %}
{% else %}
⚠️ No se encontraron códigos CIE-10 en el documento quirúrgico.
{% endif %}
🔬 Hallazgos y Descripción Quirúrgica
{% if hallazgos_quirurgicos or descripcion_procedimiento %}
{% if hallazgos_quirurgicos %}
5. HALLAZGOS QUIRÚRGICOS
{{ hallazgos_quirurgicos | safe }}
{% endif %}
{% if descripcion_procedimiento %}
6. DESCRIPCIÓN DEL PROCEDIMIENTO
{{ descripcion_procedimiento | safe }}
{% endif %}
{% else %}
⚠️ No se encontraron hallazgos quirúrgicos o el documento no está estructurado correctamente.
{% endif %}
Códigos CUPS Asignados
{% set cups = quirurgico.codigos_cups if quirurgico and quirurgico.codigos_cups else [] %}
{% if cups and cups|length > 0 %}
Procedimiento
Código CUPS
{% for item in cups %}
{{ item.procedimiento }}
{{ item.codigo_cups }}
{% endfor %}
{% else %}
⚠️ No se encontraron códigos CUPS.
{% endif %}
{% if factura %}
💰 Información de Factura
{{ factura.analisis_html|safe }}
Procesamiento Inteligente: Los procedimientos de factura se procesan automáticamente al
generar la epicrisis.
{% endif %}
🤖 Codificación Inteligente desde SOAT
📝 Ingresar Códigos SOAT
{% if codigos_desde_soat and codigos_desde_soat|length > 0 %}
Puedes agregar descripciones SOAT adicionales para complementar la codificación actual y persistirlas en la
epicrisis:
{% else %}
No se detectaron códigos SOAT automáticamente. Puedes ingresar descripciones de procedimientos SOAT para
generar códigos CIE-10 y CUPS con IA:
{% endif %}
{% if codigos_desde_soat and codigos_desde_soat|length > 0 %}
🤖 Codificación Inteligente desde SOAT
ℹ️ Información: Estos códigos CIE-10 y CUPS han sido generados automáticamente por IA a
partir de las descripciones SOAT identificadas en los documentos del paciente. Se recomienda validar con
criterio clínico.
{% for item in codigos_desde_soat %}
{% if item.codigo_soat %}
📋 Código SOAT: {{ item.codigo_soat }}
{% else %}
📋 Descripción SOAT
{% endif %}
{% set total_cie10 = namespace(count=0) %}
{% for item in codigos_desde_soat %}
{% if item.cie10_principal %}{% set total_cie10.count = total_cie10.count + 1 %}{% endif %}
{% set total_cie10.count = total_cie10.count + (item.cie10_secundarios|length if item.cie10_secundarios
else 0) %}
{% endfor %}
{{ total_cie10.count }}
Códigos CIE-10 Generados
{% set total_cups = namespace(count=0) %}
{% for item in codigos_desde_soat %}
{% if item.cups_principal %}{% set total_cups.count = total_cups.count + 1 %}{% endif %}
{% set total_cups.count = total_cups.count + (item.cups_alternativos|length if item.cups_alternativos else
0) %}
{% endfor %}
{{ total_cups.count }}
Códigos CUPS Generados
{% endif %}
{% if glosa_analisis or medicamentos_glosa %}
⚠️ Análisis de Posibles Glosas
📌 Nota: Este análisis automático identifica posibles riesgos de glosa basado en la
coherencia entre diagnósticos, procedimientos, medicamentos, factura y soportes asistenciales.
{% if glosa_analisis %}
{{ glosa_analisis | safe }}
{% endif %}
{% if medicamentos_glosa %}
{% set possible_count = medicamentos_glosa|selectattr('estado', 'equalto', 'posible_glosa')|list|length %}
{% set review_count = medicamentos_glosa|selectattr('estado', 'equalto', 'revisar')|list|length %}
Conciliación de medicamentos
Hallazgos que requieren validación
{% if possible_count %}{{ possible_count }} {{ 'posible glosa' if possible_count == 1 else 'posibles glosas' }}{% endif %}
{% if review_count %}{{ review_count }} por revisar{% endif %}
{% for finding in medicamentos_glosa %}
{{ finding.medicamento }}
{% if finding.presentacion %}{{ finding.presentacion }}{% endif %}
{{ finding.estado|replace('_', ' ') }}
{% if finding.codigo_referencia or finding.posologia or finding.dosis %}
{% if finding.codigo_referencia %}CUM/IUM {{ finding.codigo_referencia }}{% endif %}
{% if finding.posologia %}{{ finding.posologia }}{% endif %}
{% if finding.dosis %}{{ finding.dosis }}{% endif %}
Asociación con factura: {{ finding.asociacion_factura|replace('_', ' ') }}
{% if finding.comparacion_cantidad and (finding.comparacion_cantidad.cantidad_clinica is not none or finding.comparacion_cantidad.cantidad_facturada is not none) %}
{% if finding.comparacion_cantidad.cantidad_clinica is not none %}
Clínica: {{ finding.comparacion_cantidad.cantidad_clinica }} {{ finding.comparacion_cantidad.unidad_clinica }}
{% endif %}
{% if finding.comparacion_cantidad.cantidad_facturada is not none %}
Facturada: {{ finding.comparacion_cantidad.cantidad_facturada }} {{ finding.comparacion_cantidad.unidad_facturada }}
{% endif %}
{% endif %}
{% if finding.motivos %}
{% for reason in finding.motivos %}
{{ reason }}
{% endfor %}
{% endif %}
{% if finding.fuentes_por_eslabon.orden %}