Billing Module

Note: This module is now maintained by HISP India and can be found at


Billing is generally thought as a process which captures financial information, but the billing module we are building is more of a central workflow capturing module. The billing module works as a connector of information capture between different departments inside the hospital. It generates receipts of orders and involves generating bills of payment.


Create a module which will allow a clerk to capture the orders from the doctor pertaining to pharmacy, diagnostic tests, in-patient admission, discharge and any other types of order. These orders are generally written on a piece of paper or case sheet which the patient carries with himself/herself. This information does not get captured in the rush of a hospital at the doctor's table. This module will allow capturing this information and create a receipt of payment for the patient, which the patient then carries to the concerned department.


  1. The Billing module is not going to display the actions taken on the orders.
  2. Patient information or health records cannot be edited or viewed through this module.


The Billing module consists of 4 major parts:

*Interface to create bills with orders:

    • The billing module creates orders based on the concepts that can be part of an order.
    • The module separates parts that are financial and parts that are non-financial orders
    • The module should allow grouping of orders of a particular type and associate the orders with particular department

*The clerk should be able to create cost master for orders:

    • The clerk should be able to create a list of orders and cost of each order
    • This master should be able to create the bill when the orders are selected

*The clerk should be able to associate orders with a patient encounter:

    • The clerk will be able to view the current encounter of the patient (identified through bar code on patient summary) and add orders to this encounter
    • Each bill will be a summary of orders related to an encounter

*Aggregate bills for collections

    • Just like cohorts can be used to aggregate patients with encounters, demographics, attributes etc. the billing module should allow creating aggregates for orders
    • An extension of the cohort service should be created by the module to aggregate collections / orders from the billing module


The model classes for billing module:

    • This class contains ID, name, description, price of medical services such as XRay, Blood test, ultra sound.
    • This class comes with the OpenMRS core to present order issued by doctor with date, encounter
    • This class associates an Medical Service with an Order, with an extra property to capture the price of the service at the time of the order.
    • This class present bills issued by accountants to collect the expense of medical services which patient received through orders of doctors. One bill has a set of service orders.

Persistence - Hibernate mapping files

There are 3 mapping files for

    • MedicalService.hbm.xml: for persisting medical service such as Xray, blood/urine tests, CT scan, etc and for some extends could be operations, ambulance etc.
    • ServiceGroup.hbm.xml: medical services are classified into groups for better management.
    • Department.hbm.xml: one medical service is given in a certain department.
    • ServiceOrder.hbm.xml: this is for associating Service - Order. It is similar to Drug - Order assosiation.

Screen shots

Showing list of bills

Showing how to create a bill