Difference between revisions of "CMS Quality Reporting"

From OpenEMR Project Wiki
 
(49 intermediate revisions by 2 users not shown)
Line 84: Line 84:
We propose that Category II codes be mapped to the straight codes in procedure_type table using a procedure_panel category for two reasons:  
We propose that Category II codes be mapped to the straight codes in procedure_type table using a procedure_panel category for two reasons:  
# We need the code for reporting and
# We need the code for reporting and
# Make it easier for the provider to order them together. See http://www.openmedsoftware.org/wiki/Computer_Physician_Order_Entry for table details.
# Make it easier for the provider to order them together. See [[Computer Physician Order Entry]] for table details.


==CQM Report Development==  
==CQM Report Development==  
Line 90: Line 90:


'''Setup:'''
'''Setup:'''
Here is the github branch I'm working on:
https://github.com/kchapple/openemr/commits/ken_rules_cqm


Do a fresh install of openemr.
Do a fresh install of openemr.
Check your database to make sure you have the 'enc_category_map' table (the install did not insert the table for me.)
If not, import it directly from the database.sql file into your openemr database instance.


Here is the wiki link for the essential rules for MU certification:
Here is the wiki link for the essential rules for MU certification:
Line 109: Line 101:
The goal is to implement the list of 9 rules from the wiki link above.
The goal is to implement the list of 9 rules from the wiki link above.


The file, [[File:EP_MeasureSpecifications.zip]] contains specifications for the reports. The folder names correspond to the NFQ numbers of the reports. The PDF file contains the human-readable specification for the report (ie: what you have to implement).  The spread sheet contains codes that may or may not be required to check for in the report.
The file EP_MeasureSpecifications.zip can be downloaded from http://www.cms.gov/apps/ama/license.asp?file=/QualityMeasures/Downloads/EP_MeasureSpecifications.zip and contains specifications for the reports. The folder names correspond to the NFQ numbers of the reports. The PDF file contains the human-readable specification for the report (ie: what you have to implement).  The spread sheet contains codes that may or may not be required to check for in the report.


'''Development:'''
==TODO ITEMS==
* <span style="text-decoration:line-through;">Allergy.php 50: // TODO check for allergy (wherever it exists... lists 'allergy' type probably.)</span>
::'''Pretty much use the same function as doPatientCheck in your Diagnosis.php (based on exist_lists_item() from library/clinical_rules.php) with the 'allergy' medical type.'''
:: * I added this suggestion
* Characteristic.php 27: // TODO check for terminal illness
* Communication.php 23: // TODO read from referrals to check for ditary consult
* Helper.php 20: // TODO append options array
* LabResult.php 25: // TODO where to check for lab result ???
:: '''There are two examples. One in clinical_rules.php which isn't that useful since it relies on knowing the title of the lab (plan to allow search by procedure/lab code but not time yet). Ram actually already built a query that will find labs by their procedure/lab code in the old library/ruleset/ruleSet.class.php file, which can be found in Ram's commit (note the sql query near the end): http://github.com/openemr/openemr/commit/1b6220b06efdd69c7478a795589f0e913c918274 '''
:: * I checked in a more generic version of this query into github.  This needs testing because I don't know how to add a procedure, and from what I remember, it was difficult for Ram to figure out.
* PhysicalExam.php 23: return "medical_problem"; // TODO this may not be the correct type for BMI icd9 codes
* <span style="text-decoration:line-through;">AbstractAmcReport.php 85: // TODO calculate results </span>
:: '''Done (was nothing to do, so removed the TODO here)'''  
* DiabetesDenominator.php and NFQ_0028b/Numerator.php: // TODO how to check for these medication types?
* <span style="text-decoration:line-through;">NFQ_0041/Denominator.php 18: // TODO check logic</span>
:: '''Looks ok'''
* <span style="text-decoration:line-through;">NFQ_0041/Exclusions.php 18: // TODO check logic</span>
:: '''Looks ok'''
* <span style="text-decoration:line-through;">NFQ_0041/Numerator.php 18: // TODO check logic</span>
:: '''Looks ok'''
* <span style="text-decoration:line-through;">Need to add ICD9 diagnosis codes for all constants in Diagnosis.php in codes.php</span>
:: '''I added the rest of the diagnosis codes'''
* <span style="text-decoration:line-through;">There are some immunization codes missing in list_options that should be added, and to codes.php</span>
:: '''Updated to CVX codes'''
* <span style="text-decoration:line-through;">Need to add encounter mappings and to list_options for following:</span>
:*<span style="text-decoration:line-through;">enc_pre_med_ser_40_older - encounter preventive medicine 40 and older</span>
:*<span style="text-decoration:line-through;">enc_influenza - encounter influenza</span>
::: '''Added new encounter info; Done'''
* <span style="text-decoration:line-through;">May need to check other place for med types than list_options in ClinicalTypes/Medication.php</span>
:: '''Not an issue since immunizations no longer checking list_options and this is all this is now used for'''
* <span style="text-decoration:line-through;">Missing Rule NQF 0024b!</span>
:: '''Added rule'''
 
==Development==


The principal files of interest are:
The principal files of interest are:
* openemr/library/classes/rulesets/ruleSet.class.php
* openemr/library/classes/rulesets/RuleTypes.php
** contains skeletons or rules to be implemented
** contains skeletons or rules to be implemented
** stub functions are labeled with their NFQ number to correlate these three components:  
** maps a rule id to a report class to be instantiated:  
*** PDF from specifications,
*** 1. create a file in /reports
*** NFQ from wiki
*** 2. create a directory in /reports with the SAME as the file (this is important for class autoloading)
*** stub in ruleSet.class.php file.
*** 3. add classes for your numerators, denominator, exclusions, initial patient population specified in the pdf for the NFQ you're implementing
*** 4. the PopulationCriteria class organizes these. the top-level report class organizes your population criteria.
*** 5. use ClinicalTypes and Helper wherever possible to separate report logic from report data.


openemr/library/clinical_rules.php
* openemr/library/clinical_rules.php
* "engine" code
** "engine" code


openemr/library/patient.inc
* openemr/library/patient.inc
* contains helper functions to gather data for implementing reports
** contains helper functions to gather data for implementing reports


openemr/library/forms.inc
* openemr/library/forms.inc
* contains helper functions to gather data for implementing reports
** contains helper functions to gather data for implementing reports


Use the already implemented rules as a guide for implementing new rules.
Use the already implemented rules as a guide for implementing new rules.
Line 137: Line 164:


I recommend saving an export of your database schema and data after you have completed testing for a particular rule.
I recommend saving an export of your database schema and data after you have completed testing for a particular rule.
'''"Odd Elements:"'''
{| border="1"
|+ Elements of CQM reports that are being ignored and need action
! scope="col" | Title 
! scope="col" | NFQ number element initially found
! scope="col" | Function (ruleSet.class.php)
! scope="col" | Notes/Actions
|-
! scope="row" | Care goal: follow-up plan BMI management
| 0421
| rule_adult_wt_screen_fu_cqm()
| ...
|-
! scope="row" | Communication provider to provider: dietary consultation order
| 0421
| rule_adult_wt_screen_fu_cqm()
| ...
|-
! scope="row" | Patient characteristic: Terminal illness
| 0421
| rule_adult_wt_screen_fu_cqm()
| Is there a flag, or diagnosis mapping to terminal diagnosis?
|-
! scope="row" | Diagnosis active: Pregnancy
| 0421
| rule_adult_wt_screen_fu_cqm()
| (DONE) can't find a field for pregnancy in 'form_ros' or 'form_reviewofs'
|-
! scope="row" | Physical exam not done: patient reason
| 0421
| rule_adult_wt_screen_fu_cqm()
| ...
|-
! scope="row" | Physical exam not done: medical reason
| 0421
| rule_adult_wt_screen_fu_cqm()
| ...
|-
! scope="row" | Physical rationale physical exam not done: system reason
| 0421
| rule_adult_wt_screen_fu_cqm()
| ...
|-
! scope="row" | Weight Assessment and Counseling for Children and Adolescents
| 0024
| rule_wt_assess_couns_child_cqm()
| numerator 1: Physical exam finding: BMI percentile (where to get data)
|-
! scope="row" | Weight Assessment and Counseling for Children and Adolescents
| 0024
| rule_wt_assess_couns_child_cqm()
| numerator 2: Communication to patient: counseling for nutrition (where to get data)
|-
! scope="row" | Weight Assessment and Counseling for Children and Adolescents
| 0024
| rule_wt_assess_couns_child_cqm()
| numerator 3: Communication to patient: counseling for physical activity (where to get data)
|}


==Owner and Status==
==Owner and Status==
Bobby Wen and Thomas Wong (Intesync)
Ken
John Williams - Garden
 
==Links==
==Links==
* [[CCHIT_MU_2011_Project]]
* [[CCHIT_MU_2011_Project]]
Line 147: Line 237:
* Associated with Sourceforge forum thread: http://sourceforge.net/projects/openemr/forums/forum/202506/topic/3517899
* Associated with Sourceforge forum thread: http://sourceforge.net/projects/openemr/forums/forum/202506/topic/3517899
* [[Ten_Most_Expensive_Diseases]]
* [[Ten_Most_Expensive_Diseases]]
[[Category:Certification]][[Category:Certification Stage I]][[Category:Clinical Decision Rules]]

Latest revision as of 02:57, 9 September 2012

MU Requirements

Meaningful Use Measures:

Report ambulatory quality measures to CMS or the States. For 2011, provide aggregate numerator and denominator through attestation as discussed in section II(A)(3) of this proposed rule. For 2012, electronically submit the measures as discussed in section II(A)(3) of this proposed rule.


Certification Criteria for EHR:

  1. Calculate and electronically display quality measure results as specified by CMS or states.
  2. Enable a user to electronically submit calculated quality measures in accordance with the standard specified in Table 2A row 5.(CMS PQRI 2008

Registry XML Specification#,+). see: PQRI XML Output for CQM

  • ICSA says the we need to choose 9 to pass certification. We had 6 listed as mandatory, I added 3 --Tony - www.mi-squared.com 06:08, 14 March 2011 (UTC)
  1. NQF 0013 Hypertension: Blood Pressure Measurement
  2. NQF 0028 Tobacco Use Assessment / Tobacco Cessation Intervention
  3. NQF 0024 Weight Assessment and Counseling for Children and Adolescents
  4. NQF 0038 Childhood immunization Status
  5. NQF 0041 Influenza Immunization for Patients ≥ 50 Years Old
  6. NQF 0043 Pneumonia Vaccination
  7. NQF 0059 Diabetes Control: Hemoglobin A1C >9.0%
  8. NQF 0064 Diabetes Control: LDL < 100mg/dl
  9. NQF 0421 Adult Weight Screening and Follow-Up

Provider Requirements

The following at the minimum needed by a Provider to use a certified system. There are a total of 44 needed by the Vendor (us ...)

  1. NQF 0013 Hypertension: Blood Pressure Measurement
  2. NQF 0028 Tobacco Use Assessment / Tobacco Cessation Intervention
  3. NQF 0421 Adult Weight Screening and Follow-Up
  4. NQF 0024 Weight Assessment and Counseling for Children and Adolescents
  5. NQF 0041 Influenza Immunization for Patients ≥ 50 Years Old
  6. NQF 0038 Childhood immunization Status
  7. Choice of remaining MU/PQRI CQMs (from remaining 32)
  8. Choice of remaining MU/PQRI CQMs (from remaining 32)
  9. Choice of remaining MU/PQRI CQMs (from remaining 32)

Details

Data Mapping Project

Proposed Solution

1. Select a number of reports from CMS PQRI 2008 list, which has a total of 119 reports. Based on SF discussions, we selected 5 quality measures. See the listing.

2. Analyze the selected reports to see if the data is already available in OpenEMR. We propose the creation of a new section in Reports to pull the reports.

CMS1.png

3. Determine how to prepare the reports. A number of changes are required in OpenEMR to make the data available for reporting use.

4. Prepare a test set based on the reporting requirements.

5. Build reporting structure in Administrator section.

Effected Code, Tables, etc

For all quality measures, CPT Category II codes are required. These codes are non-billable. Currently, all CPT codes are stored in "codes" table with a code type of 1. We propose to assign a new code type to Category II codes. There is no change to the table itself.

-- -- Table structure for table `codes` --

DROP TABLE IF EXISTS `codes`; CREATE TABLE `codes` (

 `id` int(11) NOT NULL auto_increment,
 `code_text` varchar(255) NOT NULL default ,
 `code_text_short` varchar(24) NOT NULL default ,
 `code` varchar(10) NOT NULL default ,
 `code_type` tinyint(2) default NULL,
 `modifier` varchar(5) NOT NULL default ,
 `units` tinyint(3) default NULL,
 `fee` decimal(12,2) default NULL,
 `superbill` varchar(31) NOT NULL default ,
 `related_code` varchar(255) NOT NULL default ,
 `taxrates` varchar(255) NOT NULL default ,
 `cyp_factor` float NOT NULL DEFAULT 0 COMMENT 'quantity representing a years supply',
 `active` TINYINT(1) DEFAULT 1 COMMENT '0 = inactive, 1 = active',
 PRIMARY KEY  (`id`),
 KEY `code` (`code`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;


We propose that Category II codes be mapped to the straight codes in procedure_type table using a procedure_panel category for two reasons:

  1. We need the code for reporting and
  2. Make it easier for the provider to order them together. See Computer Physician Order Entry for table details.

CQM Report Development

--Ken Chapple 18:30, 22 April 2011 (UTC)

Setup:

Do a fresh install of openemr.

Here is the wiki link for the essential rules for MU certification:

http://www.openmedsoftware.org/wiki/CMS_Quality_Reporting

See the list of 9 NFQs under the heading "MU Requirements." These are the reports we must implement.

The goal is to implement the list of 9 rules from the wiki link above.

The file EP_MeasureSpecifications.zip can be downloaded from http://www.cms.gov/apps/ama/license.asp?file=/QualityMeasures/Downloads/EP_MeasureSpecifications.zip and contains specifications for the reports. The folder names correspond to the NFQ numbers of the reports. The PDF file contains the human-readable specification for the report (ie: what you have to implement). The spread sheet contains codes that may or may not be required to check for in the report.

TODO ITEMS

  • Allergy.php 50: // TODO check for allergy (wherever it exists... lists 'allergy' type probably.)
Pretty much use the same function as doPatientCheck in your Diagnosis.php (based on exist_lists_item() from library/clinical_rules.php) with the 'allergy' medical type.
* I added this suggestion
  • Characteristic.php 27: // TODO check for terminal illness
  • Communication.php 23: // TODO read from referrals to check for ditary consult
  • Helper.php 20: // TODO append options array
  • LabResult.php 25: // TODO where to check for lab result ???
There are two examples. One in clinical_rules.php which isn't that useful since it relies on knowing the title of the lab (plan to allow search by procedure/lab code but not time yet). Ram actually already built a query that will find labs by their procedure/lab code in the old library/ruleset/ruleSet.class.php file, which can be found in Ram's commit (note the sql query near the end): http://github.com/openemr/openemr/commit/1b6220b06efdd69c7478a795589f0e913c918274
* I checked in a more generic version of this query into github. This needs testing because I don't know how to add a procedure, and from what I remember, it was difficult for Ram to figure out.
  • PhysicalExam.php 23: return "medical_problem"; // TODO this may not be the correct type for BMI icd9 codes
  • AbstractAmcReport.php 85: // TODO calculate results
Done (was nothing to do, so removed the TODO here)
  • DiabetesDenominator.php and NFQ_0028b/Numerator.php: // TODO how to check for these medication types?
  • NFQ_0041/Denominator.php 18: // TODO check logic
Looks ok
  • NFQ_0041/Exclusions.php 18: // TODO check logic
Looks ok
  • NFQ_0041/Numerator.php 18: // TODO check logic
Looks ok
  • Need to add ICD9 diagnosis codes for all constants in Diagnosis.php in codes.php
I added the rest of the diagnosis codes
  • There are some immunization codes missing in list_options that should be added, and to codes.php
Updated to CVX codes
  • Need to add encounter mappings and to list_options for following:
  • enc_pre_med_ser_40_older - encounter preventive medicine 40 and older
  • enc_influenza - encounter influenza
Added new encounter info; Done
  • May need to check other place for med types than list_options in ClinicalTypes/Medication.php
Not an issue since immunizations no longer checking list_options and this is all this is now used for
  • Missing Rule NQF 0024b!
Added rule

Development

The principal files of interest are:

  • openemr/library/classes/rulesets/RuleTypes.php
    • contains skeletons or rules to be implemented
    • maps a rule id to a report class to be instantiated:
      • 1. create a file in /reports
      • 2. create a directory in /reports with the SAME as the file (this is important for class autoloading)
      • 3. add classes for your numerators, denominator, exclusions, initial patient population specified in the pdf for the NFQ you're implementing
      • 4. the PopulationCriteria class organizes these. the top-level report class organizes your population criteria.
      • 5. use ClinicalTypes and Helper wherever possible to separate report logic from report data.
  • openemr/library/clinical_rules.php
    • "engine" code
  • openemr/library/patient.inc
    • contains helper functions to gather data for implementing reports
  • openemr/library/forms.inc
    • contains helper functions to gather data for implementing reports

Use the already implemented rules as a guide for implementing new rules.

Testing:

Create test patient data to trigger report generation based on the rule's criteria. This may involve creating encounters, entering "vitals" and creating history and lifestyle data.

I recommend saving an export of your database schema and data after you have completed testing for a particular rule.



"Odd Elements:"

Elements of CQM reports that are being ignored and need action
Title NFQ number element initially found Function (ruleSet.class.php) Notes/Actions
Care goal: follow-up plan BMI management 0421 rule_adult_wt_screen_fu_cqm() ...
Communication provider to provider: dietary consultation order 0421 rule_adult_wt_screen_fu_cqm() ...
Patient characteristic: Terminal illness 0421 rule_adult_wt_screen_fu_cqm() Is there a flag, or diagnosis mapping to terminal diagnosis?
Diagnosis active: Pregnancy 0421 rule_adult_wt_screen_fu_cqm() (DONE) can't find a field for pregnancy in 'form_ros' or 'form_reviewofs'
Physical exam not done: patient reason 0421 rule_adult_wt_screen_fu_cqm() ...
Physical exam not done: medical reason 0421 rule_adult_wt_screen_fu_cqm() ...
Physical rationale physical exam not done: system reason 0421 rule_adult_wt_screen_fu_cqm() ...
Weight Assessment and Counseling for Children and Adolescents 0024 rule_wt_assess_couns_child_cqm() numerator 1: Physical exam finding: BMI percentile (where to get data)
Weight Assessment and Counseling for Children and Adolescents 0024 rule_wt_assess_couns_child_cqm() numerator 2: Communication to patient: counseling for nutrition (where to get data)
Weight Assessment and Counseling for Children and Adolescents 0024 rule_wt_assess_couns_child_cqm() numerator 3: Communication to patient: counseling for physical activity (where to get data)

Owner and Status

Ken

Links