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

  1. Click AdministrationManage Items
  2. In the item management index, navigate to OPD Services
  3. 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

  1. Click Add (green button)
  2. 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.
  1. 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
  1. Click Save

Editing a Service

  1. Select the service from the list
  2. Update fields as needed
  3. Click Save

Deleting a Service

  1. Select the service
  2. 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.

Related Features