-
Notifications
You must be signed in to change notification settings - Fork 139
Admin Inpatient Packages
Inpatient Packages are fixed-price bundles for an inpatient stay — a flat, all-inclusive price for a combination of admission type and room category (e.g. "Normal Ward Maternity Package"), instead of billing the stay item by item.
Page: Administration → Manage Inpatient Services → Packages → Manage Inpatient Packages
XHTML: /inward/inward_inpatient_package.xhtml (and /inward/inward_inpatient_package_item.xhtml for
package components)
Controller: InpatientPackageController (and InpatientPackageItemController for components)
Privilege: InwardPackageAdministration
This is different from Inpatient Automatic Admission Charges, which is a set of additive charges layered on top of normal itemised billing. A package instead sets the final bill's price for whatever categories it covers, once the stay is priced.
This page covers configuring a package. For how a package is attached to an admission, changed later, and how it actually prices the final bill, see Inpatient — Change Package and Inpatient — Final Bill Generation § Package Admissions.
The page used to be its own top-level item under the Administration menu. It now lives as a tab — Packages — inside Administration → Manage Inpatient Services, alongside Admission Types, Rooms, Services, Price Matrix and the rest of the Inward admin screens (issue #24127).

Manage Inpatient Services → Packages → Manage Inpatient Packages.
| Field | Notes |
|---|---|
| Name | Free text, e.g. "Normal Ward Maternity Package" |
| Admission Type | Which admission type this package applies to |
| Room Category | Which room category this package applies to |
| Included Room Duration (Hours) | How many hours of room time the package price covers |
| Charge Type Amounts | A price against any number of inward charge categories (Room Charges, Nursing Care, M.O. Charges, Administration Fee, Medicine, …) — see below |
| Total Package Price | Read-only. Recalculated on Save as the sum of every amount entered under Charge Type Amounts, plus any priced rows added under Manage Components |
Rather than a single fixed room-charge figure, the package price is built up from any of the hospital's inward charge categories — the same list used elsewhere in inward billing (Room Charges, Nursing Care, M.O. Charges, Administration Fee, Medicine, Laboratory Charges, and so on). Leave a category blank if the package doesn't cover it; enter an amount against as many categories as the package needs to price.

Room Charges 30,000 + Nursing Care 15,000 + M.O. Charges 5,000 → Total Package Price 50,000.
Room Charges is just one row in this table like any other category — there is no longer a separate "Fixed Room Charge" field.
Once a package has been saved, a Manage Components button appears. That is a separate, catalog-item based mechanism — add specific Services, Time-based Items, Professional Fee roles, Outside Charges or Pharmacy Items (from the item catalog, not from the charge-category list above) with their own fixed prices. Total Package Price sums both: the Charge Type Amounts entered directly on this page, and every active component's fixed price.
-
InpatientPackageholdsadmissionType,roomCategory,includedRoomDurationHours(no longer consumed by billing since the locking redesign — kept for backward compatibility, currently a no-op),totalPrice, and achargeTypeAmountselement collection (InwardChargeTypename → amount).fixedRoomChargeis still present on the entity and mirrored from theRoomChargesentry inchargeTypeAmountson save, but is no longer read by any billing code either. -
InpatientPackagePricing.calculateTotalPrice(Map<String, Double>, List<InpatientPackageItem>)sums the charge-type amounts and the active components' fixed prices into the package's total price.InpatientPackagePricing.calculateChargeTypeAllocations(...)andcalculatePackageExcess(...)(added when admission-by-package billing was implemented) derive the final bill's per-category package values and excess amount from that same data — see Inpatient — Final Bill Generation § Package Admissions. - The charge-category list on the page comes from
enumController.getInwardChargeTypesForSetting()— the same filtered/hospital-configured list used by Charge Type Labels. The computedPackageExcessChargescharge type is deliberately excluded from this list (allowToSetItems=false) since it isn't something a package can be configured with — it only ever appears as a calculated line on the final bill. -
InpatientPackageItem/InpatientPackageItemController(Manage Components) still auto-create a bill row per component at admission time, but as ordinary, fully editable/removable rows — nothing about a package admission is locked or restricted during the stay.
- Admin — Inpatient Automatic Admission Charges — the additive-charge alternative to a package
- Admin — Inpatient Admission Types
- Admin — Inward Add Services / Fee Configuration
- Inpatient — Change Package — changing the package on an already-admitted encounter
- Inpatient — Final Bill Generation § Package Admissions — how a package prices the final bill