Background
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.
Goal
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.
Non-Goals
- The Billing module is not going to display the actions taken on the orders.
- Patient information or health records cannot be edited or viewed through this module.
Targets
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
Design
The model classes for billing module:
-
- MedicalService.java: This class contains ID, name, description, price of medical services such as XRay, Blood test, ultra sound.
- Order.java: This class comes with the OpenMRS core to present order issued by doctor with date, encounter
- ServiceOrder.java: 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.
- Bill.java: 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