• Desarrollador (proyecto individual)
  • 2026
  • Inteligencia Artificial / Sistemas Expertos

MediLogic

Sistema experto basado en IA simbólica: el paciente ingresa sus síntomas, su severidad, alergias y enfermedades crónicas, y el motor Prolog devuelve los diagnósticos más probables con su porcentaje de afinidad, nivel de urgencia y medicamentos seguros, descargables en un informe PDF.

stack tecnológico

  • SWI-Prolog
  • PySwip
  • Python
  • Flask
  • React
  • Vite
  • React Router
  • Axios
  • ReportLab
  • PyAutoGUI
  • SMTP

// arquitectura

  1. React SPA
  2. API Flask
  3. PySwip
  4. Motor Prolog
  5. Informe PDF

// capturas

Página de inicio
Página de inicio
Módulo de paciente: ingreso de síntomas
Módulo de paciente: ingreso de síntomas
Resultados del diagnóstico con afinidad y urgencia
Resultados del diagnóstico con afinidad y urgencia
Panel de administrador y editor Prolog
Panel de administrador y editor Prolog

// 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.