{"openapi":"3.0.3","info":{"title":"API Citas Médicas (mock DGH)","version":"1.0-mock","description":"Simulación con estado de la API de autogestión de citas de Dinámica Gerencial Hospitalaria (SYAC). Flujo recomendado: ValidarPaciente → ConsultarEspecialidades → ConsultarActividades → ConsultarCentrosAtencionPorActividad → ConsultarDisponibilidad → ConsultarValidaciones → AsignarCitaMedica. Para cancelar: ConsultarCitasAsignadas → ConsultarCausasCancelacion → CancelarCita. Para reprogramar: ConsultarCitasAsignadas → DisponibilidadReprogramacion → ReprogramarCitaMedica."},"servers":[{"url":"https://mock-citas.nexus.zoanas.com"}],"security":[{"basicAuth":[]}],"tags":[{"name":"CitasMedicas","description":"Autogestión de citas"}],"paths":{"/api/CitasMedicas/ValidarPaciente":{"get":{"tags":["CitasMedicas"],"operationId":"ValidarPaciente","summary":"Validar paciente","description":"Busca al paciente por tipo y número de documento y devuelve sus datos, su estado y el plan de beneficios actual. Es el primer paso de cualquier gestión.","parameters":[{"name":"tipoDocumento","in":"query","required":true,"description":"Tipo de documento: CC, TI, CE, PA o RC.","schema":{"type":"string","enum":["CC","TI","CE","PA","RC"],"example":"CC"}},{"name":"numeroDocumento","in":"query","required":true,"description":"Número de documento sin puntos.","schema":{"type":"string","example":"1020304050"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paciente"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarPlanBeneficios":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarPlanBeneficios","summary":"Consultar planes de beneficios","description":"Planes de beneficios activos. Sin parámetro devuelve todos.","parameters":[{"name":"planBeneficioOid","in":"query","required":false,"description":"Oid del plan; si se omite, todos.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanBeneficios"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarPlanBeneficiosPacientePyP":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarPlanBeneficiosPacientePyP","summary":"Planes del paciente (PyP)","description":"Plan de beneficios del paciente y, si tiene esquema de promoción y prevención, el plan homologado.","parameters":[{"name":"tipoDocumento","in":"query","required":true,"description":"Tipo de documento: CC, TI, CE, PA o RC.","schema":{"type":"string","enum":["CC","TI","CE","PA","RC"],"example":"CC"}},{"name":"numeroDocumento","in":"query","required":true,"description":"Número de documento sin puntos.","schema":{"type":"string","example":"1020304050"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanBeneficios"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarEspecialidades":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarEspecialidades","summary":"Consultar especialidades","description":"Especialidades parametrizadas para agendamiento web.","parameters":[{"name":"especialidadOid","in":"query","required":false,"description":"Oid de la especialidad; si se omite, todas.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Especialidad"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarActividades":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarActividades","summary":"Consultar actividades de una especialidad","description":"Actividades (tipos de consulta) de la especialidad marcadas como web.","parameters":[{"name":"especialidadOid","in":"query","required":true,"description":"Oid de la especialidad.","schema":{"type":"integer","example":93}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Actividad"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCentrosAtencionPorActividad":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCentrosAtencionPorActividad","summary":"Centros de atención por actividad","description":"Sedes donde se puede atender la actividad con el plan de beneficios dado.","parameters":[{"name":"planBeneficioOid","in":"query","required":true,"description":"Oid del plan de beneficios.","schema":{"type":"integer","example":275}},{"name":"actividadOid","in":"query","required":true,"description":"Oid de la actividad.","schema":{"type":"integer","example":13}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CentroAtencionActividad"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarMedicos":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarMedicos","summary":"Consultar médicos","description":"Médicos activos con agenda para la especialidad y actividad, opcionalmente en un centro.","parameters":[{"name":"especialidadOid","in":"query","required":true,"description":"Oid de la especialidad.","schema":{"type":"integer","example":93}},{"name":"actividadOid","in":"query","required":true,"description":"Oid de la actividad.","schema":{"type":"integer","example":13}},{"name":"centroAtencionOid","in":"query","required":false,"description":"Oid del centro de atención (opcional).","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Medico"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarDisponibilidad":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarDisponibilidad","summary":"Consultar disponibilidad","description":"Turnos libres (fecha y hora) para agendar, a partir de una fecha. Cada turno trae médico, consultorio y valor del copago. Con `dias` se consultan varios días seguidos (máximo 14).","parameters":[{"name":"fecha","in":"query","required":true,"description":"Fecha desde la que se consulta, AAAA-MM-DD.","schema":{"type":"string","format":"date","example":"2026-10-01"}},{"name":"planBeneficiosOid","in":"query","required":true,"description":"Oid del plan de beneficios.","schema":{"type":"integer","example":275}},{"name":"especialidadOid","in":"query","required":true,"description":"Oid de la especialidad.","schema":{"type":"integer","example":93}},{"name":"actividadOid","in":"query","required":true,"description":"Oid de la actividad.","schema":{"type":"integer","example":13}},{"name":"centroAtencionOid","in":"query","required":true,"description":"Oid del centro de atención.","schema":{"type":"integer","example":1}},{"name":"medicoOid","in":"query","required":false,"description":"Oid del médico (opcional, para filtrar por médico).","schema":{"type":"integer"}},{"name":"dias","in":"query","required":false,"description":"Cuántos días consultar desde la fecha (1 a 14). Por defecto 1.","schema":{"type":"integer","example":7}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Turno"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarValidaciones":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarValidaciones","summary":"Validaciones antes de asignar","description":"Comprueba si el paciente puede agendar la actividad con ese plan: estado del paciente, cita ya asignada en la especialidad, autorización requerida.","parameters":[{"name":"pacienteOid","in":"query","required":true,"description":"Oid del paciente.","schema":{"type":"integer"}},{"name":"planBeneficiosOid","in":"query","required":true,"description":"Oid del plan.","schema":{"type":"integer"}},{"name":"actividadOid","in":"query","required":true,"description":"Oid de la actividad.","schema":{"type":"integer"}},{"name":"especialidadOid","in":"query","required":true,"description":"Oid de la especialidad.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Validaciones"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ValidarAutorizacion":{"get":{"tags":["CitasMedicas"],"operationId":"ValidarAutorizacion","summary":"Validar autorización","description":"Para actividades que requieren autorización previa: indica si el paciente la tiene (200) o no (404 con el mensaje).","parameters":[{"name":"pacienteOid","in":"query","required":true,"description":"Oid del paciente.","schema":{"type":"integer"}},{"name":"planBeneficiosOid","in":"query","required":true,"description":"Oid del plan.","schema":{"type":"integer"}},{"name":"actividadOid","in":"query","required":true,"description":"Oid de la actividad.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Autorización vigente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/AsignarCitaMedica":{"post":{"tags":["CitasMedicas"],"operationId":"AsignarCitaMedica","summary":"Asignar cita médica","description":"Asigna la cita en el turno elegido. Requiere el oid del paciente, el plan, el turno y su fecha y hora exacta (la de ConsultarDisponibilidad). Falla si el turno ya se ocupó, si el paciente ya tiene cita en la especialidad o si la actividad requiere autorización.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsignarCitaRequest"}}}},"responses":{"200":{"description":"Cita asignada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cita"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/CancelarCita":{"post":{"tags":["CitasMedicas"],"operationId":"CancelarCita","summary":"Cancelar cita","description":"Cancela una cita asignada con una causa de cancelación y una observación. Libera el turno.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelarCitaRequest"}}}},"responses":{"200":{"description":"Cita cancelada","content":{"application/json":{"schema":{"type":"object","properties":{"resultado":{"type":"boolean"},"mensaje":{"type":"string"},"cita":{"$ref":"#/components/schemas/Cita"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCausasCancelacion":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCausasCancelacion","summary":"Causas de cancelación","description":"Catálogo de causas para cancelar o reprogramar.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CausaCancelacion"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCitasAsignadas":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCitasAsignadas","summary":"Consultar citas asignadas","description":"Citas en estado ASIGNADA del paciente en un rango de fechas, opcionalmente de una especialidad.","parameters":[{"name":"fechaInicial","in":"query","required":true,"description":"Desde, AAAA-MM-DD.","schema":{"type":"string","format":"date"}},{"name":"fechaFinal","in":"query","required":true,"description":"Hasta, AAAA-MM-DD.","schema":{"type":"string","format":"date"}},{"name":"pacienteOid","in":"query","required":true,"description":"Oid del paciente.","schema":{"type":"integer"}},{"name":"especialidadOid","in":"query","required":false,"description":"Oid de la especialidad (opcional).","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Cita"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCitaHistorico":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCitaHistorico","summary":"Histórico de citas","description":"Citas del paciente por estado (ASIGNADA, CANCELADA, CUMPLIDA, INCUMPLIDA o TODAS) en un rango de fechas.","parameters":[{"name":"fechaInicial","in":"query","required":true,"description":"Desde, AAAA-MM-DD.","schema":{"type":"string","format":"date"}},{"name":"fechaFinal","in":"query","required":true,"description":"Hasta, AAAA-MM-DD.","schema":{"type":"string","format":"date"}},{"name":"pacienteOid","in":"query","required":true,"description":"Oid del paciente.","schema":{"type":"integer"}},{"name":"estado","in":"query","required":true,"description":"Estado de las citas.","schema":{"type":"string","enum":["ASIGNADA","CANCELADA","CUMPLIDA","INCUMPLIDA","TODAS"]}},{"name":"especialidadOid","in":"query","required":false,"description":"Oid de la especialidad (opcional).","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Cita"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/DisponibilidadReprogramacion":{"get":{"tags":["CitasMedicas"],"operationId":"DisponibilidadReprogramacion","summary":"Disponibilidad para reprogramar","description":"Turnos libres para mover una cita asignada: misma especialidad y actividad, desde la fecha indicada (por defecto hoy, 7 días).","parameters":[{"name":"citaMedicaOid","in":"query","required":true,"description":"Oid de la cita a reprogramar.","schema":{"type":"integer"}},{"name":"fecha","in":"query","required":false,"description":"Desde, AAAA-MM-DD (opcional).","schema":{"type":"string","format":"date"}},{"name":"dias","in":"query","required":false,"description":"Días a consultar (1 a 14).","schema":{"type":"integer"}},{"name":"centroAtencionOid","in":"query","required":false,"description":"Otro centro (opcional).","schema":{"type":"integer"}},{"name":"medicoOid","in":"query","required":false,"description":"Otro médico (opcional).","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Turno"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ReprogramarCitaMedica":{"post":{"tags":["CitasMedicas"],"operationId":"ReprogramarCitaMedica","summary":"Reprogramar cita","description":"Cancela la cita actual (con causa) y asigna la nueva en el turno elegido, en una sola operación.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprogramarCitaRequest"}}}},"responses":{"200":{"description":"Cita reprogramada","content":{"application/json":{"schema":{"type":"object","properties":{"citaCanceladaOid":{"type":"integer"},"citaMedicaOid":{"type":"integer","description":"Oid de la cita nueva"},"cita":{"$ref":"#/components/schemas/Cita"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ActualizarInfoPaciente":{"post":{"tags":["CitasMedicas"],"operationId":"ActualizarInfoPaciente","summary":"Actualizar teléfono del paciente","description":"Actualiza el teléfono (y opcionalmente el correo) del paciente identificado por documento.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tipoDocumento","numeroDocumento","telefono"],"properties":{"tipoDocumento":{"type":"string","description":"Tipo de documento.","example":"CC","enum":["CC","TI","CE","PA","RC"]},"numeroDocumento":{"type":"string","description":"Número de documento.","example":"1020304050"},"telefono":{"type":"string","description":"Teléfono nuevo, solo dígitos.","example":"3001234567"},"email":{"type":"string","description":"Correo (opcional)."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"resultado":{"type":"boolean"},"paciente":{"$ref":"#/components/schemas/Paciente"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCitasSede":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCitasSede","summary":"Citas del día en una sede","description":"Citas asignadas hoy para el paciente en un centro de atención (máquinas de autopago).","parameters":[{"name":"centroAtencionOid","in":"query","required":true,"description":"Oid del centro.","schema":{"type":"integer"}},{"name":"tipoDocumento","in":"query","required":true,"description":"Tipo de documento: CC, TI, CE, PA o RC.","schema":{"type":"string","enum":["CC","TI","CE","PA","RC"],"example":"CC"}},{"name":"numeroDocumento","in":"query","required":true,"description":"Número de documento sin puntos.","schema":{"type":"string","example":"1020304050"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitasSede"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarEsquemaActividades":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarEsquemaActividades","summary":"Actividades de un esquema PyP","description":"Actividades asociadas a los servicios IPS del esquema de promoción y prevención.","parameters":[{"name":"esquemaOid","in":"query","required":true,"description":"Oid del esquema.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Actividad"}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarEsquemaPacientePyP":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarEsquemaPacientePyP","summary":"Esquema PyP del paciente","description":"Esquema de promoción y prevención asociado al paciente, si tiene.","parameters":[{"name":"tipoDocumento","in":"query","required":true,"description":"Tipo de documento: CC, TI, CE, PA o RC.","schema":{"type":"string","enum":["CC","TI","CE","PA","RC"],"example":"CC"}},{"name":"numeroDocumento","in":"query","required":true,"description":"Número de documento sin puntos.","schema":{"type":"string","example":"1020304050"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"esquemaOid":{"type":"integer"},"esquemaNombre":{"type":"string"},"planHomologadoOid":{"type":"integer"}}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarCuentaCorrienteAhorroEntidad":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarCuentaCorrienteAhorroEntidad","summary":"Cuentas para pago PSE","description":"Cuentas corriente/ahorro de la entidad para pagos PSE.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"cuentaCorrienteAhorroEntidadOid":{"type":"integer"},"entidad":{"type":"string"},"tipo":{"type":"string"},"numero":{"type":"string"}}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConsultarTarjeta":{"get":{"tags":["CitasMedicas"],"operationId":"ConsultarTarjeta","summary":"Tarjetas para pago","description":"Tarjetas parametrizadas para pago con tarjeta.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"tarjetaOid":{"type":"integer"},"franquicia":{"type":"string"},"nombre":{"type":"string"}}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ObtenerCitaMedica":{"get":{"tags":["CitasMedicas"],"operationId":"ObtenerCitaMedica","summary":"Obtener cita por referencia de pago","description":"Cita asociada a una referencia de pago (prefijo + 10 dígitos del oid de la cita).","parameters":[{"name":"referencia","in":"query","required":true,"description":"Referencia de pago.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"resultado":{"type":"boolean"},"cita":{"$ref":"#/components/schemas/Cita"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ConfirmacionPago":{"post":{"tags":["CitasMedicas"],"operationId":"ConfirmacionPago","summary":"Confirmación de pago","description":"Registra el pago en línea de copago o cuota moderadora (sin lógica en el mock).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagoRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagoResponse"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/NotificacionP2P":{"post":{"tags":["CitasMedicas"],"operationId":"NotificacionP2P","summary":"Notificación P2P","description":"Notificación del recaudo desde la máquina de autopago (sin lógica en el mock).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagoRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagoResponse"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/EfectuarPago":{"post":{"tags":["CitasMedicas"],"operationId":"EfectuarPago","summary":"Efectuar pago en autopago","description":"Genera el recibo de caja de la cita en la máquina de autopago (sin lógica en el mock).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["idMaquinaAutopagos","oidCentroAtencion","oidCitaMedica"],"properties":{"idMaquinaAutopagos":{"type":"string"},"oidCentroAtencion":{"type":"integer"},"oidCitaMedica":{"type":"integer"},"valor":{"type":"number"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"idMaquinaAutopagos":{"type":"string"},"oidCentroAtencion":{"type":"integer"},"oidCitaMedica":{"type":"integer"},"resultado":{"type":"boolean"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/CitasMedicas/ValidacionDerechos":{"get":{"tags":["CitasMedicas"],"operationId":"ValidacionDerechos","summary":"Validación de derechos","description":"Indica si el paciente está activo en su EPS/plan para agendar (el mock usa el estado local).","parameters":[{"name":"tipoDocumento","in":"query","required":true,"description":"Tipo de documento: CC, TI, CE, PA o RC.","schema":{"type":"string","enum":["CC","TI","CE","PA","RC"],"example":"CC"}},{"name":"numeroDocumento","in":"query","required":true,"description":"Número de documento sin puntos.","schema":{"type":"string","example":"1020304050"}},{"name":"planBeneficiosOid","in":"query","required":false,"description":"Oid del plan (opcional).","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"activo":{"type":"boolean"},"mensaje":{"type":"string"},"paciente":{"$ref":"#/components/schemas/Paciente"}}}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sin autenticación Basic válida"},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"La operación no es válida en el estado actual","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"Usuario y contraseña autorizados en DGH, codificados en Base64 (usuario:clave)."}},"schemas":{"Error":{"type":"object","properties":{"stated":{"type":"boolean"},"statusCode":{"type":"integer"},"title":{"type":"string"},"date":{"type":"string","format":"date-time"},"message":{"type":"string"}}},"Paciente":{"type":"object","properties":{"pacienteOid":{"type":"integer","description":"Identificador del paciente en DGH","example":1001},"tipoDocumento":{"type":"string","description":"Tipo de documento","example":"CC"},"numeroDocumento":{"type":"string","description":"Número de documento","example":"1020304050"},"primerNombre":{"type":"string"},"segundoNombre":{"type":"string","nullable":true},"primerApellido":{"type":"string"},"segundoApellido":{"type":"string","nullable":true},"nombreCompleto":{"type":"string"},"fechaNacimiento":{"type":"string","format":"date"},"sexo":{"type":"string"},"telefono":{"type":"string"},"email":{"type":"string","nullable":true},"estado":{"type":"string","description":"ACTIVO o INACTIVO","example":"ACTIVO"},"planBeneficiosOid":{"type":"integer","description":"Plan actual del paciente","example":275},"planBeneficiosCodigo":{"type":"string"},"planBeneficiosNombre":{"type":"string"}}},"PlanBeneficios":{"type":"object","properties":{"planBeneficioOid":{"type":"integer","description":"Oid del plan","example":275},"planBeneficioCodigo":{"type":"string"},"planBeneficioNombre":{"type":"string"}}},"Especialidad":{"type":"object","properties":{"especialidadOid":{"type":"integer","description":"Oid","example":93},"especialidadCodigo":{"type":"string"},"especialidadNombre":{"type":"string"}}},"Actividad":{"type":"object","properties":{"actividadOid":{"type":"integer","description":"Oid","example":13},"actividadCodigo":{"type":"string"},"actividadNombre":{"type":"string"},"especialidadOid":{"type":"integer"},"especialidadNombre":{"type":"string"},"requiereAutorizacion":{"type":"boolean"}}},"CentroAtencionActividad":{"type":"object","properties":{"planBeneficioOid":{"type":"integer"},"planBeneficioCodigo":{"type":"string"},"planBeneficioNombre":{"type":"string"},"actividadOid":{"type":"integer"},"actividadCodigo":{"type":"string"},"actividadNombre":{"type":"string"},"centroAtencionOid":{"type":"integer","description":"Oid del centro","example":1},"centroAtencionCodigo":{"type":"string"},"centroAtencionNombre":{"type":"string"},"centroAtencionPricipal":{"type":"boolean"}}},"Medico":{"type":"object","properties":{"medicoOid":{"type":"integer","description":"Oid","example":577},"medicoCodigo":{"type":"string"},"medicoNombre":{"type":"string"},"especialidadOid":{"type":"integer"},"centrosAtencionOid":{"type":"array","items":{"type":"integer"}}}},"Turno":{"type":"object","properties":{"turnoOid":{"type":"integer","description":"Oid del turno (se usa para asignar)","example":5933},"actividadOid":{"type":"integer"},"actividadCodigo":{"type":"string"},"actividadNombre":{"type":"string"},"centroAtencionOid":{"type":"integer"},"centroAtencionCodigo":{"type":"string"},"centroAtencionNombre":{"type":"string"},"especialidadOid":{"type":"integer"},"especialidadCodigo":{"type":"string"},"especialidadNombre":{"type":"string"},"fechaInicial":{"type":"string","description":"Inicio del turno, AAAA-MM-DDTHH:MM:SS","example":"2026-10-01T08:20:00"},"fechaFinal":{"type":"string"},"medicoOid":{"type":"integer"},"medicoCodigo":{"type":"string"},"medicoNombre":{"type":"string"},"consultorioOid":{"type":"integer"},"consultorioCodigo":{"type":"string"},"consultorioNombre":{"type":"string"},"planBeneficiosOid":{"type":"integer"},"planBeneficiosCodigo":{"type":"string"},"planBeneficiosNombre":{"type":"string"},"valorCopagoCuota":{"type":"number"}}},"Cita":{"type":"object","properties":{"citaMedicaOid":{"type":"integer","description":"Oid de la cita","example":15290},"estado":{"type":"string","description":"ASIGNADA, CANCELADA, CUMPLIDA o INCUMPLIDA","example":"ASIGNADA"},"pacienteOid":{"type":"integer"},"pacienteNombre":{"type":"string"},"tipoDocumento":{"type":"string"},"numeroDocumento":{"type":"string"},"turnoOid":{"type":"integer"},"actividadOid":{"type":"integer"},"actividadNombre":{"type":"string"},"especialidadOid":{"type":"integer"},"especialidadNombre":{"type":"string"},"centroAtencionOid":{"type":"integer"},"centroAtencionNombre":{"type":"string"},"fechaInicial":{"type":"string"},"fechaFinal":{"type":"string"},"medicoOid":{"type":"integer"},"medicoNombre":{"type":"string"},"consultorioNombre":{"type":"string"},"planBeneficiosOid":{"type":"integer"},"planBeneficiosNombre":{"type":"string"},"valorCopagoCuota":{"type":"number"},"valorTotal":{"type":"number"},"formaPago":{"type":"integer"},"causaCancelaOid":{"type":"integer","nullable":true},"causaCancelaNombre":{"type":"string","nullable":true},"observacion":{"type":"string","nullable":true},"fechaCreacion":{"type":"string"}}},"CausaCancelacion":{"type":"object","properties":{"causaCancelaOid":{"type":"integer","description":"Oid","example":1},"causaCancelaCodigo":{"type":"string"},"causaCancelaNombre":{"type":"string"}}},"Validaciones":{"type":"object","properties":{"pacienteOid":{"type":"integer"},"planBeneficiosOid":{"type":"integer"},"actividadOid":{"type":"integer"},"especialidadOid":{"type":"integer"},"valido":{"type":"boolean","description":"true si puede agendar"},"mensajes":{"type":"array","items":{"type":"string"},"description":"Motivos por los que no puede agendar"}}},"AsignarCitaRequest":{"type":"object","required":["pacienteOid","planBeneficiosOid","fechaInicial","turnoOid"],"properties":{"pacienteOid":{"type":"integer","description":"Oid del paciente (de ValidarPaciente)","example":1001},"planBeneficiosOid":{"type":"integer","description":"Oid del plan de beneficios","example":275},"fechaInicial":{"type":"string","description":"Fecha y hora del turno, exactamente como la devolvió ConsultarDisponibilidad","example":"2026-10-01T08:20:00"},"turnoOid":{"type":"integer","description":"Oid del turno elegido","example":5933},"actividadOid":{"type":"integer","description":"Oid de la actividad (recomendado; si se omite, la primera de la especialidad)","example":13},"valorTotal":{"type":"number","description":"Valor a pagar (si hay pago)"},"formaPago":{"type":"integer","enum":[0,1,3,4],"description":"0 sin pago, 1 efectivo, 3 tarjeta, 4 PSE"},"tarjetaOid":{"type":"integer"},"numeroTarjeta":{"type":"string"},"cuentaCorrienteAhorroEntidadOid":{"type":"integer"},"numero":{"type":"string"}}},"CancelarCitaRequest":{"type":"object","required":["citaMedicaOid","causaCancelaOid","observacion"],"properties":{"citaMedicaOid":{"type":"integer","description":"Oid de la cita a cancelar","example":15290},"causaCancelaOid":{"type":"integer","description":"Oid de la causa (ConsultarCausasCancelacion)","example":1},"observacion":{"type":"string","description":"Motivo en palabras del paciente","example":"No puede asistir por viaje"}}},"ReprogramarCitaRequest":{"type":"object","required":["citaMedicaOid","causaCancelaOid","turnoOid","fechaInicial"],"properties":{"citaMedicaOid":{"type":"integer","description":"Oid de la cita actual","example":15290},"causaCancelaOid":{"type":"integer","description":"Causa de cancelación (normalmente 5 = reprogramación)","example":5},"turnoOid":{"type":"integer","description":"Oid del turno nuevo","example":5959},"fechaInicial":{"type":"string","description":"Fecha y hora del turno nuevo","example":"2026-10-08T08:00:00"},"observacion":{"type":"string"}}},"PagoRequest":{"type":"object","required":["noReferencia","valorServicio","idTransaccion"],"properties":{"noReferencia":{"type":"string"},"valorServicio":{"type":"number"},"idTransaccion":{"type":"string"}}},"PagoResponse":{"type":"object","properties":{"noReferencia":{"type":"string"},"valorServicio":{"type":"number"},"idTransaccion":{"type":"string"},"resultado":{"type":"boolean"}}},"CitasSede":{"type":"object","properties":{"oidcentroatencion":{"type":"integer"},"tipoDocumentoPaciente":{"type":"string"},"numeroDocumentoPaciente":{"type":"string"},"nombrePaciente":{"type":"string"},"citas":{"type":"array","items":{"type":"object","properties":{"oidCitaMedica":{"type":"integer"},"especialidad":{"type":"string"},"actividad":{"type":"string"},"nombreMedico":{"type":"string"},"consultorio":{"type":"string"},"fechaCita":{"type":"string"},"valor":{"type":"number"}}}}}}}}}