Farmacia en Axentra: el único módulo en RD que cumple Decreto 246-06 y Ley 50-88 nativo
Construimos el módulo de farmacia junto a uno de nuestros primeros clientes, una farmacia conocida en el país. Trazabilidad de lote, registro de psicotrópicos, proceso de recall y dispensa de controlados, todo dentro del marco regulatorio dominicano. Nadie más en el mercado lo hace nativo.
Hace unos meses, una farmacia conocida en Santo Domingo nos pidió que les construyéramos el módulo que necesitaban. No era un detalle de UX ni un reporte adicional: era el cumplimiento real de Decreto 246-06 (medicamentos) y Ley 50-88 (psicotrópicos), las dos piezas regulatorias más fuertes que aplican a una farmacia dominicana. Un ERP regional típico cubre la facturación electrónica de RD y el flujo de POS, sí, pero el cumplimiento sanitario lo deja afuera. Eso fuerza al farmacéutico a llevar registros paralelos en Excel, planillas físicas y la cabeza de quien sabe la jugada. Cuando llega una inspección de MISPAS, ese sistema paralelo es el que se queda sin respuestas.
Hoy publicamos el módulo de Farmacia + Cumplimiento dentro de Axentra. Y, hasta donde sabemos, es el único módulo de farmacia disponible en el mercado dominicano que cubre el marco regulatorio local de manera nativa, no como un add-on, no como una hoja de Excel exportable, sino dentro del mismo flujo de inventario, POS, contabilidad y e-CF.
El problema que ningún ERP regional resuelve
Un ERP construido para Chile, México o Colombia trata la farmacia como un cliente de retail con productos perecederos. El cumplimiento legal en cada país es distinto, así que el approach genérico es: “te damos campos de fecha de vencimiento, lo demás lo configuras tú”. Eso funciona si tienes un farmacéutico con tiempo libre y disciplina de Excel. No funciona si quieres pasar inspección sin sobresaltos.
El marco dominicano es preciso:
- Decreto 246-06 Art. 43: cada unidad de medicamento tiene que registrar número de lote y fecha de vencimiento. Trazabilidad por establecimiento de la entrada del medicamento (Art. 105).
- Ley 50-88 + Decreto 288-96: las farmacias que dispensen psicotrópicos de Lista I a V deben llevar un registro disponible para el Ministerio de Salud y la Dirección Nacional de Control de Drogas. Captura obligatoria de cédula del paciente, número de receta, médico que prescribe.
- DIGEMAPS pharmacovigilance: cuando un fabricante notifica un recall, la farmacia es responsable de aislar y dar de baja el lote afectado. Sin trazabilidad por lote, eso es imposible de hacer correctamente.
- Pro Consumidor + alimentos: trazabilidad por lote también para procedimientos de recall sectoriales (carnes, lácteos, alcohol, tabaco vía Traffico).
Cada uno de estos pedazos tiene un comportamiento que no es opcional: el registro de psicotrópicos tiene que ser legalmente inmutable una vez escrito, el POS tiene que dispensar siempre el lote más cercano a vencer, y un recall tiene que reportar paso por paso sin perder ningún registro si el sistema se cae a media ejecución. Todo eso vive en código, no en buenas intenciones.
Lo que construimos
Trazabilidad de lote por producto
Cada producto en Axentra tiene un modo de rastreo: bulto (cantidad agregada), lote (con número, fabricación y vencimiento) o serial (por unidad). Para una farmacia, los medicamentos no controlados van en modo lote, los psicotrópicos en serial.
Cuando recibes mercancía, el sistema crea o reutiliza el lote por (producto, número de lote). Si configuraste la vida útil del producto, el vencimiento se calcula automáticamente sumando los días a la fecha de fabricación. Cada movimiento de salida apunta al lote consumido, así el kardex queda completo.
FEFO automático en el POS
Cuando el cliente compra un medicamento, el sistema escoge automáticamente el lote con vencimiento más cercano (First Expired, First Out). El cashier no tiene que pensarlo. Si quiere consumir un lote específico, escanea el código del lote físico y el POS respeta la decisión.
El e-CF emite las fechas de elaboración y vencimiento por línea, usando los campos oficiales que la DGII contempla pero que casi nadie llena.
Estados del lote con auditoría
ACTIVE → QUARANTINE (pausa por QC)
ACTIVE → EXPIRED (cron diario detecta vencimiento)
ACTIVE → DEPLETED (la última unidad se vendió)
ACTIVE → RECALLED (recall manual)
QUARANTINE → ACTIVE (QC liberó el lote)
Cada transición se audita. Los estados terminales (EXPIRED, DEPLETED, RECALLED) son de un solo sentido: para volver a vender el mismo número de lote, recibe una nueva entrega y el sistema crea una fila nueva. Es el comportamiento que MISPAS espera ver.
Cron de alerta de vencimiento
Diario a las 06:00 AST, el sistema escanea todos los lotes activos y en cuarentena con vencimiento en los próximos 30, 60 o 90 días y crea alertas que aparecen en el dashboard de farmacia. El umbral es configurable por producto. Idempotente: correrlo dos veces el mismo día no duplica alertas.
Proceso de recall completo
Si DIGEMAPS notifica un recall, abres /pharmacy/recalls, eliges el lote, escribes la razón. El sistema:
- Marca el lote como RECALLED.
- Emite movimientos de remoción por cada almacén con stock no-cero.
- Lista todas las transacciones POS afectadas (con info del cliente cuando aplica).
- Si el feature flag está prendido, encola notificaciones a clientes con email o teléfono registrado (best-effort).
- Escribe a
audit_logsel detalle completo para reportar a DIGEMAPS.
El recall no se pierde a media ejecución: si el servidor se cae en el paso 3, al reiniciar retoma donde estaba sin saltar pasos ni duplicar acciones.
Registro de psicotrópicos inmutable
Cuando dispensas una sustancia controlada (Lista I-V), el POS bloquea la venta hasta que captures cédula, número de receta, nombre del paciente, médico y exequátur. Al confirmar, el sistema escribe la entrada en el registro controlado dentro de la misma transacción que la venta. Una vez ahí, ninguna entrada puede modificarse ni borrarse: el registro es legalmente inmutable a nivel de base de datos, como exige Ley 50-88.
El reporte mensual sale de un solo query, listo para entregar al Ministerio de Salud y a la Dirección Nacional de Control de Drogas en el formato que pidan.
Cuentas contables separadas
Pérdidas por vencimiento van a la cuenta 5.4.1.05. Pérdidas por recall van a 5.4.1.06. Separadas de la merma genérica 5.3.10.03 para que el reporte mensual de pérdidas regulatorias salga limpio. El asiento contable se postea automáticamente cuando das de baja un lote vencido o retirado.
Integración con conduce físico
El conduce que viaja con la mercancía imprime el número de lote y la fecha de vencimiento por línea. Es el documento que MISPAS audita en inspecciones cuando entran al almacén de la farmacia: si el conduce y el inventario coinciden, la inspección termina rápido.
Por qué no hay alternativa local que cubra esto
Buscamos antes de construir. Los productos disponibles en el mercado dominicano caen en tres categorías:
- ERPs regionales (SAP, Softland, Odoo, Oracle NetSuite): cobertura genérica de inventario por lote, pero el cumplimiento sanitario dominicano queda fuera. Customizaciones existen, pero como proyectos de implementación que cuestan más que el ERP base.
- Software vertical de farmacia importado: típicamente diseñado para el marco regulatorio de otro país. La trazabilidad existe, pero los reportes a DIGEMAPS y al Ministerio de Salud no salen “de fábrica”. Implementación local resuelve algunos pedazos.
- Sistemas locales sin facturación electrónica integrada: existen tres o cuatro proveedores que cubren parte del flujo, pero no incluyen e-CF certificado ni contabilidad completa al mismo nivel transaccional. La farmacia termina con dos sistemas.
Axentra es el primer ERP dominicano que conocemos con e-CF certificado, contabilidad completa, POS, restaurante, inventario multi-almacén y ahora cumplimiento de farmacia integrado, todo bajo una sola base transaccional. Una venta no se completa hasta que el inventario se decrementa, el asiento contable se postea, el e-CF se emite y, si aplica, el registro de psicotrópicos queda escrito. No hay sistemas paralelos.
Construido con un cliente real
No nos sentamos a leer las leyes y construir en abstracto. La especificación del módulo salió de sesiones de trabajo con una farmacia dominicana que está usando el sistema en producción ahora mismo. Cada flujo lo validamos contra cómo opera realmente: cómo recibe mercancía del distribuidor, cómo entra un psicotrópico al gabinete, cómo se hace un recall cuando el laboratorio avisa, cómo el farmacéutico responsable firma electrónicamente la dispensa. Eso es lo que el módulo refleja.
A nuestro primer cliente farmacia, gracias por confiar en nosotros antes de que esto existiera y por insistir en que se hiciera bien. Sin ese empujón, Axentra hubiera sido un ERP genérico más, no el que el sector necesitaba.
Lo que viene
Hoy el módulo cubre el cumplimiento básico (Decreto 246-06 + Ley 50-88) y los flujos operativos de la farmacia. Las próximas iteraciones, en orden de prioridad de los clientes que ya están en producción:
- Notificación al consumidor en recall: SMS y email automáticos a clientes que compraron unidades del lote afectado. Ya tenemos el hook listo (los datos están), falta cablear la integración SMS y un template editable.
- Reportes preformateados para DIGEMAPS: PDF y CSV ya en el formato que reciben, sin tener que armar el reporte manualmente.
- Conexión opcional con sistemas de pharmacovigilance del fabricante: hoy un recall de fabricante llega por correo o WhatsApp; queremos que pueda llegar por webhook al ERP.
- Dashboard de farmacéutico: vista resumen para el responsable: vencimientos próximos, sustancias controladas dispensadas en el periodo, lotes en cuarentena pendientes de decisión.
Si tienes una farmacia y estás evaluando opciones
Lo más rápido es agendar una demo guiada y vamos directo al módulo de farmacia con tus casos reales. Demo o por WhatsApp.
La documentación pública del módulo está en wiki.axentra.com.do/farmacia (sin login). Ahí ves los flujos exactos que el sistema implementa antes de que un vendedor te los cuente.