openapi: 3.0.3
info:
title: 'Bornive-Api - Documentación Oficial '
description: 'Desarrollado por la **Fundación Nacer Para Vivir IPS** - Gestión de salud rural de los pacientes.'
version: 1.0.0
servers:
-
url: 'http://fnpvi.nacerparavivir.org'
tags:
-
name: 'Afinamientos y Seguimiento'
description: "\nGestión de afinamientos de presión arterial para pacientes con sospecha de HTA."
-
name: 'Auditoría y Logs'
description: "\nMódulo para el análisis y monitoreo de los logs del sistema (laravel.log), con filtros avanzados por módulo y prioridad."
-
name: Autenticación
description: "\nEndpoints para gestionar el acceso a la API y el perfil del usuario."
-
name: 'Brigadas de Salud'
description: "\nGestión de brigadas en campo, incluyendo sincronización de pacientes offline y entrega de medicamentos."
-
name: 'Encuestas de Satisfacción'
description: "\nGestión de encuestas aplicadas a los pacientes para evaluar la calidad del servicio."
-
name: Endpoints
description: ''
-
name: 'Envíos de Muestras (Laboratorio)'
description: "\nGestión de planillas de remisión de muestras de laboratorio desde las sedes."
-
name: 'Estadísticas Públicas (Landing Page)'
description: "\nEndpoints sin autenticación para mostrar el impacto en la landing page."
-
name: 'Estadísticas V1'
description: ''
-
name: 'Estadísticas y Dashboard'
description: "\nMódulo para obtener el resumen de actividades del usuario logueado en el mes actual o en un rango de fechas."
-
name: 'Exportación V1'
description: ''
-
name: 'Gestión de Pacientes'
description: "\nEndpoints para el registro, consulta y actualización de pacientes en el sistema."
-
name: 'Gestión de Usuarios'
description: "\nAdministración de los usuarios del sistema, sus roles (admin, auxiliar, supervisor) y sedes de pertenencia."
-
name: Medicamentos
description: "\nCatálogo de medicamentos disponibles para entrega en visitas y brigadas."
-
name: 'Medicamentos de Paciente'
description: "\nGestión de la relación entre pacientes y los medicamentos asignados para su tratamiento."
-
name: 'Notificaciones Push (FCM)'
description: "\nGestión de tokens de dispositivo y envío de notificaciones push a través de Firebase Cloud Messaging (FCM)."
-
name: Sedes
description: "\nGestión de las sedes de atención en salud disponibles en el sistema."
-
name: 'Tamizajes de Presión Arterial (PA)'
description: "\nMódulo para el tamizaje primario de pacientes, captura de signos básicos y conducta inicial."
-
name: 'Tests FINDRISK'
description: "\nEvaluación de riesgo de padecer diabetes tipo 2 mediante el cuestionario FINDRISK."
-
name: 'Visitas Domiciliarias'
description: "\nGestión de visitas realizadas a pacientes en su domicilio, incluyendo toma de signos vitales, fotos y firmas."
paths:
/api/afinamientos:
get:
summary: 'Listar afinamientos'
operationId: listarAfinamientos
description: 'Permite obtener el histórico de afinamientos realizados, filtrando por usuario, paciente o rango de fechas.'
parameters:
-
in: query
name: usuario_id
description: 'ID del usuario promotor.'
example: '4044680601076201931'
required: false
schema:
type: string
description: 'ID del usuario promotor.'
example: '4044680601076201931'
-
in: query
name: paciente_id
description: 'ID del paciente.'
example: 550e8400-e29b-41d4-a716-446655440000
required: false
schema:
type: string
description: 'ID del paciente.'
example: 550e8400-e29b-41d4-a716-446655440000
-
in: query
name: fecha_desde
description: 'date Fecha inicial (Y-m-d).'
example: '2024-01-01'
required: false
schema:
type: string
description: 'date Fecha inicial (Y-m-d).'
example: '2024-01-01'
-
in: query
name: fecha_hasta
description: 'date Fecha final (Y-m-d).'
example: '2024-12-31'
required: false
schema:
type: string
description: 'date Fecha final (Y-m-d).'
example: '2024-12-31'
responses:
200:
description: success
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
example: uuid-123
idpaciente:
type: string
example: uuid-pac
idusuario:
type: string
example: uuid-user
fecha_tamizaje:
type: string
example: '2024-03-25'
presion_arterial_tamiz:
type: string
example: 145/95
promedio_sistolica:
type: integer
example: 138
promedio_diastolica:
type: integer
example: 88
conducta:
type: string
example: 'Seguimiento en 3 meses'
nombre_paciente:
type: string
example: 'Juan Pérez'
identificacion_paciente:
type: string
example: '12345678'
edad_paciente:
type: integer
example: 45
promotor_vida:
type: string
example: 'Maria Gomez'
example:
-
id: uuid-123
idpaciente: uuid-pac
idusuario: uuid-user
fecha_tamizaje: '2024-03-25'
presion_arterial_tamiz: 145/95
promedio_sistolica: 138
promedio_diastolica: 88
conducta: 'Seguimiento en 3 meses'
nombre_paciente: 'Juan Pérez'
identificacion_paciente: '12345678'
edad_paciente: 45
promotor_vida: 'Maria Gomez'
tags:
- 'Afinamientos y Seguimiento'
post:
summary: 'Crear afinamiento'
operationId: crearAfinamiento
description: "Registra un nuevo ciclo de 3 tomas de afinamiento de presión arterial.\nLos promedios se calculan automáticamente en el servidor."
parameters: []
responses:
200:
description: 'success creation'
content:
application/json:
schema:
type: object
example:
message: 'Afinamiento creado exitosamente'
data:
id: uuid-001
promedio_sistolica: 138
promedio_diastolica: 88
properties:
message:
type: string
example: 'Afinamiento creado exitosamente'
data:
type: object
properties:
id:
type: string
example: uuid-001
promedio_sistolica:
type: integer
example: 138
promedio_diastolica:
type: integer
example: 88
tags:
- 'Afinamientos y Seguimiento'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
idpaciente:
type: string
description: 'ID del paciente.'
example: uuid-paciente
procedencia:
type: string
description: 'Origen/Barrio del paciente.'
example: Centro
fecha_tamizaje:
type: date
description: 'Fecha del tamizaje inicial.'
example: '2024-03-25'
presion_arterial_tamiz:
type: string
description: 'Cifra PA inicial.'
example: 145/95
primer_afinamiento_fecha:
type: date
description: 'Fecha 1era toma.'
example: '2024-03-26'
nullable: true
presion_sistolica_1:
type: integer
description: 'Presión 1era toma.'
example: 138
nullable: true
presion_diastolica_1:
type: integer
description: 'Presión 1era toma.'
example: 88
nullable: true
segundo_afinamiento_fecha:
type: string
description: 'Segundo afinamiento (opcional). Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
presion_sistolica_2:
type: integer
description: 'Must be at least 50. Must not be greater than 300.'
example: 24
nullable: true
presion_diastolica_2:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 8
nullable: true
tercer_afinamiento_fecha:
type: string
description: 'Tercer afinamiento (opcional). Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
presion_sistolica_3:
type: integer
description: 'Must be at least 50. Must not be greater than 300.'
example: 6
nullable: true
presion_diastolica_3:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 25
nullable: true
conducta:
type: string
description: ''
example: architecto
nullable: true
required:
- idpaciente
- procedencia
- fecha_tamizaje
- presion_arterial_tamiz
'/api/afinamientos/{id}':
get:
summary: 'Consultar afinamiento'
operationId: consultarAfinamiento
description: 'Obtiene los detalles de un registro específico de afinamiento.'
parameters: []
responses:
200:
description: success
content:
application/json:
schema:
type: object
example:
id: uuid-123
nombre_paciente: 'Juan Pérez'
promedio_sistolica: 140
promedio_diastolica: 90
properties:
id:
type: string
example: uuid-123
nombre_paciente:
type: string
example: 'Juan Pérez'
promedio_sistolica:
type: integer
example: 140
promedio_diastolica:
type: integer
example: 90
tags:
- 'Afinamientos y Seguimiento'
put:
summary: 'Actualizar afinamiento'
operationId: actualizarAfinamiento
description: 'Permite modificar datos de tomas previas o agregar nuevas tomas al ciclo.'
parameters: []
responses: { }
tags:
- 'Afinamientos y Seguimiento'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
idpaciente:
type: string
description: 'The id of an existing record in the pacientes table.'
example: null
procedencia:
type: string
description: 'Must not be greater than 100 characters.'
example: b
fecha_tamizaje:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
presion_arterial_tamiz:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
primer_afinamiento_fecha:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
presion_sistolica_1:
type: integer
description: 'Must be at least 50. Must not be greater than 300.'
example: 24
nullable: true
presion_diastolica_1:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 18
nullable: true
segundo_afinamiento_fecha:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
presion_sistolica_2:
type: integer
description: 'Toma 2da toma.'
example: 135
nullable: true
presion_diastolica_2:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 24
nullable: true
tercer_afinamiento_fecha:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
presion_sistolica_3:
type: integer
description: 'Must be at least 50. Must not be greater than 300.'
example: 8
nullable: true
presion_diastolica_3:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 6
nullable: true
conducta:
type: string
description: ''
example: architecto
nullable: true
delete:
summary: 'Eliminar afinamiento'
operationId: eliminarAfinamiento
description: ''
parameters: []
responses: { }
tags:
- 'Afinamientos y Seguimiento'
security: []
parameters:
-
in: path
name: id
description: 'ID del afinamiento.'
example: uuid-123
required: true
schema:
type: string
/api/mis-afinamientos:
get:
summary: 'Obtener afinamientos del usuario autenticado'
operationId: obtenerAfinamientosDelUsuarioAutenticado
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Afinamientos y Seguimiento'
security: []
'/api/afinamientos/paciente/{pacienteId}':
get:
summary: 'Obtener afinamientos por paciente'
operationId: obtenerAfinamientosPorPaciente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Afinamientos y Seguimiento'
security: []
parameters:
-
in: path
name: pacienteId
description: ''
example: architecto
required: true
schema:
type: string
/api/logs:
get:
summary: 'Listar y filtrar logs'
operationId: listarYFiltrarLogs
description: ''
parameters:
-
in: query
name: search
description: 'Busqueda por texto.'
example: architecto
required: false
schema:
type: string
description: 'Busqueda por texto.'
example: architecto
-
in: query
name: type
description: 'Filtrar por tipo (visita, brigada, etc).'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por tipo (visita, brigada, etc).'
example: architecto
-
in: query
name: status
description: 'Filtrar por estado (success, error, warning).'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por estado (success, error, warning).'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Auditoría y Logs'
/api/logs/stats:
get:
summary: ''
operationId: getApiLogsStats
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Auditoría y Logs'
security: []
/api/logs/export:
get:
summary: ''
operationId: getApiLogsExport
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Auditoría y Logs'
security: []
/api/logs/download:
get:
summary: ''
operationId: getApiLogsDownload
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Auditoría y Logs'
security: []
/api/logs/clear:
post:
summary: ''
operationId: postApiLogsClear
description: ''
parameters: []
responses: { }
tags:
- 'Auditoría y Logs'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
confirm:
type: boolean
description: 'Must be accepted.'
example: false
required:
- confirm
security: []
'/api/logs/{id}':
get:
summary: ''
operationId: getApiLogsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Auditoría y Logs'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the log.'
example: architecto
required: true
schema:
type: string
/api/login:
post:
summary: 'Iniciar sesión'
operationId: iniciarSesin
description: 'Permite a un usuario obtener un token de acceso (Bearer) proporcionando sus credenciales.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
token: 1|ABC...
usuario:
id: 1
nombre: Admin
rol: admin
sede:
id: 1
nombre: 'Sede Central'
properties:
token:
type: string
example: 1|ABC...
usuario:
type: object
properties:
id:
type: integer
example: 1
nombre:
type: string
example: Admin
rol:
type: string
example: admin
sede:
type: object
properties:
id:
type: integer
example: 1
nombre:
type: string
example: 'Sede Central'
422:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Las credenciales proporcionadas son incorrectas.'
errors:
usuario:
- 'Las credenciales proporcionadas son incorrectas.'
properties:
message:
type: string
example: 'Las credenciales proporcionadas son incorrectas.'
errors:
type: object
properties:
usuario:
type: array
example:
- 'Las credenciales proporcionadas son incorrectas.'
items:
type: string
tags:
- Autenticación
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
usuario:
type: string
description: 'El nombre de usuario.'
example: admin
contrasena:
type: string
description: 'La contraseña del usuario.'
example: secret123
required:
- usuario
- contrasena
security: []
/api/logout:
post:
summary: 'Cerrar sesión'
operationId: cerrarSesin
description: 'Revoca el token de acceso actual del usuario autenticado.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Sesión cerrada correctamente'
properties:
message:
type: string
example: 'Sesión cerrada correctamente'
tags:
- Autenticación
/api/perfil:
get:
summary: 'Ver perfil'
operationId: verPerfil
description: 'Obtiene la información detallada del usuario autenticado y su sede asociada.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
id: 1
nombre: Admin
usuario: admin
correo: admin@test.com
rol: admin
sede:
id: 1
nombre: 'Sede Central'
properties:
id:
type: integer
example: 1
nombre:
type: string
example: Admin
usuario:
type: string
example: admin
correo:
type: string
example: admin@test.com
rol:
type: string
example: admin
sede:
type: object
properties:
id:
type: integer
example: 1
nombre:
type: string
example: 'Sede Central'
tags:
- Autenticación
put:
summary: 'Actualizar perfil'
operationId: actualizarPerfil
description: 'Permite al usuario autenticado actualizar su nombre, correo y contraseña.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Perfil actualizado correctamente'
usuario:
id: 1
nombre: 'Juan Perez'
correo: juan@test.com
properties:
message:
type: string
example: 'Perfil actualizado correctamente'
usuario:
type: object
properties:
id:
type: integer
example: 1
nombre:
type: string
example: 'Juan Perez'
correo:
type: string
example: juan@test.com
422:
description: ''
content:
application/json:
schema:
type: object
example:
error: 'La contrasena actual no es correcta'
properties:
error:
type: string
example: 'La contrasena actual no es correcta'
tags:
- Autenticación
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
nombre:
type: string
description: 'El nombre completo.'
example: 'Juan Perez'
correo:
type: string
description: 'El correo electrónico.'
example: juan@test.com
contrasena_actual:
type: string
description: 'La contraseña actual (requerida si se cambia la nueva).'
example: architecto
contrasena_nueva:
type: string
description: 'La nueva contraseña (mínimo 6 caracteres).'
example: architecto
/api/brigadas:
get:
summary: 'Listar brigadas'
operationId: listarBrigadas
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Brigadas de Salud'
post:
summary: 'Crear brigada'
operationId: crearBrigada
description: 'Permite crear una brigada y sincronizar los pacientes que fueron capturados offline.'
parameters: []
responses: { }
tags:
- 'Brigadas de Salud'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
lugar_evento:
type: string
description: 'Nombre del lugar.'
example: 'Vereda El Cairo'
fecha_brigada:
type: date
description: 'Fecha del evento.'
example: architecto
tema:
type: string
description: 'Tema desarrollado.'
example: 'Charla HTA'
pacientes:
type: array
description: 'Array de IDs de pacientes (reales u offline_ID).'
example:
- uuid-1
- offline_2
items:
type: string
pacientes_data:
type: array
description: 'Datos completos de pacientes offline para auto-creación.'
example:
- []
items:
type: object
required:
- lugar_evento
- fecha_brigada
- tema
- pacientes
'/api/brigadas/{id}':
get:
summary: ''
operationId: getApiBrigadasId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Brigadas de Salud'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the brigada.'
example: architecto
required: true
schema:
type: string
/api/encuestas:
get:
summary: 'Listar todas las encuestas'
operationId: listarTodasLasEncuestas
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
post:
summary: 'Crear encuesta'
operationId: crearEncuesta
description: ''
parameters: []
responses: { }
tags:
- 'Encuestas de Satisfacción'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: 'UUID único para la encuesta.'
example: uuid-abc
idpaciente:
type: string
description: 'ID del paciente.'
example: uuid-pac
idsede:
type: string
description: 'ID de la sede.'
example: '1'
domicilio:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
entidad_afiliada:
type: string
description: 'Must not be greater than 100 characters.'
example: g
nullable: true
fecha:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
respuestas_calificacion:
type: json
description: 'JSON con calificaciones (Excelente, Bueno, etc).'
example: '["Excelente", "Bueno"]'
respuestas_adicionales:
type: json
description: 'JSON con respuestas abiertas.'
example: '{"pregunta1": "Respuesta"}'
sugerencias:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'n'
nullable: true
required:
- id
- idpaciente
- idsede
- domicilio
- fecha
- respuestas_calificacion
- respuestas_adicionales
'/api/encuestas/{id}':
get:
summary: 'Consultar encuesta'
operationId: consultarEncuesta
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
put:
summary: 'Actualizar encuesta'
operationId: actualizarEncuesta
description: ''
parameters: []
responses: { }
tags:
- 'Encuestas de Satisfacción'
delete:
summary: ''
operationId: deleteApiEncuestasId
description: ''
parameters: []
responses: { }
tags:
- 'Encuestas de Satisfacción'
security: []
parameters:
-
in: path
name: id
description: 'ID de la encuesta.'
example: architecto
required: true
schema:
type: string
/api/mis-encuestas:
get:
summary: ''
operationId: getApiMisEncuestas
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
security: []
'/api/encuestas/paciente/{idpaciente}':
get:
summary: ''
operationId: getApiEncuestasPacienteIdpaciente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
security: []
parameters:
-
in: path
name: idpaciente
description: ''
example: architecto
required: true
schema:
type: string
'/api/encuestas/usuario/{idusuario}':
get:
summary: ''
operationId: getApiEncuestasUsuarioIdusuario
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
security: []
parameters:
-
in: path
name: idusuario
description: ''
example: architecto
required: true
schema:
type: string
'/api/encuestas/sede/{idsede}':
get:
summary: ''
operationId: getApiEncuestasSedeIdsede
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
security: []
parameters:
-
in: path
name: idsede
description: ''
example: architecto
required: true
schema:
type: string
/api/encuestas-estadisticas:
get:
summary: ''
operationId: getApiEncuestasEstadisticas
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Encuestas de Satisfacción'
security: []
/api/health:
get:
summary: 'Health Check'
operationId: healthCheck
description: 'Verifica si la API está respondiendo correctamente.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
status: ok
timestamp: '2026-06-23T21:47:54.093550Z'
properties:
status:
type: string
example: ok
timestamp:
type: string
example: '2026-06-23T21:47:54.093550Z'
tags:
- Endpoints
security: []
/api/v1/export/visitas:
get:
summary: 'Exportar visitas domiciliarias en formato JSON para RIPS/Integración.'
operationId: exportarVisitasDomiciliariasEnFormatoJSONParaRIPSIntegracin
description: ''
parameters:
-
in: query
name: sede
description: 'Nombre de la sede (cajibio, morales, piendamo).'
example: architecto
required: true
schema:
type: string
description: 'Nombre de la sede (cajibio, morales, piendamo).'
example: architecto
-
in: query
name: fecha_inicio
description: 'date Fecha inicial del reporte.'
example: architecto
required: true
schema:
type: string
description: 'date Fecha inicial del reporte.'
example: architecto
-
in: query
name: fecha_fin
description: 'date Fecha final del reporte.'
example: architecto
required: true
schema:
type: string
description: 'date Fecha final del reporte.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sede:
type: string
description: ''
example: architecto
fecha_inicio:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:57'
fecha_fin:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:57'
required:
- sede
- fecha_inicio
- fecha_fin
/api/envio-muestras:
get:
summary: 'Listar envíos de muestras'
operationId: listarEnvosDeMuestras
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Envíos de Muestras (Laboratorio)'
post:
summary: 'Crear planilla de envío'
operationId: crearPlanillaDeEnvo
description: 'Permite registrar una nueva planilla de remisión de muestras a laboratorio.'
parameters: []
responses: { }
tags:
- 'Envíos de Muestras (Laboratorio)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fecha:
type: date
description: 'Fecha del envío.'
example: architecto
idsede:
type: string
description: 'ID de la sede remitente.'
example: architecto
detalles:
type: array
description: 'Lista de muestras por paciente.'
example:
- []
items:
type: object
properties:
paciente_id:
type: string
description: ''
example: architecto
numero_orden:
type: integer
description: 'Must be at least 0.'
example: 39
'*':
type: object
description: ''
example:
paciente_id: architecto
properties:
paciente_id:
type: string
description: 'ID del paciente.'
example: architecto
numero_orden:
type: integer
description: 'Número de orden de laboratorio.'
example: 16
required:
- paciente_id
- numero_orden
required:
- paciente_id
- numero_orden
responsable_transporte_id:
type: string
description: 'Must not be greater than 255 characters.'
example: b
nullable: true
responsable_recepcion_id:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
nullable: true
required:
- fecha
- idsede
- detalles
'/api/envio-muestras/{id}':
get:
summary: ''
operationId: getApiEnvioMuestrasId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Envíos de Muestras (Laboratorio)'
security: []
put:
summary: ''
operationId: putApiEnvioMuestrasId
description: ''
parameters: []
responses: { }
tags:
- 'Envíos de Muestras (Laboratorio)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
fecha:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
idsede:
type: string
description: 'The id of an existing record in the sedes table.'
example: null
responsable_transporte_id:
type: string
description: 'Must not be greater than 255 characters.'
example: b
nullable: true
responsable_recepcion_id:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
nullable: true
security: []
delete:
summary: ''
operationId: deleteApiEnvioMuestrasId
description: ''
parameters: []
responses: { }
tags:
- 'Envíos de Muestras (Laboratorio)'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the envio muestra.'
example: architecto
required: true
schema:
type: string
'/api/envio-muestras/sede/{sedeId}':
get:
summary: ''
operationId: getApiEnvioMuestrasSedeSedeId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Envíos de Muestras (Laboratorio)'
security: []
parameters:
-
in: path
name: sedeId
description: ''
example: architecto
required: true
schema:
type: string
'/api/envio-muestras/por-fecha-salida/{fecha}':
get:
summary: ''
operationId: getApiEnvioMuestrasPorFechaSalidaFecha
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Envíos de Muestras (Laboratorio)'
security: []
parameters:
-
in: path
name: fecha
description: ''
example: architecto
required: true
schema:
type: string
'/api/envio-muestras/{id}/actualizar-estado-correo':
put:
summary: 'Actualizar estado de correo (marcar como enviado/no enviado)'
operationId: actualizarEstadoDeCorreomarcarComoEnviadonoEnviado
description: ''
parameters: []
responses: { }
tags:
- 'Envíos de Muestras (Laboratorio)'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the envio muestra.'
example: architecto
required: true
schema:
type: string
/api/v1/public/mapa-calor:
get:
summary: 'Mapa de Calor (v1)'
operationId: mapaDeCalorv1
description: "Retorna los puntos geográficos agrupados por zona de visita y sede para el mapa de calor de la landing.\nLos datos están cacheados por 1 hora con Redis."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
-
zona: '208'
sede_principal: cajibio
lat: 2.5706
lng: -76.6619
impacto_visitas: 1
-
zona: '3147318992'
sede_principal: cajibio
lat: 2.6504
lng: -76.6167
impacto_visitas: 1
-
zona: '3219342703'
sede_principal: cajibio
lat: 2.723
lng: -76.6584
impacto_visitas: 1
-
zona: achiral
sede_principal: cajibio
lat: 2.6761
lng: -76.8252
impacto_visitas: 1
-
zona: altamira
sede_principal: cajibio
lat: 2.6636
lng: -76.7311
impacto_visitas: 11
-
zona: 'ALTO GRANDE'
sede_principal: cajibio
lat: 2.6221
lng: -76.6077
impacto_visitas: 40
-
zona: 'alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: arroyuela
sede_principal: cajibio
lat: 2.651
lng: -76.6786
impacto_visitas: 8
-
zona: AURELIA
sede_principal: cajibio
lat: 2.643
lng: -76.6199
impacto_visitas: 9
-
zona: B/piendalinda
sede_principal: cajibio
lat: 2.6459
lng: -76.5346
impacto_visitas: 1
-
zona: 'bajo carrizal'
sede_principal: cajibio
lat: 2.5977
lng: -76.6684
impacto_visitas: 1
-
zona: 'barrio villamarcela'
sede_principal: piendamo
lat: 2.6363
lng: -76.5249
impacto_visitas: 1
-
zona: 'barrio Betania'
sede_principal: cajibio
lat: 2.6361
lng: -76.7313
impacto_visitas: 2
-
zona: 'Barrio Fátima'
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 3
-
zona: 'Barrio La Floresta'
sede_principal: morales
lat: 2.7584
lng: -76.6312
impacto_visitas: 3
-
zona: 'Barrio Modelo'
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 2
-
zona: 'barrio villamarcela'
sede_principal: piendamo
lat: 2.6362
lng: -76.525
impacto_visitas: 2
-
zona: Bet
sede_principal: cajibio
lat: 2.5862
lng: -76.7405
impacto_visitas: 1
-
zona: Betania
sede_principal: cajibio
lat: 2.5846
lng: -76.7525
impacto_visitas: 10
-
zona: 'Buena vista'
sede_principal: cajibio
lat: 2.6832
lng: -76.6729
impacto_visitas: 9
-
zona: Buenavista
sede_principal: cajibio
lat: 2.6878
lng: -76.6762
impacto_visitas: 30
-
zona: cacahual
sede_principal: cajibio
lat: 2.6898
lng: -76.7252
impacto_visitas: 13
-
zona: CAIMITO
sede_principal: morales
lat: 2.7855
lng: -76.6013
impacto_visitas: 1
-
zona: 'CAIMITO CARPINTERO'
sede_principal: morales
lat: 2.7855
lng: -76.6013
impacto_visitas: 1
-
zona: CAJIBIO
sede_principal: cajibio
lat: 2.6317
lng: -76.5886
impacto_visitas: 15
-
zona: 'CAJIBIO 2'
sede_principal: cajibio
lat: 2.62
lng: -76.5796
impacto_visitas: 1
-
zona: 'CAJIBIO 3'
sede_principal: cajibio
lat: 2.6136
lng: -76.632
impacto_visitas: 1
-
zona: 'CAJIBIO 1'
sede_principal: cajibio
lat: 2.62
lng: -76.5893
impacto_visitas: 4
-
zona: 'CAJIBIO 2'
sede_principal: cajibio
lat: 2.6244
lng: -76.6224
impacto_visitas: 93
-
zona: 'CAJIBIO 3'
sede_principal: cajibio
lat: 2.6164
lng: -76.6126
impacto_visitas: 83
-
zona: 'CAJIBIO 4'
sede_principal: cajibio
lat: 2.6251
lng: -76.6395
impacto_visitas: 17
-
zona: CAJIBIO3
sede_principal: cajibio
lat: 2.6344
lng: -76.6969
impacto_visitas: 2
-
zona: CAJIBIO4
sede_principal: cajibio
lat: 2.6367
lng: -76.648
impacto_visitas: 1
-
zona: 'CAJIBIPO 3'
sede_principal: cajibio
lat: 2.6212
lng: -76.5702
impacto_visitas: 2
-
zona: 'CAJIBO 3'
sede_principal: cajibio
lat: 2.6238
lng: -76.5697
impacto_visitas: 1
-
zona: 'campa alegre sector la selva'
sede_principal: piendamo
lat: 2.73
lng: -76.5869
impacto_visitas: 1
-
zona: 'Campo Alegre'
sede_principal: cajibio
lat: 2.5769
lng: -76.7275
impacto_visitas: 6
-
zona: Campoalegre
sede_principal: cajibio
lat: 2.5759
lng: -76.7208
impacto_visitas: 6
-
zona: capilla
sede_principal: cajibio
lat: 2.5802
lng: -76.6232
impacto_visitas: 14
-
zona: carmelo
sede_principal: cajibio
lat: 2.6668
lng: -76.7001
impacto_visitas: 40
-
zona: carrizal
sede_principal: cajibio
lat: 2.5969
lng: -76.6628
impacto_visitas: 53
-
zona: 'casas bajas'
sede_principal: cajibio
lat: 2.6395
lng: -76.7309
impacto_visitas: 4
-
zona: 'casas bajas'
sede_principal: cajibio
lat: 2.6408
lng: -76.7366
impacto_visitas: 130
-
zona: Casitas
sede_principal: cajibio
lat: 2.6909
lng: -76.6606
impacto_visitas: 26
-
zona: 'cass bajas'
sede_principal: cajibio
lat: 2.6392
lng: -76.7368
impacto_visitas: 1
-
zona: 'CERRO BAJÓ'
sede_principal: morales
lat: 2.7514
lng: -76.7019
impacto_visitas: 2
-
zona: 'CERRO BAJO'
sede_principal: morales
lat: 2.7513
lng: -76.7011
impacto_visitas: 6
-
zona: cidral
sede_principal: cajibio
lat: 2.6782
lng: -76.6709
impacto_visitas: 27
-
zona: 'cidral 9'
sede_principal: cajibio
lat: 2.6688
lng: -76.663
impacto_visitas: 1
-
zona: 'cidral ojo'
sede_principal: cajibio
lat: 2.6689
lng: -76.6629
impacto_visitas: 1
-
zona: cohetera
sede_principal: cajibio
lat: 2.6438
lng: -76.6271
impacto_visitas: 39
-
zona: coheterw
sede_principal: cajibio
lat: 2.6527
lng: -76.6304
impacto_visitas: 1
-
zona: crucero
sede_principal: cajibio
lat: 2.5838
lng: -76.6722
impacto_visitas: 1
-
zona: 'CXAJIBIO 3'
sede_principal: cajibio
lat: 2.6204
lng: -76.6402
impacto_visitas: 1
-
zona: diamante
sede_principal: cajibio
lat: 2.6774
lng: -76.7275
impacto_visitas: 4
-
zona: dind3
sede_principal: cajibio
lat: 2.6905
lng: -76.7529
impacto_visitas: 2
-
zona: dinde
sede_principal: cajibio
lat: 2.6971
lng: -76.7583
impacto_visitas: 200
-
zona: 'el cidral'
sede_principal: cajibio
lat: 2.6791
lng: -76.6748
impacto_visitas: 23
-
zona: 'el cidral L9'
sede_principal: cajibio
lat: 2.6747
lng: -76.6763
impacto_visitas: 1
-
zona: 'el lago'
sede_principal: cajibio
lat: 2.5753
lng: -76.604
impacto_visitas: 1
-
zona: 'el porvenir'
sede_principal: cajibio
lat: 2.6476
lng: -76.649
impacto_visitas: 2
-
zona: Fátima
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 1
-
zona: finde
sede_principal: cajibio
lat: 2.6865
lng: -76.7607
impacto_visitas: 1
-
zona: Florida
sede_principal: cajibio
lat: 2.5709
lng: -76.6947
impacto_visitas: 4
-
zona: granja
sede_principal: cajibio
lat: 2.6486
lng: -76.6096
impacto_visitas: 25
-
zona: guangubio
sede_principal: cajibio
lat: 2.5822
lng: -76.6746
impacto_visitas: 71
-
zona: independencia
sede_principal: cajibio
lat: 2.7148
lng: -76.7194
impacto_visitas: 25
-
zona: independiente
sede_principal: cajibio
lat: 2.7095
lng: -76.7176
impacto_visitas: 1
-
zona: jardin
sede_principal: cajibio
lat: 2.5956
lng: -76.6773
impacto_visitas: 14
-
zona: 'l granja'
sede_principal: cajibio
lat: 2.6474
lng: -76.6096
impacto_visitas: 6
-
zona: 'l palma'
sede_principal: cajibio
lat: 2.6655
lng: -76.6249
impacto_visitas: 1
-
zona: 'l pedregosa'
sede_principal: cajibio
lat: 2.6666
lng: -76.6278
impacto_visitas: 1
-
zona: 'l. a palma'
sede_principal: cajibio
lat: 2.667
lng: -76.6273
impacto_visitas: 1
-
zona: 'l. Granja'
sede_principal: cajibio
lat: 2.751
lng: -76.6696
impacto_visitas: 1
-
zona: 'l. palma'
sede_principal: cajibio
lat: 2.6663
lng: -76.6259
impacto_visitas: 1
-
zona: 'la arroyuela'
sede_principal: cajibio
lat: 2.6458
lng: -76.655
impacto_visitas: 5
-
zona: 'LA AURELIA'
sede_principal: cajibio
lat: 2.6561
lng: -76.6128
impacto_visitas: 3
-
zona: 'la balsa'
sede_principal: cajibio
lat: 2.5838
lng: -76.6722
impacto_visitas: 1
-
zona: 'La Florida'
sede_principal: cajibio
lat: 2.5602
lng: -76.6945
impacto_visitas: 1
-
zona: 'la granja'
sede_principal: cajibio
lat: 2.6525
lng: -76.612
impacto_visitas: 74
-
zona: 'la granja'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: 'la palma'
sede_principal: cajibio
lat: 2.6644
lng: -76.6247
impacto_visitas: 147
-
zona: 'la palma pedregosa'
sede_principal: cajibio
lat: 2.6723
lng: -76.6232
impacto_visitas: 1
-
zona: 'La pama'
sede_principal: cajibio
lat: 2.6693
lng: -76.6308
impacto_visitas: 1
-
zona: 'la pedregosa'
sede_principal: cajibio
lat: 2.6681
lng: -76.6403
impacto_visitas: 35
-
zona: 'la pqlma'
sede_principal: cajibio
lat: 2.6557
lng: -76.621
impacto_visitas: 1
-
zona: 'la unión'
sede_principal: cajibio
lat: 2.5936
lng: -76.603
impacto_visitas: 6
-
zona: 'la, palma'
sede_principal: cajibio
lat: 2.6632
lng: -76.6284
impacto_visitas: 3
-
zona: 'la. Granja'
sede_principal: cajibio
lat: 2.6454
lng: -76.6048
impacto_visitas: 2
-
zona: 'laa casitas'
sede_principal: cajibio
lat: 2.6897
lng: -76.6725
impacto_visitas: 2
-
zona: lago
sede_principal: cajibio
lat: 2.5783
lng: -76.6071
impacto_visitas: 2
-
zona: laguna
sede_principal: cajibio
lat: 2.7027
lng: -76.7704
impacto_visitas: 77
-
zona: 'laguna dinde'
sede_principal: cajibio
lat: 2.7062
lng: -76.7754
impacto_visitas: 24
-
zona: 'las casitas'
sede_principal: cajibio
lat: 2.6902
lng: -76.6585
impacto_visitas: 72
-
zona: 'loma corta'
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 1
-
zona: 'loma larga'
sede_principal: cajibio
lat: 2.5683
lng: -76.607
impacto_visitas: 15
-
zona: 'Los Pinos'
sede_principal: cajibio
lat: 2.5731
lng: -76.6684
impacto_visitas: 1
-
zona: MATARREDONDA
sede_principal: morales
lat: 2.7348
lng: -76.64
impacto_visitas: 5
-
zona: MESETA
sede_principal: cajibio
lat: 2.5904
lng: -76.6935
impacto_visitas: 24
-
zona: michinchal
sede_principal: cajibio
lat: 2.6903
lng: -76.7043
impacto_visitas: 37
-
zona: monterredondo
sede_principal: cajibio
lat: 2.6624
lng: -76.7159
impacto_visitas: 3
-
zona: MORALES
sede_principal: morales
lat: 2.7321
lng: -76.6541
impacto_visitas: 1
-
zona: mucho
sede_principal: cajibio
lat: 2.6721
lng: -76.7027
impacto_visitas: 1
-
zona: 'Nuevo horizonte'
sede_principal: cajibio
lat: 2.5961
lng: -76.6953
impacto_visitas: 26
-
zona: ortega
sede_principal: cajibio
lat: 2.6812
lng: -76.7963
impacto_visitas: 150
-
zona: pal
sede_principal: cajibio
lat: 2.5592
lng: -76.611
impacto_visitas: 2
-
zona: palace
sede_principal: cajibio
lat: 2.5587
lng: -76.6126
impacto_visitas: 62
-
zona: palma
sede_principal: cajibio
lat: 2.6595
lng: -76.622
impacto_visitas: 36
-
zona: 'palma pedregosa'
sede_principal: cajibio
lat: 2.6649
lng: -76.6247
impacto_visitas: 6
-
zona: palomera
sede_principal: piendamo
lat: 2.6792
lng: -76.5335
impacto_visitas: 1
-
zona: 'PAN DE AZUCAR'
sede_principal: morales
lat: 2.7418
lng: -76.7019
impacto_visitas: 5
-
zona: 'PAN de azúcar. san francisco cajibio'
sede_principal: cajibio
lat: 2.7353
lng: -76.7025
impacto_visitas: 1
-
zona: Pedregosa
sede_principal: cajibio
lat: 2.6748
lng: -76.646
impacto_visitas: 133
-
zona: pinos
sede_principal: cajibio
lat: 2.5724
lng: -76.6677
impacto_visitas: 13
-
zona: PLAYON
sede_principal: morales
lat: 2.7357
lng: -76.7271
impacto_visitas: 6
-
zona: poooo
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 1
-
zona: PORVENIR
sede_principal: cajibio
lat: 2.6476
lng: -76.649
impacto_visitas: 3
-
zona: PPRIMAVERA
sede_principal: cajibio
lat: 2.6221
lng: -76.6578
impacto_visitas: 1
-
zona: PRIMAVERA
sede_principal: cajibio
lat: 2.6214
lng: -76.6547
impacto_visitas: 105
-
zona: PRIMAVERA⁶
sede_principal: cajibio
lat: 2.6243
lng: -76.6621
impacto_visitas: 1
-
zona: Recuerdo
sede_principal: cajibio
lat: 2.6221
lng: -76.7632
impacto_visitas: 32
-
zona: 'Recuerdo Bajo'
sede_principal: cajibio
lat: 2.6355
lng: -76.77
impacto_visitas: 9
-
zona: 'Recuerdo Bajo 0'
sede_principal: cajibio
lat: 2.6032
lng: -76.7779
impacto_visitas: 1
-
zona: Rosario
sede_principal: cajibio
lat: 2.6126
lng: -76.7395
impacto_visitas: 113
-
zona: ROSARIO
sede_principal: morales
lat: 2.736
lng: -76.6663
impacto_visitas: 25
-
zona: 'Rural El Rosario'
sede_principal: morales
lat: 2.7324
lng: -76.6672
impacto_visitas: 2
-
zona: 'rural San Roque'
sede_principal: cajibio
lat: 2.7252
lng: -76.7643
impacto_visitas: 1
-
zona: salero
sede_principal: cajibio
lat: 2.6441
lng: -76.5276
impacto_visitas: 2
-
zona: 'san jose'
sede_principal: cajibio
lat: 2.6641
lng: -76.7003
impacto_visitas: 1
-
zona: 'San antonio'
sede_principal: cajibio
lat: 2.7249
lng: -76.6927
impacto_visitas: 41
-
zona: 'SAN ANTONIO'
sede_principal: morales
lat: 2.7444
lng: -76.5901
impacto_visitas: 1
-
zona: 'San antonio cajibio'
sede_principal: cajibio
lat: 2.7238
lng: -76.6932
impacto_visitas: 2
-
zona: 'San Francisco'
sede_principal: cajibio
lat: 2.7265
lng: -76.7018
impacto_visitas: 10
-
zona: 'san Gabriel'
sede_principal: cajibio
lat: 2.6225
lng: -76.7034
impacto_visitas: 93
-
zona: 'san jose'
sede_principal: cajibio
lat: 2.6736
lng: -76.6782
impacto_visitas: 20
-
zona: 'san jose'
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 1
-
zona: 'san jose carmelo'
sede_principal: cajibio
lat: 2.6897
lng: -76.6985
impacto_visitas: 26
-
zona: 'San Lorenzo'
sede_principal: cajibio
lat: 2.6145
lng: -76.7684
impacto_visitas: 19
-
zona: 'san Migue'
sede_principal: cajibio
lat: 2.6976
lng: -76.7549
impacto_visitas: 1
-
zona: 'SAN RAFAEL'
sede_principal: morales
lat: 2.7354
lng: -76.641
impacto_visitas: 5
-
zona: si
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 2
-
zona: siii
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 1
-
zona: 'SOCORRO BAJÓ'
sede_principal: morales
lat: 2.7364
lng: -76.7414
impacto_visitas: 2
-
zona: 'SOCORRO BAJO'
sede_principal: morales
lat: 2.7358
lng: -76.7414
impacto_visitas: 3
-
zona: tigre
sede_principal: cajibio
lat: 2.608
lng: -76.6937
impacto_visitas: 101
-
zona: 'Tropical Tumaco'
sede_principal: cajibio
lat: 2.5942
lng: -76.7634
impacto_visitas: 13
-
zona: Tumaco
sede_principal: cajibio
lat: 2.5936
lng: -76.7641
impacto_visitas: 11
-
zona: TUNEL
sede_principal: cajibio
lat: 2.522
lng: -76.5701
impacto_visitas: 4
-
zona: tunia
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 2
-
zona: unión
sede_principal: cajibio
lat: 2.5929
lng: -76.6056
impacto_visitas: 55
-
zona: 'v/ uvales'
sede_principal: piendamo
lat: 2.7332
lng: -76.5693
impacto_visitas: 1
-
zona: 'v/campo alegre'
sede_principal: piendamo
lat: 2.7334
lng: -76.5806
impacto_visitas: 1
-
zona: v/salinas
sede_principal: piendamo
lat: 2.8241
lng: -76.5847
impacto_visitas: 1
-
zona: 'v\alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: v\sanjose
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 1
-
zona: 'vefeda campo alegre'
sede_principal: piendamo
lat: 2.7334
lng: -76.5806
impacto_visitas: 1
-
zona: VENTA
sede_principal: cajibio
lat: 2.588
lng: -76.5599
impacto_visitas: 13
-
zona: 'vereda cacahual'
sede_principal: cajibio
lat: 2.6924
lng: -76.7302
impacto_visitas: 1
-
zona: 'vereda diamante'
sede_principal: cajibio
lat: 2.6733
lng: -76.7129
impacto_visitas: 1
-
zona: 'vereda altamira'
sede_principal: cajibio
lat: 2.6699
lng: -76.7354
impacto_visitas: 5
-
zona: 'vereda alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: 'vereda arroyuela'
sede_principal: cajibio
lat: 2.6456
lng: -76.6686
impacto_visitas: 3
-
zona: 'vereda buena vista'
sede_principal: cajibio
lat: 2.6904
lng: -76.6725
impacto_visitas: 2
-
zona: 'vereda cacahual'
sede_principal: cajibio
lat: 2.6919
lng: -76.727
impacto_visitas: 86
-
zona: 'vereda campo alegre'
sede_principal: piendamo
lat: 2.7317
lng: -76.5837
impacto_visitas: 2
-
zona: 'vereda campo alegre9'
sede_principal: piendamo
lat: 2.73
lng: -76.5869
impacto_visitas: 1
-
zona: 'vereda carmelo'
sede_principal: cajibio
lat: 2.6641
lng: -76.7022
impacto_visitas: 1
-
zona: 'vereda casas bajas'
sede_principal: cajibio
lat: 2.6511
lng: -76.7326
impacto_visitas: 1
-
zona: 'vereda diamante'
sede_principal: cajibio
lat: 2.6828
lng: -76.7207
impacto_visitas: 3
-
zona: 'vereda el cidral'
sede_principal: cajibio
lat: 2.6786
lng: -76.6785
impacto_visitas: 3
-
zona: 'vereda el diamante'
sede_principal: cajibio
lat: 2.6837
lng: -76.7199
impacto_visitas: 3
-
zona: 'Vereda El Maco'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 2
-
zona: 'vereda granja'
sede_principal: cajibio
lat: 2.6448
lng: -76.6042
impacto_visitas: 1
-
zona: 'vereda independencia'
sede_principal: cajibio
lat: 2.7144
lng: -76.7193
impacto_visitas: 20
-
zona: 'vereda la arroyuela'
sede_principal: cajibio
lat: 2.6494
lng: -76.6705
impacto_visitas: 3
-
zona: 'vereda la aurelia'
sede_principal: cajibio
lat: 2.6486
lng: -76.5961
impacto_visitas: 2
-
zona: 'vereda la aurelia.'
sede_principal: cajibio
lat: 2.6451
lng: -76.5952
impacto_visitas: 1
-
zona: 'vereda la esmeralda'
sede_principal: piendamo
lat: 2.6938
lng: -76.5394
impacto_visitas: 2
-
zona: 'vereda la granja'
sede_principal: cajibio
lat: 2.6452
lng: -76.6038
impacto_visitas: 1
-
zona: 'vereda la palma'
sede_principal: cajibio
lat: 2.6639
lng: -76.6251
impacto_visitas: 6
-
zona: 'vereda la palomera tunia'
sede_principal: piendamo
lat: 2.6792
lng: -76.5335
impacto_visitas: 1
-
zona: 'Vereda loma de bogota'
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 1
-
zona: 'vereda los pinos'
sede_principal: piendamo
lat: 2.8241
lng: -76.5847
impacto_visitas: 1
-
zona: 'Vereda Maci'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 1
-
zona: 'Vereda Maco'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 1
-
zona: 'vereda michinchal'
sede_principal: cajibio
lat: 2.6899
lng: -76.7061
impacto_visitas: 38
-
zona: 'vereda puerta chiquita'
sede_principal: cajibio
lat: 2.6311
lng: -76.6786
impacto_visitas: 1
-
zona: 'vereda salero'
sede_principal: cajibio
lat: 2.6865
lng: -76.6665
impacto_visitas: 3
-
zona: 'vereda san g'
sede_principal: cajibio
lat: 2.6221
lng: -76.6982
impacto_visitas: 1
-
zona: 'vereda san Gabriel'
sede_principal: cajibio
lat: 2.6239
lng: -76.7049
impacto_visitas: 75
-
zona: 'vereda san jose'
sede_principal: cajibio
lat: 2.6878
lng: -76.7007
impacto_visitas: 8
-
zona: 'vereda san jose'
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 2
-
zona: 'vereda san jose carmelo'
sede_principal: cajibio
lat: 2.6989
lng: -76.7008
impacto_visitas: 3
-
zona: 'vereda san miguel'
sede_principal: cajibio
lat: 2.691
lng: -76.5756
impacto_visitas: 3
-
zona: 'vereda uvales'
sede_principal: piendamo
lat: 2.7332
lng: -76.5693
impacto_visitas: 1
-
zona: 'vereda vivas Balcazar'
sede_principal: piendamo
lat: 2.678
lng: -76.5281
impacto_visitas: 2
-
zona: veredactunia
sede_principal: piendamo
lat: 2.6938
lng: -76.5394
impacto_visitas: 1
-
zona: 'villa marcela'
sede_principal: piendamo
lat: 2.6362
lng: -76.525
impacto_visitas: 1
-
zona: villamarcela
sede_principal: piendamo
lat: 2.6363
lng: -76.5249
impacto_visitas: 2
-
zona: villermosa
sede_principal: cajibio
lat: 2.6677
lng: -76.6597
impacto_visitas: 1
-
zona: VIUDA
sede_principal: cajibio
lat: 2.5656
lng: -76.5918
impacto_visitas: 4
-
zona: x
sede_principal: cajibio
lat: 2.6744
lng: -76.7303
impacto_visitas: 2
version: v1
cache: true
properties:
success:
type: boolean
example: true
data:
type: array
example:
-
zona: '208'
sede_principal: cajibio
lat: 2.5706
lng: -76.6619
impacto_visitas: 1
-
zona: '3147318992'
sede_principal: cajibio
lat: 2.6504
lng: -76.6167
impacto_visitas: 1
-
zona: '3219342703'
sede_principal: cajibio
lat: 2.723
lng: -76.6584
impacto_visitas: 1
-
zona: achiral
sede_principal: cajibio
lat: 2.6761
lng: -76.8252
impacto_visitas: 1
-
zona: altamira
sede_principal: cajibio
lat: 2.6636
lng: -76.7311
impacto_visitas: 11
-
zona: 'ALTO GRANDE'
sede_principal: cajibio
lat: 2.6221
lng: -76.6077
impacto_visitas: 40
-
zona: 'alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: arroyuela
sede_principal: cajibio
lat: 2.651
lng: -76.6786
impacto_visitas: 8
-
zona: AURELIA
sede_principal: cajibio
lat: 2.643
lng: -76.6199
impacto_visitas: 9
-
zona: B/piendalinda
sede_principal: cajibio
lat: 2.6459
lng: -76.5346
impacto_visitas: 1
-
zona: 'bajo carrizal'
sede_principal: cajibio
lat: 2.5977
lng: -76.6684
impacto_visitas: 1
-
zona: 'barrio villamarcela'
sede_principal: piendamo
lat: 2.6363
lng: -76.5249
impacto_visitas: 1
-
zona: 'barrio Betania'
sede_principal: cajibio
lat: 2.6361
lng: -76.7313
impacto_visitas: 2
-
zona: 'Barrio Fátima'
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 3
-
zona: 'Barrio La Floresta'
sede_principal: morales
lat: 2.7584
lng: -76.6312
impacto_visitas: 3
-
zona: 'Barrio Modelo'
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 2
-
zona: 'barrio villamarcela'
sede_principal: piendamo
lat: 2.6362
lng: -76.525
impacto_visitas: 2
-
zona: Bet
sede_principal: cajibio
lat: 2.5862
lng: -76.7405
impacto_visitas: 1
-
zona: Betania
sede_principal: cajibio
lat: 2.5846
lng: -76.7525
impacto_visitas: 10
-
zona: 'Buena vista'
sede_principal: cajibio
lat: 2.6832
lng: -76.6729
impacto_visitas: 9
-
zona: Buenavista
sede_principal: cajibio
lat: 2.6878
lng: -76.6762
impacto_visitas: 30
-
zona: cacahual
sede_principal: cajibio
lat: 2.6898
lng: -76.7252
impacto_visitas: 13
-
zona: CAIMITO
sede_principal: morales
lat: 2.7855
lng: -76.6013
impacto_visitas: 1
-
zona: 'CAIMITO CARPINTERO'
sede_principal: morales
lat: 2.7855
lng: -76.6013
impacto_visitas: 1
-
zona: CAJIBIO
sede_principal: cajibio
lat: 2.6317
lng: -76.5886
impacto_visitas: 15
-
zona: 'CAJIBIO 2'
sede_principal: cajibio
lat: 2.62
lng: -76.5796
impacto_visitas: 1
-
zona: 'CAJIBIO 3'
sede_principal: cajibio
lat: 2.6136
lng: -76.632
impacto_visitas: 1
-
zona: 'CAJIBIO 1'
sede_principal: cajibio
lat: 2.62
lng: -76.5893
impacto_visitas: 4
-
zona: 'CAJIBIO 2'
sede_principal: cajibio
lat: 2.6244
lng: -76.6224
impacto_visitas: 93
-
zona: 'CAJIBIO 3'
sede_principal: cajibio
lat: 2.6164
lng: -76.6126
impacto_visitas: 83
-
zona: 'CAJIBIO 4'
sede_principal: cajibio
lat: 2.6251
lng: -76.6395
impacto_visitas: 17
-
zona: CAJIBIO3
sede_principal: cajibio
lat: 2.6344
lng: -76.6969
impacto_visitas: 2
-
zona: CAJIBIO4
sede_principal: cajibio
lat: 2.6367
lng: -76.648
impacto_visitas: 1
-
zona: 'CAJIBIPO 3'
sede_principal: cajibio
lat: 2.6212
lng: -76.5702
impacto_visitas: 2
-
zona: 'CAJIBO 3'
sede_principal: cajibio
lat: 2.6238
lng: -76.5697
impacto_visitas: 1
-
zona: 'campa alegre sector la selva'
sede_principal: piendamo
lat: 2.73
lng: -76.5869
impacto_visitas: 1
-
zona: 'Campo Alegre'
sede_principal: cajibio
lat: 2.5769
lng: -76.7275
impacto_visitas: 6
-
zona: Campoalegre
sede_principal: cajibio
lat: 2.5759
lng: -76.7208
impacto_visitas: 6
-
zona: capilla
sede_principal: cajibio
lat: 2.5802
lng: -76.6232
impacto_visitas: 14
-
zona: carmelo
sede_principal: cajibio
lat: 2.6668
lng: -76.7001
impacto_visitas: 40
-
zona: carrizal
sede_principal: cajibio
lat: 2.5969
lng: -76.6628
impacto_visitas: 53
-
zona: 'casas bajas'
sede_principal: cajibio
lat: 2.6395
lng: -76.7309
impacto_visitas: 4
-
zona: 'casas bajas'
sede_principal: cajibio
lat: 2.6408
lng: -76.7366
impacto_visitas: 130
-
zona: Casitas
sede_principal: cajibio
lat: 2.6909
lng: -76.6606
impacto_visitas: 26
-
zona: 'cass bajas'
sede_principal: cajibio
lat: 2.6392
lng: -76.7368
impacto_visitas: 1
-
zona: 'CERRO BAJÓ'
sede_principal: morales
lat: 2.7514
lng: -76.7019
impacto_visitas: 2
-
zona: 'CERRO BAJO'
sede_principal: morales
lat: 2.7513
lng: -76.7011
impacto_visitas: 6
-
zona: cidral
sede_principal: cajibio
lat: 2.6782
lng: -76.6709
impacto_visitas: 27
-
zona: 'cidral 9'
sede_principal: cajibio
lat: 2.6688
lng: -76.663
impacto_visitas: 1
-
zona: 'cidral ojo'
sede_principal: cajibio
lat: 2.6689
lng: -76.6629
impacto_visitas: 1
-
zona: cohetera
sede_principal: cajibio
lat: 2.6438
lng: -76.6271
impacto_visitas: 39
-
zona: coheterw
sede_principal: cajibio
lat: 2.6527
lng: -76.6304
impacto_visitas: 1
-
zona: crucero
sede_principal: cajibio
lat: 2.5838
lng: -76.6722
impacto_visitas: 1
-
zona: 'CXAJIBIO 3'
sede_principal: cajibio
lat: 2.6204
lng: -76.6402
impacto_visitas: 1
-
zona: diamante
sede_principal: cajibio
lat: 2.6774
lng: -76.7275
impacto_visitas: 4
-
zona: dind3
sede_principal: cajibio
lat: 2.6905
lng: -76.7529
impacto_visitas: 2
-
zona: dinde
sede_principal: cajibio
lat: 2.6971
lng: -76.7583
impacto_visitas: 200
-
zona: 'el cidral'
sede_principal: cajibio
lat: 2.6791
lng: -76.6748
impacto_visitas: 23
-
zona: 'el cidral L9'
sede_principal: cajibio
lat: 2.6747
lng: -76.6763
impacto_visitas: 1
-
zona: 'el lago'
sede_principal: cajibio
lat: 2.5753
lng: -76.604
impacto_visitas: 1
-
zona: 'el porvenir'
sede_principal: cajibio
lat: 2.6476
lng: -76.649
impacto_visitas: 2
-
zona: Fátima
sede_principal: morales
lat: 2.7584
lng: -76.631
impacto_visitas: 1
-
zona: finde
sede_principal: cajibio
lat: 2.6865
lng: -76.7607
impacto_visitas: 1
-
zona: Florida
sede_principal: cajibio
lat: 2.5709
lng: -76.6947
impacto_visitas: 4
-
zona: granja
sede_principal: cajibio
lat: 2.6486
lng: -76.6096
impacto_visitas: 25
-
zona: guangubio
sede_principal: cajibio
lat: 2.5822
lng: -76.6746
impacto_visitas: 71
-
zona: independencia
sede_principal: cajibio
lat: 2.7148
lng: -76.7194
impacto_visitas: 25
-
zona: independiente
sede_principal: cajibio
lat: 2.7095
lng: -76.7176
impacto_visitas: 1
-
zona: jardin
sede_principal: cajibio
lat: 2.5956
lng: -76.6773
impacto_visitas: 14
-
zona: 'l granja'
sede_principal: cajibio
lat: 2.6474
lng: -76.6096
impacto_visitas: 6
-
zona: 'l palma'
sede_principal: cajibio
lat: 2.6655
lng: -76.6249
impacto_visitas: 1
-
zona: 'l pedregosa'
sede_principal: cajibio
lat: 2.6666
lng: -76.6278
impacto_visitas: 1
-
zona: 'l. a palma'
sede_principal: cajibio
lat: 2.667
lng: -76.6273
impacto_visitas: 1
-
zona: 'l. Granja'
sede_principal: cajibio
lat: 2.751
lng: -76.6696
impacto_visitas: 1
-
zona: 'l. palma'
sede_principal: cajibio
lat: 2.6663
lng: -76.6259
impacto_visitas: 1
-
zona: 'la arroyuela'
sede_principal: cajibio
lat: 2.6458
lng: -76.655
impacto_visitas: 5
-
zona: 'LA AURELIA'
sede_principal: cajibio
lat: 2.6561
lng: -76.6128
impacto_visitas: 3
-
zona: 'la balsa'
sede_principal: cajibio
lat: 2.5838
lng: -76.6722
impacto_visitas: 1
-
zona: 'La Florida'
sede_principal: cajibio
lat: 2.5602
lng: -76.6945
impacto_visitas: 1
-
zona: 'la granja'
sede_principal: cajibio
lat: 2.6525
lng: -76.612
impacto_visitas: 74
-
zona: 'la granja'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: 'la palma'
sede_principal: cajibio
lat: 2.6644
lng: -76.6247
impacto_visitas: 147
-
zona: 'la palma pedregosa'
sede_principal: cajibio
lat: 2.6723
lng: -76.6232
impacto_visitas: 1
-
zona: 'La pama'
sede_principal: cajibio
lat: 2.6693
lng: -76.6308
impacto_visitas: 1
-
zona: 'la pedregosa'
sede_principal: cajibio
lat: 2.6681
lng: -76.6403
impacto_visitas: 35
-
zona: 'la pqlma'
sede_principal: cajibio
lat: 2.6557
lng: -76.621
impacto_visitas: 1
-
zona: 'la unión'
sede_principal: cajibio
lat: 2.5936
lng: -76.603
impacto_visitas: 6
-
zona: 'la, palma'
sede_principal: cajibio
lat: 2.6632
lng: -76.6284
impacto_visitas: 3
-
zona: 'la. Granja'
sede_principal: cajibio
lat: 2.6454
lng: -76.6048
impacto_visitas: 2
-
zona: 'laa casitas'
sede_principal: cajibio
lat: 2.6897
lng: -76.6725
impacto_visitas: 2
-
zona: lago
sede_principal: cajibio
lat: 2.5783
lng: -76.6071
impacto_visitas: 2
-
zona: laguna
sede_principal: cajibio
lat: 2.7027
lng: -76.7704
impacto_visitas: 77
-
zona: 'laguna dinde'
sede_principal: cajibio
lat: 2.7062
lng: -76.7754
impacto_visitas: 24
-
zona: 'las casitas'
sede_principal: cajibio
lat: 2.6902
lng: -76.6585
impacto_visitas: 72
-
zona: 'loma corta'
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 1
-
zona: 'loma larga'
sede_principal: cajibio
lat: 2.5683
lng: -76.607
impacto_visitas: 15
-
zona: 'Los Pinos'
sede_principal: cajibio
lat: 2.5731
lng: -76.6684
impacto_visitas: 1
-
zona: MATARREDONDA
sede_principal: morales
lat: 2.7348
lng: -76.64
impacto_visitas: 5
-
zona: MESETA
sede_principal: cajibio
lat: 2.5904
lng: -76.6935
impacto_visitas: 24
-
zona: michinchal
sede_principal: cajibio
lat: 2.6903
lng: -76.7043
impacto_visitas: 37
-
zona: monterredondo
sede_principal: cajibio
lat: 2.6624
lng: -76.7159
impacto_visitas: 3
-
zona: MORALES
sede_principal: morales
lat: 2.7321
lng: -76.6541
impacto_visitas: 1
-
zona: mucho
sede_principal: cajibio
lat: 2.6721
lng: -76.7027
impacto_visitas: 1
-
zona: 'Nuevo horizonte'
sede_principal: cajibio
lat: 2.5961
lng: -76.6953
impacto_visitas: 26
-
zona: ortega
sede_principal: cajibio
lat: 2.6812
lng: -76.7963
impacto_visitas: 150
-
zona: pal
sede_principal: cajibio
lat: 2.5592
lng: -76.611
impacto_visitas: 2
-
zona: palace
sede_principal: cajibio
lat: 2.5587
lng: -76.6126
impacto_visitas: 62
-
zona: palma
sede_principal: cajibio
lat: 2.6595
lng: -76.622
impacto_visitas: 36
-
zona: 'palma pedregosa'
sede_principal: cajibio
lat: 2.6649
lng: -76.6247
impacto_visitas: 6
-
zona: palomera
sede_principal: piendamo
lat: 2.6792
lng: -76.5335
impacto_visitas: 1
-
zona: 'PAN DE AZUCAR'
sede_principal: morales
lat: 2.7418
lng: -76.7019
impacto_visitas: 5
-
zona: 'PAN de azúcar. san francisco cajibio'
sede_principal: cajibio
lat: 2.7353
lng: -76.7025
impacto_visitas: 1
-
zona: Pedregosa
sede_principal: cajibio
lat: 2.6748
lng: -76.646
impacto_visitas: 133
-
zona: pinos
sede_principal: cajibio
lat: 2.5724
lng: -76.6677
impacto_visitas: 13
-
zona: PLAYON
sede_principal: morales
lat: 2.7357
lng: -76.7271
impacto_visitas: 6
-
zona: poooo
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 1
-
zona: PORVENIR
sede_principal: cajibio
lat: 2.6476
lng: -76.649
impacto_visitas: 3
-
zona: PPRIMAVERA
sede_principal: cajibio
lat: 2.6221
lng: -76.6578
impacto_visitas: 1
-
zona: PRIMAVERA
sede_principal: cajibio
lat: 2.6214
lng: -76.6547
impacto_visitas: 105
-
zona: PRIMAVERA⁶
sede_principal: cajibio
lat: 2.6243
lng: -76.6621
impacto_visitas: 1
-
zona: Recuerdo
sede_principal: cajibio
lat: 2.6221
lng: -76.7632
impacto_visitas: 32
-
zona: 'Recuerdo Bajo'
sede_principal: cajibio
lat: 2.6355
lng: -76.77
impacto_visitas: 9
-
zona: 'Recuerdo Bajo 0'
sede_principal: cajibio
lat: 2.6032
lng: -76.7779
impacto_visitas: 1
-
zona: Rosario
sede_principal: cajibio
lat: 2.6126
lng: -76.7395
impacto_visitas: 113
-
zona: ROSARIO
sede_principal: morales
lat: 2.736
lng: -76.6663
impacto_visitas: 25
-
zona: 'Rural El Rosario'
sede_principal: morales
lat: 2.7324
lng: -76.6672
impacto_visitas: 2
-
zona: 'rural San Roque'
sede_principal: cajibio
lat: 2.7252
lng: -76.7643
impacto_visitas: 1
-
zona: salero
sede_principal: cajibio
lat: 2.6441
lng: -76.5276
impacto_visitas: 2
-
zona: 'san jose'
sede_principal: cajibio
lat: 2.6641
lng: -76.7003
impacto_visitas: 1
-
zona: 'San antonio'
sede_principal: cajibio
lat: 2.7249
lng: -76.6927
impacto_visitas: 41
-
zona: 'SAN ANTONIO'
sede_principal: morales
lat: 2.7444
lng: -76.5901
impacto_visitas: 1
-
zona: 'San antonio cajibio'
sede_principal: cajibio
lat: 2.7238
lng: -76.6932
impacto_visitas: 2
-
zona: 'San Francisco'
sede_principal: cajibio
lat: 2.7265
lng: -76.7018
impacto_visitas: 10
-
zona: 'san Gabriel'
sede_principal: cajibio
lat: 2.6225
lng: -76.7034
impacto_visitas: 93
-
zona: 'san jose'
sede_principal: cajibio
lat: 2.6736
lng: -76.6782
impacto_visitas: 20
-
zona: 'san jose'
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 1
-
zona: 'san jose carmelo'
sede_principal: cajibio
lat: 2.6897
lng: -76.6985
impacto_visitas: 26
-
zona: 'San Lorenzo'
sede_principal: cajibio
lat: 2.6145
lng: -76.7684
impacto_visitas: 19
-
zona: 'san Migue'
sede_principal: cajibio
lat: 2.6976
lng: -76.7549
impacto_visitas: 1
-
zona: 'SAN RAFAEL'
sede_principal: morales
lat: 2.7354
lng: -76.641
impacto_visitas: 5
-
zona: si
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 2
-
zona: siii
sede_principal: cajibio
lat: 2.6234
lng: -76.571
impacto_visitas: 1
-
zona: 'SOCORRO BAJÓ'
sede_principal: morales
lat: 2.7364
lng: -76.7414
impacto_visitas: 2
-
zona: 'SOCORRO BAJO'
sede_principal: morales
lat: 2.7358
lng: -76.7414
impacto_visitas: 3
-
zona: tigre
sede_principal: cajibio
lat: 2.608
lng: -76.6937
impacto_visitas: 101
-
zona: 'Tropical Tumaco'
sede_principal: cajibio
lat: 2.5942
lng: -76.7634
impacto_visitas: 13
-
zona: Tumaco
sede_principal: cajibio
lat: 2.5936
lng: -76.7641
impacto_visitas: 11
-
zona: TUNEL
sede_principal: cajibio
lat: 2.522
lng: -76.5701
impacto_visitas: 4
-
zona: tunia
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 2
-
zona: unión
sede_principal: cajibio
lat: 2.5929
lng: -76.6056
impacto_visitas: 55
-
zona: 'v/ uvales'
sede_principal: piendamo
lat: 2.7332
lng: -76.5693
impacto_visitas: 1
-
zona: 'v/campo alegre'
sede_principal: piendamo
lat: 2.7334
lng: -76.5806
impacto_visitas: 1
-
zona: v/salinas
sede_principal: piendamo
lat: 2.8241
lng: -76.5847
impacto_visitas: 1
-
zona: 'v\alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: v\sanjose
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 1
-
zona: 'vefeda campo alegre'
sede_principal: piendamo
lat: 2.7334
lng: -76.5806
impacto_visitas: 1
-
zona: VENTA
sede_principal: cajibio
lat: 2.588
lng: -76.5599
impacto_visitas: 13
-
zona: 'vereda cacahual'
sede_principal: cajibio
lat: 2.6924
lng: -76.7302
impacto_visitas: 1
-
zona: 'vereda diamante'
sede_principal: cajibio
lat: 2.6733
lng: -76.7129
impacto_visitas: 1
-
zona: 'vereda altamira'
sede_principal: cajibio
lat: 2.6699
lng: -76.7354
impacto_visitas: 5
-
zona: 'vereda alto piendamo'
sede_principal: piendamo
lat: 2.6472
lng: -76.6082
impacto_visitas: 1
-
zona: 'vereda arroyuela'
sede_principal: cajibio
lat: 2.6456
lng: -76.6686
impacto_visitas: 3
-
zona: 'vereda buena vista'
sede_principal: cajibio
lat: 2.6904
lng: -76.6725
impacto_visitas: 2
-
zona: 'vereda cacahual'
sede_principal: cajibio
lat: 2.6919
lng: -76.727
impacto_visitas: 86
-
zona: 'vereda campo alegre'
sede_principal: piendamo
lat: 2.7317
lng: -76.5837
impacto_visitas: 2
-
zona: 'vereda campo alegre9'
sede_principal: piendamo
lat: 2.73
lng: -76.5869
impacto_visitas: 1
-
zona: 'vereda carmelo'
sede_principal: cajibio
lat: 2.6641
lng: -76.7022
impacto_visitas: 1
-
zona: 'vereda casas bajas'
sede_principal: cajibio
lat: 2.6511
lng: -76.7326
impacto_visitas: 1
-
zona: 'vereda diamante'
sede_principal: cajibio
lat: 2.6828
lng: -76.7207
impacto_visitas: 3
-
zona: 'vereda el cidral'
sede_principal: cajibio
lat: 2.6786
lng: -76.6785
impacto_visitas: 3
-
zona: 'vereda el diamante'
sede_principal: cajibio
lat: 2.6837
lng: -76.7199
impacto_visitas: 3
-
zona: 'Vereda El Maco'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 2
-
zona: 'vereda granja'
sede_principal: cajibio
lat: 2.6448
lng: -76.6042
impacto_visitas: 1
-
zona: 'vereda independencia'
sede_principal: cajibio
lat: 2.7144
lng: -76.7193
impacto_visitas: 20
-
zona: 'vereda la arroyuela'
sede_principal: cajibio
lat: 2.6494
lng: -76.6705
impacto_visitas: 3
-
zona: 'vereda la aurelia'
sede_principal: cajibio
lat: 2.6486
lng: -76.5961
impacto_visitas: 2
-
zona: 'vereda la aurelia.'
sede_principal: cajibio
lat: 2.6451
lng: -76.5952
impacto_visitas: 1
-
zona: 'vereda la esmeralda'
sede_principal: piendamo
lat: 2.6938
lng: -76.5394
impacto_visitas: 2
-
zona: 'vereda la granja'
sede_principal: cajibio
lat: 2.6452
lng: -76.6038
impacto_visitas: 1
-
zona: 'vereda la palma'
sede_principal: cajibio
lat: 2.6639
lng: -76.6251
impacto_visitas: 6
-
zona: 'vereda la palomera tunia'
sede_principal: piendamo
lat: 2.6792
lng: -76.5335
impacto_visitas: 1
-
zona: 'Vereda loma de bogota'
sede_principal: piendamo
lat: 2.7271
lng: -76.5519
impacto_visitas: 1
-
zona: 'vereda los pinos'
sede_principal: piendamo
lat: 2.8241
lng: -76.5847
impacto_visitas: 1
-
zona: 'Vereda Maci'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 1
-
zona: 'Vereda Maco'
sede_principal: morales
lat: 2.7586
lng: -76.6314
impacto_visitas: 1
-
zona: 'vereda michinchal'
sede_principal: cajibio
lat: 2.6899
lng: -76.7061
impacto_visitas: 38
-
zona: 'vereda puerta chiquita'
sede_principal: cajibio
lat: 2.6311
lng: -76.6786
impacto_visitas: 1
-
zona: 'vereda salero'
sede_principal: cajibio
lat: 2.6865
lng: -76.6665
impacto_visitas: 3
-
zona: 'vereda san g'
sede_principal: cajibio
lat: 2.6221
lng: -76.6982
impacto_visitas: 1
-
zona: 'vereda san Gabriel'
sede_principal: cajibio
lat: 2.6239
lng: -76.7049
impacto_visitas: 75
-
zona: 'vereda san jose'
sede_principal: cajibio
lat: 2.6878
lng: -76.7007
impacto_visitas: 8
-
zona: 'vereda san jose'
sede_principal: piendamo
lat: 2.708
lng: -76.5737
impacto_visitas: 2
-
zona: 'vereda san jose carmelo'
sede_principal: cajibio
lat: 2.6989
lng: -76.7008
impacto_visitas: 3
-
zona: 'vereda san miguel'
sede_principal: cajibio
lat: 2.691
lng: -76.5756
impacto_visitas: 3
-
zona: 'vereda uvales'
sede_principal: piendamo
lat: 2.7332
lng: -76.5693
impacto_visitas: 1
-
zona: 'vereda vivas Balcazar'
sede_principal: piendamo
lat: 2.678
lng: -76.5281
impacto_visitas: 2
-
zona: veredactunia
sede_principal: piendamo
lat: 2.6938
lng: -76.5394
impacto_visitas: 1
-
zona: 'villa marcela'
sede_principal: piendamo
lat: 2.6362
lng: -76.525
impacto_visitas: 1
-
zona: villamarcela
sede_principal: piendamo
lat: 2.6363
lng: -76.5249
impacto_visitas: 2
-
zona: villermosa
sede_principal: cajibio
lat: 2.6677
lng: -76.6597
impacto_visitas: 1
-
zona: VIUDA
sede_principal: cajibio
lat: 2.5656
lng: -76.5918
impacto_visitas: 4
-
zona: x
sede_principal: cajibio
lat: 2.6744
lng: -76.7303
impacto_visitas: 2
items:
type: object
properties:
zona:
type: string
example: '208'
sede_principal:
type: string
example: cajibio
lat:
type: number
example: 2.5706
lng:
type: number
example: -76.6619
impacto_visitas:
type: integer
example: 1
version:
type: string
example: v1
cache:
type: boolean
example: true
tags:
- 'Estadísticas Públicas (Landing Page)'
security: []
/api/v1/estadisticas/visitas:
get:
summary: 'Estadísticas de visitas domiciliarias'
operationId: estadsticasDeVisitasDomiciliarias
description: "Devuelve la cantidad de visitas domiciliarias por auxiliar y sede, agrupadas por mes.\nSolo incluye usuarios con rol `aux` o `auxiliar`. El filtro es por año.\nÚtil para alimentar gráficos de barras y tablas en la web."
parameters:
-
in: query
name: anio
description: 'Año a consultar. Si no se envía, usa el año actual.'
example: 2025
required: false
schema:
type: integer
description: 'Año a consultar. Si no se envía, usa el año actual.'
example: 2025
-
in: query
name: sede_id
description: 'UUID de sede para filtrar solo auxiliares de esa sede.'
example: 550e8400-e29b-41d4-a716-446655440000
required: false
schema:
type: string
description: 'UUID de sede para filtrar solo auxiliares de esa sede.'
example: 550e8400-e29b-41d4-a716-446655440000
responses:
200:
description: Éxito
content:
application/json:
schema:
type: object
example:
anio: 2025
auxiliares:
-
id: 550e8400-e29b-41d4-a716-446655440000
nombre: 'Ana García'
sede: Cajibío
total_visitas: 48
por_mes:
'1': 5
'2': 3
'3': 4
'4': 6
'5': 7
'6': 4
'7': 3
'8': 5
'9': 4
'10': 3
'11': 2
'12': 2
properties:
anio:
type: integer
example: 2025
auxiliares:
type: array
example:
-
id: 550e8400-e29b-41d4-a716-446655440000
nombre: 'Ana García'
sede: Cajibío
total_visitas: 48
por_mes:
1: 5
2: 3
3: 4
4: 6
5: 7
6: 4
7: 3
8: 5
9: 4
10: 3
11: 2
12: 2
items:
type: object
properties:
id:
type: string
example: 550e8400-e29b-41d4-a716-446655440000
nombre:
type: string
example: 'Ana García'
sede:
type: string
example: Cajibío
total_visitas:
type: integer
example: 48
por_mes:
type: object
properties:
1:
type: integer
example: 5
2:
type: integer
example: 3
3:
type: integer
example: 4
4:
type: integer
example: 6
5:
type: integer
example: 7
6:
type: integer
example: 4
7:
type: integer
example: 3
8:
type: integer
example: 5
9:
type: integer
example: 4
10:
type: integer
example: 3
11:
type: integer
example: 2
12:
type: integer
example: 2
422:
description: 'Año inválido'
content:
application/json:
schema:
type: object
example:
message: 'The anio field must be an integer.'
errors:
anio:
- 'The anio field must be an integer.'
properties:
message:
type: string
example: 'The anio field must be an integer.'
errors:
type: object
properties:
anio:
type: array
example:
- 'The anio field must be an integer.'
items:
type: string
tags:
- 'Estadísticas V1'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
anio:
type: integer
description: 'Must be at least 2020. Must not be greater than 2099.'
example: 1
nullable: true
sede_id:
type: string
description: 'The id of an existing record in the sedes table.'
example: architecto
nullable: true
/api/estadisticas:
get:
summary: 'Obtener estadísticas generales'
operationId: obtenerEstadsticasGenerales
description: "Retorna el conteo de pacientes (total) y actividades (visitas, tamizajes, envíos, encuestas) del usuario logueado.\nSi no se envían fechas, filtra por el mes actual."
parameters:
-
in: query
name: fecha_inicio
description: 'date Fecha inicial (YYYY-MM-DD).'
example: '2024-03-01'
required: false
schema:
type: string
description: 'date Fecha inicial (YYYY-MM-DD).'
example: '2024-03-01'
-
in: query
name: fecha_fin
description: 'date Fecha final (YYYY-MM-DD).'
example: '2024-03-31'
required: false
schema:
type: string
description: 'date Fecha final (YYYY-MM-DD).'
example: '2024-03-31'
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Estadísticas y Dashboard'
'/api/estadisticas/sede/{sedeId}':
get:
summary: 'Obtener estadísticas por sede específica'
operationId: obtenerEstadsticasPorSedeEspecfica
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Estadísticas y Dashboard'
security: []
parameters:
-
in: path
name: sedeId
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/export/visitas-domiciliarias:
get:
summary: 'Exportar visitas domiciliarias completas con todos sus campos.'
operationId: exportarVisitasDomiciliariasCompletasConTodosSusCampos
description: "Filtra por rango de fechas obligatorio. Opcionalmente por sede del paciente\no por auxiliar que realizó la visita."
parameters:
-
in: query
name: fecha_inicio
description: 'date Fecha de inicio del rango (inclusive).'
example: '2025-01-01'
required: true
schema:
type: string
description: 'date Fecha de inicio del rango (inclusive).'
example: '2025-01-01'
-
in: query
name: fecha_fin
description: 'date Fecha de fin del rango (inclusive).'
example: '2025-12-31'
required: true
schema:
type: string
description: 'date Fecha de fin del rango (inclusive).'
example: '2025-12-31'
-
in: query
name: sede_id
description: 'UUID de la sede (filtra por sede del paciente).'
example: 550e8400-e29b-41d4-a716-446655440000
required: false
schema:
type: string
description: 'UUID de la sede (filtra por sede del paciente).'
example: 550e8400-e29b-41d4-a716-446655440000
-
in: query
name: idusuario
description: 'UUID del auxiliar que realizó las visitas.'
example: 550e8400-e29b-41d4-a716-446655440001
required: false
schema:
type: string
description: 'UUID del auxiliar que realizó las visitas.'
example: 550e8400-e29b-41d4-a716-446655440001
responses:
200:
description: Éxito
content:
application/json:
schema:
type: object
example:
total: 120
fecha_inicio: '2025-01-01'
fecha_fin: '2025-12-31'
visitas:
-
id: uuid
fecha: '2025-03-15'
tipo_visita: domiciliaria
estado: completada
paciente:
id: uuid
nombre: 'Juan Pérez'
identificacion: '12345678'
fecnacimiento: '1980-05-20'
genero: M
sede: Cajibío
auxiliar:
id: uuid
nombre: 'Ana García'
rol: auxiliar
sede: Cajibío
signos_vitales: { }
historia_clinica: { }
medicamentos: []
logistica: { }
archivos: { }
properties:
total:
type: integer
example: 120
fecha_inicio:
type: string
example: '2025-01-01'
fecha_fin:
type: string
example: '2025-12-31'
visitas:
type: array
example:
-
id: uuid
fecha: '2025-03-15'
tipo_visita: domiciliaria
estado: completada
paciente:
id: uuid
nombre: 'Juan Pérez'
identificacion: '12345678'
fecnacimiento: '1980-05-20'
genero: M
sede: Cajibío
auxiliar:
id: uuid
nombre: 'Ana García'
rol: auxiliar
sede: Cajibío
signos_vitales: []
historia_clinica: []
medicamentos: []
logistica: []
archivos: []
items:
type: object
properties:
id:
type: string
example: uuid
fecha:
type: string
example: '2025-03-15'
tipo_visita:
type: string
example: domiciliaria
estado:
type: string
example: completada
paciente:
type: object
properties:
id:
type: string
example: uuid
nombre:
type: string
example: 'Juan Pérez'
identificacion:
type: string
example: '12345678'
fecnacimiento:
type: string
example: '1980-05-20'
genero:
type: string
example: M
sede:
type: string
example: Cajibío
auxiliar:
type: object
properties:
id:
type: string
example: uuid
nombre:
type: string
example: 'Ana García'
rol:
type: string
example: auxiliar
sede:
type: string
example: Cajibío
signos_vitales:
type: object
properties: { }
historia_clinica:
type: object
properties: { }
medicamentos:
type: array
example: []
logistica:
type: object
properties: { }
archivos:
type: object
properties: { }
422:
description: 'Validación fallida'
content:
application/json:
schema:
type: object
example:
message: 'The fecha_inicio field is required.'
errors:
fecha_inicio:
- 'The fecha_inicio field is required.'
properties:
message:
type: string
example: 'The fecha_inicio field is required.'
errors:
type: object
properties:
fecha_inicio:
type: array
example:
- 'The fecha_inicio field is required.'
items:
type: string
tags:
- 'Exportación V1'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fecha_inicio:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:57'
fecha_fin:
type: string
description: 'Must be a valid date. Must be a date after or equal to fecha_inicio.'
example: '2052-07-16'
sede_id:
type: string
description: 'The id of an existing record in the sedes table.'
example: architecto
nullable: true
idusuario:
type: string
description: 'The id of an existing record in the usuarios table.'
example: architecto
nullable: true
required:
- fecha_inicio
- fecha_fin
/api/pacientes:
get:
summary: 'Listar pacientes'
operationId: listarPacientes
description: 'Obtiene todos los pacientes registrados con su sede asociada.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
example: uuid-1234
identificacion:
type: string
example: '102030'
nombre:
type: string
example: Juan
apellido:
type: string
example: Perez
sede:
type: object
properties:
id:
type: integer
example: 1
nombre:
type: string
example: 'Sede Central'
example:
-
id: uuid-1234
identificacion: '102030'
nombre: Juan
apellido: Perez
sede:
id: 1
nombre: 'Sede Central'
tags:
- 'Gestión de Pacientes'
post:
summary: 'Registrar paciente'
operationId: registrarPaciente
description: 'Crea un nuevo registro de paciente.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
id: uuid-5678
identificacion: '10203040'
nombre: Carlos
estado: activo
properties:
id:
type: string
example: uuid-5678
identificacion:
type: string
example: '10203040'
nombre:
type: string
example: Carlos
estado:
type: string
example: activo
tags:
- 'Gestión de Pacientes'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
identificacion:
type: string
description: 'El documento de identidad.'
example: '10203040'
fecnacimiento:
type: string
description: 'Fecha de nacimiento (Y-m-d).'
example: '1990-05-15'
nombre:
type: string
description: 'Nombres del paciente.'
example: Carlos
apellido:
type: string
description: 'Apellidos del paciente.'
example: Rodriguez
genero:
type: string
description: 'Género (Masculino/Femenino/Otro).'
example: Masculino
idsede:
type: string
description: 'ID de la sede a la que pertenece.'
example: '1'
required:
- identificacion
- fecnacimiento
- nombre
- apellido
- genero
- idsede
'/api/pacientes/{id}':
get:
summary: 'Consultar paciente'
operationId: consultarPaciente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Gestión de Pacientes'
put:
summary: 'Actualizar paciente'
operationId: actualizarPaciente
description: ''
parameters: []
responses: { }
tags:
- 'Gestión de Pacientes'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
identificacion:
type: string
description: ''
example: null
fecnacimiento:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:54'
nombre:
type: string
description: ''
example: null
apellido:
type: string
description: ''
example: null
genero:
type: string
description: ''
example: null
idsede:
type: string
description: 'The id of an existing record in the sedes table.'
example: null
delete:
summary: 'Eliminar paciente'
operationId: eliminarPaciente
description: ''
parameters: []
responses: { }
tags:
- 'Gestión de Pacientes'
parameters:
-
in: path
name: id
description: 'ID del paciente.'
example: architecto
required: true
schema:
type: string
'/api/pacientes/buscar/{identificacion}':
get:
summary: 'Buscar por identificación'
operationId: buscarPorIdentificacin
description: 'Encuentra un paciente usando su número de documento.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
id: uuid-1234
identificacion: '102030'
nombre: Juan
properties:
id:
type: string
example: uuid-1234
identificacion:
type: string
example: '102030'
nombre:
type: string
example: Juan
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Paciente no encontrado'
properties:
message:
type: string
example: 'Paciente no encontrado'
tags:
- 'Gestión de Pacientes'
parameters:
-
in: path
name: identificacion
description: 'El número del documento.'
example: '102030'
required: true
schema:
type: string
/api/pacientes/sync-batch:
post:
summary: 'Sincronización masiva (Offline-first)'
operationId: sincronizacinMasivaOfflineFirst
description: 'Permite sincronizar un lote de pacientes desde la aplicación móvil. El sistema identifica si debe crear o actualizar basándose en el ID.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
message: 'Sincronización completada'
resultados:
creados: 1
actualizados: 0
errores: []
properties:
success:
type: boolean
example: true
message:
type: string
example: 'Sincronización completada'
resultados:
type: object
properties:
creados:
type: integer
example: 1
actualizados:
type: integer
example: 0
errores:
type: array
example: []
tags:
- 'Gestión de Pacientes'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
pacientes:
type: array
description: 'Lista de pacientes a sincronizar.'
example:
- []
items:
type: object
properties:
id:
type: string
description: 'UUID del paciente en el dispositivo.'
example: uuid-mobile-1
identificacion:
type: string
description: Documento.
example: '12345'
nombre:
type: string
description: Nombre.
example: Pedro
apellido:
type: string
description: Apellido.
example: Picapiedra
fecnacimiento:
type: string
description: 'Fecha (Y-m-d).'
example: '1980-01-01'
required:
- id
- identificacion
- nombre
- apellido
required:
- pacientes
'/api/pacientes/{id}/coordenadas':
put:
summary: 'Actualizar coordenadas'
operationId: actualizarCoordenadas
description: 'Actualiza la ubicación geográfica (Latitud/Longitud) del paciente.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
message: 'Coordenadas actualizadas exitosamente'
data:
id: uuid-123
latitud: 6.2442
longitud: -75.5812
properties:
success:
type: boolean
example: true
message:
type: string
example: 'Coordenadas actualizadas exitosamente'
data:
type: object
properties:
id:
type: string
example: uuid-123
latitud:
type: number
example: 6.2442
longitud:
type: number
example: -75.5812
tags:
- 'Gestión de Pacientes'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
latitud:
type: number
description: 'Latitud entre -90 y 90.'
example: 6.2442
longitud:
type: number
description: 'Longitud entre -180 y 180.'
example: -75.5812
required:
- latitud
- longitud
parameters:
-
in: path
name: id
description: 'The ID of the paciente.'
example: architecto
required: true
schema:
type: string
/api/usuarios:
get:
summary: 'Listar usuarios'
operationId: listarUsuarios
description: ''
parameters:
-
in: query
name: rol
description: 'Filtrar por rol (admin, auxiliar, supervisor).'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por rol (admin, auxiliar, supervisor).'
example: architecto
-
in: query
name: sede_id
description: 'Filtrar por ID de sede.'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por ID de sede.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Gestión de Usuarios'
post:
summary: 'Almacenar un nuevo usuario.'
operationId: almacenarUnNuevoUsuario
description: ''
parameters: []
responses: { }
tags:
- 'Gestión de Usuarios'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nombre:
type: string
description: 'Must not be greater than 255 characters.'
example: b
usuario:
type: string
description: 'Must not be greater than 50 characters.'
example: 'n'
correo:
type: string
description: 'Must be a valid email address.'
example: ashly64@example.com
contrasena:
type: string
description: 'Must be at least 6 characters.'
example: vdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwtujwvlx
rol:
type: string
description: ''
example: supervisor
enum:
- admin
- auxiliar
- aux
- supervisor
sede_id:
type: string
description: 'The id of an existing record in the sedes table.'
example: architecto
required:
- nombre
- usuario
- correo
- contrasena
- rol
- sede_id
security: []
'/api/usuarios/{id}':
get:
summary: 'Mostrar un usuario específico.'
operationId: mostrarUnUsuarioEspecfico
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Gestión de Usuarios'
security: []
put:
summary: 'Actualizar un usuario específico.'
operationId: actualizarUnUsuarioEspecfico
description: ''
parameters: []
responses: { }
tags:
- 'Gestión de Usuarios'
security: []
delete:
summary: 'Eliminar un usuario específico.'
operationId: eliminarUnUsuarioEspecfico
description: ''
parameters: []
responses: { }
tags:
- 'Gestión de Usuarios'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the usuario.'
example: architecto
required: true
schema:
type: string
'/api/usuarios/rol/{rol}':
get:
summary: 'Obtener usuarios por rol.'
operationId: obtenerUsuariosPorRol
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Gestión de Usuarios'
security: []
parameters:
-
in: path
name: rol
description: 'The rol.'
example: architecto
required: true
schema:
type: string
/api/auxiliares:
get:
summary: 'Obtener auxiliares (método específico).'
operationId: obtenerAuxiliaresmtodoEspecfico
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Gestión de Usuarios'
security: []
/api/medicamentos:
get:
summary: 'Listar medicamentos'
operationId: listarMedicamentos
description: ''
parameters:
-
in: query
name: busqueda
description: 'Filtrar por nombre de medicamento.'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por nombre de medicamento.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Medicamentos
post:
summary: ''
operationId: postApiMedicamentos
description: ''
parameters: []
responses: { }
tags:
- Medicamentos
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nombmedicamento:
type: string
description: ''
example: architecto
required:
- nombmedicamento
security: []
'/api/medicamentos/{id}':
get:
summary: ''
operationId: getApiMedicamentosId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Medicamentos
security: []
put:
summary: ''
operationId: putApiMedicamentosId
description: ''
parameters: []
responses: { }
tags:
- Medicamentos
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
nombmedicamento:
type: string
description: ''
example: null
security: []
delete:
summary: ''
operationId: deleteApiMedicamentosId
description: ''
parameters: []
responses: { }
tags:
- Medicamentos
security: []
parameters:
-
in: path
name: id
description: 'The ID of the medicamento.'
example: architecto
required: true
schema:
type: string
/api/medicamentos/buscar:
get:
summary: 'Listar medicamentos'
operationId: listarMedicamentos
description: ''
parameters:
-
in: query
name: busqueda
description: 'Filtrar por nombre de medicamento.'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por nombre de medicamento.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Medicamentos
'/api/pacientes/{id}/medicamentos':
post:
summary: 'Asignar medicamentos a paciente'
operationId: asignarMedicamentosAPaciente
description: ''
parameters: []
responses: { }
tags:
- 'Medicamentos de Paciente'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
medicamentos:
type: array
description: 'Lista de medicamentos.'
example:
- []
items:
type: object
properties:
'*':
type: object
description: ''
example:
id: architecto
properties:
id:
type: string
description: 'ID del medicamento.'
example: architecto
dosis:
type: string
description: 'Dosis asignada.'
example: architecto
cantidad:
type: integer
description: 'Cantidad entregada/asignada.'
example: 16
required:
- id
required:
- medicamentos
put:
summary: ''
operationId: putApiPacientesIdMedicamentos
description: ''
parameters: []
responses: { }
tags:
- 'Medicamentos de Paciente'
security: []
delete:
summary: ''
operationId: deleteApiPacientesIdMedicamentos
description: ''
parameters: []
responses: { }
tags:
- 'Medicamentos de Paciente'
security: []
get:
summary: ''
operationId: getApiPacientesIdMedicamentos
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Medicamentos de Paciente'
security: []
parameters:
-
in: path
name: id
description: 'ID del paciente.'
example: architecto
required: true
schema:
type: string
/api/notifications/register-device:
post:
summary: 'Registrar dispositivo'
operationId: registrarDispositivo
description: 'Registra el token FCM del dispositivo para recibir notificaciones push.'
parameters: []
responses: { }
tags:
- 'Notificaciones Push (FCM)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'ID del usuario.'
example: architecto
fcm_token:
type: string
description: 'Token generado por Firebase en el móvil.'
example: architecto
platform:
type: string
description: 'android, ios, web.'
example: android
device_name:
type: string
description: ''
example: architecto
nullable: true
required:
- user_id
- fcm_token
- platform
/api/notifications/send-to-user:
post:
summary: ''
operationId: postApiNotificationsSendToUser
description: ''
parameters: []
responses: { }
tags:
- 'Notificaciones Push (FCM)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'The id of an existing record in the usuarios table.'
example: architecto
title:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
body:
type: string
description: ''
example: architecto
data:
type: object
description: ''
example: null
properties: { }
nullable: true
required:
- user_id
- title
- body
security: []
/api/notifications/send-to-all:
post:
summary: 'Notificación masiva (Broadcast)'
operationId: notificacinMasivaBroadcast
description: 'Envía una notificación push a todos los dispositivos registrados en el sistema.'
parameters: []
responses: { }
tags:
- 'Notificaciones Push (FCM)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Título de la notificación.'
example: architecto
body:
type: string
description: 'Contenido del mensaje.'
example: architecto
data:
type: object
description: 'Datos adicionales (key-value).'
example: []
properties: { }
nullable: true
required:
- title
- body
/api/notifications/unregister-device:
post:
summary: ''
operationId: postApiNotificationsUnregisterDevice
description: ''
parameters: []
responses: { }
tags:
- 'Notificaciones Push (FCM)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fcm_token:
type: string
description: ''
example: architecto
required:
- fcm_token
security: []
/api/notifications/users-with-tokens:
get:
summary: 'Listar usuarios con tokens'
operationId: listarUsuariosConTokens
description: 'Obtiene una lista paginada de usuarios que tienen tokens de FCM registrados.'
parameters:
-
in: query
name: per_page
description: 'Resultados por página. Default: 15.'
example: 16
required: false
schema:
type: integer
description: 'Resultados por página. Default: 15.'
example: 16
-
in: query
name: search
description: 'Buscar por nombre, correo o usuario.'
example: architecto
required: false
schema:
type: string
description: 'Buscar por nombre, correo o usuario.'
example: architecto
-
in: query
name: platform
description: 'Filtrar por plataforma (android, ios, web).'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por plataforma (android, ios, web).'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Notificaciones Push (FCM)'
/api/notifications/stats:
get:
summary: ''
operationId: getApiNotificationsStats
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Notificaciones Push (FCM)'
security: []
'/api/notifications/user/{userId}/tokens':
get:
summary: ''
operationId: getApiNotificationsUserUserIdTokens
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Notificaciones Push (FCM)'
security: []
parameters:
-
in: path
name: userId
description: ''
example: architecto
required: true
schema:
type: string
/api/sedes:
get:
summary: 'Listar sedes'
operationId: listarSedes
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Sedes
post:
summary: ''
operationId: postApiSedes
description: ''
parameters: []
responses: { }
tags:
- Sedes
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
nombresede:
type: string
description: ''
example: architecto
required:
- nombresede
security: []
'/api/sedes/{id}':
get:
summary: ''
operationId: getApiSedesId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Sedes
security: []
put:
summary: ''
operationId: putApiSedesId
description: ''
parameters: []
responses: { }
tags:
- Sedes
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
nombresede:
type: string
description: ''
example: null
security: []
delete:
summary: ''
operationId: deleteApiSedesId
description: ''
parameters: []
responses: { }
tags:
- Sedes
security: []
parameters:
-
in: path
name: id
description: 'The ID of the sede.'
example: architecto
required: true
schema:
type: string
/api/tamizajes:
get:
summary: 'Listar tamizajes'
operationId: listarTamizajes
description: ''
parameters:
-
in: query
name: paciente_id
description: 'Filtrar por paciente.'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por paciente.'
example: architecto
-
in: query
name: usuario_id
description: 'Filtrar por usuario/promotor.'
example: architecto
required: false
schema:
type: string
description: 'Filtrar por usuario/promotor.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tamizajes de Presión Arterial (PA)'
post:
summary: 'Crear tamizaje'
operationId: crearTamizaje
description: ''
parameters: []
responses: { }
tags:
- 'Tamizajes de Presión Arterial (PA)'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
idpaciente:
type: string
description: 'ID del paciente.'
example: id-paciente
vereda_residencia:
type: string
description: Vereda.
example: 'Vereda Norte'
telefono:
type: string
description: 'Must not be greater than 20 characters.'
example: gzmiyvdljnikhway
nullable: true
brazo_toma:
type: string
description: 'izquierdo o derecho.'
example: izquierdo
posicion_persona:
type: string
description: 'de_pie, acostado, sentado.'
example: sentado
reposo_cinco_minutos:
type: string
description: 'si o no.'
example: si
fecha_primera_toma:
type: date
description: 'Fecha de la toma.'
example: architecto
pa_sistolica:
type: integer
description: Sistólica.
example: 120
pa_diastolica:
type: integer
description: Diastólica.
example: 80
conducta:
type: string
description: 'Must not be greater than 1000 characters.'
example: w
nullable: true
required:
- idpaciente
- vereda_residencia
- brazo_toma
- posicion_persona
- reposo_cinco_minutos
- fecha_primera_toma
- pa_sistolica
- pa_diastolica
/api/tamizajes/estadisticas:
get:
summary: 'Obtener estadísticas de tamizajes del usuario logueado'
operationId: obtenerEstadsticasDeTamizajesDelUsuarioLogueado
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tamizajes de Presión Arterial (PA)'
security: []
'/api/tamizajes/paciente/{pacienteId}':
get:
summary: 'Obtener tamizajes por paciente'
operationId: obtenerTamizajesPorPaciente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tamizajes de Presión Arterial (PA)'
security: []
parameters:
-
in: path
name: pacienteId
description: ''
example: architecto
required: true
schema:
type: string
/api/tamizajes/mis-tamizajes:
get:
summary: 'Obtener tamizajes del usuario autenticado'
operationId: obtenerTamizajesDelUsuarioAutenticado
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tamizajes de Presión Arterial (PA)'
security: []
'/api/tamizajes/{id}':
get:
summary: 'Consultar tamizaje'
operationId: consultarTamizaje
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tamizajes de Presión Arterial (PA)'
put:
summary: 'Actualizar tamizaje'
operationId: actualizarTamizaje
description: ''
parameters: []
responses: { }
tags:
- 'Tamizajes de Presión Arterial (PA)'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
vereda_residencia:
type: string
description: 'Must not be greater than 100 characters.'
example: b
telefono:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
nullable: true
brazo_toma:
type: string
description: ''
example: izquierdo
enum:
- izquierdo
- derecho
posicion_persona:
type: string
description: ''
example: de_pie
enum:
- de_pie
- acostado
- sentado
reposo_cinco_minutos:
type: string
description: ''
example: si
enum:
- si
- 'no'
fecha_primera_toma:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
pa_sistolica:
type: integer
description: 'Must be at least 50. Must not be greater than 300.'
example: 24
pa_diastolica:
type: integer
description: 'Must be at least 30. Must not be greater than 200.'
example: 8
conducta:
type: string
description: 'Must not be greater than 1000 characters.'
example: u
nullable: true
delete:
summary: 'Eliminar un tamizaje'
operationId: eliminarUnTamizaje
description: ''
parameters: []
responses: { }
tags:
- 'Tamizajes de Presión Arterial (PA)'
security: []
parameters:
-
in: path
name: id
description: 'ID del tamizaje.'
example: architecto
required: true
schema:
type: string
/api/findrisk:
get:
summary: 'Listar tests realizados'
operationId: listarTestsRealizados
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
post:
summary: 'Crear test FINDRISK'
operationId: crearTestFINDRISK
description: ''
parameters: []
responses: { }
tags:
- 'Tests FINDRISK'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
idpaciente:
type: string
description: 'ID del paciente.'
example: 550e8400-e29b-41d4-a716-446655440000
idsede:
type: string
description: 'ID de la sede.'
example: '4044680601076201931'
vereda:
type: string
description: 'Must not be greater than 100 characters.'
example: 'n'
nullable: true
telefono:
type: string
description: 'Must not be greater than 20 characters.'
example: gzmiyvdljnikhway
nullable: true
actividad_fisica:
type: string
description: '"si" o "no".'
example: si
medicamentos_hipertension:
type: string
description: '"si" o "no".'
example: si
frecuencia_frutas_verduras:
type: string
description: '"diariamente" o "no_diariamente".'
example: diariamente
azucar_alto_detectado:
type: string
description: '"si" o "no".'
example: si
peso:
type: number
description: 'Peso en kg.'
example: 85.0
talla:
type: number
description: 'Talla en cm.'
example: 175.0
perimetro_abdominal:
type: number
description: 'Perímetro abdominal en cm.'
example: 102.0
antecedentes_familiares:
type: string
description: '(no, abuelos_tios_primos, padres_hermanos_hijos).'
example: 'no'
conducta:
type: string
description: ''
example: architecto
nullable: true
promotor_vida:
type: string
description: 'Must not be greater than 100 characters.'
example: 'n'
nullable: true
required:
- idpaciente
- idsede
- actividad_fisica
- medicamentos_hipertension
- frecuencia_frutas_verduras
- azucar_alto_detectado
- peso
- talla
- perimetro_abdominal
- antecedentes_familiares
'/api/findrisk/{id}':
get:
summary: 'Consultar test FINDRISK'
operationId: consultarTestFINDRISK
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
put:
summary: 'Actualizar test FINDRISK'
operationId: actualizarTestFINDRISK
description: ''
parameters: []
responses: { }
tags:
- 'Tests FINDRISK'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
idsede:
type: string
description: 'The id of an existing record in the sedes table.'
example: null
vereda:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
telefono:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
nullable: true
actividad_fisica:
type: string
description: ''
example: si
enum:
- si
- 'no'
medicamentos_hipertension:
type: string
description: ''
example: si
enum:
- si
- 'no'
frecuencia_frutas_verduras:
type: string
description: ''
example: diariamente
enum:
- diariamente
- no_diariamente
azucar_alto_detectado:
type: string
description: ''
example: si
enum:
- si
- 'no'
peso:
type: number
description: 'Must be at least 1. Must not be greater than 300.'
example: 8
talla:
type: number
description: 'Must be at least 50. Must not be greater than 250.'
example: 6
perimetro_abdominal:
type: number
description: 'Must be at least 30. Must not be greater than 200.'
example: 25
antecedentes_familiares:
type: string
description: ''
example: padres_hermanos_hijos
enum:
- 'no'
- abuelos_tios_primos
- padres_hermanos_hijos
conducta:
type: string
description: ''
example: architecto
nullable: true
promotor_vida:
type: string
description: 'Must not be greater than 100 characters.'
example: 'n'
nullable: true
delete:
summary: ''
operationId: deleteApiFindriskId
description: ''
parameters: []
responses: { }
tags:
- 'Tests FINDRISK'
security: []
parameters:
-
in: path
name: id
description: 'ID del test.'
example: '1'
required: true
schema:
type: string
/api/findrisk-estadisticas:
get:
summary: ''
operationId: getApiFindriskEstadisticas
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
'/api/findrisk-estadisticas/sede/{idsede}':
get:
summary: ''
operationId: getApiFindriskEstadisticasSedeIdsede
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
parameters:
-
in: path
name: idsede
description: ''
example: architecto
required: true
schema:
type: string
'/api/findrisk/paciente/{idpaciente}':
get:
summary: ''
operationId: getApiFindriskPacienteIdpaciente
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
parameters:
-
in: path
name: idpaciente
description: ''
example: architecto
required: true
schema:
type: string
'/api/findrisk/sede/{idsede}':
get:
summary: ''
operationId: getApiFindriskSedeIdsede
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
parameters:
-
in: path
name: idsede
description: ''
example: architecto
required: true
schema:
type: string
'/api/findrisk/paciente-sede/{identificacion}':
get:
summary: ''
operationId: getApiFindriskPacienteSedeIdentificacion
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
parameters:
-
in: path
name: identificacion
description: ''
example: architecto
required: true
schema:
type: string
/api/findrisk-tests/export:
get:
summary: ''
operationId: getApiFindriskTestsExport
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Tests FINDRISK'
security: []
/api/visitas:
get:
summary: 'Listar todas las visitas'
operationId: listarTodasLasVisitas
description: 'Permite filtrar las visitas por rango de fechas, usuario que realizó la visita y sede asociada al paciente.'
parameters:
-
in: query
name: fecha_desde
description: 'date optional Filtrar visitas desde esta fecha.'
example: '2024-01-01'
required: false
schema:
type: string
description: 'date optional Filtrar visitas desde esta fecha.'
example: '2024-01-01'
-
in: query
name: fecha_hasta
description: 'date optional Filtrar visitas hasta esta fecha.'
example: '2024-12-31'
required: false
schema:
type: string
description: 'date optional Filtrar visitas hasta esta fecha.'
example: '2024-12-31'
-
in: query
name: idusuario
description: 'optional Filtrar por el ID del usuario que realizó la visita.'
example: architecto
required: false
schema:
type: string
description: 'optional Filtrar por el ID del usuario que realizó la visita.'
example: architecto
-
in: query
name: idsede
description: 'optional Filtrar por el ID de la sede a la que pertenece el paciente.'
example: architecto
required: false
schema:
type: string
description: 'optional Filtrar por el ID de la sede a la que pertenece el paciente.'
example: architecto
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Visitas Domiciliarias'
post:
summary: 'Crear visita domiciliaria'
operationId: crearVisitaDomiciliaria
description: 'Permite registrar una visita, procesando coordenadas, fotos de riesgo y firmas en archivos o Base64.'
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
nombre_apellido:
type: string
description: 'Nombre del paciente contactado.'
example: architecto
identificacion:
type: string
description: 'Cédula del paciente.'
example: architecto
fecha:
type: date
description: 'Fecha de la visita.'
example: architecto
idusuario:
type: string
description: 'ID del usuario (Hacedor).'
example: architecto
idpaciente:
type: string
description: 'ID del paciente (opcional, se busca por cédula si falta).'
example: architecto
nullable: true
id:
type: string
description: "✅ CAMBIADO: Ya no requiere que exista en la BD\nCampos opcionales."
example: architecto
hta:
type: string
description: 'Presión arterial (si/no).'
example: architecto
nullable: true
dm:
type: string
description: 'Diabetes (si/no).'
example: architecto
nullable: true
telefono:
type: string
description: ''
example: architecto
nullable: true
zona:
type: string
description: ''
example: architecto
nullable: true
peso:
type: number
description: 'Peso (kg).'
example: 4326.41688
nullable: true
talla:
type: number
description: 'Talla (cm).'
example: 4326.41688
nullable: true
imc:
type: number
description: ''
example: 4326.41688
nullable: true
perimetro_abdominal:
type: number
description: ''
example: 4326.41688
nullable: true
frecuencia_cardiaca:
type: integer
description: ''
example: 16
nullable: true
frecuencia_respiratoria:
type: integer
description: ''
example: 16
nullable: true
tension_arterial:
type: string
description: 'Valor TA (e.g. 120/80).'
example: architecto
nullable: true
glucometria:
type: number
description: ''
example: 4326.41688
nullable: true
temperatura:
type: number
description: ''
example: 4326.41688
nullable: true
familiar:
type: string
description: ''
example: architecto
nullable: true
latitud:
type: number
description: '✅ AGREGAR VALIDACIONES FALTANTES.'
example: 4326.41688
nullable: true
longitud:
type: number
description: ''
example: 4326.41688
nullable: true
estado:
type: string
description: ''
example: architecto
nullable: true
sync_status:
type: integer
description: ''
example: 16
nullable: true
observaciones_adicionales:
type: string
description: ''
example: architecto
nullable: true
tipo_visita:
type: string
description: ''
example: architecto
nullable: true
riesgo_fotografico:
type: string
format: binary
description: 'Archivos. Must be a file. Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
riesgo_fotografico_url:
type: string
description: ''
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
nullable: true
riesgo_fotografico_base64:
type: string
description: 'Imagen del riesgo en Base64.'
example: architecto
nullable: true
abandono_social:
type: string
description: ''
example: architecto
nullable: true
motivo:
type: string
description: ''
example: architecto
nullable: true
factores:
type: string
description: ''
example: architecto
nullable: true
conductas:
type: string
description: ''
example: architecto
nullable: true
novedades:
type: string
description: ''
example: architecto
nullable: true
proximo_control:
type: string
description: 'Must be a valid date.'
example: '2026-06-23T21:47:55'
nullable: true
firma:
type: string
format: binary
description: 'Must be a file. Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
firma_url:
type: string
description: ''
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
nullable: true
firma_base64:
type: string
description: 'Firma en Base64.'
example: architecto
nullable: true
medicamentos:
type: json
description: 'JSON con lista de medicamentos e indicaciones.'
example: '[{"id": 1, "indicaciones": "Cena"}]'
required:
- nombre_apellido
- identificacion
- fecha
- idusuario
'/api/visitas/{id}':
get:
summary: ''
operationId: getApiVisitasId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Visitas Domiciliarias'
security: []
put:
summary: 'Actualizar visita'
operationId: actualizarVisita
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
delete:
summary: ''
operationId: deleteApiVisitasId
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []
parameters:
-
in: path
name: id
description: 'The ID of the visita.'
example: 0004f8ed-7922-4ae7-9bb5-b5a80739ee69
required: true
schema:
type: string
'/api/visitas/buscar-paciente/{identificacion}':
get:
summary: ''
operationId: getApiVisitasBuscarPacienteIdentificacion
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- 'Visitas Domiciliarias'
security: []
parameters:
-
in: path
name: identificacion
description: ''
example: architecto
required: true
schema:
type: string
/api/upload-risk-photo:
post:
summary: ''
operationId: postApiUploadRiskPhoto
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []
/api/upload-signature:
post:
summary: ''
operationId: postApiUploadSignature
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []
/api/upload-photo:
post:
summary: ''
operationId: postApiUploadPhoto
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []
/api/visitas/upload-risk-photo-base64:
post:
summary: ''
operationId: postApiVisitasUploadRiskPhotoBase64
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []
/api/visitas/upload-signature-base64:
post:
summary: ''
operationId: postApiVisitasUploadSignatureBase64
description: ''
parameters: []
responses: { }
tags:
- 'Visitas Domiciliarias'
security: []