Pharma Pack

The flagship pack, and the deepest. Batch and expiry tracking with FEFO allocation on every issue, certificates of analysis per batch, MoH product registration, a controlled-substance ledger, cold-chain enforcement, and a recall tool that walks any batch to every customer who received a unit.

In this module
  • FEFO allocation, batch identity kept end to end
  • 90 / 60 / 30-day expiry dashboard
  • CoA per batch and MoH registration
  • Cold chain and full recall traceability

A pharmaceutical distributor has obligations a general wholesaler does not. This pack adds them to the same core, rather than making you buy a different system.

What it switches on

  • Batch number, manufacture date, and expiry captured at goods receipt
  • FEFO allocation on every issue, with the chosen batch visible per line
  • An expiry dashboard at 90, 60, and 30 days
  • Certificate of analysis stored per batch
  • Ministry of Health registration numbers and their expiry
  • A controlled-substance ledger, and ATC codes on products
  • Cold-chain zones, enforced on both putaway and allocation
  • Recalls — pick a batch, get every customer who received a unit

Batch identity survives transfers, sales, and returns. That is what makes the recall tool answer in seconds rather than in a week of paper.

Module shape

How Pharma Pack fits the rest of the system

Bounded

The module owns its tables and its service interface. Other modules reach in only through services and async events — never SQL.

Test-vector verified

Every domain rule has two implementations — Dart and Java — and a single shared test vector. CI fails on any divergence.

Audit-logged

Every command writes an entry to the append-only audit log with a chain hash. The daily verifier proves the log has not been tampered with.