API Sistema de Gestión Clínica
Documentación completa de la API REST simulada para demostración en consultoría de IA para clínicas médicas.
http://localhost:8000
Retorna la lista completa de médicos y profesionales con su ID, especialidad, matrícula y horario de atención. El ID es el que se usa en todos los demás endpoints.
{
"total": 8,
"profesionales": [
{
"id": "P001",
"nombre": "Dr. Carlos García",
"especialidad": "Medicina General",
"matricula": "MN 48.231",
"dias_atencion": ["lunes", "martes", "miércoles", "jueves", "viernes"],
"horario": "08:00 – 18:00"
},
{
"id": "P003",
"nombre": "Dr. Luis Rodríguez",
"especialidad": "Cardiología",
"matricula": "MN 39.105",
"dias_atencion": ["martes", "miércoles", "jueves"],
"horario": "10:00 – 16:00"
}
...
]
}
Retorna todos los slots de 30 minutos del profesional indicado para una fecha específica, marcando cuáles están disponibles y cuáles ocupados.
| Nombre | Tipo | Descripción |
|---|---|---|
id requerido |
string |
ID del profesional (ej: P001) |
| Nombre | Tipo | Descripción |
|---|---|---|
fecha requerido |
string |
Fecha en formato YYYY-MM-DD (ej: 2026-05-28) |
{
"profesional_id": "P001",
"profesional": "Dr. Carlos García",
"especialidad": "Medicina General",
"fecha": "2026-05-28",
"dia": "miércoles",
"atiende": true,
"slots": [
{ "hora": "08:00", "disponible": true },
{ "hora": "08:30", "disponible": false },
{ "hora": "09:00", "disponible": true }
],
"total_slots": 20,
"total_disponibles": 18,
"total_ocupados": 2
}
Registra un nuevo turno en el sistema. Valida automáticamente que el profesional atienda ese día, que el horario esté dentro del rango de atención y que no exista otro turno en ese slot.
| Campo | Tipo | Descripción |
|---|---|---|
paciente_dni requerido |
string |
DNI del paciente (acepta puntos y guiones) |
profesional_id requerido |
string |
ID del profesional (ej: P001) |
fecha requerido |
string |
Fecha en formato YYYY-MM-DD |
hora requerido |
string |
Hora en formato HH:MM (ej: 10:00) |
motivo opcional |
string |
Motivo de la consulta. Default: "Consulta médica" |
{
"paciente_dni": "46555258",
"profesional_id": "P001",
"fecha": "2026-05-28",
"hora": "10:00",
"motivo": "Control anual de rutina"
}
{
"mensaje": "Turno creado exitosamente.",
"turno": {
"id": "T-A3F92B1C",
"paciente_dni": "46555258",
"paciente_nombre": "Bautista Simón",
"paciente_obra_social": "OSDE",
"profesional_nombre": "Dr. Carlos García",
"especialidad": "Medicina General",
"fecha": "2026-05-28",
"hora": "10:00",
"motivo": "Control anual de rutina",
"estado": "confirmado",
"creado_en": "2026-05-21T14:32:11"
}
}
Retorna todos los turnos registrados en el sistema durante la sesión actual. Los datos persisten en memoria mientras la API esté corriendo.
Cancela y elimina un turno del sistema. Retorna los datos del turno eliminado para confirmar la operación.
| Nombre | Tipo | Descripción |
|---|---|---|
id requerido |
string |
ID del turno a eliminar (ej: T-A3F92B1C) |
{
"mensaje": "Turno T-A3F92B1C eliminado correctamente.",
"turno_cancelado": { ... }
}
Busca un paciente por DNI y retorna su historia clínica completa: datos personales, obra social, historial de consultas, tratamientos realizados y turnos activos en el sistema.
| Nombre | Tipo | Descripción |
|---|---|---|
dni requerido |
string |
DNI del paciente. Acepta formato con puntos (46.555.258) o sin ellos (46555258) |
| DNI | Nombre | Obra Social |
|---|---|---|
46555258 | Bautista Simón | OSDE 210 Plus |
30456789 | María Elena Gómez | Swiss Medical SMG30 |
25678901 | Roberto Fernández | Galeno Plus |
{
"dni": "46555258",
"nombre": "Bautista Simón",
"fecha_nacimiento": "2005-07-11",
"edad": 20,
"obra_social": "OSDE",
"plan": "210 Plus",
"numero_afiliado": "7-245-8831200/01",
"grupo_sanguineo": "A+",
"alergias": ["Penicilina"],
"medicacion_actual": [],
"historial_clinico": [
{
"fecha": "2025-03-12",
"profesional": "Dr. Carlos García",
"especialidad": "Medicina General",
"motivo": "Control anual de rutina",
"diagnostico": "Paciente sano. Sin hallazgos patológicos relevantes.",
"indicaciones": "Se solicitan análisis de laboratorio de control."
},
...
],
"tratamientos": [
{
"nombre": "Plan de fisioterapia - esguince tobillo",
"sesiones_totales": 8,
"sesiones_realizadas": 8,
"estado": "completado"
}
],
"turnos_activos": []
}
Todos los errores retornan un JSON con el campo detail describiendo el problema.
{
"detail": "Paciente con DNI 12345678 no encontrado en el sistema."
}
| Código | Significado |
|---|---|
200 | Operación exitosa |
201 | Recurso creado exitosamente |
400 | Datos inválidos (horario fuera de rango, día sin atención) |
404 | Recurso no encontrado (paciente, profesional o turno) |
409 | Conflicto — el turno ya está ocupado |