Tom Dubeck-Stuff You Wish You Had Learned in Epic Certification

Using Indexes in Epic

Using Indexes

Epic’s databases hold the information that your system lives on.  Being able to query that data quickly and efficiently is a mark of system mastery.  One database tool that I’d like to promote today is the indexes that are created for various items.

Database indexes are lists of record IDs for each known value of the “index item”.  An Example: Patient Encounter Date, item EPT 20, is an index item.  This means that living in the system right now is a self updating list of all patients who had an encounter for each day your system was running.  If necessary, the lists for multiple separate values (the last 3 Mondays) or a range of contiguous values (all of last week) can be generated rapidly.  When trying to query the Patient Database, instead of searching through every record in the system, you can limit your search to patients in the Encounter Date index for a range you deem relevant or an appropriate sample (like the last month’s worth of patients).   This increases the speed of Chronicles or Clarity Searched by orders of magnitude.  The performance gain is even larger if you can find other indexes on items you are searching for.  Encounter Provider, EPT 7040, is another indexed item.  Combining these indexes lets you easily search for “All of Dr X’s patients seen in the last month”

Nearly anywhere you are asked to enter a Record ID in the text side (Chronicles, EAVIEWID, Reflections record editing) typing the command “key ?” without quotes will bring up a list of all the indexed items the master file has.   Likewise if the item is a category list, “key item number=?” will list all categories where at least one record is present and depending on the item, can give you a quick count of how many records are in each index.

I could go on a lot longer, but here are some simple takeaways that help solve problems you might have been stuck on:

  1. How do I find the parent order of this released order?  Search ORD for “key 660=childOrderID”
  2. How do I find out who’s a member of this pool?  Search EMP for key 450=Class ID of Pool.  This also works for User Security Template records instead of pools, with index EMP 198 instead.
  3. How do I find all Order transmittal Destination maps that print to this printer?  Search LOM for “key 110=ID of Printer’s LWS record”
  4. For finding multiple values in the index, you can type commas like “key item number=1,4,8” for multiple values or a colon to make a range, “Key item number=5:25”

You can actually make Indexed items from EPT (like encounter date or Encounter provider/Department) available to end users in Hyperspace as part of the Patient Custom Search Tab.   Take care to only add Indexed items to the tab, attempting patient lookup with non-indexed items will appear very slow in Hyperspace.  Instructions here: https://galaxy.epic.com/?#Browse/page=7900!68!30!443329,443385,34234,34232

 

 

 

 

Epic-Auditing Changes in Database fields:

Epic is a big system, with literally thousands of database fields that can influence the behavior of your system.  Sometimes, a person will change a field, and unintended consequences will create issues.  This can happen even with Data Courier and the best change approval processes.  Epic has many tools to help you track what has been changed, by whom, when, and sometimes even what the field used to be, which can prove crucial to restoring order, but these systems won’t help unless they are turned on and understood by your IT staff.

Change History is one system built into Chronicles, it can be turned on at the masterfile level, though it’s prohibited from being used on any “dynamic” masterfiles like EPT (Patient).  When a user edits a record, the system will record into a cache file global the record, name, time and list of fields “potentially” edited.  This information is indexed making it easily searchable, whether through Chronicle’s own functions or the Lookit global viewer, but not Clarity.   The reason the feature isn’t enabled automatically is that you must decide how exactly you will purge old unneeded data from the file.  Epic provides two Chronicles Batch Templates: one that lets you remove data based on age of the edit event (remove data older than 6 months), the other based on number of edit events per record (only retain the last 5 change audits per record).  You can set up multiple batch jobs in order to enforce different or overlapping rules across the masterfiles you track with this system.  Each edit event is less than 500 bytes in size, so it’s fairly manageable to watch over nearly every non-dynamic masterfile for months

Epic: Generic Printgroups:

Generic Printgroups:  Have you wanted to display information in Chart Review, the Schedule reports, etc. yet were unable to find a solution in the Printgroup Encyclopedia?   Do you have a print-group in place but dislike how it uses space, or wish the language in the data labels matched your organization’s terms?   Do you have a static block of text like a legal notice or logo you want to appear on your printouts?  The answers to these questions are more can be found in Epic’s “Generic Printgroup” functionality.

Generic item printgroups allow you to take nearly any item from a Patient, Order, etc.  Label them and format them freely.  Having minor knowledge of cache coding can bring out a wider range of options, but much of its potential is just selecting the items you want and accepting Epic’s defaults.

SmartText printgroups let you display any SmartText exactly as it appears in the Editor- including images and barcoded data.  You can insert Smartphrases into the SmartText to get patient or order specific information to insert itself into the printout as well.