Dispensing, stock and the counter as one system — batches and expiry tracked properly, the clinical record kept separately from the sale, and the day reconciling at close without anyone hunting for the difference.
Talk about scopeA pharmacy counter is simultaneously a clinical record, a stock ledger and a till, and each of the three has different rules about what may be changed afterwards. A sale can be refunded and a stock count corrected, but a dispensing record is appended to rather than edited, because it is evidence of what a named person was given. Most pharmacy software is uncomfortable precisely where those three meet — and that seam, rather than the feature list, is what decides whether the system holds up in an audit or during a recall.
Expires 03/27 · received 28 Jul
Expires 09/27 · received 06 Aug
The same event is simultaneously a stock movement, a clinical record and a financial transaction, and the three have different rules about being amended. A sale can be refunded; a dispensing record cannot be quietly reversed. Deciding early that the clinical record is append-only, and that the till operates against it rather than the other way round, is the decision the rest of the system hangs off.
Two boxes of the same medicine are not interchangeable — they have different batch numbers and different expiry dates, and only one of them is the one that was handed to a named person last Tuesday. A model that stores a single number per product cannot answer a recall, and no amount of reporting added later will recover the link that was never stored.
Someone is standing there, often unwell, frequently with a queue behind them. Every check the software performs has to happen inside the time it takes to reach for the shelf, which rules out designs that call out to something slow at exactly the wrong moment.
Pharmacy stock differs from retail stock in ways that change the data model rather than the screens. Items expire, and the expiry belongs to the batch rather than the product. Some items are controlled and every movement of them has to be accounted for individually. Unclaimed prescriptions return to stock but not to the same state they left it in. A general inventory system handles none of this without being bent, and the bending is where the errors live.
A pharmacy system is rarely the only system in the building, and the integrations are where the schedule usually goes. These are the ones worth scoping before the estimate rather than after.
A packaged product is the right answer more often than a development company usually admits, and if your problem is an ordinary one that something off the shelf already solves, we will tell you so rather than quote for it. What follows is the case for the other answer — the conditions under which building is worth what it costs.
A packaged system that mostly fits leaves a residue — the spreadsheet kept alongside it, the step done by hand every month, the field used to mean something it was not named for. When that residue is where the actual work happens, you are already maintaining custom software, just without any of the benefits of having built it.
Every business has a few processes that are genuinely its own, and those are usually the ones it competes on. Off-the-shelf software is built for the average of a sector, so it handles the ordinary parts well and the distinctive part not at all. Building is worth it exactly where that overlap fails, and rarely anywhere else.
A vulnerability in a packaged product is a vulnerability in every deployment of it, and attackers only have to find it once. A system built for one business is not on that list.
Other sectors we can build for.