DavixDavix ERPX
Configuracion

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:

NivelTexto
1Salud
2Catá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ónIconoTipoComportamiento
Nuevopi pi-plusMenú desplegableDespliega sub-opciones: Procedimiento y Grupo
→ ProcedimientoSub-opciónAbre el diálogo de nuevo procedimiento de laboratorio
→ GrupoSub-opciónAbre el diálogo de nuevo grupo
Actualizarpi pi-refreshBotónRecarga la lista completa de datos desde el servidor
Exportar api pi-downloadMenú desplegableOpciones de exportación de datos
Eliminarpi pi-trashBotónElimina los elementos seleccionados (requiere selección previa)

Columnas de la tabla

El TreeTable muestra 7 columnas:

#ColumnaCampo de datosDescripción
1CódigocodigoCódigo identificador del grupo o procedimiento
2NombresnombreNombre descriptivo del elemento. Es la columna que muestra el icono de expansión del árbol
3DescripcióndescripcionDescripción detallada del elemento
4TipotipoTipo de elemento: GRUPO o LABORATORIOS
5Código CPTcodigo_cptCódigo CPT (Current Procedural Terminology) — solo aplica a procedimientos
6Código SEGUScodigo_segusCódigo SEGUS — solo aplica a procedimientos
7AccionesBotó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, 50 filas.
  • 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:

  1. Procedimientos: GET /v2.0.1/erpx/salud/catalogos-laboratorios — Obtiene los procedimientos de nivel raíz del catálogo.
  2. 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:

  1. Los procedimientos hijos del grupo (filtrados por catalogo_grupo_id).
  2. 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ónIconoAcción
Editarpi pi-pencilAbre el diálogo de edición del procedimiento con los datos precargados
Eliminarpi pi-trashSolicita confirmación y elimina el procedimiento

Menú para elementos tipo GRUPO

OpciónIconoAcción
Nuevo grupopi pi-plusAbre el diálogo de nuevo grupo como hijo del grupo seleccionado
Nuevo procedimientopi pi-plusAbre el diálogo de nuevo procedimiento dentro del grupo seleccionado
Editarpi pi-pencilAbre el diálogo de edición del grupo con los datos precargados
Eliminarpi pi-trashSolicita 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 → NuevoProcedimiento
  • Menú contextual de un GRUPO → Nuevo procedimiento

Se abre un diálogo a pantalla completa con el título "Nuevo Laboratorio".

Campos del formulario

#CampoComponenteObligatorioValidaciónDescripción
1Grupo / Familiap-treeSelectNoSelector 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
2Códigoinput textRequeridoCódigo identificador único del procedimiento
3Nombreinput textRequeridoNombre descriptivo del procedimiento de laboratorio
4DescripcióntextareaNoDescripción detallada del procedimiento
5Código CPTinput textNoCódigo CPT (Current Procedural Terminology) asociado al procedimiento
6Código SEGUSinput textNoCó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ónUbicaciónAcción
CancelarPie del diálogoCierra el diálogo sin guardar cambios
GuardarPie del diálogoValida 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:

  1. Muestra una notificación de éxito.
  2. Cierra el diálogo.
  3. 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:

  1. Muestra una notificación de éxito.
  2. Cierra el diálogo.
  3. Actualiza la lista de datos en el TreeTable.

Crear grupo

Se accede desde:

  • Toolbar → NuevoGrupo
  • 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

#CampoComponenteObligatorioValidaciónDescripción
1Grupop-treeSelectNoSelector 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
2Códigoinput textRequeridoCódigo identificador único del grupo
3Nombreinput textRequeridoNombre descriptivo del grupo
4DescripcióntextareaNoDescripció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ónUbicaciónAcción
CancelarPie del diálogoCierra el diálogo sin guardar cambios
GuardarPie del diálogoValida 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 + 1
  • path = ruta del padre + "," + ID del padre (o solo el ID del padre si no tiene ruta previa)

Si no se seleccionó grupo padre:

  • nivel = 0
  • path = 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:

  1. Muestra una notificación de éxito.
  2. Cierra el diálogo.
  3. 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:

  1. Muestra una notificación de éxito.
  2. Cierra el diálogo.
  3. 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.

El diálogo se divide en dos secciones principales:

Sección izquierda — Lista de unidades

ElementoDescripción
Grupo / UnidadCampo de autocompletado (p-autoComplete) que muestra el grupo o unidad actual. Este campo está deshabilitado (solo lectura)
Tabla de unidadesTabla con selección por checkboxes que muestra las unidades existentes

Columnas de la tabla de unidades:

#ColumnaCampoDescripción
1CheckboxPermite seleccionar la unidad
2CódigocodigoCódigo de la unidad
3NombrenombreNombre de la unidad
4BasebaseIndica si es unidad base
5FactorfactorFactor de conversión
6Unidad sunatunidad_sunatCódigo de unidad SUNAT asociada

Sección derecha — Formularios de creación

Contiene un menú Agregar con dos opciones:

Nueva unidad
#CampoComponenteObligatorioDescripción
1Basep-dropdownNoSelecciona la unidad base de referencia
2Códigoinput textCódigo de la nueva unidad
3Nombreinput textNombre de la nueva unidad
4Factor numeradorinput numberNoNumerador del factor de conversión
5Factor denominadorinput numberNoDenominador del factor de conversión
6Unidad sunatp-dropdownNoUnidad SUNAT asociada (carga desde catálogo de unidades SUNAT)
Nuevo grupo
#CampoComponenteObligatorioDescripción
1Códigoinput textCódigo del nuevo grupo de unidades
2Nombreinput textNombre 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:

  1. Se muestra una notificación de éxito.
  2. 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:

  1. Se muestra una notificación de éxito.
  2. 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 servicio deleteCatalogosServicios → endpoint de catálogos-laboratorios.
  • Grupo (tipo GRUPO): Llama al servicio deleteCatalogoGrupo → 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étodoEndpointDescripción
GET/v2.0.1/erpx/salud/catalogos-laboratoriosObtener procedimientos de laboratorio
POST/v2.0.1/erpx/salud/catalogos-laboratoriosCrear nuevo procedimiento de laboratorio
PUT/v2.0.1/erpx/salud/catalogos-laboratoriosActualizar procedimiento de laboratorio existente
DELETE/v2.0.1/erpx/salud/catalogos-laboratoriosEliminar procedimiento de laboratorio
GET/v2.0.1/erpx/salud/catalogos-gruposObtener grupos del catálogo
POST/v2.0.1/erpx/salud/catalogos-gruposCrear nuevo grupo
PUT/v2.0.1/erpx/salud/catalogos-gruposActualizar grupo existente
DELETE/v2.0.1/erpx/salud/catalogos-gruposEliminar grupo

Problemas comunes

ProblemaCausa probableSolución
No se muestran datos en la tablaEl catalogo_producto_id de la URL no corresponde a un catálogo válido o no tiene datos asociadosVerificar que se accede desde un catálogo válido con datos registrados
Al expandir un grupo no carga los hijosError de conexión con el servidor durante la carga diferidaHacer clic en Actualizar en la toolbar para recargar los datos
No aparecen las opciones "Nuevo grupo" / "Nuevo procedimiento" en el menú contextualSe 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 procedimientoLos campos obligatorios Código o Nombre están vacíosCompletar todos los campos marcados como obligatorios
Error al eliminar un grupoEl grupo contiene sub-grupos o procedimientos hijosEliminar primero todos los elementos hijos del grupo antes de eliminar el grupo padre
El selector de Grupo/Familia no muestra opcionesNo se han creado grupos en este catálogoCrear al menos un grupo antes de intentar asignar un procedimiento a un grupo
El nivel y la ruta del grupo no se calculan correctamenteSe cambió el grupo padre durante la ediciónEl 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)