{% extends "index.html" %} {% block title %}Epicrisis · {{ nombre_paciente }}{% endblock %} {% block body_class %}app-page epicrisis-page{% endblock %} {% block shell_class %}app-page__shell epicrisis-shell{% endblock %} {% block head_extra %} {% endblock %} {% block shell_header_actions %}
{{ "Volver a casos" if case_key else "Volver al dashboard" }} {% if case_key %} Operar RIPS {% endif %} {% if regen_url %} Regenerar epicrisis {% endif %}
{% endblock %} {% block content %}

Epicrisis operativa

{{ nombre_paciente }}

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 %}
{% if diagnosticos_por_revisar %}

Diagnósticos {{ diagnosticos_por_revisar|length }}

{% for item in diagnosticos_por_revisar %}
CIE-10 · {{ item.code or 'sin código' }} {{ item.description }} {{ item.status|replace('_', ' ') }}
{{ evidence_panel(item) }} {{ review_actions(item) }}
{% endfor %}
{% endif %} {% if procedimientos_por_revisar %}

Procedimientos {{ procedimientos_por_revisar|length }}

{% for item in procedimientos_por_revisar %}
{% if item.codigo_cups %}CUPS · {{ item.codigo_cups }}{% endif %} {% if item.codigo_soat %}SOAT · {{ item.codigo_soat }}{% endif %} {% if item.codigo_facturacion %}Factura · {{ item.codigo_facturacion }}{% endif %} {{ item.description }} {{ item.status|replace('_', ' ') }}
{% for state in ['documentado', 'realizado', 'facturado'] %} {{ state }} {% endfor %}
{{ evidence_panel(item) }} {{ review_actions(item) }}
{% endfor %}
{% endif %}
{% else %}
Conciliación al día.
No hay diagnósticos ni procedimientos pendientes de revisión.
{% endif %} {% if conflictos_curacion %}

Conflictos detectados

    {% for conflict in conflictos_curacion %}
  • {{ conflict.message }}
  • {% endfor %}
{% endif %}
Catálogos utilizados
    {% for catalog in catalogos_utilizados %}
  • {{ catalog.system|upper }} · {{ catalog.index_name }} · {{ catalog.fingerprint[:12] }}
  • {% endfor %}

{% endif %}
Selección de Elementos para PDF

Desmarca los elementos que no deban salir en la epicrisis y agrega nuevos elementos en los campos de texto.

Analizando hallazgos quirúrgicos automáticamente...

Diagnósticos

Procedimientos

Medicamentos

Ayudas Diagnósticas

{% if curation_schema_version %}

La publicación estricta impide agregar diagnósticos o procedimientos sin una decisión trazable.

{% endif %}

Ampliación medica: Hallazgos Quirúrgicos

Ampliación medica: Descripción del Procedimiento

{% if diagnosticos_consolidados and diagnosticos_consolidados|length > 0 %}

Catálogo consolidado de diagnósticos

{% for item in diagnosticos_consolidados %}
{{ item.texto_presentacion }} {% if item.estado_codificacion == 'pendiente_validacion' %} Pendiente {% endif %} Fuentes: {{ item.fuentes|join(', ') if item.fuentes else 'desconocida' }}
{% endfor %}
{% endif %} {% if diagnosticos_consolidacion_hallazgos and diagnosticos_consolidacion_hallazgos|length > 0 %}

Hallazgos de consolidación diagnóstica

{% for item in diagnosticos_consolidacion_hallazgos %}
{{ item.tipo or 'hallazgo' }}: {{ item.detalle }} {% if item.descripcion or item.diagnostico %} {{ item.codigo or 'PENDIENTE' }} — {{ item.descripcion or item.diagnostico }} {% endif %}
{% endfor %}
{% endif %}
📝 Resumen de Historia Clínica
{% if metadatos_hc %}

Información del Paciente

{% if metadatos_hc.nombre_paciente %}
Nombre del paciente {{ metadatos_hc.nombre_paciente }}
{% endif %} {% if metadatos_hc.datos_identificacion_paciente %}
Identificación{{ metadatos_hc.datos_identificacion_paciente }}
{% endif %} {% if metadatos_hc.sexo %}
Sexo{{ metadatos_hc.sexo }}
{% endif %} {% if metadatos_hc.edad %}
Edad{{ metadatos_hc.edad }}
{% endif %} {% if metadatos_hc.fecha_nacimiento %}
Fecha de nacimiento
{% endif %} {% if metadatos_hc.prestador_servicio %}
Prestador / ERP{{ metadatos_hc.prestador_servicio }}
{% endif %} {% if metadatos_hc.caso %}
No. de Caso{{ metadatos_hc.caso }}
{% endif %} {% if metadatos_hc.fecha_ingreso %}
Fecha de ingreso
{% endif %} {% if metadatos_hc.motivo_consulta %}
Motivo de consulta{{ metadatos_hc.motivo_consulta }}
{% endif %}
{% if metadatos_hc.resumen %}

📄 Resumen Clínico

{{ metadatos_hc.resumen }}

{% endif %} {% if recomendaciones_medicas_view %}

Recomendaciones médicas

{% for category in recomendaciones_medicas_view %}
{{ category.label }}
    {% for item in category['items'] %}
  • {% if item.indicacion %}{{ item.indicacion }}{% endif %} {% if item.duracion %}Duración: {{ item.duracion }}{% endif %} {% if item.fecha %}Fecha: {% endif %}
  • {% endfor %}
{% endfor %}
{% endif %} {% if antecedentes_hc_view and (antecedentes_hc_view.categories or antecedentes_hc_view.negatives) %}

Perfil clínico documentado

Antecedentes

{% if antecedentes_hc_view.has_discordance %} Requiere revisión {% endif %}
{% if antecedentes_hc_view.has_discordance %}

Información discordante. Se conserva el antecedente positivo por seguridad clínica.

{% endif %} {% if antecedentes_hc_view.categories %}
{% for category in antecedentes_hc_view.categories %}
{{ category.label }}
{{ category['items']|length }}
{% for item in category['items'] %} {{ item.descripcion }} {% endfor %}
{% if category.discordant %}
Ver trazabilidad {% for item in category['items'] if item.discordante %}

{{ item.descripcion }} {% if item.fecha %}Fecha: {{ item.fecha }}{% endif %} {% if item.pagina %}Página: {{ item.pagina }}{% endif %} {% if item.evidencia %}{{ item.evidencia }}{% endif %}

{% endfor %}
{% endif %}
{% endfor %}
{% endif %} {% if antecedentes_hc_view.negatives %}
Antecedentes negados {{ antecedentes_hc_view.negative_category_count }} categorías documentadas
{% 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 %}
  1. {{ proc }}
  2. {% endfor %}
{% endif %} {% if pdf_primary_medicamentos and pdf_primary_medicamentos|length > 0 %}

Medicamentos

{% for med in pdf_primary_medicamentos %} {% endfor %}
MedicamentoPosologíaDosisCantidadEstado
{{ 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 %}
{% 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 %} {% for item in cie_historia %} {% endfor %}
Diagnóstico Código CIE-10
{{ item.descripcion or item.diagnostico }} {{ item.codigo or 'PENDIENTE' }}
{% 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 %} {% for item in cie_qx %} {% endfor %}
Diagnóstico Original Tipo Código CIE-10 Descripción CIE-10
{{ 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 }}
{% 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 %} {% for item in cups %} {% endfor %}
Procedimiento Código CUPS
{{ item.procedimiento }} {{ item.codigo_cups }}
{% 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 %}

{{ item.descripcion }}

{% if item.cie10_principal %}
🏥 CIE-10 PRINCIPAL
{{ item.cie10_principal.codigo }} {{ item.cie10_principal.descripcion }}

Justificación: {{ item.cie10_principal.justificacion }}

{% endif %} {% if item.cie10_secundarios and item.cie10_secundarios|length > 0 %}
📋 CIE-10 SECUNDARIOS ({{ item.cie10_secundarios|length }})
{% for cie10 in item.cie10_secundarios %}
{{ cie10.codigo }} {{ cie10.descripcion }}

{{ cie10.justificacion }}

{% endfor %}
{% endif %} {% if item.cups_principal %}
🔧 CUPS PRINCIPAL
{{ item.cups_principal.codigo }} {{ item.cups_principal.descripcion }}

Justificación: {{ item.cups_principal.justificacion }}

{% endif %} {% if item.cups_alternativos and item.cups_alternativos|length > 0 %}
⚙️ CUPS ALTERNATIVOS ({{ item.cups_alternativos|length }})
{% for cups in item.cups_alternativos %}
{{ cups.codigo }} {{ cups.descripcion }}

{{ cups.justificacion }}

{% endfor %}
{% endif %} {% if item.analisis_clinico %}
📊 ANÁLISIS CLÍNICO DETALLADO
{{ item.analisis_clinico }}
{% endif %}
{% endfor %}
📈 Resumen de Codificación
{{ codigos_desde_soat|length }}
Códigos SOAT Procesados
{% 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 %}

{% endif %}
Orden: {{ finding.cadena.orden|replace('_', ' ') }} Administración: {{ finding.cadena.administracion|replace('_', ' ') }} Facturación: {{ finding.cadena.facturacion|replace('_', ' ') }}

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 %}

Orden: {{ finding.fuentes_por_eslabon.orden|join(', ') }}

{% endif %} {% if finding.fuentes_por_eslabon.administracion %}

Administración: {{ finding.fuentes_por_eslabon.administracion|join(', ') }}

{% endif %} {% if finding.fuentes_por_eslabon.facturacion %}

Facturación: {{ finding.fuentes_por_eslabon.facturacion|join(', ') }}

{% endif %} {% if finding.justificacion_clinica %}

Evaluación clínica: {{ finding.justificacion_clinica }}

{% endif %} {% if finding.evidencias %}
Ver evidencia breve
    {% for evidence in finding.evidencias %}
  • {{ evidence }}
  • {% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
Arriba
{% endblock %} {% block scripts %} {% endblock %}