CDR Project QA Testing

From OpenEMR Project Wiki

CDR Project source location(s)

http://github.com/bradymiller/openemr/commits/rules_develop

CDR QA Issues/Questions

Put your questions for clarification here.

CDR Bugs

Put any bugs you find here, there is a cut/paste simple "Bug Tracking" template here Bug Tracking Template

1. It is possible to create duplicate rule with the same name and add to the Rules list please see the attachment for more details.

  • Not a big deal. Very low priority.
  * No Warning message or Validations implemented while creating duplicate rules.
  * Go to Administration->Rules
    Click on <Add  new> button
    Add a rule Named Rule 1
    Add another rule named Rule 1
    Review the rule list to verify a duplicate has been created
    Setup a reminder for both
  * March 15, 2011
  * Who owns the fix action: Ram
  * Date Fixed
  * Where is the fix posted

2. It is possible to create duplicate rule filters with the same name for a given rule.

  • Not a big deal. Very low priority.
  * No Warning message or Validations implemented while creating duplicate rule filters.
  * Go to Administration->Rules
    Click on any rule
    Add multiple duplicate filters under the  "Demographics filter criteria" section.
  * April 1, 2011
  * Who owns the fix action: Ram/Tony
  * Date Fixed
  * Where is the fix posted

3. Broken sorting.

  • Not a big deal. Very low priority.
  * Go to Administration->Rules
    Click on asc/desc sorting for any columns. Doesn't sort.
  * Go to Administration->Patient Reminders
    Click on asc/desc sorting for any columns. Always sorts in asc.
  * April 1, 2011
  * Who owns the fix action: Ram/Tony
  * Date Fixed
  * Where is the fix posted

4. Role based access not enforced

  • Will be fixed before committed to main sourceforge codebase (very easy, since this functionality is built into the widget ont he patient summary screen, which the CDR stuff uses).
  * Login as user that has only front office access.
  * Search and pull up a patient record.
  * From the demographics section, am able to View and Edit the widets for Patient Reminders and  Clinical Reminders. 
  * April 11, 2011
  * Who owns the fix action: Brady
  * Date Fixed
  * Where is the fix posted

CDR Official Branch

Official branch is maintained here

http://github.com/bradymiller/openemr/commits/rules_develop

Layperson (user) summary of official branch features

This is essentially an engine that allows incorporation of rule sets to check/monitor/report clinical information (such as vitals, history information, medications, procedures, labs, etc.) in real time. It has been built in a fashion to be very flexible and support internationalization.

1) Clinical Decision Support ('Clinical Reminders') widget can be found in the top right of the patient summary screen.
  • Shows if an action is due soon, due now, or over due.
  • Some actions offer a link (this then shows a screen where results can be stored). Note these are to store action results that are not found elsewhere in the OpenEMR database.
  • 'Edit' button opens a screen:
  • 'Main' tab shows all pertinent actions (whether completed or due).
  • 'Plans' tab shows all pertinent actions (whether completed or due) organized by plan.
  • 'Admin' tab allows per patient customization of the plans and rules.
2) The patient reminder ('Patient Reminders') widget can be found in bottom left (above vitals widget) of the patient summary screen.
  • Shows if a reminder action is due soon, due now, or over due; and shows if a reminder has been sent.
  • 'Edit' button opens a screen:
  • 'Main' tab provides more details on when reminder was created and sent (and which medium it was sent).
  • 'Admin' tab allows per patient customization of the rules.
3) The reporting for the clinical rules module can be found at Reports->Clinic->Quality Measures.
  • Lots of options for reporting clinic-wide rules results.
  • Also place for creating the CQM and AMC results (note the AMC and CQM rules are still under development)
  • Can also produce PQRI (this is a way to show CQM results) formatted results.
4) Patient Reminder Admin page can be found at Administration->Patient Reminders.
  • Shows the active reminders.
  • The batch to send the reminders to patients can be run from this script by clicking the Send Reminder Batch button(only works for email so far).
5) Rule alert settings Admin page can be found at Administration->Alerts.
  • Allows quick toggling of active/passive alerts and patient reminders for each rule.
6) The Clinical Decision Rules (CDR) editor GUI can be found at Administration->Rules.
  • Full support to add and modify rules.
7) Currently supported Rules/Plan sets:
  • Plans
  • Preventative Care
  • Diabetes
  • PQRI Measure Groups (pending)
  • Rules
  • (Need to optimize following of below rules:
  • Whether to even include the rule?
  • Optimal age group?
  • Optimal interval?
  • Whether to have as a clinical alert, patient reminder, or both?
  • The ideal pre-due and post-due time intervals (both the clinical alert and patient reminder mechanisms can be set separately)?
  • Hypertension: Blood Pressure Measurement
  • Every year
  • Both clinical and patient reminders
  • Tobacco Use Assessment
  • Both clinical and patient reminders
  • Tobacco Cessation Intervention
  • Every year
  • Both clinical and patient reminders
  • Adult Weight Screening and Follow-Up
  • Age < 18
  • Both clinical and patient reminders
  • Weight Assessment and Counseling for Children and Adolescents
  • Both clinical and patient reminders
  • Influenza Immunization for Patients >= 50 Years Old
  • Age > 50
  • Yearly during flu season
  • Both clinical and patient reminders
  • Childhood immunization Status
  • Age > 1 and < 18
  • Both clinical and patient reminders
  • Pneumonia Vaccination Status for Older Adults
  • Age > 65
  • Both clinical and patient reminders
  • Diabetes: Hemoglobin A1C
  • Every 3 months
  • Both clinical and patient reminders
  • Diabetes: Urine Microalbumin
  • Every year
  • Both clinical and patient reminders
  • Diabetes: Eye Exam
  • Every year
  • Both clinical and patient reminders
  • Diabetes: Foot Exam
  • Every year
  • Both clinical and patient reminders
  • Cancer Screening: Mammogram
  • Age > 40
  • Every year
  • Both clinical and patient reminders
  • Cancer Screening: Pap Smear
  • Age > 18
  • Every year
  • Both clinical and patient reminders
  • Cancer Screening: Colon Cancer Screening
  • Age > 50
  • Both clinical and patient reminders
  • Cancer Screening: Prostate Cancer Screening
  • Age > 50
  • Both clinical and patient reminders
  • Coumadin Management - INR Monitoring
  • If on coumadin/warfarin
  • Every 3 weeks
  • Both clinical and patient reminders
  • Clinical Quality Measures(CQM) (pending)
  • Automated Measure Calculations(AMC) (pending)

Official Branch Commits

(in order of first to last)

http://github.com/bradymiller/openemr/commit/2d9fba1b92f323ecb6c4470fa61a39c3b8255bee
Interim development of a clinical decision making engine.

Engine depends on rules, filters, targets, and actions. Basically,
if a patient fits in the filter, and the target(s) is false, then the
action(s) happens. The current scheme allows one filter
and multiple targets and actions per rule, is very flexible, and supports
internationalization. Engine is used for clinical decision support,
clinical quality measures (CQM) and patient reminders.

FUNCTIONALITY:
1) Clinical Decision Support widget can be found in the top right
   of the patient summary screen.
2) Clinical Reminder widget can be found in bottom left (above vitals
   widget) of the patient summary screen.
3) Clinical Reminder page can be found at Administration->Patient
   Reminders. The batch to send the messages can be run from this script
   by clicking the Send REminder Batch button.
4) CQM report can be found at Reports->Clinic->Quality Measures.

TODO:
1. Finish rules for the 10 CQM rules (will require algorithm adjustments
   to deal with the encounter types and frequencies that are used in the
   CQM rules).
2. Ensure NIST is accomplished for CQM and clinical decision support.
3. Get the email and voice patient reminder mechanisms to work (may ask
   Visolve to help with testing the modified mavix//voice email scripts).
4. Ensure NIST is accomplished for the patient reminders.
5. Add a admin gui to allow per patient customization (note the
   mechanism to do this already exist, so just need a simple gui for it)
6. Add mechanism to allow multiple filters per rule.
7. Add a admin gui to allow rule modification and creation of new rules.
8. Add a mechanism for plans.


http://github.com/bradymiller/openemr/commit/74bb82a0c92e0dcb3f69575cfdb4d6e713e012d8
Added functionality to check the lists (which contains medications,
  allergies, diagnoses, surgeries, etc.), which means NIST functionality
  is almost done for clinical reminders and clinical decisions (just need to
  add a laboratory check). Also need to do more testing of this feature.


http://github.com/bradymiller/openemr/commit/7eec43964df701dcfc1acedf086214e2a6554ce1
Placed a medication filter (coumadin) and a procedure checking target in the procedure tables (INR).
 Done getting procedures checking algorithm in, however still need to test/debug (currently
   passes all procedure targets, so a mild error somewhere to work out)
 Will convert the database to same mechanism as procedure checking since it's much cleaner.
  (collect another comparison parameter)


http://github.com/bradymiller/openemr/commit/b62f335ad9cf4e8a68c5531e91fb0755e0557ffa
The procedure mechanism for filters and targets is now in place and working.
  To demonstrate NIST, put a medication filter (coumadin) that then checks
  for a procedure target (INR lab) with an interval of every 3 weeks.


http://github.com/bradymiller/openemr/commit/e7c227084b26de50f534bd0ed6ca838b0510de54
Clarified database filters/targets algorithm and data objects.


http://github.com/bradymiller/openemr/commit/c9cf6115a39100036d12e48a70d8dd42b50ac3d0
Incorporated a basic appointment reminder mechanism within rules engine.
To be useful will need some fine tuning, though.


http://github.com/bradymiller/openemr/commit/d9150f1af2adc02b88eebc0ba303c66b5946964e
Removed a debugging comment.


http://github.com/bradymiller/openemr/commit/8d5762ecc5cd2bacb4480ff8bb1855f586e2ad25
Added support for the Automatic Measure Calculation MU item.

Specifics:
1) Added support for the Automatic Measure Calculation MU item.
     -Added pertinent columns to the clinical_rules table.
     -Added mechanism to disallow patient specific customization
      in clinical_rules.php since these are standard rules. Also
      included the clinical quality measures in this mechanism.
     -Added a selector for this in the interface/reports/cqm.php
      report
2) Added some comments in sql/database.sql to clarify code.
3) Fixed some miscellaneous comment typos.


http://github.com/bradymiller/openemr/commit/10d0e0faca6de7d6a7dbb79fbbd437e9e9959f27
CDR module bug fix - user_settings label for patient_reminders_ps_expand fixed


http://github.com/bradymiller/openemr/commit/e036a346c519bd61b32f4dfc172ab1b70a46563f
Removed active column from clinical_rules table and:

1) Removed active column from clinical_rules table
    and algorithm in clinical_rules.php
2) To resolve_rules_sql function in clinical_rules.php added
    functionality to grab all per patient configurable
    (ie. not cmq or amc) rules for the admin gui.


http://github.com/bradymiller/openemr/commit/11bec010c560e195123fd7533ed61be2abfb2cb5
Several addition to the rules internals:
1. Entered in skeleton rules for the Autmated Measure Calculations (AMC)
2. Commented the AMC and Clinical Quality Measures (QMC) rules in
    the database.sql files so others could follow the progress.
    (can be found in lines 3514-3635 of sql/database.sql file)
    (Note all teh QMC and AMC rules are just skeletons at this
     point and are NOT functional, but you can still look at the pretty
     report of them in Reports->Clinic->Quality Measures)
3. Plan to work on the QMC/AMC rules one by one and changing the rules
    internals as needed. This will not affect any of the stuff that
    others are working on (admin gui, per patient gui, messenging
    connectors, etc.)


http://github.com/bradymiller/openemr/commit/12b33b6ced42215df5f14fda75ed4bc34f5fa319
Projects number 2 and 3 (per patient gui) of CDR module:

1) Patient Summary Screen Edit button of Clinical Reminder Widget.
2) Patient Summary Screen Edit button of Patient Reminder Widget.
   (in the Rules tab on this screen)

Unable to use the planned mechanism of dropping patient specific
clinical_rules entries when set to default, because then this
would wipe out other per patient flags. So, instead create a
persistent entry for the patient in clinical_rules, and use
NULL in flags to signify that the default setting should be
used rather than a patient specific setting. This should have
no effects on the Major Admin GUI or other features.

You will note the PAtient Summary Screen Clinical Reminder
Widget Edit button goes to a screen with one tab on it (Rules).
This screen will be future place to hold following tabs:
Main - More details on active/inactive rules and most recent
       associated results.
Plans - A future feature that will hold plan information (for
        exmaple aggregating all DM disease rules and results).


http://github.com/bradymiller/openemr/commit/6057eb0335fa2d29ccf3162479af1f0473db3bd9
CDR Module CMQ PQRI database addition.

Added a column in the clinical_rules table to hold the
PQRI id number for CMQ (if it even exists). Also updated current
CMQ entries to the PQRI id numbers.


http://github.com/bradymiller/openemr/commit/9241d1ea9fa64fba9b66818f5c82e37439fd4023
CDR module: Clinical plans feature added and more...

1. Clinical plans feature was added. Database tables and
   code added. Can be found in Patient Summary screen Edit
   button for Clinical Reminders at the Plans tab (recommend
   giving your patient a diabetes diagnosis to get a clearer
   idea of what this does). Also note the plan data was added to
   support "Measure Groups" for the CQM/PQMI stuff.
2. Added a feature that shows pertinent clinical reminders that
   are not due. This is not shown on the clinical widget in the
   patient summary screen, but can be seen in the Edit button
   for Clinical Reminders at the Main tab (note the Plans tab
   also shows this).

Both of the above features are useful, and are building blocks
towards support of CQM/PQRI.


http://github.com/bradymiller/openemr/commit/2181cda989204dd1b4e167d24f0062a91f675db5
CDR module work on the CQM report requirements:

1) Added ability to report by plan.
2) Added ability to report by all providers in a cumulative and collated report.
3) Added ability to report pertinent clinician NPI numbers, clinician TIN numbers,
   measure group plan codes, rule codes (both PQRI and NQF) into the report (preparing for an xml out feature).
4) Added ability to record number of Exclusions in report.

All of these features are in Reports=>Clinic=>Quality Measures. Now have the tools to build the xml report
and to build the CQM rules.


http://github.com/bradymiller/openemr/commit/bd8e23af6e90d9f3478add6e3227937928f2c9d4
CDR module feature add for the CQM report requirements:

Added ability to nest providers within plans on the reporting. Feature
can be found here at Reports=>Clinic=>Quality Measures with following
settings:
Rule Set: Show All
Plan Set: Official CQM Measure Groups (or select 'Active Plans')
Provider: All (Collated Format B)


http://github.com/bradymiller/openemr/commit/816cf8be6db258a73bf61b6f97a0f7419cdcaeac
CDR module to add per patient gui for plan:

At patient summary screen for edit button of clinical
reminders widget. Can set per patient plans off/on/default
in Admin tab. These settings are used to create the plans
output in the Plans tab of this same script.


http://github.com/bradymiller/openemr/commit/b9cdbd76be6a5fcdd65ab0aead657ccc92fa3226
CDR Module : Added feature for PQRI XML reports.

1) "Generate pqri report" button at "Reports->Clinic->Quality Measures"
   (note need to hit the Submit button to see it)
2) Added "Administration->Globals->PQRI Registry" tab to hold the registry
   name and id number.


http://github.com/bradymiller/openemr/commit/25fd754c001aac6dfe9c0e7a6802d5ed8510b91c
CDR Module: Some fixes/improvements to PQRI reporting.

1) Clarified creation of pqri reports in Reports->Clinic-> Quality Measures
   --Generate PQRI report buttons
     --Method A is per rule (need to support this for MU)
     --Method B is per measure group (not fully supported yet, and probably not needed for MU)


http://github.com/bradymiller/openemr/commit/44bc3843721e44d3946ccb40bfcb1522753d214c
Added the <encounter-from-date> and <encounter-to-date> tags to the PQRI XML.


http://github.com/bradymiller/openemr/commit/40a1d07471b93a66c87f3867db93110456a28f13
CDR Module: Minor cosmetic fix in the patient summary screen.

-Patient Reminder widget height is not fixed to a mininum height.


http://github.com/bradymiller/openemr/commit/b5c16abdd536e145cade8c65f165f2e8ae673b26
CDR Module: Fixed email reminders.

1. For now, generating message using action title and categories labels.
2. Showed authorization for Email and SMS in the reminders screens.


http://github.com/bradymiller/openemr/commit/405a902c95b37507adcca18954352bd0dc30dab3
CDR Module: Added date completed validation to the custom data entry gui.


http://github.com/bradymiller/openemr/commit/ba98c6858a755ec8fc1c582d0dfab374234309e6
CDR Module: Administration GUI.
  --Can be found at Administration->Rules

Authors:
Aron Racho <aron@mi-squared.com>
Ken Chapple <ken.chapple@gmail.com>
rammohan <rammohan@ensoftek.com>


http://github.com/bradymiller/openemr/commit/ac14c016f8b07f5d598565b7aaf39d50cb1fafe6
CDR Module: Administration screen that allows quick
            toggling of rules.

  -Can be found at Administration->Alerts


http://github.com/bradymiller/openemr/commit/17df773b1836f0d3fb2fb429b47dc259cab50bd6
CDR Module: Bug Fixes.

 - Allow listing of rules that are not activated
 - Fix Adminstration->Rules browse screen to collect
   rules and rules titles correctly, and to only show
   Reminder as a type for now.


http://github.com/bradymiller/openemr/commit/b64714afdce8d1e8afaae52096878bdbab499429
CDR Module: Admin GUI fix of reminder interval field validations.


http://github.com/bradymiller/openemr/commit/5516e6006a7031ff8fd2ded23d44cd0c8e618ec1
CDR Module: Bug Fixes

 -Ensure rules are editable even if without a type setting.
 -Removed a erroneous htmlspcialchars call.


http://github.com/bradymiller/openemr/commit/84fd3b6d4e5e8e2af39cbbe1636bed1216591825
CDR Module: GUI Admin fixes when using list_options table


http://github.com/bradymiller/openemr/commit/e9ecb9dab2701478751750b4c95085fd49355dbe
CDR Module: Fixed broken headers in Admin GUI. No longer require output buffering.


http://github.com/bradymiller/openemr/commit/2f74c59b884bfd99a93dc54db97a6ed9d2110bc0
CDR Module: Created a mechanism for building CQM/AMC rules sets.

 -Unlike the standard rules, these rules are hard-code in:
  library/classes/rulesets/ruleSet.class.php
  (This allows much more flexibility and is much more robust)
 -This will allow multiple developers to work on
  building the CQM/AMC rulesets simultaneously.
 -As an example coded the first cqm rule:
  Hypertension: Blood Pressure Measurement(NQF:0013)


http://github.com/bradymiller/openemr/commit/98df8c95189f8137d625b8b2e6282765ac1ade72
CDR Module: Cleaned up some database.sql lines. Still TO DO before commit to sourceforge:

1) Optimize/finalize the standard rules.
2) Organize/standardize database
3) Create the sql upgrade code
4) Fix bugs in reports related to cqm/amc mechanism.
5) Ensure session restores in the admin gui.
6) Ensure simple bugs in admin gui are fixed.