Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
The OpenHMIS Cashier Module provides a basic interface for bill creation and management. The module aims to be simple and optimized for easy keyboard entry. As of version 3.3, features include:
Cashier module dependencies for the 3.x release are as follows:
Version | Released | Release Notes |
---|---|---|
1.1 | 1-Feb-2013 | |
1.5.1 | 15-May-2013 | |
1.6.1 | 23-Aug-2013 | |
1.7.3 | 2-Jul-2014 | |
2.0.0 | 24-Sept-2014 | 2.0 Notes |
2.1 | 4-Nov-2014 | 2.1 Notes |
2.2 | 25-Nov-2014 | 2.2 Notes |
2.3 | 19-Mar-2015 | 2.3 Notes |
3.0 | 23-Jul-2015 | 3.0 Notes |
3.1 | 10-Dec-2015 | 3.1 Notes |
3.2.1 | 12-Apr-2016 | 3.2.1 Notes |
3.3.3 | 31-Aug-2016 | 3.3.3 Notes |
3.4.0 | 02-Nov-2017 | 3.4.0 Notes |
The Cashier Module is deployed into OpenMRS the same way as all other modules
https://wiki.openmrs.org/display/docs/Administering+Modules
The REST Web Services module must first be configured if this has not already been done.
NOTE:The Above Reports need to be first added to the Jasper Reports Module as explained in the Reports Administration section.
The above Settings can also be configured from the Cashier Global Options as explained below. This is especially useful incase once is using OpenMRS platform 1.9.x and can be seen in the screenshot below:
Most of the configuration for the Cashier Module is done through global options which can be accessed via the Administration / Settings page (Screenshot Above). For detailed instructions on configuring Global Options click here
Parameter | Description | Valid Values | Default |
Cashier Adjustment Reason Field | Setting Defining whether or not Cashiers Need to Enter a Reason for Adjusting a Bill. | true or false | false |
Cashier Allow Adjustments | Setting Defining whether or not Adjusting a Bill is allowed | true or false | true |
Cashier Autofill Payment Amount | When set to True, this option populates the Amount TextBox in the Payments Section of the Cashier Bill with the Total Amount due from the selected Line Items. | true or false | false |
Cashier Default Receipt Report Id | ID of the Jasper report to use for generating a receipt on the Bill Page. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Default Receipt Report Id | ID of the Jasper report to use for generating a receipt on the Bill Page. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Default Shift Report Id | ID of the Jasper report to use for generating a cashier shift report. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Patient Dashboard 2 Bill Count | Number of Bills that will be displayed on the Patient Dashboard on OpenMRS Reference Application 2.x | An integer value X | 5 |
Cashier Daily Shift Summary | ID of the Jasper report to use for generating a cashier daily shift summary report. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Reports Department Collections | ID of the Jasper report to use for generating a Department and Inventory Item Total Amount collected report. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Reports Department Revenue | ID of the Jasper report to use for generating a Department summary Total Amount of revenue collected report. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Reports Shift Summary | ID of the Jasper report to use for generating a cashier shift summary report. | An integer value X this value is acquired from the desired jasper report in Report Administration | null |
Cashier Round To Nearest | This setting defines by how many units the price is to be rounded of. The input accepts floating type numbers as well as Integers. | a floating type number or integer (e.g., 1, 0.5, 0.01) | null |
Cashier Rounding Dept Id | A rounding department is need when setting up rounding. Check process for getting the rounding department id from the section #LINK | An integer value X this value is acquired from the database inv_department table explained in Report Administration | null |
Cashier Rounding Item Id | A rounding item is need when setting up rounding. Check process for getting the rounding item id from the section #LINK | An integer value X this value is acquired from the database inv_item table explained in Report Administration | null |
Cashier Rounding Mode | This setting defines how to do rounding for Bill Total Amounts | MID: round to nearest half FLOOR: always round down CEILING: always round up | null |
Cashier System Receipt Number Generator | Once a user defines a receipt number from the #Manage Receipt Number Generator Page, the Fully qualified class name of the receipt number generator is stored in this setting. The receipt number generator is best setup using the the #Manage Receipt Number Generator Page. |
| null |
Cashier Timesheet Required | This setting defines whether or not a cashier needs to have an active time sheet before they can be able to create or modify a bill. | true or false | false |
1. Click System Administration | |
2. Click Advanced Administration | |
3. Now follow from Step 2 for the Classic UI below |
|
Classic UI
1. Click Administration | |
2. Click on the Manage Providers link. | |
3. Click on the Add Provider link | |
4. (Optional) Type in an Identifier for the provider An identifier is used to generally describe the role of the provider. Eg Cashier, Clerk, Doctor, Nurse etc | |
5. Enter the Person or Provider Name of the user you want to set up as a cashier | |
6. Click Save |
With the new version of OpenHMIS (that is version 2.0+), the Cashier application will appear on the OpenMRS home page as shown below:
Click on the Cashier application/button and you will be redirected the Cashier Task page as shown below:
At the Cashier task page, you can either Create new bill, make a Timesheet Entry/Generate Shift Report or Manage Cashier Module.
In order to manage the cashier module, click on the Manage Cashier Module application and you will be redirected to the OpenHMIS Cashier Module page.
This page enables one to create a cashier role, manage cash points, manage payment modes and manage the receipt number generator.
A description of each of the settings above can be seen below:
Cashier Role Creation | Used to Add and Remove cashier privileges. Also for creating new roles. NB: Once you create a cashier user, assign them the cashier role you created. NB: Aside from the cashier role, you can assign a cashier the openmrs "Organizational Doctor" role. This allows the cashier to have access to the "Find Patient and Active Visits" button. They need these privileges in order to be able to Adjust a bill.
| |||||
Manage Cash Points | Manage the physical locations that are used to collect cash and process payments. These can be used when a cashier clocks in for a shift, and are associated with bills for auditing purposes. | |||||
Manage Payment Modes | Manage the ways that customers are allowed to pay for bills. A payment mode can be as simple as cash payment, where only an amount is necessary, or more complex, such as a credit card payment, where it may be necessary to record a name, a credit card type and a transaction number. Payment mode attributes are specified in the same way as Person Attribute Types, including the ability to prompt for a Concept value. | |||||
Manage Receipt Number Generator | Configure the fields that you want to be included in the receipts numbers that are generated by the cashier module. For example, include the cashier, cash point and along with date and time. You could also choose not to have receipt numbers. |
If you are using OpenMRS Platform version 1.9.x then:
When the Cashier Module has been activated/loaded/installed, an OpenHMIS Cashier Module section will appear in the administration as show below:
Then the Cashier Module could be configured through the Cashier Settings page, in the System Administration -> Advanced Administration page:
The Cashier Module provides the ability to print invoices/receipts, but before an invoice/receipt can be printed a new report needs to be added to the Jasper Report Module. Once the new report is added in Jasper Report Module then go to Cashier Settings Page and click on the drop down for any of reports and select the name of the report you saved in Jasper Reports.
NB: It is possible to create a new Jasper Report from scratch, for more information on this click Jasper Report Module. However if time is of the essence then download one of the samples provided on github: https://github.com/OpenHMIS/reports
A Report Archive usually contains several .rjxml files. One file is the top level report file and the other files are subreport files referenced to by the top level report file.
2. Click Add report,
Click Save
To test that the report prints correctly a patient must have previously paid a bill.
Navigate to Find/Create New Patient | Search and select a patient to get to the Patient dashboard | Click on the Receipt Number of a bill that has a status of “Paid” or “Posted” | Click Print Receipt button and proceed to print the receipt using the default print options | Sample Receipt |
---|---|---|---|---|
The receipt should print out successfully showing the company details, list items, payments made and the remaining balance
To create a new bill, click on the Cashier button from the home screen, then Cashier Tasks and finally Create new bill. If timesheets are enabled in the cashier settings page, then clicking Create new bill will redirect you to the Cashier Timesheet Entry page.
From the Timesheet page, select a Cashpoint then Clock In and Save to be redirected to the New Bill creation page:
Creating a New Bill | ||||
---|---|---|---|---|
Sample bill |
The bill screen can be divided into five sections:
|
This section displays information such as the cashier and cash point associated with the bill. When viewing a saved bill, the receipt number and date of the bill will also be shown. Also, if the current cashier is not clocked in (and this is not required---see Configuration), he/she will be able to choose the cash point to associate with the bill.
This section shows the patient associated with the bill. If no patient has been selected, or if the bill is being edited and a user wishes to change the selected patient, it is possible to search for a patient by name or identifier and select any existing patient.
The line items section of the bill screen displays all billable items for the bill. There is always a blank line at the end of the list which allows for the entry of a new item. Line items for a bill that has not been posted can also be removed using the trash can at the left of the line.
To choose an item for a new line item entry, or to edit a previously chosen item, begin typing the name or the identifier of the item. With a search string of at least three characters, the system will search the item inventory and show a list of results. The desired result can be selected with the mouse or by using the up/down arrow keys.
The changes to a line are validated and saved by pressing Enter or if the line loses focus (i.e., upon clicking another area of the screen).
A summary of the bill is displayed at the bottom of the line items section, indicating the total of the line items, the total amount tendered by the client, and the change due, if applicable.
This is the section where payment information is recorded. A bill can be settled using multiple payments or can be partially settled. This is explained in the bill states section below:
Bills can be in one of the following states. For a patient with multiple bills, you can see these on their patient dashboard:
To make changes to a bill that has been posted or paid, it is necessary to perform a bill adjustment. Adjusting a bill creates a new bill, preserving a link to the adjusted bill for auditing purposes.
Click on Adjust Bill | Confirm you want to Adjust Bill | New Bill page for adjusting is opened | Enter line items that you are adjusting. Then adjust payments | Complete Adjustment | View or print adjusted bill |
---|---|---|---|---|---|
The Cashier Module supports tracking cashier shifts by having a cashier clock in at the beginning of a shift (or after breaks) and clocking out when leaving the terminal. When clocking in, use the "Clock In" button to update the Clock In Date/Time. Use the "Clock Out" button in the same way when clocking out.
When a cashier has a current timesheet (i.e., he/she is clocked in), the cash point will be automatically set when creating a new bill.
Any bills that are processed during period that the cashier clocked in and clocked out can be seen from "Cashier shift report" button that is on this page.
To navigate to the Timesheet Entry page:
Cashier Tasks | Cashier Task Dashboard | Timesheet Entry Page | Cashier shift report |
---|---|---|---|
To clock in, navigate to the timesheet entry page and click on clock in and then save:
Cashier Task Dashboard | Timesheet Entry Page | Select Cashpoint and Clock IN | Save |
---|---|---|---|
To clock out, navigate to the Timesheet entry page, and then click on the "Clock Out" button and it will fill in the clock out time and then click "Save":
Cashier Task Dashboard | Timesheet Entry Page | Clock OUT | Save |
---|---|---|---|
To generate a shift report, from the Time-sheet Entry Page, click on the "Cashier shift report" button. Then select the date and period you want to generate a report:
Click on Cashier shift report | Select shift report date | Select the particular shift period | Generate the report | Report generated | Open report |
---|---|---|---|---|---|
This page is used to generate Cashier specific reports that were added as explained in the reports section above.
To generate reports, click on the Cashier Reports button from the Cashier Task Dashboard:
Navigate to Reports Page | ||||
---|---|---|---|---|
Generate Report |
The report generated above can be seen when you open the generated file, for example:
10 Comments
user-569a0
This is a great module that can be adopted by major hospitals in developing countries and it seems to cover the basic billing principles currently in place so implementation will be easy.
My question is, can users be restricted to bill items in specific departments? E.g. in some hospitals, nurses do the billing too and are for example allowed to bill items under nursing/inventory departments but not to bill items under pharmacy department for example. Is this something already implemented or can it be implemented?
Daniel Shorten
Thanks for the feedback, Thomas.
Currently we don't have this kind of fine-grained permission control implemented, but I can see how it would be useful. In fact, we are working on implementing a pharmacy module that will interact with our cashier module, and we may need to add functionality along these lines.
We'll keep this requirement in mind!
Wesley Brown
Thomas - This is good idea and we've added it as a feature to our next major release of the Cashier module (2.0). The feature can be tracked, if you are interested to do so, here: http://issues.openhmisafrica.org/issue/inv-153.
user-35feb
Is there a way to delete a bill? For example, the cashier made a mistake, it might be easier to create a new one instead of adjust an old one.
Thanks
Wesley Brown
user-35feb We do not currently support deleting a bill. This seemed like much too great a risk, even if we were to restrict it to users with a specific privilege. I would be more open to discussing how we could safely void a bill so that a record of it still exists and some form of auditing can still be done.
I'd love to discuss whether this could work for your needs... can we move this to https://talk.openmrs.org/?
user-35feb
Dear Cashier Module developers,
We are trying to make a chinese translation of the module. The button display value inside the bill.form cannot be changed. The test we did was to change the line inside messages.properties
openhmis.cashier.bill.saveBill=XXXXXX Bill.
The new page form still has "Save Bill" on the page. However, if we check the source code of the bill.form. We have:
So, is there something we need to do to change the button display value?
Or some css file rewrite the display value of the button?
Thanks all for the help.
ttk
Wesley Brown
user-35feb We would love to include your translation work in our main repositories! Please feel free to make some pull requests once your team is complete.
We have only been working with a single language up till now we have not really focused on ensuring that each element is properly translatable. Please let me know (wes@weslandia.org) or submit new issues to our issue tracker (issues.openhmisafrica.org) for any elements that you find are not able to be properly translated at this time and we will fast-track the fixes for you.
Thanks!
Saish Dawg
Installing openhmis.commons-3.1.0.omod leads to the following error at startup preventing the app context from loading:
org.openmrs.api.APIException: Service not found: interface org.openmrs.scheduler.SchedulerService
I am running OpenMRS 1.11.4 (simply as a WAR, no code modifications or even a local build). I see that your compatibility is generally 1.9.x. Can OpenHMIS be run on later versions?
Thank you!
Sascha
Wesley Brown
Hello Sascha,
Yes, the OpenHMIS modules should work with 1.11.4. Can you make sure that
you are using version 1.5.6+ of the Jasper Reports module? I've had that
problem when using an older version of that module.
-Wes
Saish Dawg
Hi Wes thanks for the quick reply. Yes, it appears to work fine. The stumbling block was Java 7.
Sascha