Pharmacy Configuration and Privileges - hmislk/hmis GitHub Wiki
Pharmacy Configuration and Privileges
This section describes the configuration options and privileges required for managing pharmacy-related pages. It is intended for System Administrators.
Inpatient Medication Management
Direct Issue to BHTs
Page: /inward/pharmacy_bill_issue_bht.xhtml
Navigation: Menu ▸ Pharmacy ▸ Inpatient Medication Management ▸ Direct Issue to BHTs
Configuration Options:
- Display Total Stock when listing medicines for Inpatients
- Medicine Identification Codes Used
- Nursing IP Billing – Show Rate and Value
- Pharmacy Bill Support for Native Printers
- Pharmacy Inward Direct Issue Bill is FiveFiveCustom3
- Pharmacy Inward Direct Issue Bill is PosHeaderPaper
Privileges Required:
- PharmacyDirectIssueToBht
- NursingIPBillingViewRates
Reprint Inpatient Direct Issues
Page: /inward/pharmacy_reprint_bill_sale_bht.xhtml
Navigation: Menu ▸ Pharmacy ▸ Inpatient Medication Management ▸ Search Inpatient Direct Issues by Item ▸ Reprint
Configuration Options:
- Nursing IP Billing – Show Rate and Value
- Pharmacy Inward Direct Issue Bill is FiveFiveCustom3
- Pharmacy Inward Direct Issue Bill is PosHeaderPaper
Privileges Required:
- InwardCheck / InwardUnCheck
- ShowInwardFee
- NursingIPBillingViewRates
Issue Medicines for Ward Requests (BHT Issue Requests)
Pages: /ward/ward_pharmacy_bht_issue_request_list_for_issue.xhtml, /ward/ward_pharmacy_bht_issue.xhtml, /ward/ward_pharmacy_reprint_bht_issue_request.xhtml
Navigation: Menu ▸ Pharmacy ▸ Inpatient Medication Management ▸ BHT Issue Requests
Configuration Options:
- Manage Costing
Privileges Required:
- PharmacyBhtIssueRequest
- PharmacyBhtRequestForceComplete (optional — see below)
Behavior:
- Each request line shows how much remains to be issued (requested quantity minus quantities already issued, net of any cancellations/returns of earlier issues against the same request). Entering a quantity greater than what remains is automatically capped to the remaining amount, with a warning message.
- When every line on a request has been fully issued, the request is automatically marked both fully issued and completed (with a timestamp and the issuing user recorded), and it no longer appears in the list of requests awaiting issue. There is no manual checkbox for this — it happens automatically as soon as the last item is issued.
- A pharmacist holding the PharmacyBhtRequestForceComplete privilege can force a request straight to Completed status even when it has only been partially issued. This is done from the request's View Request page (
/ward/ward_pharmacy_reprint_bht_issue_request.xhtml, reached via View Pharmacy Requests or BHT Issue Request List) using the "Mark as Complete" button — typically used to let a patient's discharge proceed when the remaining requested items are no longer needed. Users without the privilege see the button disabled (greyed out). Once a request is completed — whether automatically or by force-complete — the button stays disabled and a "Completed" tag appears next to the page title, and no further issuing is allowed against the request.
Disposal
Note: As of July 2026, the main menu item and page labels for this feature show "Consumption" instead of "Disposal", though the underlying feature/URL and privilege names are unchanged.
Issue
Page: /pharmacy/pharmacy_issue.xhtml
Navigation: Menu ▸ Pharmacy ▸ Consumption ▸ Issue
Configuration Options:
- Consumption – Show Rate and Value
Privileges Required:
- PharmacyDisposalIssue
- ConsumptionViewRates
- ChangeReceiptPrintingPaperTypes
Disbursement
Request
Page: /pharmacy/pharmacy_transfer_request.xhtml
Navigation: Menu ▸ Pharmacy ▸ Disbursement ▸ Request
Configuration Options:
- Stock Request – Show Rate and Value
Privileges Required:
- PharmacyDisbursementRequest
- StockRequestViewRates
- Developers
Direct Issue
Page: /pharmacy/pharmacy_transfer_issue.xhtml
Navigation: Menu ▸ Pharmacy ▸ Disbursement ▸ Direct Issue
Configuration Options:
- Stock Transaction – Show Rate and Value
- Pharmacy Transfer Issue Bill is POS Paper with details
- Pharmacy Transfer Issue Bill is POS Paper with header
- Pharmacy Transfer Issue Bill is Template
Privileges Required:
- PharmacyDisbursementDirectIssue
- StockTransactionViewRates
- Developers
Issued List
Page: /pharmacy/pharmacy_transfer_issued_list.xhtml
Navigation: Menu ▸ Pharmacy ▸ Disbursement ▸ Receive
Configuration Options:
- (none)
Privileges Required:
- PharmacyDisbursementRecieve
Receive from List
Page: /pharmacy/pharmacy_transfer_receive.xhtml
Navigation: Menu ▸ Pharmacy ▸ Disbursement ▸ Receive ▸ Receive (from list)
Configuration Options:
- Report Font Size of Item List in Pharmacy Disbursement Reports
- Pharmacy Transfer Receive Bill is Template
Privileges Required:
- PharmacyTransferViewRates
- ChangeReceiptPrintingPaperTypes
- Developers
Retail Transactions
Sale by Batch
Page: /pharmacy/pharmacy_bill_retail_sale.xhtml
Navigation: Menu ▸ Pharmacy ▸ Retail Transactions ▸ Sale by Batch
Configuration Options:
- Find Last Sale Rate of Medicines in Retail Sale
- Display Total Stock when listing medicines for Retail Sale
- Medicine Identification Codes Used
- Enable label printing for pharmacy medicines
- Pharmacy Bill Support for Native Printers
- Pharmacy Retail Sale Bill formats: PosPaper / PosPaper with items / PosPaper (prabodha) / FiveFivePaper / PosHeaderPaper / FiveFiveCustom3
Privileges Required:
- PharmacySale
- ChangeReceiptPrintingPaperTypes
Sale for Cashier
Page: /pharmacy/pharmacy_bill_retail_sale_for_cashier.xhtml
Navigation:
- Menu ▸ Pharmacy ▸ Retail Transactions ▸ Sale for cashier
- Menu ▸ Opd Issue ▸ Opd Issue For Cashier
Configuration Options:
- Create Token At Pharmacy Sale For Cashier
- Allow Tendered Amount for pharmacy sale for cashier
- Pharmacy Bill Support for Native Printers
- Enable token system in sale for cashier
- Pharmacy Sale for Cashier Token Bill is Pos paper
- Pharmacy Sale for Cashier Bill is Pos paper
- Pharmacy Retail Sale Bill is PosHeaderPaper
- Pharmacy Sale for cashier Bill is FiveFiveCustom3
Privileges Required:
- PharmacySaleForCashier
- ChangeReceiptPrintingPaperTypes
- PharmacySale
Recent Fixes (July 2026)
Server-side privilege guards were added across the GRN/GRN-Return, Purchase Order, Disbursement/Transfer, and Discard/Disposal workflows — previously several of these controllers had no hasPrivilege checks at all, so a user without the page-level privilege could still trigger the underlying save/finalize/approve/cancel action directly. New privileges introduced: PharmacyReceiveSave, PharmacyTransferIssueCancel, PharmacyTransferReceiveCancel, InwardPharmacyBhtReceive, InwardPharmacyReturnSubmit. A user without the Finalize privilege on the Disbursement/Transfer request page can no longer finalize a save-only draft. (Issue #21994 and children #22019–#22022, Issue #14869; PRs #22024, #22025, #22026, #22027)