HOWTO: Add Custom Service Codes To The Fee Sheet - Updated
Introduction
OpenEMR CE (‘Community Edition’) has a feature that allows treatment, diagnostic or other types of codes to be grouped in dropdowns (AKA 'categories') on the Fee Sheet for convenience in recording the charges in an encounter. These codes may be individual ones from an installed codeset, or collections of codes, which I've arbitrarily called, 'Custom Service Codes' or CSCs.
In the standard OpenEMR the fee sheet comes pre- configured with the code categories, 'New Patient' and 'Established Patient'. These dropdowns contain the management codes for visits (e.g., 'Brief, 'Limited',"Extended', etc) but it has no treatment or diagnosis codes. Those must be imported separately using instructions elsewhere in the wiki. But note that the codes must already be in the EMR before they can be added to CSCs.
Grouping codes on the fee sheet provides two benefits.
1. Code categories can display together on the fee sheet a collection of individual codes that are related in some way, thus making it easier to locate the one you want.
2. CSCs can contain a group of codes in one entry which can all be added to the fee sheet in one click. For example, you may have a fee sheet category (dropdown) for different types of visits, and in that dropdown a CSC for each one: a Minor Surgery visit or a generic Office Visit. Each one when selected will automatically add all the treatment and diagnostic codes that are typically used for that visit.
Procedure Overview
The short story of this process:
- 1. Plan the categories - decide what the dropdowns will be called and which codes will be in each
- 2. Prep the codes - identify and list the codes that will be used
- 3. Create the CSCs
- 4. Add codes to their categories
Here’s a screenshot of the fee sheet we’re going to build. It contains the default categories of ‘New-’ and ‘Established Patient’ but also the new categories ‘Visits’ and ‘Immunizations’
Depending on the theme you use your display will be different.
Procedure
An Administrator- privileged user account must be used to do this.
Note: since the CPT4 codes are proprietary some licensing issues may arise from different uses made of them in OpenEMR. I am NOT a lawyer so I will simply link to the relevant page of the AMA site and let the user make their own decision on the implications of how they are used in their own OpenEMR instance.
Plan the categories and codes
This is only the planning stage, don’t edit anything in the EMR yet!
1. First, we're going to name a category (dropdown) that will contain the CSCs that apply to different (fictitious) types of visits.
Category:'Visits'
Inside this dropdown we will put one item for each of our three types of health visits:
- Pediatrics Surgery – which contains the codes:
- CPT4:12001 laceration repair etc
- ICD10:H59.229
- CVX:35 Tetanus Toxoid
- Office Visit – the codes:
- ICD10:F53.0
- CPT4:90791 clinical intake
- Cancellation Fee – note this is a single code CSC and it is of code type ‘INHOUSE. See the Appendix below for more on that.
- INHOUSE:1010
2. Prepare the codes
Go through the CPT codes and be sure they're complete. Refer to: HOWTO:_Add_Or_Edit_A_Billing_Code_In_OpenEMR#2._Add_Codes_To_System
Create the CSC
1. Open the fee sheet list: from main menu, 'Admin/ Forms/ Lists' (oval)
2. Enter the name of the form, ‘Fee Sheet’:
This (below) displays the controls of the Fee Sheet as they will appear when our custom CSCs are added. Let’s walk through all the elements.
- Notice that to keep image size smaller we only show the first default group ‘New Patient’ here...
3. Add to the bottom of the list, the new item in each column:
- Group - AKA Category, appears as the name of the dropdown in the fee sheet.
- Option – displayed as the items inside the fee sheet dropdown.
- Here are displayed the CSCs in the category ‘Visits’
- Generates - the codes that are added to the fee sheet.
Add your own and pay attention to the numbering convention.
1. Groups
- are numbered consecutively
- all the items in the same group have the same initial number
- the group name follows the number with no space
- you will have one Group line for each 'Option' item in that Group.
2. Option
- each Option item in the group is numbered consecutively
- use the same number/ naming conventions as with the Group names
3. Generates
- this column contains the code(s) which are added to the fee sheet when the Option CSC is clicked.
- click 'Add' link and see the ‘Add Code’ dialog (image below).
- choose the codetype from the dropdown (highlighted)
- click on the desired the code in the list that appears (arrow)
- click 'Close' (oval)
- IMPORTANT: each Option MUST have at least one code in the ‘Generates’ column else it will distort the display of that dropdown in the fee sheet.
4. Repeat from step ‘1. Groups’ above, for more new code Categories and CSCs.
- To add the single code CSCs shown in the 'Immunization' dropdown, simply put the immunization's name in the Option column for each one, and its single code in the 'Generates' column.
And here’s a shot of how a single click of the ‘Pedes Minor Surgery Visit’ drops all the configured codes onto the fee sheet. All that remains to complete the fee sheet entry is to select the treatment code's justifying diagnosis.
Conclusion
Since OpenEMR's early releases it has had 2 different methods of adding codes to the fee sheet. They both still do in fact work, but the documentation for them can be confusing at best, and the interface is radically worse in the older versions. But just for historical completeness, here are the wiki links.
https://www.open-emr.org/wiki/index.php/OpenEMR_4.2.0_Fee_Sheet_Custom_Service_Categories
https://www.open-emr.org/wiki/index.php/HOWTO:_Create_Multiple_Code_Fee_Sheet_List_Categories
Also, here is an older doc on the topic of code types. It’s fairly advanced material but may be useful.
https://www.open-emr.org/wiki/index.php/Code_Types
NOTE: as of 4 Sep 24 a post to the forum discusses a bug that limits the fee sheet code list to 40 entries.
for details!
Appendix: In-House Codes
The previous instructions describe different methods of grouping standardized treatment and diagnosis codes such as the CPT4 and ICD10 codes. Let me conclude this tutorial by describing a very useful, though not completely obvious, use for CSCs: to add your own non- standard codes to the fee sheet.
Let's call them, 'In-house Codes', though they can be named anything you wish. These are codes that are peculiar to your practice and they do not get sent with claims for insurance payment. However, they are carried on the patient's practice account and appear in the payment/ checkout screens, invoices and reports.
In-house codes are just another code type to add to the fee sheet. They may be put in the same category (dropdown) with other treatments in Multi-Code CSCs, as we have with the cancellation fee. You can make an 'In- House' category and put them all there. Or just list them individually in the fee sheet outside any category dropdowns. The steps to create in-house codes are similar to what is described above, except for two things.
- 1. you need to create a new code type
- 2. you need to create the codes themselves
One example of an in-house code might be the 'No Show' fee we used above for patients' failure to appear for their appointments. Another might be to record supplies given to the patient that aren't covered by insurance. Or perhaps for some non- paid activity that you want to track in reports.
1. Create an in-house code type
In main menu go to 'Admin/ Forms/ Lists'. Enter 'Code Types' and view that screen:
Add at the bottom the parameters of your new code type.
Again, you can refer to this page for details:
https://www.open-emr.org/wiki/index.php/Code_Types
- Active - yes it's going to be active
- Key - short name for the code type. Make it relevant, brief and all caps. Let's use ‘ INHOUSE ‘
- ID - item's identifier unique to this table
- Label - text for human- readable display. Let's use 'In House'
- Seq - where it appears in the Code Type dropdown lists
- ModLength - make it 0 (you won't want code modifier text for these)
- Justify - leave blank; code will not require justification like CPT4 codes do.
- Mask - #### (four hash marks '#') means you want 4 numeric values; see next section)
- Claims - off
- Fees – on, so you can assign a fee to this code type
- Relations - off
- Hide - off, so it WILL appear in fee sheet code search list
- Procedure – off, unless this custom code type will be just for procedures
- Diagnosis - off, unless this custom code type will be just for diagnoses
- Clinical Term - off
- Medical Problem - off
- Drug - off
- External - no
2. Create the codes
Let us say we decide that we want our in-house codes to simply be 4 numeric digits. That is why the 'Mask' parameter in the previous section is: '####' : this prevents anything besides 4 numerals from being entered when inputting the code, . See ‘Code Types’ for other masks.
For instructions how to enter codes, see see: HOWTO:_Add_Or_Edit_A_Billing_Code_In_OpenEMR#2._Add_Codes_To_System
and be sure to select 'In House' for the code type.
3. Treat them the same as any other code.
Again, these will appear in the Checkout and Payments screens but will not be sent in claim files to clearinghouses for insurance payments.