// contexto del proyecto
MediLogic es un sistema experto de diagnóstico médico preliminar con arquitectura de tres capas: una SPA en React, una API REST en Flask y una base de conocimiento en SWI-Prolog. Se eligió IA simbólica en lugar de Machine Learning porque, en un contexto médico, cada diagnóstico debe poder rastrearse hasta las reglas que lo generaron, el resultado debe ser determinista y la base de conocimiento debe poder ampliarse sin reentrenar ningún modelo. El sistema incluye un módulo de paciente para obtener diagnósticos e informes en PDF, y un módulo de administrador con CRUD de enfermedades, síntomas y medicamentos, editor de la base Prolog y un proceso RPA de carga masiva con informe por correo.
// retos técnicos
- Diseñar el motor de inferencia en Prolog: la afinidad se calcula ponderando cada síntoma coincidente (peso de 1 a 10) por su severidad (leve ×0.7, moderado ×1.0, severo ×1.3), filtrando diagnósticos con más de 30% y ordenándolos de mayor a menor.
- Clasificar la urgencia (alta, media o baja) combinando la gravedad de la enfermedad con la afinidad, y excluir medicamentos contraindicados por alergias o enfermedades crónicas usando negación por falla.
- Integrar Python con Prolog mediante PySwip, convirtiendo tipos entre ambos lenguajes y manejando las limitaciones con caracteres especiales (acentos y ñ).
- Permitir editar la base de conocimiento en caliente: declarar los predicados como dinámicos para usar assertz/retract, y cargar archivos .pl con una estrategia de fusión que actualiza IDs existentes en lugar de reemplazar toda la base.
- Migrar el sistema de una aplicación de escritorio a una arquitectura web con Flask + React, manteniendo intacto el motor Prolog.
// resultados obtenidos
- En tres casos clínicos de evaluación (infección respiratoria, gastroenteritis y bronquitis con comorbilidades), el diagnóstico correcto obtuvo entre 93.5% y 98.2% de afinidad, con diagnósticos diferenciales coherentes.
- El sistema excluyó correctamente los medicamentos contraindicados, como antibióticos betalactámicos en un paciente alérgico a la penicilina.
- Informe clínico en PDF generado en el servidor con ReportLab y descargado directamente desde el navegador.
- Módulo RPA que procesa archivos de carga de enfermedades, genera un informe de resultados y lo envía por correo.



