Further drill down on CQM certification requirements … credit Selvi for pushing this issue the last couple of weeks … while implementation of all 44 CQMs is key to Meaningful Use of OpenEMR by a range of providers, our latest reading of the NIST cert test spec indicates that only nine (ten if you count NQF 0028 a & b as two) CQMs are required for ONC certification. These are:
1) NQF 0013 Hypertension: Blood Pressure Measurement
2) NQF 0028a Tobacco Use Assessment
3) NQF 0028b Tobacco Cessation Intervention
4) NQF 0421 Adult Weight Screening and Follow-Up
5) NQF 0024 Weight Assessment and Counseling for Children and Adolescents
6) NQF 0041 Influenza Immunization for Patients ≥ 50 Years Old
7) NQF 0038 Childhood immunization Status
8) Choice of remaining MU/PQRI CQMs
9) Choice of remaining MU/PQRI CQMs
10) Choice of remaining MU/PQRI CQMs
Focusing on these ten enables prioritization of the data model and UI implementation.
John,
Can you provide a list of all 44. Then can think about a mechanism that would support them all in the long run (although agreed just getting the 10 in short term for MU makes sense). This strategy could also lead us to a nice mechanism for patient reminders (ie. if uptodate on health maintenance).
thanks,
brady
I’m unable to list all 44 in the space provided here.
For a summary description (& detailed specs),
See this file: retooled_measure_titles_09JUL10 (MS Excel),
From the download: EP Measure Specifications ,
at http://www.cms.gov/QualityMeasures/03_ElectronicSpecifications.asp
Note that my proposed DB model for OpenEMR is meant to support the necessary data elements for the 44 CQMs, in addtion to the fully coded CCR & CCD patient summary reports. Tony has volunteered to post the DB model & 44CQM summary on the OpenEMR Wiki. Big unknown/need is a UI design supporting the CQMs/CCR/CCD.
My suggestion is to work out a nice rules tables (columns for sex, age, dx codes, table pointers, action) and store list of generic actions in the list_options table (couple extra columns that can customized for them). Then can modify the the lists gui to manage the targets and can bastardize a copy of the layout gui to manage the rules table. When these rules and targets are in place, should then be relatively easy to do whatever we want (for gross reporting and also individual patient clinical decision support).
here’s my quick thoughts on a database scheme to hold the rules and targets (just some quick thoughts):
table ‘rules_target’:
‘id’ (simple incrementing identifier id)
‘title’ (rule title)
‘target’ (maps to ‘id’ of target_actions table)
‘interval’ (probably best to have separate columns for years,months,weeks,hours,minutes)
table ‘rules’:
‘rule_id’ (maps to ‘id’ of rules_target table)
‘include_flag’ (flag to decide whether rule is for include/exclude)
‘method’ (string containing ‘min_age’, ‘max_age’, ‘sex’, ‘icd9’ etc.)
‘value’ (contains the data element)
table target_actions:
‘id’ (simple incrementing id)
‘category_title’ (holds category title of the action)
‘target_title’ (holds the title of the action)
table actions:
‘target_id’ (maps to ‘id’ of target_action table)
‘method’ (string containing method of the action)
‘value’ (depends on method)
I think this type of starting point would allow a very flexible rule system.
The last testing I did on the “Clinical Decisions Rules” (CDR) module was very dysfunctional; test it out extensively and you’ll likely see what I mean. Since rules may be a way to create this CMQ stuff, my thoughts are to redo the CDR module if the rules methodology works well for the CMQ.
Here’s my next iteration of tables:
table ‘rule’:
‘id’ (rule title taken from ‘list_options’ table)
‘interval’ (probably best to have separate columns for years,months,weeks,hours,minutes)
table ‘rule_item’:
‘rule_id’ (maps to ‘id’ of rule table)
‘include’ (flag to decide whether rule is for include/exclude)
‘method’ (string containing ‘min_age’, ‘max_age’, ‘sex’, ‘icd9’ etc.)
‘value’ (contains the data element)
table action:
‘rule_id’ (maps to ‘id’ of ‘rule’ table)
‘method’ (string containing method of the action)
‘value’ (depends on method)
My time’s currently a bit limited, but I’ll start playing around with this to see if I can get it to report the above 10 items.
We’ve been working with “ARC”, an RDF system, as a CQM rules engine.
This is a project of the OpenEMR-WorldVistA cross-community collaboration that meets Tuesdays 9pm EST.
ARC ( http://arc.semsol.org/ ) is a flexible RDF system for semantic web and PHP practitioners, and easy to bundle with existing PHP/MySQL software.
After playing with it, I wonder how much value a rules engine has for CQMs. It seems pretty easy to express the rules and criteria directly in PHP. As an example, below is pseudo code for the 1st (hypertension) CQM:
Begin
Initialize Denominator, Numerator = 0
MP = Measure period = Jan 1 through Dec 31 of current year;
For all patients
{
IncNum = No;
If ( (patient age >= 18 before (not during) MP) AND
(Patient has active diagnosis of hypertension (match w/ code list) ) Then
{ initialize e-count = 0;
initialize encounter list;
For All of this Patient’s Encounters
if encounter = (outpatient OR nursing facility) AND encounter date <= MP inclusive;
{ inc e-count;
append encounter to encounter list;
}
If e-count >=2 then
{ Increment Denominator;
For each encounter in encounter list
For all physical exam findings for patient
if systolic BP @ encounter = specified code
then if diastolic BP @ encounter = specified code
then IncNum = Yes;
}
}
If IncNum = Yes, then Increment Numerator;
}
Measure = Numerator/Denominator;
Write Measure Result to output file
End
For me, the toughest part to figure out is how to integrate the collection of CQM-required patient data into the clinical user interface of OpenEMR. Any ideas on how to do this?
Developing rules seems better, because we can then leverage this in other parts of OpenEMR. I submitted the initial design of a clinical decision engine in the tracker (both a github branch and a patch), as proof of concept using the 7 CQM rules above. With the same rules, was able to have a clinical reminder widget on the patient summary and also produce the CQM report at Reports->Clinic->Quality Measures. It’s also 100% internationalized. Pretty cool, but still in early development. See the tracker item for the code/patch and more description: http://sourceforge.net/tracker/?func=detail&aid=3055162&group_id=60081&atid=1245239#