El módulo de Banco de Sangre gestiona dos flujos principales e independientes que comparten infraestructura de laboratorio y almacén:
🩸 Flujo Disponente Donador
Proceso completo desde el registro inicial hasta el almacenamiento de hemocomponentes procesados y disponibles para surtido.
BancoSangre
🏥 Flujo Receptor CENSUR
Solicitud de productos sanguíneos, tipar y cruzar, pedido a sede, cobro y vigilancia de reacciones transfusionales.
BancoSangreSocios
Flujo
Actor Principal
Modelo Central
Descripción
Disponente
Donador de sangre
BancoSangre
Proceso completo desde registro hasta almacenamiento de hemocomponentes
Receptor / CENSUR
Receptor de sangre
BancoSangreSocios
Solicitud, tipar y cruzar, entrega de productos sanguíneos
1. BancoSangre — Expediente del Disponente
models/bancoDeSangre/modelBancoSangre.js
Campo Tipo Referencia Descripción
pacienteObjectId PacientePaciente/donador
cuestionarioautoexclusionObjectId modelCuestioExclusionCuestionario de autoexclusión
signosvitalesObjectId SignosVitalesBSTalla, peso, IMC, T/A
historiaclinicaObjectId HistoriaClinicaBSHistoria clínica completa
hojaevolucionObjectId hojaEvolucionBSExploración física del médico
reaccionesderivadasObjectId ReaccionesDerivadasBSReacciones durante la donación
flebotomiaObjectId FlebotomiaBSDatos de la extracción de sangre
laboratorio[ObjectId] LaboratorioBSEstudios de laboratorio
almacen[ObjectId] productosAlmacenStockHemocomponentes generados
procesoString — NUEVO · ENFERMERIA · DOCTOR · FLEBOTOMIA · SEROLOGIA · FINALIZADO
estatusString — DISPONIBLE · DIFERIDO · EN PROCESO
motivoString — Motivo de diferimiento
tiempo_rechazoString — Fecha de diferimiento
fecha_terminoDate — Fecha en que termina el periodo de diferimiento
2. BancoSangreSocios — Expediente del Receptor (CENSUR)
models/bancoDeSangre/modelBancoSangreTercero.js
Campo Tipo Referencia Descripción
pacienteObjectId PacientePaciente receptor
receptorObjectId DocumentosBSDocumentos del receptor
pedidoObjectId pedidosSedesBancoOrden de pedido de hemocomponentes
tiparycruzar[ObjectId] LaboratorioBSEstudios de tipo y cruce
proceso_censurObjectId BancoSangreSociosProcesosSeguimiento de procesos (4 etapas)
ventaCensur[ObjectId] carritoCensurVenta/cobro de productos
tipo_productoString — Tipo de producto solicitado
estatusString — RECEPTOR · REACCIONES TRANSFUCIONALES
huboReaccionAdversaString — SI / NO
Campo Tipo Descripción
tallaNumber Altura en cm
pesoNumber Peso en kg
imcNumber Índice de masa corporal
tempNumber Temperatura
sistolicaNumber Presión sistólica
diastolicaNumber Presión diastólica
huellasMultiplesString Huellas venopunción múltiples
huellasRecientesString Huellas venopunción recientes
Campo Descripción
bancodesangreRef a BancoSangre
disponenteRef a DocumentosBS
tipo_de_sangreadoTipo de extracción
tipo_de_donadorAltruista, reposición, etc.
volumenVolumen extraído
tiempoTiempo de extracción
Uso Campo ref
Biometría Hemática laboratorio → BancoSangre
Grupo y RH laboratorio → BancoSangre
Serología laboratorio → BancoSangre
Tipo y Cruce tiparycruzar → BancoSangreSocios
Campo Descripción
piel, mucosas, toraxHallazgos por aparato
abdomen, higado, bazoHallazgos por aparato
gangliosHallazgos ganglionares
candidato_donacionAprobación médica
cie10Diagnóstico CIE-10
5. HistoriaClinicaBS
models/bancoDeSangre/modelHistoriaClinica.js
Más de 80 campos cubriendo todas las áreas clínicas relevantes para la donación de sangre:
Área Contenido
Infecciosos Hepatitis, VIH, COVID, paludismo, Chagas, sífilis, brucelosis
Quirúrgicos / Médicos Cirugías, transfusiones previas, enfermedades crónicas
Medicamentos Anticoagulantes, retinoides, hormonas, antibióticos
Conductas de riesgo Tatuajes recientes, perforaciones, uso de drogas
Ginecobstétricos Embarazo, lactancia, menstruación, fecha última regla
13. Modelos Auxiliares
Modelo Archivo Descripción
almacenProductosmodels/warehouse/modelProductos.jsCatálogo admin de productos/materiales
productosAlmacenStockmodels/almacen/stock/modelProductosStock.jsUnidades individuales en stock (con QR)
carritoCensurmodels/almacen/stock/carritoCensur.jsCobro/venta de productos a receptores
DocumentosBSmodels/bancoDeSangre/modelDocumentos.jsArchivos digitales del disponente/receptor
EstudiosLabBSmodels/bancoDeSangre/modelEstudios.jsCatálogo de estudios de laboratorio
TipeyCruceBSmodels/bancoDeSangre/modelTipeyCruce.jsResultados de tipo y cruce
proveedoresBSmodels/almacen/proveedores/porveedorModel.jsProveedores de insumos
cSeguimientomodels/almacen/modelSeguimiento.jsSeguimientos interdepartamentales
serviciosCensurmodels/almacen/modelServicios.jsCatálogo de servicios de CENSUR
Método Endpoint Descripción
POST /bancodesangreCrear nuevo expediente de banco de sangre para un paciente
PUT /agregar/procesobancodesangreActualizar proceso, estatus, motivo y fecha_termino
GET /getdisponente/:idObtener expediente completo por ID de banco de sangre
GET /getdisponente/por/paciente/:idObtener expediente completo por ID de paciente
GET /disponentesListar todos los disponentes con todos sus datos
POST /diferir/disponenteMarcar disponente como DIFERIDO con motivo
GET /orden/receptoresListar órdenes con estatus RECEPTOR
GET /orden/receptor/:idObtener una orden de receptor por ID
GET /disponentes/contarConteo total de expedientes
POST /disponente/visitasContar donaciones FINALIZADAS de un paciente
POST /getdisponente/visitasContar todas las visitas de un paciente
POST /disponentes/grupoyrhBuscar disponentes por tipo de sangre, agrupados por hemocomponente
POST /disponentes/diferidosListar diferidos de un paciente
GET /historico/disponentes/diferidosHistórico global de diferidos
POST /historico/banco/disponenteHistórico de donaciones de un paciente con flebotomía
GET /historico/disponente/bs/:idDetalle de un expediente histórico
POST /verificar/disponenteVerificar si un paciente tiene expedientes previos
GET /bancosListar todos los expedientes (sin populate)
POST /bancos/usuario/nodonacionVerificar si el disponente tiene proceso FINALIZADO o es primera vez
Método Endpoint Descripción
POST /censurCrear expediente de receptor y proceso de seguimiento
POST /receptor/documentosAgregar documentos al expediente del receptor
PUT /actualizar/receptor/documentos/:idActualizar documentos del receptor
POST /documentos/censurGuardar documentos y vincular a CENSUR
POST /cargar/documentos/censurSubir documentos a AWS S3
POST /ordenarpedido/censurCrear orden de pedido de hemocomponentes a sede
GET /productos/censurObtener stock de los 4 productos principales de BS
POST /receptoresListar receptores por sede
POST /informacion/receptor/pedidoDetalle de productos en tipo y cruce
POST /informacion/receptorInformación completa de un expediente CENSUR
POST /ordenar/tipeycruceCrear orden de tipo y cruce para receptor
POST /procesos/orden/censurVer procesos de seguimiento de una orden
POST /procesos/documentos/receptorVer proceso de documentos
POST /procesos/tipar/cruzarVer proceso de tipar y cruzar
POST /procesos/historico/documentoVer proceso de histórico
POST /procesos/entrega/productosVer proceso de entrega
GET /productos/materiales/servicios/censurListar productos con laboratorio CENSUR
PUT /actulizar/estado/pedido/censur/:idActualizar estatus de pedido
PUT /actulizar/estado/recpetor/censur/:idActualizar estatus del receptor
GET /ver/pedidos/detalle/:idVer detalle de un pedido y datos del paciente
GET /reacciones/transfucionalesListar receptores con reacciones transfusionales
PUT /agregar/documentos/banco/sangres/socios/:idActualizar datos del expediente CENSUR
POST /agregar/documentos/receptorGuardar documentos de reacciones del receptor
GET /ver/documentos/receptor/:idCensurObtener documentos de un receptor
Método Endpoint Descripción
GET /minialmacenListar productos activos
GET /count/total/productosContar total de productos en catálogo
GET /actualizar/status/etiqueta/:idMarcar etiqueta como descargada
POST /agregar/productos/almacenCrear producto en catálogo admin
GET /ver/todos/productos/almacenListar productos activos tipo PRODUCTO
GET /ver/producto/almacen/por/id/:idObtener producto del catálogo por ID
PUT /actualizar/productos/costo/:idActualizar costo de un proveedor en producto
PUT /actualizar/productos/stock/almacen/:idActualizar unidad de stock por ID
GET /ver/productos/almacen/por/id/:idObtener unidades en stock de un producto
GET /ver/productos/salidasListar unidades marcadas para desecho
PUT /actualizar/productos/almacen/:idActualizar datos de producto en catálogo
POST /agregar/productos/almacen/stockIngresar N unidades al stock con QR automático
GET /vender/producto/stock/:idMarcar unidad como VENDIDA (vía QR)
POST /vender/producto/stock/:idMarcar unidad como VENDIDA (vía API)
GET /obtener/todos/produtos/stockListar todo el stock ordenado por caducidad
GET /desactivar/producto/almacen/:idDesactivar producto del catálogo
POST /agregar/nuevo/material/banco/sangreCrear nuevo material en catálogo
GET /ver/materiales/allListar todos los materiales
POST /buscar/nombre/productos/materialesBuscar por nombre en productos y materiales
GET /buscar/materiales/banco/sangre/:idBuscar material por ID
GET /materiales/banco/sangreListar materiales activos
GET /count/all/materiales/:tokenContar materiales activos
Método Endpoint Descripción
POST /nuevo/estudio/bancoCrear tipo de estudio en el catálogo
GET /obtener/estudio/banco/:idObtener un tipo de estudio por ID
PUT /actualizar/estudiosActualizar valores de referencia de un estudio
PUT /proceso/laboratorioCambiar estatus del proceso de laboratorio
GET /todos/estudioListar todos los estudios del catálogo
POST /analisis/estudiosRegistrar biometría hemática y vincular al expediente
POST /analisis/grupoRegistrar grupo y RH, actualizar tipo de sangre del paciente
POST /analisis/serologiaRegistrar serología y generar hemocomponentes en stock con QR
POST /analisis/tipeycruceRegistrar tipo y cruce para un receptor (CENSUR)
POST /pedido/laboratorio/:idObtener pedido de laboratorio por ID
GET /obtener/banco/banco/:idObtener expediente bancario con datos del paciente
GET /hoja/servicio/laboratorio/:idHoja de servicio con paciente, laboratorio y flebotomía
POST /laboratorios/doctorListar laboratorios de un expediente con resultados
POST /laboratorios/servicios/procesoObtener estatus de estudios de un expediente
PUT /actualizar/analisis/estudiosActualizar resultados de biometría por el médico
POST /pedido/laboratorioListar laboratorios de un expediente
GET /labListar todos los expedientes bancarios
Método Endpoint Descripción
GET /flebotomia/:idObtener datos del expediente con signosvitales y laboratorio
GET /flebotomia/prueba/algoJob: actualizar disponentes cuyo diferimiento terminó
GET /ver/lista/disponentes/disponiblesListar disponentes con estatus DISPONIBLE
POST /flebotomiaRegistrar extracción de sangre y vincular al expediente
Método Endpoint Descripción
POST /agergar/carrito/censurCrear venta con métodos de pago mixtos y folio automático
GET /ver/carritos/cesnurListar todas las ventas
GET /carrito/censur/unico/:idObtener una venta por ID
DELETE /eliminar/carrito/censur/:idEliminar una venta
PUT /actualizar/carrito/products/:idActualizar datos de una venta
Archivo Método Endpoint Descripción
autoexclusion.jsPOST /cuestionario/autoexclusionGuardar 13 preguntas de autoexclusión
signosvitales.jsPOST /agregar/signosvitalesRegistrar talla, peso, IMC, T/A
PUT /actualizar/religionActualizar religión del paciente
PUT /actualizar/tipoSangre/pacienteActualizar tipo de sangre
historiaclinica.jsPOST /agregar/historiaclinicaGuardar historia clínica (80+ campos)
hojaevolucion.jsPOST /agregar/hojadeevolucionRegistrar exploración física
disponente.jsPUT /agregar/lugardeorigenActualizar lugar de origen
PUT /agregar/productodeorigenActualizar tipo de donante
POST /ordenar/laboratoriosCrear orden de laboratorio
reaccionesderivadas.jsPOST /agregar/reaccionesderivadasRegistrar reacciones durante la donación
bitacoras.jsGET /bitacora/enfermeriaDisponentes en proceso enfermería
GET /bitacora/doctorDisponentes en proceso médico
GET /bitacora/flebotomiaDisponentes en proceso flebotomía
GET /bitacora/laboratorioDisponentes en proceso laboratorio
GET /bitacora/almacenTodos los disponentes con hemocomponentes
proveedores.jsPOST /registro/proveedorRegistrar nuevo proveedor
GET /ver/proveedoresListar proveedores activos
GET /ver/proveedor/por/id/:idObtener proveedor por ID
PUT /actualizar/proveedor/:idActualizar datos de proveedor
GET /desactivar/proveedor/por/id/:idDesactivar proveedor
sedes.jsPOST /crear/sede/bsRegistrar nueva sede
GET /listado/sedes/banco/sangre/Listar todas las sedes
GET /detalle/sede/:idDetalle de una sede
GET /ver/sedeSedes ordenadas por responsable
GET /ver/sedes/:idPedidos de una sede
jefeabanco.jsGET /gethistorico/:idHistórico completo de donaciones
routesSeguimientos.jsPOST /crear/nuevo/seguimientoCrear seguimiento entre departamentos
GET /ver/seguimientos/creadosListar todos los seguimientos
PUT /actualizar/seguimiento/:idActualizar seguimiento
DELETE /eliminar/seguimiento/:idEliminar seguimiento
serviciosBS.jsPOST /agregar/servicio/censurCrear servicio en catálogo CENSUR
GET /ver/servicios/censurListar todos los servicios
GET /ver/folio/serviciosObtener número de folio
GET /ver/servicio/banco/sangre/:idObtener servicio activo por ID
👤 Enfermera · Médico · Flebotomista · Laboratorista
1 Paciente llega al banco de sangre
2 Enfermería crea el expediente POST /bancodesangre
3 Registra autoexclusión POST /cuestionario/autoexclusion
4 Toma signos vitales POST /agregar/signosvitales
5 Médico revisa historia clínica POST /agregar/historiaclinica
6 Médico realiza exploración física POST /agregar/hojadeevolucion
7 Médico aprueba candidato a donación
8 Técnico registra extracción POST /flebotomia
9 Laboratorio procesa biometría POST /analisis/estudios
10 Determina grupo y RH POST /analisis/grupo
11 Serología → genera hemocomponentes con QR POST /analisis/serologia
12 Proceso FINALIZADO, estatus DISPONIBLE
👤 Médico
1 Médico evalúa al disponente
2 Decide diferir con motivo clínico POST /diferir/disponente
3 El disponente queda inactivo (DIFERIDO)
4 Se consulta histórico GET /historico/disponentes/diferidos
5 Job revisa fecha_termino y reactiva GET /flebotomia/prueba/algo
👤 Laboratorista · Jefe de Banco
1 Solicitar sangre compatible POST /disponentes/grupoyrh
2 Sistema filtra pacientes con ese tipo de sangre
3 Clasifica hemocomponentes: CE · CP · PL · PT
4 Ordena por fecha de caducidad PEPS
5 Retorna el más próximo a caducar primero
👤 Personal CENSUR · Laboratorista
1 Crear expediente receptor POST /censur
2 Cargar documentos médicos POST /receptor/documentos
3 Ordenar tipo y cruce POST /ordenar/tipeycruce
4 Laboratorio registra tipo y cruce POST /analisis/tipeycruce
5 Generar pedido a sede POST /ordenarpedido/censur
6 Registrar cobro mixto POST /agergar/carrito/censur
7 Marcar unidades VENDIDAS GET /vender/producto/stock/:id
👤 Almacenista · Laboratorista
1 Serología genera unidades en stock con QR automático
2 Ver stock GET /obtener/todos/produtos/stock
3 Ordenado por fecha_caducidad ASC (PEPS)
4 Gestionar desechos GET /ver/productos/salidas
5 Ingresar materiales POST /agregar/nuevo/material/banco/sangre
👤 Técnico de Flebotomía · Médico
1 Reacción ocurre durante la extracción
2 Técnico registra: vasovagal/venopunción/citrato POST /agregar/reaccionesderivadas
3 Médico registra tratamiento
4 Para receptor: actualizar estatus REACCIONES TRANSFUCIONALES
5 Listar casos GET /reacciones/transfucionales
👤 Administrador
1 Registrar nueva sede POST /crear/sede/bs
2 Ver listado GET /listado/sedes/banco/sangre/
3 Ver pedidos de una sede GET /ver/sedes/:id
4 Gestionar proveedores de insumos POST /registro/proveedor
Flujo Completo del Disponente
PACIENTE
│
▼
┌─────────────────────────────────────────────────────────┐
│ ENFERMERÍA │
│ ├── POST /bancodesangre ← Crear expediente│
│ ├── POST /cuestionario/autoexclusion ← 13 preguntas │
│ └── POST /agregar/signosvitales ← Talla, peso,T/A│
└─────────────────────────────────────────────────────────┘
│ (proceso: DOCTOR)
▼
┌─────────────────────────────────────────────────────────┐
│ MÉDICO │
│ ├── POST /agregar/historiaclinica ← 80+ campos │
│ ├── POST /agregar/hojadeevolucion ← Exploración │
│ └── Decisión: │
│ ├── APTO → PUT /agregar/procesobancodesangre │
│ └── NO APTO → POST /diferir/disponente │
└─────────────────────────────────────────────────────────┘
│ (proceso: FLEBOTOMIA)
▼
┌─────────────────────────────────────────────────────────┐
│ TÉCNICO DE FLEBOTOMÍA │
│ └── POST /flebotomia ← Registrar │
└─────────────────────────────────────────────────────────┘
│ (proceso: LABORATORIO)
▼
┌─────────────────────────────────────────────────────────┐
│ LABORATORISTA │
│ ├── POST /analisis/estudios ← Biometría │
│ ├── POST /analisis/grupo ← Grupo y RH │
│ └── POST /analisis/serologia ← Serología + QR │
└─────────────────────────────────────────────────────────┘
│ (estatus: DISPONIBLE)
▼
┌─────────────────────────────────────────────────────────┐
│ ALMACÉN — Hemocomponentes disponibles │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ │ CE │ │ CP │ │ PL │ │ PT │ │
│ └────┘ └────┘ └────┘ └────┘ │
│ Eritrocitario Plaquetario Plasma Plaquetas │
└─────────────────────────────────────────────────────────┘
Flujo del Receptor (CENSUR)
RECEPTOR
│
▼
┌─────────────────────────────────────────────────────────┐
│ PERSONAL CENSUR │
│ ├── POST /censur ← Expediente + procesos │
│ ├── POST /receptor/documentos ← Documentos médicos │
│ └── POST /ordenar/tipeycruce ← Solicitar T y C │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ LABORATORIO │
│ └── POST /analisis/tipeycruce ← Procesar tipo y cruce │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ PERSONAL CENSUR │
│ └── POST /ordenarpedido/censur ← Pedido a sede │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ SEDE BANCO DE SANGRE │
│ └── Procesa y entrega hemocomponentes │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ CAJA / COBRO │
│ ├── POST /agergar/carrito/censur ← Cobro mixto │
│ └── GET /vender/producto/stock/:id ← VENDIDA (QR) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ MONITOREO │
│ └── GET /reacciones/transfucionales ← Vigilancia │
└─────────────────────────────────────────────────────────┘
Bitácoras por Área
Área Endpoint Filtra por
🏥 Enfermería GET /bitacora/enfermeriaproceso: 'enfermeria'
⚕️ Médico GET /bitacora/doctorproceso: 'doctor'
🩸 Flebotomía GET /bitacora/flebotomiaproceso: 'FLEBOTOMIA'
🔬 Laboratorio GET /bitacora/laboratorioproceso: 'DOCTOR' | 'SEROLOGIA'
📦 Almacén GET /bitacora/almacenTodos (con almacen)
┌──────────────────┐
│ Paciente │
│ (nuevoPaciente) │
└────────┬─────────┘
│ 1 : N
┌──────────────────┴──────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────────┐
│ BancoSangre │ │ BancoSangreSocios │
│ (Disponente) │ │ (Receptor/CENSUR) │
└────────┬────────┘ └──────────┬───────────┘
│ │
┌──────────┴──────────────────┐ ┌─────────────┴────────────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌───────────────┐ ┌───────────────────────┐ ┌──────────────────────────┐
│ modelCuestio │ │ LaboratorioBS │ │ BancoSangreSociosProcesos│
│ Exclusion │ │ (polimórfico) │ │ (4 etapas seguimiento) │
│ (13 preguntas)│ │ │ └──────────────────────────┘
└───────────────┘ └────────────┬───────────┘ ┌──────────────────────────┐
┌───────────────┐ │ doble uso │ pedidosSedesBanco │
│ SignosVitalesBS│ ├──────────────── │ │
└───────────────┘ Disponente BS └──────────────────────────┘
┌───────────────┐ (via laboratorio field) ┌──────────────────────────┐
│HistoriaClinica│ │ carritoCensur │
│ BS │ Receptor BS │ (cobro / venta) │
└───────────────┘ (via tiparycruzar) └──────────────────────────┘
┌───────────────┐
│ hojaEvolucion │
│ BS │
└───────────────┘
┌───────────────┐ ┌────────────────────────┐
│ Reacciones │ │ almacenProductos │
│ DerivadasBS │ │ (Catálogo admin) │
└───────────────┘ └──────────┬─────────────┘
┌───────────────┐ │ 1 : N
│ FlebotomiaBS │ ▼
└───────────────┘ ┌────────────────────────┐
┌───────────────┐ │ productosAlmacenStock │
│ productos │ │ (Unidades en stock │
│ AlmacenStock │◄────────│ con código QR) │
│ (QR) │ └────────────────────────┘
└───────────────┘
Modelos de catálogo / soporte:
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ EstudiosLabBS │ │ Sedesbs │ │ proveedoresBS │
│ (tipos estudio) │ │ (sedes banco) │ │ (insumos) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ DocumentosBS │ │ TipeyCruceBS │ │ cSeguimiento │
│ (archivos disp./ │ │ (tipo y cruce) │ │ (inter-dep.) │
│ receptor) │ │ │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
┌──────────────────┐
│ serviciosCensur │
│ (catálogo CENSUR)│
└──────────────────┘
ServiciosBS/serviciosBS.js4
Total de endpoints documentados
122
📲 Generación de Código QR
Al ingresar productos al stock y al finalizar serología, el sistema genera automáticamente un código QR por unidad apuntando a GET /vender/producto/stock/:id. Librería: qrcode.
🔢 Lote Unitario Secuencial
Cada unidad de stock recibe un lote_unitario calculado contando cuántos documentos del mismo producto existen en la colección antes de guardar.
🩸 Clasificación de Hemocomponentes
Los hemocomponentes se identifican por patrón regex en lote_unitario:
/CE/i → Concentrado Eritrocitario
/CP/i → Concentrado Plaquetario
/PL/i → Plasma
/PT/i → Plaquetas
💰 Precios Unificados
Al agregar nuevas unidades al stock, el sistema compara el precio con las unidades existentes del mismo producto y actualiza TODAS las unidades al precio más alto.
⏱️ Disponibilidad Automática
GET /flebotomia/prueba/algo actúa como job de revisión: compara fecha_termino con la fecha actual y regresa a DISPONIBLE a los disponentes diferidos cuyo tiempo expiró.
☁️ Almacenamiento en AWS S3
Los documentos del receptor se suben a AWS S3 mediante multer en el endpoint POST /cargar/documentos/censur. Las URLs resultantes se almacenan en el modelo DocumentosBS.
📐 Modelo Polimórfico LaboratorioBS
Un único modelo es usado para 4 contextos distintos. La diferenciación se hace por el campo de referencia presente: laboratorio para disponente, tiparycruzar para receptor.
📦 Ordenamiento PEPS
El stock de hemocomponentes se ordena por fecha_caducidad ASC garantizando que los productos más próximos a caducar se consuman primero (Primeras Entradas, Primeras Salidas).
🩸 Banco de Sangre — Documentación Técnica
centro-horizonte-back | Generado: Junio 2026 | 122 endpoints · 18 módulos