DavixDavix ERPX
Modulos

Admisiones

Gestión de admisiones de pacientes en el módulo de Salud de Davix ERPX.

Descripción general

La pantalla Lista de admisiones permite gestionar las admisiones de pacientes al establecimiento de salud: registrar nuevas admisiones, cambiar estados (en espera, llamado, en atención, atendido), reprogramar citas y dar de baja admisiones. Cada admisión se vincula a un paciente, un médico o equipo médico, una especialidad, un lugar de atención y un horario específico.

Ruta de navegación: Inicio → Salud → Admisiones


Vista principal (listado de admisiones)

Encabezado

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

Barra de búsqueda y filtros

ElementoTipoDescripción
Campo de búsquedapInputText con icono pi pi-searchBúsqueda por texto libre (ancho: 4/12 columnas). Se ejecuta al presionar Enter o al hacer clic en "Buscar".
Chips de filtros activosp-chipFiltros aplicados como chips removibles. Al hacer clic en un chip se abre el overlay para editarlo.
Botón "Agregar filtro"Icono pi pi-filterAbre el panel overlay de filtros. En móvil muestra solo "filtros".
Botón "Quitar filtros"Icono pi pi-filter-slashElimina todos los filtros activos. En móvil muestra solo "Quitar".
Botón "Buscar"Icono pi pi-searchEjecuta la búsqueda con los filtros activos. Solo visible en escritorio.

Panel de filtros (overlay)

Se abre como p-overlayPanel con ancho de 350px y botón de cierre.

FiltroValorCampos adicionales
Fecha de atención1Fecha de atención inicio* (input[type=date]), Fecha de atención fin* (input[type=date]). Valor por defecto: fecha actual.
Paciente2Paciente* (p-dropdown con búsqueda, lazy loading). Muestra: "{apellido_paterno} {apellido_materno} {nombres}".
Médico3Médico* (p-dropdown con búsqueda, filterBy="text"). Muestra: "{apellido_paterno} {apellido_materno} {nombres}".
Lugar de atención4Lugar de atención* (p-dropdown con búsqueda, filterBy="nombre"). Muestra el campo "nombre".
Modalidad5Modalidad* (p-dropdown). Opciones: EN CONSULTORIO (1), VIRTUAL (2).
Tipo de atención6Tipo de atención* (p-dropdown, filterBy="value"). Opciones: CONSULTA, RECONSULTA.
Especialidad7Especialidad* (p-dropdown con búsqueda, filterBy="nombres", optionLabel="nombres").

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"*.

Al guardar un filtro, se agrega como chip con formato descriptivo. Por ejemplo, para fecha: "Fecha de atención desde DD/MM/YYYY hasta DD/MM/YYYY".

Formato de consulta (query) por filtro:

FiltroQuery generado
Fecha de atenciónatencion_fecha:[YYYY-MM-DD TO YYYY-MM-DD]
Pacientepaciente_id:\{id\}
Médicomedico_id:\{id\}
Lugar de atenciónlugar_id:\{id\}
Modalidadmodalidad:\{value\}
Tipo de atenciónatencion_tipo:\{value\}
Especialidadespecialidad_id:\{id\}

Indicador de paginación

"Mostrando página {N} con {X} registros de {T} entradas"

Columnas de la tabla

ColumnaDescripción
FechaFecha y hora de la atención programada.
Médico / Equipo médicoNombre del médico asignado o nombre del equipo médico.
PacienteNombre completo del paciente (apellido_paterno apellido_materno nombres).
ModalidadModalidad de atención: "EN CONSULTORIO" o "VIRTUAL".
EstadoBotón dividido (p-splitButton) que muestra el estado actual y permite cambiarlo.

Cuando no hay registros: "No se encontraron datos".

Estados de admisión

Cada admisión tiene un estado representado por un p-splitButton con código de color:

EstadoCódigoColor del botónEtiqueta
En espera0secondary (gris)"EN ESPERA"
En llamado1warning (amarillo)"EN LLAMADO"
En atención2primary (azul)"EN ATENCIÓN"
Atendido3success (verde)"ATENDIDO"
Baja4danger (rojo)"BAJA"
Reprogramado5danger (rojo)"REPROGRAMADO"
Baja venta6danger (rojo)"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 admisión no esté ya en estado Baja (código 4).

Opciones del splitButton (cambio de estado)

Al hacer clic en el dropdown del p-splitButton, se muestran las siguientes opciones de transición de estado:

OpciónDescripción
PACIENTE EN ESPERACambia el estado a En espera (0).
LLAMAR AL PACIENTECambia el estado a En llamado (1).
PACIENTE EN ATENCIÓNCambia el estado a En atención (2).
PACIENTE ATENDIDOCambia el estado a Atendido (3).

Al seleccionar una opción, se abre un diálogo de confirmación (ver sección Cambiar estado).

Menú contextual

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

Estado actualOpciones disponibles
En espera (0)Detalles, Reprogramar, Baja
En llamado (1)Detalles, Reprogramar, Baja
En atención (2)Detalles
Atendido (3)Detalles
Baja (4)Detalles, Reprogramar, Baja
Reprogramado (5)— (sin menú contextual)
Baja venta (6)Detalles, Baja
OpciónIconoDescripción
Detallespi pi-eyeAbre el diálogo de detalles en modo lectura.
Reprogramarpi pi-calendarAbre el diálogo de reprogramación.
Bajapi pi-trashAbre 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), siguiente, última página. Tamaño de página: 50 registros.


Crear nueva admisión

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

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
Citap-dropdown con búsquedaNoSelecciona una cita existente para vincular. Al seleccionar una cita, se auto-rellenan los demás campos (paciente, modalidad, tipo atención, especialidad, médico/equipo, lugar). Formato de visualización: "PACIENTE: {num_doc} - {apellidos} {nombres} / MÉDICO/EQUIPO: {info} / {fecha_hora}".
Pacientep-dropdown con búsqueda, lazy loadingSelecciona el paciente. Muestra: "{apellido_paterno} {apellido_materno} {nombres}".
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úsquedaLista de especialidades médicas. Muestra el tipo entre paréntesis: "{nombres} (MÉDICO)" para tipo 0, "{nombres} (EQUIPO MÉDICO)" para tipo 1. Al seleccionar, determina si se muestra el campo Médico o Equipo Médico.
Médicop-dropdown con búsqueda, lazy loadingSí (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 loadingSí (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.
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 (medico.lugares_atenciones o equipo_medico.lugares_atenciones). Al cambiar, recarga los cupos.

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).

Mensaje de error para campos obligatorios: " Obligatorio". Para el campo Equipo Médico: " Ingrese médico válido".

Columna derecha: Horario (calendario semanal)

El calendario muestra los cupos disponibles organizados por día de la semana.

Estructura del calendario:

  • Navegación: Dos botones 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 (altura mínima del contenedor: 500px).

Botones de horario:

EstadoEstiloAncho
Disponible (no seleccionado)Botón gris (estilo por defecto)78px
SeleccionadoBotón verde (p-button-success)78px
  • Cada botón muestra la hora en formato hh:mm A (12 horas, ej: "09:00 AM").
  • Selección única: Solo se puede seleccionar un horario a la vez. Al seleccionar uno nuevo, se deselecciona el anterior automáticamente.
  • Al seleccionar un horario, se establece el valor de atencion_fecha con el formato YYYY-MM-DD HH:mm:ss.
  • Al deseleccionar (clic en el mismo horario), se limpia el valor de atencion_fecha.

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. Si falta alguno, el calendario aparece vacío.

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 (anticipado_tiempo). 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.
Guardarpi pi-check (cambia a spinner durante el proceso)Valida 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, duración: 5s, posición: bottom-left).

Datos enviados al servidor

CampoDescripción
fecha_creacionFecha y hora actual en formato YYYY-MM-DD HH:mm:ss.
estado0 (En espera).
cita_idID de la cita seleccionada (o null si no se seleccionó cita).
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.
referencia_venta_idID de la referencia de venta de la cita (o null).

Notificaciones

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

Detalles de admisión

Al seleccionar "Detalles" del menú contextual, se abre un diálogo a pantalla completa (DynamicDialog) en modo solo lectura.

Campos mostrados

CampoDescripción
PacienteNombre completo del paciente.
Médico / Equipo médicoNombre del médico o equipo médico asignado.
EspecialidadesEspecialidad médica asociada.
Lugar atenciónLugar donde se realizará la atención.
Modalidad"EN CONSULTORIO" o "VIRTUAL".
Tipo atención"CONSULTA", "RECONSULTA" o "PROCEDIMIENTO MEDICO".
HorarioFecha y hora programada para la atención.

Cambiar estado

Al seleccionar una opción de transición de estado desde el p-splitButton, se abre un diálogo de confirmación (DynamicDialog).

Diálogo de confirmación

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

El cambio de estado se realiza mediante un PATCH al endpoint de admisiones con el nuevo valor de estado.

Notificaciones

ResultadoSeveridadTítuloMensajeDuración
Éxitosuccess"Alerta""Se ha actualizado con éxito"5 segundos
Errorerror"Error {código}"Mensaje de error del servidor5 segundos

Reprogramar admisión

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

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 admisión (columna izquierda con campos + columna derecha con calendario), con las siguientes diferencias:

CampoTipoObligatorioDiferencia con nueva admisión
Citap-dropdownNoDeshabilitado (solo lectura). Muestra la cita original si existe.
Pacientep-dropdown con búsquedaPre-rellenado con el paciente de la admisión original.
Modalidadp-dropdownPre-rellenado con la modalidad original.
Tipo de atenciónp-dropdownPre-rellenado con el tipo de atención original. Opciones: CONSULTA, RECONSULTA, PROCEDIMIENTO MEDICO.
Especialidadesp-dropdown con búsquedaPre-rellenado con la especialidad original.
Médico / Equipo Médicop-dropdown con búsquedaSí (condicional)Pre-rellenado con el médico o equipo original.
Lugar atenciónp-dropdown con búsquedaPre-rellenado con el lugar original.
HorarioCalendario semanalCalendario vacío; el usuario debe seleccionar un nuevo horario.

Al reprogramar, los campos se pre-rellenan con los datos de la admisión original. El usuario puede modificar cualquier campo excepto la cita (que permanece deshabilitada), pero debe seleccionar un nuevo horario obligatoriamente.

Flujo de guardado

La reprogramación ejecuta los siguientes pasos en secuencia:

Actualizar cita original

Si la admisión tiene una cita asociada (cita_id), 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. El ID de la nueva cita se almacena para el siguiente paso.

Marcar admisión original como reprogramada

Se envía un PATCH a la admisión original con estado: 5 (Reprogramado).

Crear nueva admisión

Se crea una nueva admisión con estado: 0 (En espera) y el cita_id de la nueva cita creada en el paso 2.

Datos enviados al servidor

Los datos son idénticos a los de una nueva admisión (ver sección Datos enviados al servidor), con la adición del campo id que contiene el ID de la admisión original que se está reprogramando.

Notificaciones

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

Dar de baja admisión

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

ElementoDescripción
Iconopi pi-exclamation-triangle (tamaño 2rem)
Mensaje"Estas seguro de proceder con la eliminación?"
Botón "No"Icono pi pi-times. Cierra sin dar de baja.
Botón "Si"Icono pi pi-check (cambia a spinner). Ejecuta la baja.

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

Si la admisión tiene una cita asociada (cita_id), al dar de baja la admisión también se actualiza la cita correspondiente con estado: 3 (Baja en citas).

Notificaciones

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

Endpoints

MétodoEndpointDescripción
GET/v2.0.3/erpx/salud/admisiones/Lista todas las admisiones con paginación, búsqueda y filtros.
GET/v2.0.3/erpx/salud/admisiones/\{id\}Obtiene una admisión por su ID.
POST/v2.0.3/erpx/salud/admisiones/Crea una nueva admisión.
PATCH/v2.0.3/erpx/salud/admisiones/\{id\}Actualiza parcialmente una admisión (cambio de estado).
GET/v2.0.3/erpx/salud/citas/Lista las citas disponibles.
GET/v2.0.3/erpx/salud/citas/\{id\}Obtiene una cita por su ID.
POST/v2.0.3/erpx/salud/citas/Crea una nueva cita (al reprogramar).
PATCH/v2.0.3/erpx/salud/citas/\{id\}Actualiza parcialmente una cita (cambio de estado).
GET/v2.0.3/erpx/rrhh/colaboradores-horarios-detalles/cuposObtiene los cupos disponibles para el calendario de horarios.
GET/v2.0.3/erpx/salud/pacientes/Lista los pacientes para el dropdown.
GET/v2.0.3/erpx/salud/especialidades/Lista las especialidades médicas.
GET/v2.0.4/erpx/salud/medicos/Lista los médicos por especialidad.
GET/v2.0.3/erpx/salud/equipos-medicos/Lista los equipos médicos por especialidad.
GET/v2.0.1/erpx/global/params/Obtiene los parámetros de configuración (tiempo de atención, tiempo de anticipación).

Problemas comunes

ProblemaCausaSolución
"Revise bien, hay formularios por validar"Campos obligatorios sin completar en el formulario de nueva admisión 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. Si ya pasó la hora del cupo más el tiempo de anticipación, no se muestra.Seleccione un horario en un día futuro o navegue a la siguiente semana.
No se puede reprogramar una admisiónLa admisión tiene estado "Reprogramado" (5) o "Atendido" (3) o "En atención" (2).Solo se pueden reprogramar admisiones en estado "En espera", "En llamado" o "Baja".
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.
La admisión cambió a "Baja venta" automáticamenteLa referencia de venta asociada a la admisión tiene estado = 4.Este es un comportamiento automático del sistema. Contacte al administrador si necesita revertir el estado.

Páginas relacionadas

  • Citas — Gestión de citas médicas.
  • Médicos — Gestión de médicos internos del establecimiento.
  • Médicos Referentes — Gestión de médicos referentes externos.