Pharmacy
A complete Philippine retail community-pharmacy workspace, built as a thin compliance & dispensing layer over ERPat's existing POS, Warehouse (lot/batch/expiry), Procurement, Clients and Finance-tax subsystems — never a clone of them. From FDA/PRC compliance through prescription validation, FEFO dispensing with correct Senior/PWD statutory discounts, to the controlled-drug register and quality & safety.
Module slug: pharmacy | Menu route: /pharmacy | Version: 0.5.0 (Phases 1–5, plus a read-only API and DPA privacy hardening)
What it is
A community drugstore is different from ordinary retail: it must hold a current FDA License to Operate, employ a Pharmacist-in-Charge with a valid PRC ID, keep a pharmacist physically on duty whenever prescription medicines are dispensed, validate every prescription, apply the correct Senior Citizen / PWD statutory discount, and stay ahead of a stack of renewal deadlines and expiring stock. The Pharmacy module gives a branch one place to run all of that — and to see, at a glance, whether it is inspection-ready.
The module ships as vertical slices that build on each other: the Compliance Center, the Drug Catalog and near-expiry dashboard, prescriptions & patients, the dispensing checkout with statutory discounts and a BIR-shaped receipt, and the advanced Controlled Register and Quality & Safety areas (both off until your tenant validates them). Two read-only APIs expose the catalog and compliance readiness for integrations and employee self-service.
Documentation map
This guide is written for operators and business users first — a pharmacist, an owner, a compliance officer. Start with Getting Started, keep Daily Operations at the counter, and use the rest as reference.
Getting Started
First-run setup: enable the module and its sub-toggles, grant permissions, create a branch profile, record your FDA LTO and pharmacist credentials, and a beginner path through the module.
Daily Operations
The counter SOPs: start a duty session, capture and validate a prescription, dispense with FEFO and Senior/PWD discounts, and run the controlled-register and cold-chain routines.
Administration
Permissions and who should hold them, branch-profile rules, the two advanced sub-toggles, the dual API surface, the cron jobs, the audit trail, and migrations.
Reference
The data & screen reference: controllers, menu items and routes, permission keys, the main database tables, and the API endpoints.
Research
The live-file evidence behind this guide — exactly which manifest, config, controller and helper files were read so every statement traces to the shipped code.
FAQ & Troubleshooting
Quick fixes (hidden menu, greyed-out buttons, a pharmacist who won't go on duty), the glossary, and the "why is the ID masked?" / "why is Controlled Drugs hidden?" answers.
Inside the module
The Pharmacy group in the left sidebar links these workspaces (each gated by its own permission; the two advanced areas also by a sub-toggle):
Overview
The command center — compliance readiness, who is on duty, expiring licenses/credentials, and upcoming deadlines.
Drug Catalog
Drug attributes on the Warehouse stock item (Rx/OTC/controlled, FDA CPR, storage, Senior/PWD eligibility), generic groups, and supplier FDA-LTO licensing.
Near-Expiry & Lots
Expiry buckets and a lot register read live from the Warehouse batch ledger, FEFO-friendly.
Prescriptions
The Rx queue, capture, the pharmacist validation workflow, partial fills, dispensing records, printable labels and the BIR receipt.
Patients & Prescribers
Retail patients (with masked, audited ID numbers) and representatives, the medication profile, and the prescriber directory.
Compliance Center
Licenses & permits, pharmacist credentials, the on-duty gate, renewal tasks and inspection packs.
Controlled Drugs sub-toggle
An append-only dangerous-drug (RA 9165) ledger with a running balance, correction-by-reversal, and physical-count reconciliation. Off until validated.
Quality & Safety sub-toggle
Product recalls / stop-sale (quarantines the batch), adverse-event reporting, and cold-chain temperature logging. Off until validated.
Capabilities at a glance
| Area | What you can do | Status |
|---|---|---|
| Compliance Center | FDA LTO / permits / RMP, pharmacist PRC/PIC credentials, the pharmacist-on-duty gate, renewal tasks, inspection packs, readiness score. | Live |
| Drug Catalog | Classify stock items with drug attributes, generic groups, regulatory (FDA CPR) verifications, and supplier FDA-LTO licensing. | Live |
| Near-Expiry & Lots | Expiry buckets and a lot register over the Warehouse ledger, plus daily expiry-reminder cron jobs. | Live |
| Prescriptions & Patients | Rx capture, pharmacist validation (atomic transitions), partial fills, dispensing labels, patient medication profile, prescriber directory. | Live |
| Dispensing checkout | FEFO batch-aware stock issue (blocks expired batches), correct Senior/PWD statutory math, and a BIR-shaped Official Receipt. | Live |
| Controlled Register | Append-only RA 9165 ledger, running balance, correction-by-reversal, physical-count reconciliation. | Live · sub-toggle off |
| Quality & Safety | Recalls / stop-sale (batch quarantine), adverse events, cold-chain temperature logging. | Live · sub-toggle off |
| Dual read-only API | Integration API (/api/v1/pharmacy/*) and End-User API (/v1/api/pharmacy/*) for catalog, product and compliance/near-expiry reads. | Live |
| Data privacy (DPA) | Patient ID numbers encrypted at rest; masked to last-4 in lists; permission-gated, audited unmasking. | Live |
What it reuses (and never duplicates)
Per ERPat's no-duplication rules, Pharmacy never creates a second stock ledger, payment ledger, supplier master or product catalog. It reads and writes through the existing modules:
- POS — the retail register and BIR receipt series the dispensing receipt reuses.
- Warehouse — the stock ledger and lot/batch/expiry (FEFO) engine; the FEFO stock issue and batch quarantine compose the Warehouse public API.
- Procurement — purchase orders, goods receipts, and the vendor master (extended with FDA-LTO supplier licensing).
- Finance — the VAT / tax master for pharmacy line taxes.
- Clients — the customer master; retail patient records are kept separately for privacy.
It also coexists with the separate clinical pharmacy inside the Hospital module; the two are different contexts (retail counter vs inpatient dispensing) and do not interfere.
Next: Getting Started →