DavixDavix ERPX
Modulos

Citas

Gestión de citas médicas de pacientes en el módulo de Salud de Davix ERPX.

Descripción general

La pantalla Citas permite gestionar las citas médicas programadas para los pacientes: crear nuevas citas, consultar detalles, reprogramar citas existentes y darlas de baja. Cada cita se vincula a un paciente, un médico o equipo médico, una especialidad, un lugar de atención y un horario específico seleccionado desde un calendario semanal de cupos disponibles.

Ruta de navegación: Inicio → Salud → Citas


Vista principal (listado de citas)

Encabezado

ElementoDescripción
Título"Citas"
Subtítulo"Muestra el listado y las herramientas para gestionar las citas"
Botón "Actualizar"Icono pi pi-refresh. Recarga la tabla.
Botón "Nueva cita"Icono pi pi-plus. Abre el diálogo de creación de nueva cita.

Columnas de la tabla

ColumnaAnchoDescripción
Fecha180px fijoFecha y hora de la cita, formato DD/MM/YYYY hh:mm A.
Medico / Equipo medicoFlexibleNombre del médico ({apellido_paterno} {apellido_materno} {nombres}) o nombre del equipo médico.
PacienteFlexibleNombre completo del paciente ({apellido_paterno} {apellido_materno} {nombres}).
Modalidad150px fijo"EN CONSULTORIO" (valor 1) o "VIRTUAL" (valor 2).
Estado150px fijoBadge con el nombre del estado y código de color.
Acciones100px fijo, centradoIcono de tres puntos (pi pi-ellipsis-h) para el menú contextual.

Cuando no hay registros: "No se encontraron datos" (con icono pi pi-exclamation-triangle).

Indicador de paginación

"Mostrando pagina {N} con {X} registros de {T} entradas"

Estados de cita

Cada cita muestra un badge con código de color según su estado:

EstadoCódigoColorEtiqueta
Nuevo0Azul (bgblue)"NUEVO"
Atendido1Verde (bggreen)"ATENDIDO"
Reprogramado2Naranja (bgorange)"REPROGRAMADO"
Baja3Rojo (bgred)"BAJA"
Baja venta6Rojo (bgred)"BAJA VENTA"

El estado Baja venta (código 6) se asigna automáticamente cuando la referencia de venta asociada tiene estado == 4, siempre y cuando la cita no esté ya en estado Baja (código 3).

Menú contextual

El menú contextual varía según el estado actual de la cita:

Estado actualOpciones disponibles
Nuevo (0)Detalles, Reprogramar, Baja
Atendido (1)Detalles
Reprogramado (2)Detalles
Baja (3)Detalles, Reprogramar
Baja venta (6)Detalles, Baja
OpciónIconoDescripción
Detallespi pi-eyeAbre el diálogo de detalles en modo solo lectura.
Reprogramarpi pi-calendarAbre el diálogo de reprogramación.
Bajapi pi-lockAbre el diálogo de confirmación para dar de baja.

Paginación

Controles de paginación: primera página, anterior, selector de página (dropdown con búsqueda), siguiente, última página. Tamaño de página: 50 registros.


Crear nueva cita

Al hacer clic en "Nueva cita", se abre un diálogo a pantalla completa (p-dialog) con título "Cita".

Subtítulo: "Se tienen que rellenar los campos que contengan () obligatoriamente que se requiere para el registro"*

Mientras se cargan los datos del formulario, se muestra el mensaje: "Cargando sus datos" con un spinner.

Campos del formulario

El formulario se divide en dos columnas: la columna izquierda (7/12) contiene los campos, y la columna derecha (5/12) contiene el calendario de horarios.

Columna izquierda

CampoTipoObligatorioDescripción
Pacientep-dropdown con búsqueda, lazy loading, filterBy="text"Selecciona el paciente. Muestra: "{apellido_paterno} {apellido_materno} {nombres}". Al escribir en el filtro, busca en el endpoint de pacientes.
Modalidadp-dropdownOpciones: EN CONSULTORIO (1), VIRTUAL (2). Al cambiar, recarga los cupos disponibles.
Tipo de atenciónp-dropdownOpciones: CONSULTA, RECONSULTA, PROCEDIMIENTO MEDICO. Al cambiar, recarga los cupos disponibles.
Especialidadesp-dropdown con búsqueda, filterBy="text"Lista de especialidades médicas. Muestra el tipo entre paréntesis: "{nombres} (MEDICO)" para tipo 0, "{nombres} (EQUIPO MEDICO)" para tipo 1. Al seleccionar, determina si se muestra el campo Médico o Equipo Médico.
Médicop-dropdown con búsqueda, lazy loading, filterBy="text"Sí (si especialidad tipo = 0)Visible solo cuando la especialidad seleccionada es de tipo Médico (tipo = 0). Muestra: "{apellido_paterno} {apellido_materno} {nombres}". Al cambiar, recarga los cupos y los lugares de atención.
Equipo Médicop-dropdown con búsqueda, lazy loading, filterBy="text"Sí (si especialidad tipo = 1)Visible solo cuando la especialidad seleccionada es de tipo Equipo Médico (tipo = 1). Al cambiar, recarga los cupos y los lugares de atención. Mensaje de error: "* Ingrese medico valido".
Lugar atenciónp-dropdown con búsqueda, filterBy="nombre"Lista de lugares de atención extraída de los lugares asociados al médico o equipo médico seleccionado. Deshabilitado hasta que se seleccione un médico o equipo médico. Al cambiar, recarga los cupos.

Todos los dropdowns tienen placeholder="SELECCIONE", [showClear]="true", emptyMessage="No se encontraron registros." y emptyFilterMessage="No se han encontrado resultados".

Mensaje de error para campos obligatorios: " Obligatorio"*.

Los campos Médico y Equipo Médico son mutuamente excluyentes. Solo se muestra uno de los dos según el tipo de la especialidad seleccionada: tipo 0 = Médico (atención individual), tipo 1 = Equipo Médico (atención en equipo).

Columna derecha: Horario (calendario semanal)

El calendario muestra los cupos disponibles organizados por día de la semana. Su funcionamiento es idéntico al descrito en Admisiones — Horario.

Estructura del calendario:

  • Navegación: Dos botones redondos de flecha (pi pi-chevron-left y pi pi-chevron-right) para navegar a la semana anterior o siguiente.
  • Columnas: 7 columnas (Domingo a Sábado), cada una de 110px de ancho.
  • Encabezado de columna: Nombre del día (ej: "Lunes") y fecha en formato DD/MM/YYYY.
  • Contenido: Botones con los horarios disponibles.

Botones de horario:

EstadoEstiloAncho
Disponible (no seleccionado)Botón azul (p-button-sm)78px
SeleccionadoBotón verde (p-button-sm p-button-success)78px
  • Cada botón muestra la hora en formato hh:mm A (12 horas).
  • Selección única: Solo se puede seleccionar un horario a la vez.
  • Al seleccionar un horario, se establece atencion_fecha con formato YYYY-MM-DD HH:mm:ss.

Carga de cupos disponibles:

Los cupos se cargan automáticamente cuando están seleccionados todos los campos requeridos: modalidad, tipo de atención, médico o equipo médico, especialidad y lugar de atención.

Solo se muestran los cupos cuya hora de inicio sea igual o posterior a la hora actual más el tiempo de anticipación configurado. Por ejemplo, si el tiempo de anticipación es de 20 minutos y son las 10:00 AM, solo se mostrarán cupos desde las 10:20 AM en adelante.

Parámetros de configuración:

ParámetroDominioDescripciónValor por defecto
Tiempo de atenciónCONFIG-ERPX-RRHH-HORARIODuración de cada cita (formato HH:mm:ss).00:20:00 (20 minutos)
Tiempo de anticipaciónCONFIG-ERPX-RRHH-HORARIOMinutos mínimos antes de la hora de la cita para permitir el registro.20 minutos
BotónIconoDescripción
Cancelarpi pi-timesCierra el diálogo sin guardar.
GuardarSpinner durante el procesoValida el formulario y guarda. Se deshabilita durante el guardado.

Validaciones al guardar

Campos obligatorios:

  • Paciente
  • Modalidad
  • Tipo de atención
  • Especialidades
  • Médico (si especialidad tipo = 0) o Equipo Médico (si especialidad tipo = 1)
  • Lugar atención
  • Horario (atencion_fecha)

Si hay errores: "Revise bien, hay formularios por validar." (severidad: error, título: "Alerta", duración: 5s).

Datos enviados al servidor

CampoDescripción
fecha_creacionFecha y hora actual en formato YYYY-MM-DD HH:mm:ss.
estado0 (Nuevo).
modalidad1 (En consultorio) o 2 (Virtual).
paciente_idID del paciente seleccionado.
medico_idID del médico seleccionado (o null si es equipo médico).
equipo_medico_idID del equipo médico seleccionado (o null si es médico individual).
especialidad_idID de la especialidad seleccionada.
atencion_tipoTipo de atención: "CONSULTA", "RECONSULTA" o "PROCEDIMIENTO MEDICO".
atencion_fechaFecha y hora del cupo seleccionado (YYYY-MM-DD HH:mm:ss).
atencion_tiempoDuración de la atención (ej: 00:20:00).
atencion_estado0.
observacionnull.
lugar_idID del lugar de atención seleccionado.

Notificaciones

ResultadoSeveridadTítuloMensajeDuración
Éxitosuccess"Alerta""Registro exitoso."5 segundos
Errorerror"Error {código}"Mensaje de error del servidor5 segundos

Detalles de cita

Al seleccionar "Detalles" del menú contextual, se abre un diálogo a pantalla completa (p-dialog) con título "Cita" en modo solo lectura.

Campos mostrados

CampoDescripción
PacienteNombre completo: {apellido_paterno} {apellido_materno} {nombres}.
Medico / Equipo medicoNombre del médico o nombre del equipo médico.
EspecialidadesNombre de la especialidad médica.
Lugar atencionNombre del lugar de atención.
Modalidad"EN CONSULTORIO" o "VIRTUAL".
Tipo de atencion"CONSULTA", "RECONSULTA" o "PROCEDIMIENTO MEDICO".
HorarioFecha y hora, formato DD/MM/YYYY hh:mm A.

Botón del diálogo:

BotónIconoDescripción
Cancelarpi pi-timesCierra el diálogo.

Reprogramar cita

Al seleccionar "Reprogramar" del menú contextual, se abre un diálogo a pantalla completa (p-dialog) con título "Reprogramar Cita".

Subtítulo: "Se tienen que rellenar los campos que contengan () obligatoriamente que se requiere para el registro"*

Campos del formulario

El formulario tiene la misma estructura que el de nueva cita (columna izquierda con campos + columna derecha con calendario), con los datos pre-rellenados de la cita original:

  • Paciente: Pre-seleccionado con el paciente de la cita original.
  • Modalidad: Pre-seleccionada con la modalidad original.
  • Tipo de atención: Pre-seleccionado con el tipo original.
  • Especialidades: Pre-seleccionada con la especialidad original.
  • Médico / Equipo Médico: Pre-seleccionado con el médico o equipo original.
  • Lugar atención: Pre-seleccionado con el lugar original.
  • Horario: Calendario vacío; el usuario debe seleccionar un nuevo horario.

Al reprogramar, todos los campos se pre-rellenan con los datos de la cita original. El usuario puede modificar cualquier campo y debe seleccionar un nuevo horario obligatoriamente.

Flujo de guardado

La reprogramación ejecuta los siguientes pasos en secuencia:

Marcar cita original como reprogramada

Se envía un PATCH a la cita original con estado: 2 (Reprogramado).

Crear nueva cita

Se crea una nueva cita con los datos del formulario mediante un POST, con estado: 0 (Nuevo).

Notificaciones

ResultadoSeveridadTítuloMensajeDuración
Éxitosuccess"Alerta""Registro exitoso."5 segundos
Errorerror"Error {código}"Mensaje de error del servidor5 segundos

Dar de baja cita

Al seleccionar "Baja" del menú contextual, se abre un diálogo de confirmación (DynamicDialog) con título "Confirmacion" y ancho de 50vw.

ElementoDescripción
Iconopi pi-exclamation-triangle (tamaño 2rem)
Mensaje"Estas seguro de proceder a cambiar el estado BAJA?"
Botón "No"Icono pi pi-times. Cierra el diálogo sin dar de baja.
Botón "Si"Icono pi pi-check (cambia a spinner durante el proceso). Ejecuta la baja.

Si existen documentos de venta asociados que deben darse de baja primero, el diálogo muestra el mensaje "NESESITA DAR DE BAJA ESTOS DOCUMENTOS PREVIAMENTE" junto con una lista de los documentos (tipo, serie, número) y sus documentos hijos.

Al confirmar, se envía un PATCH con estado: 3 (Baja).

Si la cita tiene una admisión asociada (que no esté en estado Reprogramado), al dar de baja la cita también se actualiza la admisión correspondiente con estado: 4 (Baja en admisiones).

Notificaciones

ResultadoSeveridadTítuloMensajeDuración
Éxitosuccess"Alerta""Estado actualizado."5 segundos
Errorerror"Error {código}"Mensaje de error del servidor5 segundos

Endpoints

MétodoEndpointDescripción
GET/v2.0.2/erpx/salud/citas/Lista todas las citas con paginación y búsqueda.
GET/v2.0.2/erpx/salud/citas/\{id\}Obtiene una cita por su ID.
POST/v2.0.2/erpx/salud/citas/Crea una nueva cita.
PUT/v2.0.2/erpx/salud/citas/\{id\}Actualiza una cita existente.
PATCH/v2.0.2/erpx/salud/citas/\{id\}Actualiza parcialmente una cita (cambio de estado).
DELETE/v2.0.2/erpx/salud/citas/\{id\}Elimina una cita.
GET/v2.0.2/erpx/salud/especialidades/Lista las especialidades médicas.
GET/v2.0.2/erpx/salud/pacientes/Lista los pacientes para el dropdown.
GET/v2.0.4/erpx/salud/medicos/Lista los médicos por especialidad.
GET/v2.0.1/erpx/salud/equipos-medicos/Lista los equipos médicos por especialidad.
GET/v2.0.3/erpx/rrhh/colaboradores-horarios-detalles/cupos/Obtiene los cupos disponibles para el calendario de horarios.
GET/v2.0.3/erpx/salud/admisiones/Consulta admisiones asociadas a la cita (para baja).
PATCH/v2.0.3/erpx/salud/admisiones/\{id\}Actualiza la admisión asociada al dar de baja la cita.
GET/v2.0.1/erpx/global/params/Obtiene los parámetros de configuración.

Problemas comunes

ProblemaCausaSolución
"Revise bien, hay formularios por validar"Campos obligatorios sin completar en el formulario de nueva cita o reprogramación.Complete todos los campos obligatorios marcados con (*), incluyendo la selección de un horario en el calendario.
El calendario de horarios aparece vacíoNo se han seleccionado todos los campos requeridos (modalidad, tipo de atención, médico/equipo, especialidad, lugar) o no hay cupos disponibles para la semana mostrada.Seleccione todos los campos del formulario y navegue a otra semana usando las flechas del calendario.
No aparecen horarios para el día actualLos horarios disponibles se filtran según el tiempo de anticipación configurado.Seleccione un horario en un día futuro o navegue a la siguiente semana.
No se puede reprogramar una citaLa cita tiene estado "Atendido" (1) o "Reprogramado" (2).Solo se pueden reprogramar citas en estado "Nuevo" o "Baja".
La cita cambió a "Baja venta" automáticamenteLa referencia de venta asociada a la cita tiene estado = 4.Este es un comportamiento automático del sistema. Contacte al administrador si necesita revertir el estado.
El campo "Médico" no apareceLa especialidad seleccionada es de tipo Equipo Médico (tipo = 1).Seleccione una especialidad de tipo Médico (tipo = 0) o use el campo "Equipo Médico" que aparece en su lugar.

Páginas relacionadas

  • Admisiones — Gestión de admisiones de pacientes.
  • Atenciones — Gestión de atenciones clínicas.
  • Médicos — Gestión de médicos internos del establecimiento.