Admin Creating OPD Services - hmislk/hmis GitHub Wiki
Creating and Managing OPD Services
Overview
OPD Services are the individual billable items for outpatient care — consultation fees, minor procedures, packaged examinations, and speciality services. This page covers creating, editing, and configuring the full set of options available on an OPD service record.
When to Use
- Adding a new procedure or consultation fee to the system
- Changing a service's name, category, or billing behaviour
- Activating or deactivating a service for billing
Navigating to OPD Service Management
- Click Administration → Manage Items
- In the item management index, navigate to OPD Services
- The Manage OPD Services screen opens
Required privilege: AdminItems
The Service List
The list on the left shows all OPD services. Use the filter box to search by name. The right panel shows the selected service's status (Active in green, Inactive in red) and the edit form.
Creating a New Service
- Click Add (green button)
- Fill in the Basic Details tab:
| Field | Description |
|---|---|
| Name | The service name shown in the billing interface and on bills (required) |
| Printing Name | Alternative name for printed documents |
| Full Name | Extended name for display purposes |
| Service Category/Sub Category | The category this service belongs to — type to search |
| Institution | The institution this service is primarily associated with |
| Department | The department within that institution |
| Inward Charge Category | For services that can also appear on inpatient bills — selects the charge grouping |
| Item Code | A unique code for the service. Leave blank to have the system generate one automatically on Save, or type a custom code. Click Generate Item Code to preview the code before saving. |
- Open the Additional Details tab and configure the service's behaviour:
| Checkbox | Description |
|---|---|
| Session Numbering | Dropdown — sets how session numbers are assigned during channelling |
| Service Inactive | Tick to deactivate the service without deleting it |
| Can Change Rate | When ticked, billing staff can manually change the fee for this service on a bill |
| Charges Visible for Inward Billing | Shows this service's charges when billing inpatient encounters |
| Margin Not Allowed | Prevents a margin from being applied on top of this service's fee |
| Request for Quantity | Prompts the biller to enter a quantity when adding this service to a bill |
| Print Session Number | Includes the session number on the printed bill |
| Discount Allowed | When ticked, discounts can be applied to this service during billing |
| Patient Not Required | Allows this service to be billed without a patient linked to the bill |
| Print Separate Fees | Prints a breakdown of fee components separately on the bill |
- Click Save
Editing a Service
- Select the service from the list
- Update fields as needed
- Click Save
Deleting a Service
- Select the service
- Click Delete (confirmation required)
Warning: Do not delete services with historical bills. Use the Service Inactive checkbox instead to hide the service from new bills while keeping all historical data intact.
The "Can Change Rate" Option
When this is ticked, billing staff will see an editable rate field when they add this service to a bill. This is useful for services where the fee varies by complexity or is negotiated. When unticked, the system-configured fee is applied and cannot be changed during billing.
Inward Charge Category
If this service can also be charged to inpatient accounts, select the appropriate Inward Charge Category. This maps the service to the correct cost group in IPD billing reports. There are over 100 inward charge types in the system — select the one that best matches the clinical nature of the service.
Generating an Item Code
The system automatically generates an item code on Save if the Item Code field is left blank. The generated code combines the department code and a sequential number (e.g. ALW-000042).
You can also:
- Type a custom code in the Item Code field before saving — the typed code will be kept as-is
- Click Generate Item Code to preview the auto-generated code before saving, then edit it if needed
Related: #21392
Technical Notes (Admin/Developer)
OPD services are stored as Service entities (DTYPE = 'Service') which extend Item via single-table inheritance. The inactive flag hides the service from new bills. The userChangable flag enables rate editing during billing. discountAllowed is a boxed Boolean (not primitive). The serviceController.saveSelected() method persists; serviceController.setServiceCode generates the code. The inwardChargeType field links to the InwardChargeType enum.