Epic SmartForms can be used for just about anything. Within a SmartForm, various fields, known as components, are created and stored to SmartData Elements. In this article, we'll review some of the most important aspects of SmartForms, and provide some tips and tricks:
Epic SmartForm Guide
Overview
SmartForms (LQF) are customizable data collection tools that can be used across nearly all Epic applications. SmartForms are made up of components, which store data to SmartData Element (SDE) records (HLX master file). Within a SmartForm, SDEs store information to various levels including the Patient-level (data that should carry over from visit to visit, and typically won't change over time), Encounter-level (data that could change from visit to visit), Note-level (data stored to an individual Progress Note or Procedure Note).
SmartForms can be used to capture just about any type of data imaginable. Although they can take hours to design, build, and test, when built correctly, SmartForms can be among the most user friendly data collection tools, when compared to such options as SmartPhrases/SmartLists.
Types of SmartForms
There are dozens of different types of SmartForms that can be created within Epic, including Physical Exam, ROS, HPI, Procedure Documentation, and General. Physical Exam, ROS, and HPI SmartForms are typically launched via SmartBlock SmartLinks, which are special types of SmartLinks that are configured to launch the NoteWriter activity.
For example, a SmartText template may contain the SmartLinks:
@HPI@
@ROS@
@PHYSICALEXAM@
Which, when launched via a NoteWriter section (such as Progress Notes) will display a three tab SmartForm that includes sections for HPI, ROS, and Physical Exam. The specific SmartForm in each of those tabs will be dependent on the code within the SmartBlock SmartLink.
Basic Mode vs. Advanced Mode
A fairly recent development in the Epic SmartForm Designer activity was the introduction of SmartForms in "Basic Mode." Basic Mode is a much simpler user interface than the SmartForm Designer in the traditional, or "Advanced Mode," however some of your options are limited. Rather than being configured in its own tab, Scripting is done within the form itself, which is actually much more intuitive. However, those who have some experience with creating SmartForms in Advanced Mode may prefer it over basic mode due to their familiarity with the existing tools.
Scripting
Scripting in SmartForms is where the designer of the form has a lot of control over making the form more user friendly. With scripting, you can control whether fields are visible, hidden, enabled, disabled, and/or populate or clear the data from the fields. One very powerful tool that can be used is including CER rules in the form scripting to allow buttons to automatically be selected.
Text Generation
Certain SmartForms require the use of Text Generation templates. Text Generation Templates records (HGN) are records that control the text that is automatically written when NoteWriter SmartForms are completed. These include HPI, ROS, Physical Exam, and Procedure Documentation SmartForms, to name a few. These records must be carefully generated each time a text generating-SmartForm is created or modified. In some cases, such as in Procedure Documentation SmartForms, generating a Text Generation template can be done automatically from within the SmartForm itself (by going to Actions > Generate Text Template), but in other cases, it has to be done manually.
Tips and Tricks
Here are some tips and tricks that you can use when creating custom SmartForms:
- Copy an existing, Epic-released SmartForm when possible: this is generally good practice for all record creation in Epic, but particularly useful in SmartForms that have a lot of pre-configured scripting)
- Lay out the entire SmartForm structure in tables prior to creating the components
- Import your SDEs if possible: when importing, create them first in the SmartData Manager. Keep the default name (ENTER NAME OF NEW ELEMENT), but you don't need to change any other settings. Export them to a spreadsheet using d main^JXPORT, and then make your changes and import them back in.
- Clear data when hiding it: it's common to create SmartForms that have components that show or hide other components based on the value. For example, for a proc doc SmartForm for wound repair, there may be a question that asks for "body location." Based on the answer to that (e.g., head, upper extremities, lower extremities, etc.), there may be another question to ask (e.g., head location). Make sure that your scripting is set up so that if head is chosen, and the upper extremities fields are hidden, that they are also cleared (both the value and the comment)
- Scripting can be copied within and across SmartForms: scripting is sometimes the most tedious part of SmartForm creation. If you are creating SmartForms that need to hide and clear values, copy pasting it across components can save you some time