Per-Unit Expiry Dates

For items with printed individual expiry dates — Narcan, fire extinguishers, EpiPens — DREAM lets you enter the printed date at issuance time, overriding the lifespan calculation.

Quick Answer

Add Expiry Date to your Item Type's visible fields. The Issue modal will then show a per-row date input where staff enter the printed expiry on each unit.

By default, DREAM calculates each issuance's expiry date as issue date + item lifespan. But some items carry their own printed expiry date that's set at manufacture — Narcan, fire extinguishers, EpiPens, some safety equipment. The lifespan from the item record doesn't apply to those.

Enabling per-unit expiry

Go to Settings → Item Types, edit the item type (e.g., "Naloxone Kits"), and tick Expiry Date in the visible fields list. Save.

Issuing with a per-unit expiry

When you issue an item from this type, the Issue modal shows an additional Expiry Date column. Enter the date printed on each unit. Submission is blocked until every row has an expiry date for items that require it.

The entered date becomes the issuance's expiresAt directly — the item's lifespan is ignored for this first cycle. After that first issuance expires, future replacement cycles still project forward using the item's lifespan.

ℹ️ Note: Past dates are allowed at issuance — useful for retroactively logging items that were already in use before DREAM was set up. Items with past expiry dates appear in the Past Lifecycle bucket on the Expense Forecast reports.
💡 Tip: The item's lifespan field stays required even when per-unit expiry is enabled. It governs replacement cycles after the first issuance expires, so make sure it reflects your normal restock interval.