Catálogos
Crea, edita y elimina catálogos de procedimientos médicos para imágenes y laboratorios con configuración de fechas de caducidad
Desde Catálogos puedes gestionar los catálogos de procedimientos médicos del sistema. Cada catálogo agrupa un conjunto de procedimientos que pueden ser de tipo Imágenes (radiología, ecografía, etc.) o Laboratorios (análisis clínicos). Los catálogos permiten configurar un período de vigencia opcional mediante fechas de inicio y fin.
Esta vista se encuentra en la ruta Logística > Catálogo dentro del sistema. Requieres un perfil con permisos de acceso al módulo de salud para operar.
Vista principal — Listado de catálogos
Al ingresar al módulo, el sistema muestra una tabla con todos los catálogos registrados. La tabla utiliza carga lazy (paginación del lado del servidor) con un tamaño de página de 50 registros por defecto.
Breadcrumb de navegación
| Nivel | Texto | Acción al hacer clic |
|---|---|---|
| 1 | Logistica | Redirige a /logistica |
| 2 | Catálogo | Sin acción (página actual) |
Título y descripción
- Título:
Catálogos - Descripción: "Muestra el listado y las herramientas para gestionar el catálogo"
Barra de herramientas
La barra de herramientas utiliza un componente p-menubar con las siguientes opciones:
| Opción | Icono | Descripción |
|---|---|---|
| Nuevo > Catálogo | pi pi-plus | Abre el diálogo para crear un nuevo catálogo. Es un submenú bajo el ítem "Nuevo" (pi pi-cog) |
| Actualizar | pi pi-refresh | Recarga la tabla con los datos más recientes del servidor |
Columnas de la tabla
| Columna | Ordenable | Ancho | Descripción |
|---|---|---|---|
| codigo | Sí | 150px (fijo) | Código identificador del catálogo |
| nombre | Sí | Auto | Nombre descriptivo del catálogo |
| Tipo | Sí | Auto | Tipo de catálogo: IMAGENES o LABORATORIOS |
| Fecha Inicio | Sí | Auto | Fecha de inicio de vigencia en formato DD/MM/YYYY. Vacío si no tiene caducidad configurada |
| Fecha Fin | Sí | Auto | Fecha de fin de vigencia en formato DD/MM/YYYY. Vacío si no tiene caducidad configurada |
| Acciones | No | 80px (fijo) | Botón de tres puntos (pi pi-ellipsis-h) que despliega el menú contextual |
Todas las columnas con ordenamiento soportan orden ascendente (ASC) y descendente (DESC). Al hacer clic en el encabezado de la columna, se alterna entre los dos modos. El ordenamiento se envía al servidor como parte de la consulta lazy.
Mensaje cuando no hay datos
Si la tabla no tiene registros, se muestra el mensaje:
⚠ No se encontraron datos
Menú contextual
Cada fila de la tabla tiene un menú de acciones accesible de dos formas:
- Clic derecho sobre la fila (menú contextual nativo con
p-contextMenu). - Clic en el botón de tres puntos (
pi pi-ellipsis-h) en la columna Acciones (menú popup conp-menu).
Ambos menús muestran las mismas opciones:
| Opción | Icono | Descripción |
|---|---|---|
| Detalle | pi pi-folder | Navega a la vista de detalle del catálogo. La ruta depende del tipo de catálogo (ver sección siguiente) |
| Editar | pi pi-pencil | Abre el diálogo de creación/edición con los datos del catálogo seleccionado precargados |
| Eliminar | pi pi-times | Abre el diálogo de confirmación de eliminación |
Navegación por tipo de catálogo (Detalle)
Al hacer clic en Detalle, el sistema navega a una ruta diferente según el tipo del catálogo:
| Tipo de catálogo | Ruta de navegación |
|---|---|
IMAGENES | /salud/catalogos-imagenes/\{id\} |
LABORATORIOS | /salud/catalogos-laboratorios/\{id\} |
Paginación personalizada
La tabla implementa un control de paginación manual en la parte inferior, con los siguientes controles:
| Control | Icono | Descripción |
|---|---|---|
| Primera página | pi pi-angle-double-left | Va a la primera página. No hace nada si ya está en la primera |
| Página anterior | pi pi-angle-left | Retrocede una página. No hace nada si ya está en la primera |
| Selector de página | p-dropdown | Muestra la página actual en formato \{número\} de \{total\}. Permite seleccionar cualquier página directamente |
| Página siguiente | pi pi-angle-right | Avanza una página. No hace nada si ya está en la última |
| Última página | pi pi-angle-double-right | Va a la última página. No hace nada si ya está en la última |
El selector de página es un dropdown con búsqueda habilitada ([filter]="true"). Cada opción muestra el formato \{página actual\} de \{total de páginas\}. Al seleccionar una página, la tabla se recarga con los datos correspondientes.
Crear / Editar catálogo
Al hacer clic en Nuevo > Catálogo o en Editar del menú contextual, se abre un diálogo a pantalla completa (p-dialog) para crear o editar un catálogo.
Propiedades del diálogo
| Propiedad | Valor |
|---|---|
| Título | Catalogo de producto |
| Tamaño | Pantalla completa (width: 100%, height: 100%, top: 0, bottom: 0, maxHeight: 100%) |
| Arrastrable | No ([draggable]="false") |
| Redimensionable | No ([resizable]="false") |
| Modal | No ([modal]="false") |
| Breakpoints | 653px: 100vw, 960px: 100vw |
Encabezado del diálogo
El encabezado del diálogo muestra:
- Breadcrumb:
Inicio > Logistica > Catálogos - Título:
Nuevo catálogo - Descripción: "Aqui puede editar la lista de catálogos"
Indicador de carga
Mientras se cargan los datos del catálogo (solo en modo edición), el diálogo muestra un mensaje con spinner:
- Texto: "Cargando sus datos"
- Ícono: Spinner animado (
pi pi-spin pi-spinner)
Sección de formulario
El formulario tiene el subtítulo:
- Título de sección:
Detalles de catálogo - Descripción: "Se tiene que rellenar los campos que contengan () obligatoriamente que se requiere para el registro."*
Campos del formulario
Tipo de catálogo (Radio buttons)
| Opción | Valor | Descripción |
|---|---|---|
| IMAGENES | IMAGENES | Catálogo de procedimientos de imágenes médicas |
| LABORATORIOS | LABORATORIOS | Catálogo de procedimientos de laboratorio clínico |
- Componente:
p-radioButton(dos opciones) - Valor por defecto:
IMAGENES - Obligatorio: Sí
Código
| Propiedad | Valor |
|---|---|
| Etiqueta | Codigo * |
| Tooltip | "Ingrese el código de registro" (ícono pi pi-exclamation-circle) |
| Componente | input[type="text"] con pInputText |
| Obligatorio | Sí (Validators.required) |
| Mensaje de error | " Ingrese código válido"* |
| Ancho | col-4 en desktop, col-12 en móvil |
Nombre
| Propiedad | Valor |
|---|---|
| Etiqueta | Nombre * |
| Tooltip | "Ingrese el nombre" (ícono pi pi-exclamation-circle) |
| Componente | input[type="text"] con pInputText |
| Obligatorio | Sí (Validators.required) |
| Mensaje de error | " Obligatorio"* |
| Ancho | col-8 en desktop, col-12 en móvil |
Configurar caducidad (Switch)
| Propiedad | Valor |
|---|---|
| Etiqueta | "¿Configurar caducidad?" |
| Componente | p-inputSwitch |
| Valor por defecto | Desactivado (false) |
Al activar el switch:
- Los campos Fecha Inicio y Fecha Fin se habilitan y se convierten en obligatorios (
Validators.required).
Al desactivar el switch:
- Los campos Fecha Inicio y Fecha Fin se deshabilitan, se vacían y se eliminan sus validadores.
Fecha Inicio
| Propiedad | Valor |
|---|---|
| Etiqueta | Fecha Inicio * |
| Tooltip | "Seleccione una fecha de inicio que no pase al final" (ícono pi pi-exclamation-circle) |
| Componente | p-calendar con ícono ([showIcon]="true") |
| Formato | dd/mm/yy |
| Placeholder | dd/mm/yyyy |
| Obligatorio | Solo cuando "¿Configurar caducidad?" está activado |
| Mensaje de error | " Obligatorio"* |
| Estado inicial | Deshabilitado |
| Locale | Español (días: L,M,M,J,V,S,D; meses en español) |
| Ancho | col-6 |
Fecha Fin
| Propiedad | Valor |
|---|---|
| Etiqueta | Fecha Fin * |
| Tooltip | "Seleccione una fecha final que no sea menor a la fecha de inicio" (ícono pi pi-exclamation-circle) |
| Componente | p-calendar con ícono ([showIcon]="true") |
| Formato | dd/mm/yy |
| Placeholder | dd/mm/yyyy |
| Obligatorio | Solo cuando "¿Configurar caducidad?" está activado |
| Mensaje de error | " Obligatorio"* |
| Estado inicial | Deshabilitado |
| Locale | Español |
| Ancho | col-6 |
Tabla resumen de campos del formulario
| Campo | Tipo | Obligatorio | Mensaje de error | Descripción |
|---|---|---|---|---|
| Tipo | Radio button | Sí | — | Selección entre IMAGENES y LABORATORIOS |
| Codigo | Texto | Sí | " Ingrese código válido"* | Código identificador del catálogo |
| Nombre | Texto | Sí | " Obligatorio"* | Nombre descriptivo del catálogo |
| ¿Configurar caducidad? | Switch | No | — | Habilita/deshabilita los campos de fecha |
| Fecha Inicio | Calendario | Condicional | " Obligatorio"* | Solo obligatorio si la caducidad está activada |
| Fecha Fin | Calendario | Condicional | " Obligatorio"* | Solo obligatorio si la caducidad está activada |
Validación de fechas
Al guardar, si la caducidad está configurada, el sistema valida que la Fecha Fin no sea anterior a la Fecha Inicio. Si lo es, se muestra una notificación:
- Severidad: Advertencia (
warn) - Título:
Alerta - Mensaje: "La fecha fin no puede ser menor a la fecha inicio."
- Duración: 5 segundos
Botones del diálogo
| Botón | Icono | Estilo | Acción |
|---|---|---|---|
| Cancelar | pi pi-times | p-button-text text-default | Cierra el diálogo sin guardar |
| Guardar | pi pi-check (o spinner mientras procesa) | Primary | Valida y guarda el catálogo. Se deshabilita durante el envío |
Datos enviados al servidor
Al guardar, se envía un objeto con la siguiente estructura:
| Campo | Formato | Descripción |
|---|---|---|
id | UUID o null | ID del catálogo (solo en edición) |
codigo | String | Código del catálogo |
nombre | String | Nombre del catálogo |
tipo | IMAGENES o LABORATORIOS | Tipo de catálogo |
fecha_inicio | YYYY-MM-DD o null | Fecha de inicio (solo si caducidad activa) |
fecha_fin | YYYY-MM-DD o null | Fecha de fin (solo si caducidad activa) |
Flujo de creación
Abrir el diálogo
Haz clic en Nuevo > Catálogo en la barra de herramientas. Se abre el diálogo a pantalla completa con el formulario vacío y el tipo preseleccionado en IMAGENES.
Seleccionar tipo
Elige entre IMAGENES o LABORATORIOS usando los radio buttons.
Completar campos obligatorios
Ingresa el Código y Nombre del catálogo.
Configurar caducidad (opcional)
Si deseas configurar un período de vigencia, activa el switch "¿Configurar caducidad?" y selecciona las fechas de inicio y fin.
Guardar
Haz clic en Guardar. El sistema valida los campos, envía los datos al servidor (POST) y, si es exitoso, muestra la notificación: "Registro exitoso." (duración: 5 segundos). El nuevo catálogo aparece al inicio de la tabla.
Flujo de edición
Seleccionar catálogo
Haz clic derecho sobre una fila o usa el botón de tres puntos, luego selecciona Editar.
Carga de datos
El sistema consulta los datos completos del catálogo por ID (GET /v2.0.1/erpx/salud/catalogos/\{id\}). Mientras carga, se muestra el spinner con el texto "Cargando sus datos".
Modificar campos
Los campos se precargan con los datos actuales. Si el catálogo tiene fechas configuradas, el switch de caducidad se activa automáticamente y los campos de fecha se habilitan con los valores existentes.
Guardar cambios
Haz clic en Guardar. El sistema envía los datos actualizados al servidor (PUT) y, si es exitoso, muestra la notificación: "Actualización exitosa." (duración: 5 segundos). La fila se actualiza en la tabla.
Eliminar catálogo
Al seleccionar Eliminar del menú contextual, se abre un diálogo de confirmación.
Propiedades del diálogo de eliminación
| Propiedad | Valor |
|---|---|
| Título | Confirmación |
| Ancho | 50vw |
| Modal | Sí ([modal]="true") |
| Arrastrable | No |
| Redimensionable | No |
Contenido del diálogo
Se muestra un ícono de advertencia (pi pi-exclamation-triangle, tamaño 2rem) junto al mensaje:
Estas seguro de proceder con la eliminación?
Botones del diálogo de eliminación
| Botón | Icono | Estilo | Acción |
|---|---|---|---|
| No | pi pi-times | p-button-text | Cierra el diálogo sin eliminar |
| Si | pi pi-check (o spinner mientras procesa) | Primary | Ejecuta la eliminación. Se deshabilita durante el envío |
Resultado de la eliminación
- Éxito: Se muestra la notificación "Eliminado." (severidad: success, duración: 5 segundos). La fila se elimina de la tabla.
- Error: Se muestra la notificación con el mensaje de error del servidor.
Endpoints utilizados
| Endpoint | Método | Descripción |
|---|---|---|
/v2.0.1/erpx/salud/catalogos | GET | Obtiene la lista paginada de catálogos |
/v2.0.1/erpx/salud/catalogos/\{id\} | GET | Obtiene los datos completos de un catálogo por ID |
/v2.0.1/erpx/salud/catalogos/ | POST | Crea un nuevo catálogo |
/v2.0.1/erpx/salud/catalogos/\{id\} | PUT | Actualiza un catálogo existente |
/v2.0.1/erpx/salud/catalogos/\{id\} | DELETE | Elimina un catálogo |
Autenticación
Todas las peticiones incluyen las siguientes cabeceras HTTP:
| Cabecera | Valor |
|---|---|
accept | application/json |
Authorization | Bearer \{token\} |
enterprise-id | ID de la empresa del usuario autenticado |
Manejo de errores
| Código HTTP | Mensaje mostrado |
|---|---|
400 | "Error de estructura de envio de datos. ERROR 400" |
401, 402, 403 | Concatenación de los mensajes de error del servidor |
404 | "No se encontró el servidor de respuestas, consulte con el Administrador. ERROR 404" |
500 | "Error interno del servidor. ERROR 500" |
| Otro | "Error 404 consulte con su admin." |
Todas las notificaciones de error tienen una duración de 5 segundos.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| Al guardar aparece " Ingrese código válido"* | El campo Código está vacío | Ingresa un código para el catálogo |
| Al guardar aparece " Obligatorio"* en Nombre | El campo Nombre está vacío | Ingresa un nombre para el catálogo |
| Al guardar aparece " Obligatorio"* en las fechas | La caducidad está activada pero las fechas están vacías | Selecciona ambas fechas o desactiva el switch de caducidad |
| Aparece "La fecha fin no puede ser menor a la fecha inicio" | La Fecha Fin seleccionada es anterior a la Fecha Inicio | Selecciona una Fecha Fin igual o posterior a la Fecha Inicio |
| No aparece la opción Detalle correcta | El tipo del catálogo no es IMAGENES ni LABORATORIOS | Verifica que el catálogo tenga un tipo válido asignado |
| La tabla muestra "No se encontraron datos" | No hay catálogos registrados en el sistema | Crea un nuevo catálogo usando el botón Nuevo > Catálogo |
| El diálogo muestra "Cargando sus datos" indefinidamente | Error al consultar el catálogo por ID | Verifica la conexión al servidor y que el catálogo exista |
Páginas relacionadas
- Catálogos — Imágenes — Gestión de procedimientos de imágenes dentro de un catálogo.
- Catálogos — Laboratorios — Gestión de procedimientos de laboratorio dentro de un catálogo.