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é es | Qué es clínicamente: concentrador de O₂, máscara, tubo, regulador | La variante comercial: marca y modelo de ese elemento |
| Identificador | code, con formato O-99XXXX | sku, único, la clave de búsqueda canónica |
| Clasificación | elementType: 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.
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érmino | Qué 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 |
| SupplyNote | El documento de compra al proveedor; da de alta supplies en un depósito |
Depósito / almacén (WAREHOUSES) | CENTRAL, REGIONAL, REGULAR, WORKSHOP, INDEPENDENT |
| MTN | El "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 (startingDate→endDate). Es lo que responde "¿qué tiene el paciente hoy?".- Soporta jerarquía (
hierarchy,isChild) para recambios y recargas. SUPPLYIDpuede serNULL: 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.
- Soporta jerarquía (
- Proceso de atención (
ATENTIONPROCESS) — la etapa de seguimiento que hila autorizaciones y contactos. Los "eventos del paciente" son entradas de auditoría conentityCode = 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:
deliveryNoteType | En código | Cómo se le dice | Sub-SP de cierre |
|---|---|---|---|
| 0 | PRIMARY | entrega | sp_close_delivery |
| 1 | SUPPLY | visita técnica | sp_close_visit |
| 2 | WITHDRAWAL | retiro | sp_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ó)
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:
| Valor | Constante | Significado |
|---|---|---|
| 0 | DELIVERY | Entrega |
| 1 | CHANGE | Recambio |
| 2 | RECHARGE | Recarga |
| 3 | OTHER | Otros |
| 4 | SERVICE | Servicio |
| 5 | NOACTION | Sin acción |
En una visita, cada línea puede entregar, retirar, las dos cosas o ninguna, según este valor.
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 detalleA 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érmino | Qué 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.