Un paciente llega con una receta especial, la farmacia surte el estupefaciente o psicotrópico, y el movimiento queda en el libro de control que un inspector de COFEPRIS puede pedir en cualquier visita. Verificamos en el código que ese libro nunca guarda quién prescribió: ni el nombre del médico, ni su domicilio, ni su número de cédula profesional. No es un dato que se pierda al pasar de la venta al libro -es un dato que nunca tuvo dónde capturarse.
La ley exige identificar al médico, no sólo el folio
El Reglamento de Insumos para la Salud, artículo 117, es explícito sobre qué debe registrarse al surtir una receta médica especial que debe retenerse:
"El personal de una droguería, botica o farmacia, al surtir una receta médica especial que debe retenerse registrará, según sea el caso, en el libro de control autorizado, sin perjuicio de utilizar para tal efecto sistemas automatizados, los siguientes datos: I. El número de folio de la receta médica especial y la fecha en que fue emitida; II. El nombre del medicamento prescrito, cantidad, dosificación y saldo; III. El nombre, domicilio y número de cédula profesional del médico que prescribe, y IV. La fecha del descargo del medicamento."
Son cuatro fracciones, no una. El artículo 124, fracción VII, del mismo Reglamento pone esa obligación sobre el responsable sanitario de la droguería: debe "verificar que en el libro de control de estupefacientes y psicotrópicos estén asentadas las entradas y salidas de los mismos, de acuerdo con lo que establece el artículo 117" -avalándolas con su firma autógrafa.
La sanción: infracciones no previstas en el capítulo
El artículo 117 es un reglamento derivado de la Ley General de Salud, no un artículo de la Ley con su propia multa listada. Revisamos los cuatro artículos que sí traen listas explícitas de sanciones (419, 420, 421 y 421 Bis, texto vigente con últimas reformas DOF 15-01-2026): ninguno menciona el artículo 117 ni el 124. Por eso la omisión cae en la cláusula residual, el artículo 422 de la Ley General de Salud:
"Las infracciones no previstas en este Capítulo serán sancionadas con multa equivalente hasta por dieciséis mil veces el salario mínimo general diario vigente en la zona económica de que se trate, atendiendo las reglas de calificación que se establecen en el artículo 418 de esta Ley."
Con el salario mínimo general diario 2026 ($315.04 en la zona general), el techo teórico es $5,040,640.00 MXN por infracción -no un cobro automático por receta, sino un tope que la autoridad califica con los cinco criterios del artículo 418 (daño a la salud, gravedad, condición socioeconómica, reincidencia y beneficio obtenido).
| Elemento | Qué dice la norma |
|---|---|
| Datos exigidos en el libro de control (4 fracciones) | Reglamento de Insumos para la Salud, art. 117 |
| Obligación del responsable sanitario de verificarlo | RIS, art. 124, fracción VII |
| Sanción (residual, sin lista explícita) | Ley General de Salud, art. 422, calificado por el art. 418 |
| Multa | Hasta $5,040,640.00 MXN (16,000 × SMGD zona general $315.04, valor 2026) |
Verificado en el código: sólo existe el folio, y nunca cruza al libro
Confirmamos el hallazgo directamente en el código de FarmaWare (repo medware-di, rama main). El único dato de receta que existe en el esquema del punto de venta, posTicketLineInputSchema (packages/shared-schemas/src/pos.schema.ts:17-27), es el folio:
/** Folio de la receta que autoriza la venta (obligatorio si el producto requiere receta/controlado). */prescriptionFolio: z.string().min(1).max(120).optional(),
No hay campo para el nombre del médico, su domicilio, su cédula profesional ni la dosificación prescrita -las fracciones II (parcialmente) y III del artículo 117 no tienen dónde capturarse, en ningún renglón de venta. El sistema sí tiene un concepto de "prescriptor" (packages/shared-schemas/src/crm.schema.ts:8, rol 'prescriber'), pero pertenece al módulo de visitas médicas -el CRM que registra qué médicos visita un representante-, sin ningún vínculo con una venta ni con el libro de control.
Ese folio, cuando existe, sí se guarda en la venta. insertTicketLine() (apps/services/pos/src/pos/pos.repository.ts:335-347) lo inserta en pos.ticket_lines junto con producto, cantidad y lote:
INSERT INTO pos.ticket_lines (tenant_id, ticket_id, line_no, product_id, qty,
unit_price_cents, discount_cents, tax_rate_bp, tax_cents, line_total_cents, lot_number,
prescription_folio)
Pero el libro de control regulatorio -lo que expone ControlledService a un inspector- es otra tabla, con otras columnas. movements() (apps/services/compliance/src/controlled/controlled.repository.ts:85-124) lee directamente de inventory.stock_movements, el ledger de inventario, no de pos.ticket_lines:
SELECT m.occurred_at, m.kind, m.qty_delta, l.lot_number, m.reason, m.ref_type, m.ref_id
FROM inventory.stock_movements m
LEFT JOIN inventory.lots l ON l.id = m.lot_id
Fecha, tipo, cantidad, lote, motivo y una referencia genérica: eso es todo lo que ve ControlledLedger (packages/shared-types/src/compliance.ts, interfaz ControlledMovement). Ni el folio de venta cruza hasta aquí -aunque exista en pos.ticket_lines-, ni mucho menos el nombre, domicilio o cédula del médico, porque ese dato no existe en ningún lado del sistema para vincularlo.
Qué significa en la práctica, y qué falta en el producto
FarmaWare sí controla la existencia de medicamentos controlados -el saldo corriente por producto, el kardex append-only, el cierre mensual congelado- eso funciona. Lo que falta es capturar, en algún punto de la venta de un producto controlado, los tres datos del médico que exige la fracción III del artículo 117: nombre, domicilio y cédula profesional. Hoy ese dato no bloquea ninguna venta, no aparece en ningún reporte, y un inspector que pida el libro de control se encontraría con las fracciones I, II y IV cubiertas a medias y la III completamente vacía. Puedes ver ese recorrido completo, de la receta al libro de control, en este flujo de producto, o estimar la exposición con tus propios números en la calculadora de exposición por libro de control incompleto.
Preguntas frecuentes
¿FarmaWare no tiene libro de control de estupefacientes y psicotrópicos?
Sí lo tiene: saldo, entradas y salidas por producto, con cierre mensual congelado. Lo que no registra es el médico que prescribe cada receta especial, dato que exige la fracción III del artículo 117 del Reglamento de Insumos para la Salud.
¿No basta con el folio de la receta?
No: el artículo 117 pide cuatro cosas distintas (folio+fecha, medicamento+dosificación+saldo, datos del médico, fecha de descargo). El folio es sólo una de las cuatro, y hoy es la única que el sistema intenta capturar -aun así, sin llegar al libro de control regulatorio.
¿Cuál es la multa exacta?
La Ley General de Salud no fija un monto único para esta omisión: hasta $5,040,640.00 MXN (16,000 veces el salario mínimo general diario, valor 2026), calificado caso por caso por la autoridad sanitaria conforme al artículo 418.
¿Significa que mi farmacia ya incumplió?
No necesariamente: el hallazgo es que el sistema no captura ese dato y no avisa que falta, no que ya haya ocurrido con certeza una inspección adversa. Si tu farmacia documenta al médico fuera del sistema (en la receta física retenida), hoy eso no se refleja en el libro de control digital que el sistema expone.
Fuentes consultadas: Reglamento de Insumos para la Salud, texto oficial publicado por la Secretaría de Gobernación (ordenjuridico.gob.mx), artículos 117 y 124 fracción VII. Ley General de Salud, texto vigente publicado por la Cámara de Diputados del H. Congreso de la Unión (últimas reformas DOF 15-01-2026), artículos 418 y 422. Salario mínimo general diario 2026 publicado por la Comisión Nacional de los Salarios Mínimos, vigente desde el 1 de enero de 2026. Este artículo es orientativo y no sustituye una revisión de tu caso por tu responsable sanitario o asesor legal.
Ve cómo FarmaWare registra hoy una venta con receta, y dónde falta el dato del médico
Te mostramos en vivo la venta de un medicamento controlado, su libro de control, y el punto exacto donde el médico que prescribe se queda fuera.
Agenda una demo gratis