Pharmacy module development guide for the HMIS project. Use when working on pharmacy features including GRN, purchase orders, stock transfers, disbursements, retail sales, pharmacy reports, stock management, item substitution, or pharmacy billing workflows.
For detailed pharmacy development, refer to these files:
Pharmacy uses configOptionApplicationController.getBooleanValueByKey() for feature toggles. Key patterns:
Pharmacy Transfer is by Purchase Rate / Cost Rate / Retail RateDisplay Colours for Stock Autocomplete ItemsPharmacy Disbursement Reports - Display * (various column visibility)s.retired = false and s.itemBatch.item.retired = falses.itemBatch.item.inactive = falseWhen testing GRN / Direct Purchase report changes:
ruhunu local database typically has richer GRN data than rh and is better for testinghttp://localhost:8080/rh/faces/reports/inventoryReports/grn.xhtmlgrn_detailed_view.xhtml, grn_summary_view.xhtmlPHARMACY_GRN, PHARMACY_GRN_RETURN, PHARMACY_GRN_CANCELLED, PHARMACY_DIRECT_PURCHASE, PHARMACY_DIRECT_PURCHASE_REFUND, PHARMACY_DIRECT_PURCHASE_CANCELLEDPHARMACY_DIRECT_PURCHASE bills have null referenceBill — always null-guard before accessing bill.getReferenceBill()sessionController.getApplicationPreference().getLongDateTimeFormat() — never hardcodegetLongDateFormat() (not datetime) and sanitize with .replaceAll("[: /]", "_")purcahseRate spelling - it's a database column name