Catálogos de Laboratorios
Gestión jerárquica de catálogos de laboratorios con grupos y procedimientos organizados en estructura de árbol.
Descripción general
El módulo Catálogos de Laboratorios permite gestionar los procedimientos de laboratorio organizados en una estructura jerárquica de árbol (grupos y procedimientos). Los elementos se muestran en un componente TreeTable que soporta expansión por niveles, carga diferida (lazy loading) y menú contextual diferenciado según el tipo de elemento seleccionado.
Cada catálogo de laboratorios se accede a través de un parámetro de ruta (catalogo_producto_id) que identifica el catálogo padre al que pertenecen los grupos y procedimientos.
Estructura jerárquica
Los elementos se organizan en dos tipos:
- GRUPO: Carpetas contenedoras que pueden anidar otros grupos o procedimientos.
- LABORATORIOS: Procedimientos individuales de laboratorio (hojas del árbol).
Un grupo puede contener sub-grupos y procedimientos, permitiendo una profundidad ilimitada de anidación.
Acceso al módulo
Ruta de navegación: Salud → Catálogos laboratorios
La pantalla muestra una barra de navegación (breadcrumb) en la parte superior:
| Nivel | Texto |
|---|---|
| 1 | Salud |
| 2 | Catálogos laboratorios |
Vista principal — TreeTable
La vista principal presenta un TreeTable con carga diferida que muestra los grupos y procedimientos del catálogo seleccionado.
Barra de herramientas (Toolbar)
La barra de herramientas superior (p-menubar) contiene las siguientes opciones:
| Acción | Icono | Tipo | Comportamiento |
|---|---|---|---|
| Nuevo | pi pi-plus | Menú desplegable | Despliega sub-opciones: Procedimiento y Grupo |
| → Procedimiento | — | Sub-opción | Abre el diálogo de nuevo procedimiento de laboratorio |
| → Grupo | — | Sub-opción | Abre el diálogo de nuevo grupo |
| Actualizar | pi pi-refresh | Botón | Recarga la lista completa de datos desde el servidor |
| Exportar a | pi pi-download | Menú desplegable | Opciones de exportación de datos |
| Eliminar | pi pi-trash | Botón | Elimina los elementos seleccionados (requiere selección previa) |
Columnas de la tabla
El TreeTable muestra 7 columnas:
| # | Columna | Campo de datos | Descripción |
|---|---|---|---|
| 1 | Código | codigo | Código identificador del grupo o procedimiento |
| 2 | Nombres | nombre | Nombre descriptivo del elemento. Es la columna que muestra el icono de expansión del árbol |
| 3 | Descripción | descripcion | Descripción detallada del elemento |
| 4 | Tipo | tipo | Tipo de elemento: GRUPO o LABORATORIOS |
| 5 | Código CPT | codigo_cpt | Código CPT (Current Procedural Terminology) — solo aplica a procedimientos |
| 6 | Código SEGUS | codigo_segus | Código SEGUS — solo aplica a procedimientos |
| 7 | Acciones | — | Botón de menú contextual (pi pi-ellipsis-v) |
Columna de expansión
La columna Nombres actúa como columna de expansión del árbol (ttTreeToggler). Al hacer clic en la flecha de expansión de un nodo tipo GRUPO, el sistema carga sus hijos desde el servidor de forma diferida.
Paginación
La tabla incluye paginación personalizada en la parte inferior con:
- Selector de filas por página: Opciones disponibles:
10,25,50filas. - Navegación de páginas: Botones Primera, Anterior, Siguiente, Última.
- Indicador de registros: Muestra "Mostrando X a Y de Z registros".
Carga de datos
Al inicializar la vista, el sistema realiza una carga combinada usando forkJoin de dos peticiones simultáneas:
- Procedimientos:
GET /v2.0.1/erpx/salud/catalogos-laboratorios— Obtiene los procedimientos de nivel raíz del catálogo. - Grupos:
GET /v2.0.1/erpx/salud/catalogos-grupos— Obtiene los grupos de nivel raíz del catálogo.
Ambas peticiones se filtran por el catalogo_producto_id del catálogo actual. Los resultados se combinan en una lista unificada donde:
- Los grupos se representan como nodos expandibles (
leaf: false). - Los procedimientos se representan como hojas del árbol (
leaf: true).
Expansión de nodos (Lazy Loading)
Al expandir un nodo de tipo GRUPO, el sistema ejecuta otra carga combinada (forkJoin) para obtener:
- Los procedimientos hijos del grupo (filtrados por
catalogo_grupo_id). - Los sub-grupos hijos del grupo (filtrados por
parent= ID del grupo padre).
Los resultados se agregan como hijos del nodo expandido, manteniendo la misma lógica de tipos (grupos expandibles, procedimientos como hojas).
Menú contextual
Al hacer clic en el botón de acciones (pi pi-ellipsis-v) de cualquier fila, se despliega un menú contextual cuyas opciones varían según el tipo del elemento seleccionado.
Menú para elementos tipo LABORATORIOS (Procedimiento)
| Opción | Icono | Acción |
|---|---|---|
| Editar | pi pi-pencil | Abre el diálogo de edición del procedimiento con los datos precargados |
| Eliminar | pi pi-trash | Solicita confirmación y elimina el procedimiento |
Menú para elementos tipo GRUPO
| Opción | Icono | Acción |
|---|---|---|
| Nuevo grupo | pi pi-plus | Abre el diálogo de nuevo grupo como hijo del grupo seleccionado |
| Nuevo procedimiento | pi pi-plus | Abre el diálogo de nuevo procedimiento dentro del grupo seleccionado |
| Editar | pi pi-pencil | Abre el diálogo de edición del grupo con los datos precargados |
| Eliminar | pi pi-trash | Solicita confirmación y elimina el grupo |
Diferencia clave
El menú contextual de un GRUPO incluye dos opciones adicionales que no están disponibles para procedimientos: Nuevo grupo y Nuevo procedimiento. Esto permite crear elementos hijos directamente desde el menú contextual del grupo padre.
Crear procedimiento de laboratorio
Se accede desde:
- Toolbar → Nuevo → Procedimiento
- Menú contextual de un GRUPO → Nuevo procedimiento
Diálogo
Se abre un diálogo a pantalla completa con el título "Nuevo Laboratorio".
Campos del formulario
| # | Campo | Componente | Obligatorio | Validación | Descripción |
|---|---|---|---|---|---|
| 1 | Grupo / Familia | p-treeSelect | No | — | Selector de árbol que muestra los grupos disponibles. Permite seleccionar el grupo padre al que pertenecerá el procedimiento. Si se accede desde el menú contextual de un grupo, este campo se precarga con el grupo seleccionado |
| 2 | Código | input text | Sí | Requerido | Código identificador único del procedimiento |
| 3 | Nombre | input text | Sí | Requerido | Nombre descriptivo del procedimiento de laboratorio |
| 4 | Descripción | textarea | No | — | Descripción detallada del procedimiento |
| 5 | Código CPT | input text | No | — | Código CPT (Current Procedural Terminology) asociado al procedimiento |
| 6 | Código SEGUS | input text | No | — | Código SEGUS asociado al procedimiento |
Selector de grupo (TreeSelect)
El campo Grupo / Familia utiliza un componente p-treeSelect que carga la estructura jerárquica de grupos del catálogo. Esto permite visualizar y seleccionar cualquier grupo de la jerarquía como padre del nuevo procedimiento.
Botones de acción
| Botón | Ubicación | Acción |
|---|---|---|
| Cancelar | Pie del diálogo | Cierra el diálogo sin guardar cambios |
| Guardar | Pie del diálogo | Valida el formulario y guarda el nuevo procedimiento |
Proceso de guardado
Validar formulario
El sistema verifica que los campos obligatorios (Código y Nombre) estén completados. Si alguno está vacío, se marca el campo con error visual.
Enviar datos al servidor
Se realiza una petición POST al endpoint /v2.0.1/erpx/salud/catalogos-laboratorios con los datos del formulario. El campo tipo se establece automáticamente como "LABORATORIOS".
Confirmación
Si la respuesta es exitosa, el sistema:
- Muestra una notificación de éxito.
- Cierra el diálogo.
- Actualiza la lista de datos en el TreeTable.
Editar procedimiento de laboratorio
Se accede desde el menú contextual de un procedimiento → Editar.
Diálogo
Se abre el mismo diálogo a pantalla completa con el título "Nuevo Laboratorio" (el título no cambia en modo edición). Los campos se precargan con los datos actuales del procedimiento seleccionado:
- Grupo / Familia: Se precarga con el grupo padre actual (si tiene).
- Código: Se precarga con el código actual.
- Nombre: Se precarga con el nombre actual.
- Descripción: Se precarga con la descripción actual.
- Código CPT: Se precarga con el código CPT actual.
- Código SEGUS: Se precarga con el código SEGUS actual.
Proceso de actualización
Validar formulario
Mismas validaciones que en la creación: Código y Nombre son obligatorios.
Enviar datos al servidor
Se realiza una petición PUT al endpoint /v2.0.1/erpx/salud/catalogos-laboratorios con los datos actualizados del procedimiento.
Confirmación
Si la respuesta es exitosa, el sistema:
- Muestra una notificación de éxito.
- Cierra el diálogo.
- Actualiza la lista de datos en el TreeTable.
Crear grupo
Se accede desde:
- Toolbar → Nuevo → Grupo
- Menú contextual de un GRUPO → Nuevo grupo
Diálogo
Se abre un diálogo a pantalla completa con el título "Nuevo grupo".
Campos del formulario
| # | Campo | Componente | Obligatorio | Validación | Descripción |
|---|---|---|---|---|---|
| 1 | Grupo | p-treeSelect | No | — | Selector de árbol que muestra los grupos disponibles. Permite seleccionar el grupo padre. Si se accede desde el menú contextual de un grupo, este campo se precarga con el grupo padre seleccionado |
| 2 | Código | input text | Sí | Requerido | Código identificador único del grupo |
| 3 | Nombre | input text | Sí | Requerido | Nombre descriptivo del grupo |
| 4 | Descripción | textarea | No | — | Descripción detallada del grupo |
Cálculo automático de nivel y ruta
Cuando se selecciona un grupo padre en el campo Grupo, el sistema calcula automáticamente:
- Nivel: Se incrementa en 1 respecto al nivel del grupo padre seleccionado. Si no se selecciona padre, el nivel es
0. - Ruta (path): Se construye concatenando la ruta del padre con el ID del padre, separados por coma. Si no hay padre, la ruta queda vacía.
Estos valores se envían al servidor pero no son visibles para el usuario en el formulario.
Botones de acción
| Botón | Ubicación | Acción |
|---|---|---|
| Cancelar | Pie del diálogo | Cierra el diálogo sin guardar cambios |
| Guardar | Pie del diálogo | Valida el formulario y guarda el nuevo grupo |
Proceso de guardado
Validar formulario
El sistema verifica que los campos obligatorios (Código y Nombre) estén completados.
Calcular nivel y ruta
Si se seleccionó un grupo padre:
nivel= nivel del padre + 1path= ruta del padre + "," + ID del padre (o solo el ID del padre si no tiene ruta previa)
Si no se seleccionó grupo padre:
nivel= 0path= vacío
Enviar datos al servidor
Se realiza una petición POST al endpoint /v2.0.1/erpx/salud/catalogos-grupos con los datos del formulario incluyendo el catalogo_id (ID del catálogo padre), nivel, path y opcionalmente parent (ID del grupo padre seleccionado).
Confirmación
Si la respuesta es exitosa, el sistema:
- Muestra una notificación de éxito.
- Cierra el diálogo.
- Actualiza la lista de datos en el TreeTable.
Editar grupo
Se accede desde el menú contextual de un grupo → Editar.
Diálogo
Se abre el mismo diálogo a pantalla completa con el título "Nuevo grupo" (el título no cambia en modo edición). Los campos se precargan con los datos actuales del grupo seleccionado:
- Grupo: Se precarga con el grupo padre actual (si tiene).
- Código: Se precarga con el código actual.
- Nombre: Se precarga con el nombre actual.
- Descripción: Se precarga con la descripción actual.
Proceso de actualización
Validar formulario
Mismas validaciones que en la creación: Código y Nombre son obligatorios.
Recalcular nivel y ruta
Se recalcula el nivel y la ruta basándose en el grupo padre seleccionado (que puede haber cambiado durante la edición).
Enviar datos al servidor
Se realiza una petición PUT al endpoint /v2.0.1/erpx/salud/catalogos-grupos con los datos actualizados del grupo.
Confirmación
Si la respuesta es exitosa, el sistema:
- Muestra una notificación de éxito.
- Cierra el diálogo.
- Actualiza la lista de datos en el TreeTable.
Gestión de unidades
El módulo incluye un componente para la gestión de unidades de medida asociadas a los procedimientos de laboratorio.
Diálogo de unidades
Se abre un diálogo con ancho del 70% del viewport (70vw) que permite administrar las unidades de medida.
Estructura del diálogo
El diálogo se divide en dos secciones principales:
Sección izquierda — Lista de unidades
| Elemento | Descripción |
|---|---|
| Grupo / Unidad | Campo de autocompletado (p-autoComplete) que muestra el grupo o unidad actual. Este campo está deshabilitado (solo lectura) |
| Tabla de unidades | Tabla con selección por checkboxes que muestra las unidades existentes |
Columnas de la tabla de unidades:
| # | Columna | Campo | Descripción |
|---|---|---|---|
| 1 | ☐ | Checkbox | Permite seleccionar la unidad |
| 2 | Código | codigo | Código de la unidad |
| 3 | Nombre | nombre | Nombre de la unidad |
| 4 | Base | base | Indica si es unidad base |
| 5 | Factor | factor | Factor de conversión |
| 6 | Unidad sunat | unidad_sunat | Código de unidad SUNAT asociada |
Sección derecha — Formularios de creación
Contiene un menú Agregar con dos opciones:
Nueva unidad
| # | Campo | Componente | Obligatorio | Descripción |
|---|---|---|---|---|
| 1 | Base | p-dropdown | No | Selecciona la unidad base de referencia |
| 2 | Código | input text | Sí | Código de la nueva unidad |
| 3 | Nombre | input text | Sí | Nombre de la nueva unidad |
| 4 | Factor numerador | input number | No | Numerador del factor de conversión |
| 5 | Factor denominador | input number | No | Denominador del factor de conversión |
| 6 | Unidad sunat | p-dropdown | No | Unidad SUNAT asociada (carga desde catálogo de unidades SUNAT) |
Nuevo grupo
| # | Campo | Componente | Obligatorio | Descripción |
|---|---|---|---|---|
| 1 | Código | input text | Sí | Código del nuevo grupo de unidades |
| 2 | Nombre | input text | Sí | Nombre del nuevo grupo de unidades |
Botón "Agregar selección"
En la parte inferior del diálogo, el botón Agregar selección permite asociar las unidades seleccionadas (mediante checkboxes) al procedimiento de laboratorio actual.
Eliminar elementos
Eliminar procedimiento (LABORATORIOS)
Se accede desde:
- Menú contextual del procedimiento → Eliminar
- Toolbar → Eliminar (con procedimientos seleccionados)
Confirmar eliminación
El sistema muestra un diálogo de confirmación solicitando al usuario que confirme la acción.
Enviar solicitud de eliminación
Se realiza una petición DELETE al endpoint /v2.0.1/erpx/salud/catalogos-laboratorios para eliminar el procedimiento seleccionado.
Confirmación
Si la respuesta es exitosa:
- Se muestra una notificación de éxito.
- Se actualiza la lista de datos en el TreeTable.
Eliminar grupo (GRUPO)
Se accede desde:
- Menú contextual del grupo → Eliminar
- Toolbar → Eliminar (con grupos seleccionados)
Confirmar eliminación
El sistema muestra un diálogo de confirmación solicitando al usuario que confirme la acción.
Enviar solicitud de eliminación
Se realiza una petición DELETE al endpoint /v2.0.1/erpx/salud/catalogos-grupos para eliminar el grupo seleccionado.
Confirmación
Si la respuesta es exitosa:
- Se muestra una notificación de éxito.
- Se actualiza la lista de datos en el TreeTable.
Eliminación por tipo
El sistema utiliza endpoints diferentes según el tipo de elemento a eliminar:
- Procedimiento (tipo
LABORATORIOS): Llama al serviciodeleteCatalogosServicios→ endpoint de catálogos-laboratorios. - Grupo (tipo
GRUPO): Llama al serviciodeleteCatalogoGrupo→ endpoint de catálogos-grupos.
Si un grupo contiene hijos (sub-grupos o procedimientos), la eliminación podría fallar dependiendo de las restricciones del servidor.
Endpoints del módulo
| Método | Endpoint | Descripción |
|---|---|---|
GET | /v2.0.1/erpx/salud/catalogos-laboratorios | Obtener procedimientos de laboratorio |
POST | /v2.0.1/erpx/salud/catalogos-laboratorios | Crear nuevo procedimiento de laboratorio |
PUT | /v2.0.1/erpx/salud/catalogos-laboratorios | Actualizar procedimiento de laboratorio existente |
DELETE | /v2.0.1/erpx/salud/catalogos-laboratorios | Eliminar procedimiento de laboratorio |
GET | /v2.0.1/erpx/salud/catalogos-grupos | Obtener grupos del catálogo |
POST | /v2.0.1/erpx/salud/catalogos-grupos | Crear nuevo grupo |
PUT | /v2.0.1/erpx/salud/catalogos-grupos | Actualizar grupo existente |
DELETE | /v2.0.1/erpx/salud/catalogos-grupos | Eliminar grupo |
Problemas comunes
| Problema | Causa probable | Solución |
|---|---|---|
| No se muestran datos en la tabla | El catalogo_producto_id de la URL no corresponde a un catálogo válido o no tiene datos asociados | Verificar que se accede desde un catálogo válido con datos registrados |
| Al expandir un grupo no carga los hijos | Error de conexión con el servidor durante la carga diferida | Hacer clic en Actualizar en la toolbar para recargar los datos |
| No aparecen las opciones "Nuevo grupo" / "Nuevo procedimiento" en el menú contextual | Se hizo clic en un elemento de tipo LABORATORIOS (procedimiento) | Estas opciones solo están disponibles en el menú contextual de elementos tipo GRUPO |
| Error al guardar procedimiento | Los campos obligatorios Código o Nombre están vacíos | Completar todos los campos marcados como obligatorios |
| Error al eliminar un grupo | El grupo contiene sub-grupos o procedimientos hijos | Eliminar primero todos los elementos hijos del grupo antes de eliminar el grupo padre |
| El selector de Grupo/Familia no muestra opciones | No se han creado grupos en este catálogo | Crear al menos un grupo antes de intentar asignar un procedimiento a un grupo |
| El nivel y la ruta del grupo no se calculan correctamente | Se cambió el grupo padre durante la edición | El sistema recalcula automáticamente estos valores al guardar. Verificar que el grupo padre seleccionado es el correcto |
Páginas relacionadas
- Catálogos — Gestión general de catálogos médicos (Imágenes y Laboratorios)
Catálogos de Imágenes
Gestión de procedimientos de imagen diagnóstica organizados por grupos jerárquicos dentro de un catálogo, con búsqueda avanzada por filtros.
Procedimientos de Imagen
Gestión completa de catálogos de procedimientos de imagen, incluyendo listado de catálogos, procedimientos individuales, grupos jerárquicos y filtros de búsqueda.