Skip to main content

Glosario

El vocabulario mínimo para leer código y entender una conversación del equipo. Si sos nuevo, empezá acá.

Catálogo: elemento ≠ producto

Es la primera distinción que hay que tener clara.

Elemento (ELEMENTS)Producto (PRODUCTS)
Qué esQué es clínicamente: concentrador de O₂, máscara, tubo, reguladorLa variante comercial: marca y modelo de ese elemento
Identificadorcode, con formato O-99XXXXsku, único, la clave de búsqueda canónica
ClasificaciónelementType: DISPOSABLE (0) · INVENTORIABLE (1) · REUSABLE (2)supplyType: TRACKABLE (1) = por serial · BULK (2) = por cantidad

Un producto siempre pertenece a un elemento. Existen productos "Genérico" para cuando no se sabe la marca; los genéricos seriados se reclasifican después por el prefijo del número de serie.

Nunca hardcodees ids

Ni de productos, ni de elementos, ni de estados. Los productos se buscan por sku, los elementos por code y los estados por CODE + ENTITYCODE.

Inventario

TérminoQué es
Supply (SUPPLIES)Una unidad física (o un bulto). Su ubicación actual es la dupla ATENTITYCODE + ATENTITYID
SupplyMovement (+ Detail, History)El movimiento entre entidades y su historial cronológico. Hay una fila abierta por supply, sin endDate
Reserva (SUPPLIESRESERVATION)Bloquea stock para un remito en preparación sin bajarlo
SupplyNoteEl documento de compra al proveedor; da de alta supplies en un depósito
Depósito / almacén (WAREHOUSES)CENTRAL, REGIONAL, REGULAR, WORKSHOP, INDEPENDENT
MTNEl "depósito" lógico de mantenimiento/vehículo al que se transfiere lo retirado
Taller (REPAIRSHOPS)Taller externo de reparación; destino válido de un supply

Paciente

  • Patient Supply / PS (PATIENTSUPPLIES) — el vínculo paciente ↔ supply durante un período (startingDateendDate). Es lo que responde "¿qué tiene el paciente hoy?".
    • Soporta jerarquía (hierarchy, isChild) para recambios y recargas.
    • SUPPLYID puede ser NULL: cuando se asigna algo seriable sin conocer la serie, existe el PS "huérfano" y el supply se materializa después, al cerrar un retiro o una visita.
  • Proceso de atención (ATENTIONPROCESS) — la etapa de seguimiento que hila autorizaciones y contactos. Los "eventos del paciente" son entradas de auditoría con entityCode = ATENTIONPROCESS.

Documentos

Autorización / OP

Authorizations. El permiso formal de la obra social. Sus renglones son AuthorizationDetails (elemento + cantidad + si es obligatorio). De una autorización aprobada salen uno o más remitos.

Remito

DELIVERYNOTES. El documento de la operación en el domicilio. Su tipo decide todo el flujo de cierre:

deliveryNoteTypeEn códigoCómo se le diceSub-SP de cierre
0PRIMARYentregasp_close_delivery
1SUPPLYvisita técnicasp_close_visit
2WITHDRAWALretirosp_close_retirement

Detalle de remito

DELIVERYNOTESDETAIL. Una línea. Lleva tres cantidades distintas, y hay que respetarlas:

amountRequired → amountAccepted → amountDelivered
(lo pedido) (lo que el (lo que el
depósito aceptó) transportista entregó)
Se permite entregar más de lo aceptado

Es una decisión del negocio, no un bug. El cierre del remito no debe fallar por sobre-entrega; el SP genera líneas sintéticas para cubrir la diferencia.

El campo changeType (o changeCause) dice qué hay que hacer con esa línea:

ValorConstanteSignificado
0DELIVERYEntrega
1CHANGERecambio
2RECHARGERecarga
3OTHEROtros
4SERVICEServicio
5NOACTIONSin acción

En una visita, cada línea puede entregar, retirar, las dos cosas o ninguna, según este valor.

La causa de cambio no muta

Queda fijada al solicitar el remito y no puede cambiar al aceptar ni al entregar. Un remito creado como "entrega" que después se edita a "recambio" revienta al cerrar: el paciente no tiene un suministro de ese elemento para recambiar.

Hoja de ruta / despacho

DELIVERYNOTESDISPATCH + DELIVERYNOTESDISPATCHDETAIL. El viaje del transportista. Cada detalle es una parada o tarea (typeOfAction: DELIVERY o TASK), con el ciclo planificado → aceptado → en curso → finalizado, más estados intermedios de pausa y falla.

CURRENTDELIVERYNOTESDISPATCHID apunta al detalle

A pesar del nombre, esa columna de DELIVERYNOTES guarda el id del DETALLE de la hoja de ruta, no el de la hoja. Es un error clásico al escribir queries.

Firma

SIGNATURE. Firma digital con toda la metadata forense: hash de la imagen, IP, geolocalización, tipo de red (móvil/WiFi), DNI y datos del firmante, tipo de firmante (paciente / transportista / otros) y versión de la app.

Organización

TérminoQué es
Unidad de gestión / UGL (MANAGEMENTUNITS)La raíz organizativa. Casi toda consulta se scopea por las unidades del usuario
Agencia (AGENCIES)Sucursal dentro de una unidad; cada paciente está adscripto a una
Transportista (TRANSPORTIST)Repartidor. Puente entre el User (acceso al sistema) y el Employee (rol laboral)

Estados

No hay enums de estado en columnas. Todo apunta a una fila de configuration.EntityStatus, que se resuelve por CODE + ENTITYCODE:

SELECT ID FROM configuration.EntityStatus
WHERE CODE = 'USE' AND ENTITYCODE = 4 /* SUPPLY */ LIMIT 1;

Los códigos usados desde TypeScript están centralizados en src/migrations/EntityStatusMigrations.ts.