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
- Nursing IP Billing – Show Rate and Value
Privileges Required:
- PharmacyBhtIssueRequest
- PharmacyBhtRequestForceComplete (optional — see below)
- NursingIPBillingViewRates — required (together with the Nursing IP Billing – Show Rate and Value config option) to see net rate/net value: the item table's Net Total column, the Sale Rate/Cost Rate row-expansion fields, and the header summary's Net Total field. Item name and quantity are always visible regardless of privilege.
- IPBillingViewDiscount — required to see the header summary's Discount field and the row-expansion's Matrix Value (margin/service-charge-equivalent) field. Independent of NursingIPBillingViewRates — a user can hold either, both, or neither.
- Admin — shows the Config button in the page header, linking to this page's configuration in the admin interface.
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.
Reprint BHT Issue Bill
Page: /ward/ward_pharmacy_reprint_bht_issue_bill_reprint.xhtml
Navigation: Reached via View Bill from the BHT Issue Requests list, or from an inpatient pharmacy request report, against an already-issued bill.
Configuration Options:
- (none directly — the print-format choice comes from the department's paper-type preference and the on-page Rate radio, not a config key)
Privileges Required:
- NursingIPBillingViewRates — required to see the item table's Gross Value/Net Value columns and Total/Net Total footer, the Rate radio selector (Without Rate / With Rate), and — when "With Rate" is selected — the rate/value lines on every print format (POS, Prabodha, Five-Five, A4, POS-Header). Item name and quantity always print with no privilege check.
- IPBillingViewDiscount — required to see the item table's Matrix Value column and — when "With Rate" is also selected — the Discount/Discount Percent lines on every print format. Independent of NursingIPBillingViewRates.
- Admin — shows the Config button in the page header.
Behavior:
- Both privileges above are checked together with the on-page Rate radio: a user must hold the relevant privilege and have "With Rate" selected to see that privilege's fields on the printed preview. The on-screen item/total table (left panel) is gated by privilege alone, independent of the radio.
- The two privileges are independent — a user can be granted rate/value visibility without discount visibility, or vice versa, matching the split enforced on the BHT Issue page above.
Example — item table without IPBillingViewDiscount (Gross Value/Net Value visible via NursingIPBillingViewRates, no Matrix Value column):

Example — item table with IPBillingViewDiscount granted (Matrix Value column now appears):

The same split applies to the printed preview itself (patient details redacted below; "With Rate" selected in both):
Without IPBillingViewDiscount — no Discount line printed:

With IPBillingViewDiscount granted — Discount line now prints:

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)