Pharmacies deal with a layer of complexity most retail shops don't — batch numbers, expiry dates, and sometimes regulatory reporting all tied to the same product. Getting the barcode setup right early saves a lot of manual cross-checking later.
Manufacturer barcodes vs. your own internal codes
Most medication already arrives with a manufacturer-assigned barcode (often EAN13 or a pharmaceutical-specific format) printed on the box. In most cases you'll want to scan and use that existing code rather than generating a new one, since it's already tied to the product's official identity.
Where a second, internal code helps
A secondary Code128 label is useful for things the manufacturer's barcode doesn't cover — an internal shelf location, a repackaged quantity, or a batch you're tracking separately for your own stock rotation (first-expiry-first-out) practices.
Expiry tracking matters more here than in general retail
Whatever system you build around your barcodes, make sure it's actually connected to expiry dates — scanning at the point of sale should be able to flag near-expiry stock, not just ring up a price. This is one of the biggest practical differences from a regular shop's barcode setup.
Keep manufacturer and internal codes visually distinct
If you add your own label alongside the manufacturer's, make it look clearly different (color, size, or placement) so staff never scan the wrong one by mistake during a busy shift.