CDR in OpenEMR 5 - Create a CDR

From OpenEMR Project Wiki

Create a CDR

Introduction

Continuing from the first section of the tutorial, this document shows how to create a new Clinical Decision Reminder rule, a.k.a. 'CDR'. A CDR is a notification that is displayed when some clinical activity is due to be performed for a patient. When the activity is completed the CDR ceases to be displayed until it's due again.


OpenEMR CDRs allow for different types of completion events, or 'Target/ Action Groups'.

  • when some datum is entered in the Lifestyle widget
  • when some other sort of data is entered into the patient's record, for example taking a patient's weight
  • any other arbitrary ("Custom") activity

Let's create a simple CDR for an 'Annual Wellness Check'. Since these CDRs are fairly complex to build, I will give the basic steps in each section then make Notes of things that may require consideration.


An Annual Wellness Check has no universally defined activities, like a "Blood Pressure Check" does. It's not monitored by the Lifestyle widget and it's not stored in the database in any discrete location, for e.g., the Vital Signs form. In our three types of CDRs, that would make it the third, a 'custom' activity. When the CDR alert appears, the staff does whatever tasks make up an Annual Wellness Check, and simply mark the CDR as complete.


We begin:


0. Turn on CDRs in Globals/ CDR

Cdr-00GloOn.png


Note:

  • All these steps to create a CDR require Administrator privileges.











Then navigate to 'Administration/ Rules'; click 'Add New' (blue oval)


Cdr-02a.png

















Cdr-10-Numbered.png


(Flash back to the previous tutorial and the Rule Detail screen...)


Sections are numbered in this picture with the step numbers in the instructions below

















Highly Relevant Digression here

Brady provided in this post to the OpenEMR forum in 2016:
https://community.open-emr.org/t/flummoxed-by-cds-rule-logic/4148

It's a fairly detailed explanation of the Byzantine and counterintuitive logic behind the coding of the CDR rules. That is accompanied by further discussion of how to make the CDR rules do what it seems they should do.
After reading this they're still Byzantine and counterintuitive but at least it gives a roadmap to navigate them with.
Note: I haven't checked OpenEMR v 6 to see if the CDR engine still functions as described in the forum post. - HT


1. Click 'Summary - (edit)'

In the 'Rule Add' screen, fill in the Summary details.

Cdr-20.png


  • Title: Annual Wellness Check
  • Type: make it Active AND Passive.
  • Developer: your identifiers.
  • Funding Source: where the project funding comes from
  • Release: your document numbering convention
  • Web Reference: URL to the authoritative guideline that informs this CDR.


Click 'Save' at top.


Notes:

  • Active alerts generate a popup, but do not appear in the CR widget.
  • Passive alerts have no popup; they only appear in the CR widget.
  • The only way to mark a CDR as complete is through the CR widget entry
  • Ergo, If you want a popup alert that can be marked complete, it needs to be both active and passive.
  • A CDR that is only Active will popup while it's due then stop when past due.
  • Developer, Funding Source, Release, Web Reference - all MU2 requirements; have no clinical effect if omitted

2. Click 'Reminder Intervals - (edit)'

The dialog:


Cdr-21.png


Set the reminder intervals:


The 'Clinical' CDR shows the “Due” warning for 2 weeks

then "Past Due" for a month.


Notes:

  • The 'Patient' intervals need to be filled in, but they apply to a different module.


Click 'Save'


3. Click 'Demographics Filters - (edit)'

The dialog:


Cdr-22.png

The filters available for CDRs are:

  • Age min - enter a number, and select Units of months or years (see next picture)
  • Age max - same as 'Age Min'
  • Sex - just select the gender
  • Medical issue - enter the issue name (e.g., 'asthma'); keep it simple; it finds a text match in the list of all patients' recorded medical issues
  • Diagnosis - click in Diagnosis text area for a search dialog on not just the diagnosis codes but all the codesets that are active in your system.
  • Medication - enter the med name for a text match of all patients' medications
  • Allergy - text match of all pts' allergies
  • Surgery - text match of all pts' surgery issues
  • Lifestyle - select lifestyle element from dropdown
in Value text area: enter a value to match in that element,
or alert on any value in that element
  • Custom Table - (only mySQL database experienced folk should muck about with this one)
Table dropdown: select the OpenEMR database table to look in for the filter datum
Column dropdown: Select the column in that table containing the filter datum
Value: Select in dropdown the relationship indicator (= , >=, < etc)
Enter the value to compare
Frequency: Select in dropdown the relationship indicator (= , >=, < etc)
Enter the frequency of occurrence
  • Custom - select custom rule filter category and action item. See special section below.


Cdr-22-age.png


Click on whichever of those filters you want your CDR to use and fill in the details.


Click 'Save'


For our example we're going to do Annual Wellness Checks on everybody who's 10 years old or older, as shown in this picture of the 'Age Min' dialog.



Notes:

  • The filter dialogs are all similar in format to the 'Age Min' dialog:
    filter specification at top; 'Optional/ Inclusion' selectors on bottom.
  • Optional/ Inclusion settings: Optional = is this filter necessary to evaluate this rule
    Inclusion: is this filter to be present (= Yes) or absent (= No)
  • Re: Optional = 'Yes' setting, per an OpenEMR discussion forum thread the GUI unintentionally reverses the values so "Optional = Yes" really means "No, not optional"

.


----- Special Section: 'Custom' filter -----

If the default filters above do not provide your desired CDR targets and actions, custom ones may be created.

Again, these custom filters are used in the Target/ Action Groups which we will configure after this special section.

Custom filters have two components:

  • Clinical Rule Action Category - what SORT of action completes the CDR
  • Clinical Rule Action Item - what SPECIFIC action completes the CDR

Some 'custom' Categories and Items have been created already:


Cdr-29.png
The default categories:


Click '(change)' , left oval.

The text area changes to a dropdown list.












The list of default 'custom' Items is rather long; survey them before you decide to create your own.


1) Decide what you want to call your custom Category and Item.


For our 'Annual Wellness Check' example we're going to use the existing 'Examination' Category and create a new 'Annual Wellness' Item.
Cdr-32.png




2) Navigate to Administration/ Lists




3) Select the list: 'Clinical Rule Action Item' (oval)


4) Fill in:

Cdr-33.png


  • Item ID
  • Title
  • Order (just the next value in the sequence; here it's 170)

Click 'Active' checkbox

(it's the right hand column of green checkboxes- see next picture)

Click 'Save' at bottom.


Cdr-34.png


If you want to make a new custom Category you'd open the list 'Clinical Rule Action Category' and enter the Category identifiers in the same fashion.






(see there's the 'Active' checkbox column.)


5) Return to 'Administration / Rules, your new Rule Detail


----- End of Special Section -----




After setting Demographics Filter Criteria proceed to:


Target / Action Groups

4. Click 'Clinical Targets - (edit)'

You notice that some of these are the same as are used in the Demographics Criteria.

In Demographics they indicated the CDR triggers.
Here they indicate the targets and actions that complete the CDR


Cdr-27.png

The dialog:



Cdr-31.png



For our example select 'Custom'





Add a target category:


Click '(change)' (in blue oval at left)

We're using 'Examination'


Cdr-30.png


Add a target Item:

Click (change)










there's our Annual Wellness Check item at the bottom


Set the rest of the items as seen in the previous picture:

  • Completed = Does this CDR need to be completed to stop triggering? Yes it does
  • Frequency: do exam at least once; may be more if desired
  • Optional/ Inclusion: yes
  • Interval: repeat every year.


Click 'Save' at top.

.

5. Click 'Actions – (edit)'

Cdr-35.png

Add the action:

  • Category: same as Clinical target
  • Item: same as Clinical target
  • Link: allows a 2nd internet reference url different from the CR widget '?' (see next tutorial, 'Using the CDR').
Not functional if Custom Input = 'Yes'
  • Message: [ignore- non- functional]
  • Custom Input: yes (allows entry of the completion note)


Click 'Save' at lower left


Note:

  • A CDR can detect and act upon multiple target/ action groups. For an example see Administration / Rules, "Weight Assessment and Counseling for Children and Adolescents (Passive Alert)"




And that is the new CDR created.


Of course you'll want to look at your new CDR.

Open the Patient Finder and select any patient over 10 years old.



There's the active alert popup (oval)

and there's the passive alert in the CR widget (arrow).


Cdr-36.png

Fine Grained CDR Control

Fine Grained Control of the CDR is part of MU2 measure a(8). That measure requires that the visualization and use of a CDR be able to be restricted to, or excluded from, any arbitrary users.

The approach taken by OpenEMR to fulfill this requirement is to link a CDR to a specific ACL permission. In that way, any user who is assigned that ACL permission, or who belongs to a Group possessing that permission can use a CDR assigned to that ACL permission. If they are not assigned that permission they will not see and cannot use that CDR.

By default, all CDRs are assigned to the ACL permission of “Patients: Medical History” so that any users who normally have access to the Patient Record will be able to use all the CDRs. However, if desired, individual CDRs may be assigned to any other ACL, including special- made ones. Changing the ACLs a CDR is assigned to can only be done by OpenEMR Administrators.

Let us look at an example.


Navigate on the main menu to 'Administration/ Alerts'


Fgc-00.png

Note how all CDRs are assigned to the 'Patients: Medical History etc)' Access Control


Then scroll down the list.









Fgc-01.png





OpenEMR does come with a CDR, “Data Entry: Social Security Number”. It was specially made for MU testing and is left inactive by default (but it can be activated and it will work).

As illustrated, it is a Passive Reminder, and makes it so that the only users who can see the alert in the patient's CR are those who have the Access Control, 'Administration: Practice Settings'.

Note:
  • The CDR could be set to any ACL
  • Anybody can enter the SSN, but not everybody can see the alert announcing the deficiency.



Fgc-0.png



This rule will appear in the CR widget of any patient who has no SSN recorded in their Demographics. For example, this patient.









Fgc-02.png

Now: observe that the 'write' ACLs for the Front Office group include 'Administration/ Practice Settings'












Fgc-022.png

Our Front Office worker, Radar OReilley, can visualize the Passive Reminder in the CR widget.










Fgc-03.png

However, Physicians do not have that ACL...










Fgc-033.png

… and our Dr No cannot see the CDR.













That is the essence of Fine Grained Control of the CDRs.


Administer Patient Default CDRs

The CDRs that appear in a patient's CR widget are initially determined by the practice's default CDR display settings. However, if desired a subset of the CDRs may be configured for each individual patient.

The idea is that in (from main navigation menu:) 'Administration / Alerts' the CDRs are activated for all patients, practice- wide. Then in each individual patient's CR widget the CDRs can be specified that you want to appear for that person.

Initially all CDRs are set with the practice defaults and that's how they appear in every patient's CR widget, if the patient fits the filter criteria. For example, womens health CDRs would not appear in this male patient's CR.


Cdd-02-CR.png


To administer these settings click the 'Edit' button in the CR widget (in the widget header)








Cdd-01.png

In 'Clinical Reminders' panel, click the 'Admin' tab (green oval)













We're not working with the 'Plan' section so scroll down to 'Rule'.

Cdd-03.png

In the Rule section we have a full listing of all CDRs, with their status setting for this patient.

Important note: each patient's CDR setting is relative to that CDR's Practice Default Setting.


As I mentioned, initially all rules would have 'Default' in those dropdowns, but I changed one, which I'll talk about in a minute.

The first three rules have all possible settings; let's look at them.


Let's start with the first CDR, “Annual Wellness Check”.

1) Rule column: the CDR name.

2) Passive Alert column: the Patient Setting is 'Default', i.e., the same as the Practice Default Setting, which is 'ON'.

For this patient, “Annual Wellness Check” is a passive alert and appears in the CR.

3) Active Alert column: the Patient Setting is 'Default'; the Practice Default Setting is 'ON'.

For this patient, “Annual Wellness Check” appears as an Active Alert popup.


Next rule:

1) Rule: “Adult Weight Screening and Follow-Up”

2) Passive Alert: Patient setting is 'Default'; Practice Default is 'ON'

3) Active Alert: the Patient Setting is 'Default'; Practice Default Setting is 'OFF'.

For this patient, “Adult Weight Screening and Follow-Up”:
  • appears in the CR.
  • does not appear as an Active Alert popup.


Next rule:

1) Rule: “Measure Blood Pressure”

2) Passive Alert: I changed the Patient Setting from 'Default' to 'ON'; Practice Default is 'Off'

3) Active Alert: the Patient Setting is 'Default'; Practice Default is 'OFF'.

For this patient, “Measure Blood Pressure”:
  • appears in the CR as a Passive Alert even though it doesn't show in other patients' CRs.
  • does not appear as an Active Alert popup.


Clinical Reminders Widget


Active Alert Popup










And that's how you personalize patients' CDRs.




Previous Page: CDR in OpenEMR 5 - Survey of CDRs
Next Page: CDR in OpenEMR 5 - Using a CDR