Introducción
Mi Trabajo de Fin de Grado consistió en diseñar y desarrollar una plataforma web de simulación clínica asistida por inteligencia artificial: una aplicación en la que el estudiantado de Medicina practica la entrevista clínica conversando, por chat, con pacientes virtuales realistas generados mediante modelos de lenguaje (LLMs).
El proyecto nació dentro de una colaboración con la Facultad de Medicina de la USC y el grupo de investigación IRLab:
- Jorge López Castromán, profesor de las materias de Comunicación y Psiquiatría del Grado en Medicina, aportó la necesidad clínica y validó todo el material médico.
- Miguel Anxo Pérez Vila y Javier Parapar López dirigieron el TFG y pusieron a disposición la infraestructura de cómputo del IRLab.
Por qué
La entrevista clínica es seguramente la competencia más compleja que debe adquirir un futuro médico: no sigue un protocolo fijo y exige adaptarse continuamente a las respuestas, silencios y emociones del paciente. En psiquiatría, donde no hay pruebas complementarias que sustituyan el diálogo, de ella depende incluso la precisión del diagnóstico.
El problema es que es difícil de practicar de verdad. Las oportunidades de contacto prolongado con pacientes reales son escasas (plazas limitadas, intimidad, presión asistencial), y la alternativa habitual en la facultad son las dinámicas de role-play entre estudiantes, en las que quien hace de paciente no está formado para reproducir fielmente una sintomatología. Además, la demanda asistencial no para de crecer: los diagnósticos de ansiedad en España casi se duplicaron entre 2016 y 2023, lo que hace aún más urgente una formación práctica de calidad.
Frente a eso, los LLMs se presentaban como una oportunidad clara: son capaces de mantener conversaciones coherentes y de adoptar un rol definido de forma consistente. De ahí la idea de usarlos para crear pacientes virtuales con los que practicar en cualquier momento, sin riesgo para nadie y con disponibilidad total.
Qué construí
El resultado es una aplicación web (Django) con dos perfiles de usuario bien diferenciados.
Para el alumnado
- Configurar la práctica: antes de comenzar, el estudiante elige el caso clínico (separando los de salud mental del resto de especialidades generales) y el contexto en el que desarrolla la entrevista (consulta de atención primaria, urgencias…), algo que condiciona el comportamiento del paciente y la evaluación.

Selección del caso clínico y del contexto antes de iniciar el chat
- Entrevista en tiempo real: el paciente virtual responde por un chat que imita a una aplicación de mensajería. Para hacer la simulación creíble, cada turno del paciente se acompaña de una emoticona que refleja su estado anímico y de pausas silenciosas (dudas, incomodidad) que el modelo interpreta y convierte en tiempos de espera reales. Una ficha flotante permite repasar los rasgos del paciente sobre la marcha.

Chat con el paciente virtual en tiempo real
- Historial y transcripción: las conversaciones se guardan automáticamente y el alumno puede revisar después la transcripción completa de cada entrevista, con la hora de cada mensaje.

Historial de entrevistas realizadas
- Evaluación automática: al final de la sesión, el sistema analiza toda la conversación con LLM-as-a-Judge y genera un informe por competencias según una rúbrica docente de 7 dominios. El resultado combina un resumen global (puntos fuertes y áreas de mejora) con el detalle de cada competencia: un nivel en una escala de cinco valores (de insuficiente a excelente) y una justificación basada en citas explícitas de la transcripción.
Resumen global de la evaluación Análisis de habilidades por competencia

Para el profesorado
- Control de acceso: las cuentas nuevas nacen inactivas y solo el profesor las activa, lo que garantiza que use la herramienta solo quien debe.
- Seguimiento del alumnado: panel docente con estadísticas globales (entrevistas realizadas, alumnado activo, media de mensajes por sesión…), historial individual de cada estudiante y la posibilidad de marcar entrevistas como revisadas.
- Gestión del material clínico: el profesor crea, edita y elimina pacientes y casos sin depender de nadie técnicamente. La eliminación es lógica: el contenido se oculta, pero nunca se corrompe el historial de entrevistas ya realizadas.

Ficha de detalle de un paciente virtual
Cómo lo construí
Arquitectura
Django actúa como el núcleo del sistema (cliente-servidor) sobre una base de datos SQLite gestionada con su ORM. El esquema relacional se compone de 7 entidades principales: Paciente, SituacionClinica, ContextoClinico, Usuario, Entrevista, Mensaje y Evaluacion. El LLM interviene en dos momentos: generando las respuestas del paciente durante la simulación y evaluando la conversación al final.

Diagrama de flujo del sistema
El paciente virtual (LLM-Persona)
La clave para que un LLM actúe como un paciente realista es la ingeniería de prompts. Para cada caso defino dos mensajes: un System Prompt que fija el rol (debe comportarse como un humano en una consulta), y un mensaje de instrucción parametrizado con los datos demográficos, la sintomatología, los antecedentes y los rasgos de personalidad de ese paciente concreto. Los prompts se construyen en inglés para aprovechar mejor el modelo y obtener respuestas de mayor calidad.
Para evitar que el modelo responda con bloques de texto plano irreales, su salida se estructura con Pydantic: cada turno se tipifica como mensaje o pausa y se obliga a incluir una emoticona por quenda.
class TipoMensaje(str, Enum):
mensaje = "mensaje"
pausa = "pausa"
class MensajePaciente(BaseModel):
tipo: TipoMensaje # pausa → silencio/duda; mensaje → texto hablado
emoji: str # estado anímico que se renderiza en el chat
contenido: str
class RespuestaPaciente(BaseModel):
respuesta: List[MensajePaciente]
La comunicación con el servidor del modelo se hace a través de Instructor (biblioteca que fuerza estas salidas estructuradas sobre Pydantic), apuntando a Llama-4-Scout-17B-E16-Instruct en el clúster del IRLab vía Ollama. El modelo corre sobre una GPU NVIDIA RTX 6000 Ada (48 GB) local, sin depender de servicios externos ni exponer datos sanitarios.
La evaluación (LLM-as-a-Judge)
Al solicitar una evaluación, el back-end reconstruye la transcripción completa de la entrevista y le pasa al LLM el contexto clínico, el perfil del paciente y una rúbrica docente. La salida vuelve a estar controlada por un esquema Pydantic que exige, por cada una de las 7 competencias, un nivel de la escala y una justificación basada en citas textuales de la conversación. Ese requisito es el que mitiga las alucinaciones: el modelo solo puede puntuar lo que puede justificar con lo que realmente se dijo.
Metodología
Desarrollé el proyecto con Scrum (10 Sprints de 3 semanas), gestionando el Product Backlog en Taiga, versionando en GitLab y redactando la memoria en Overleaf.
La estimación inicial fue de 361 puntos de historia frente a los 353 finalmente completados: prácticamente todo lo planificado. Los primeros Sprints arrastraron algo de retraso (exámenes y tareas exploratorias), que se fue recuperando a partir del cuarto, y la validación clínica continua con Jorge López Castromán en las Sprint Reviews permitió ajustar los requisitos desde el principio.
Resultados y conclusiones
El proyecto cumplió con su objetivo general: un sistema capaz de simular una entrevista clínica con pacientes virtuales coherentes, inmersivos y realistas, y de evaluarla automáticamente con criterios docentes. La experiencia de trabajar con profesionales sanitarios fue, de hecho, una de las partes más valiosas de todo el proceso: las prácticas se validan cuando las valida la práctica real.
También aprendí los límites de esta tecnología: los LLMs pueden alucinar, y en un contexto clínico eso no es admisible. Por eso el diseño del evaluador obliga a justificar cada nota con citas, y la simulación queda siempre bajo supervisión humana. La plataforma es además escalable: al separar pacientes, casos y contextos, se pueden añadir nuevas especialidades sin tocar una línea de código.
Trabajo futuro
- Puesta en producción y validación con un grupo de control de estudiantes reales de Psiquiatría y Comunicación.
- Automatización de accesos integrando el registro con los sistemas de identidad de la USC.
- Soporte multilingüe de calidad, con especial atención al gallego.
- Interacción por voz (ASR), que aportaría un realismo superior, y una evaluación que vincule cada corrección con el momento exacto de la conversación donde se produjo.