ONC Certification Day 7-28-2011

tmccormi wrote on Thursday, July 28, 2011:

Today the volunteers of OEMR.org will spend some 4+ hours with the staff of ICSA Labs testing all the remaining modules of OpenEMR version 4.1 in an attempt to achieve full EHR certification for Meaningful Use.   This testing will occur into the wee hours of Eastern Standard time. 

We hope to be able to complete everything tonight and Selvi’s team at Vicare/Visolve are again the team for this and are very well prepared.  Whether we get completely done without any issues tonight or not, the follow up to complete the process will be prompt and we are sure that we will be fully certified in the next couple of weeks at the outside.

Getting here has been a long road, more than a year, and there are many people to thank.  I hope I don’t miss anyone, but here’s my attempt in alphabetical order.   If I miss anyone please post a note and remind us. Also note: this list is specifically about the parts of version 4.1 that are certification requirements and processes.  There is an even longer list of contributors to enhancements, bug fixes and new features for OpenEMR that we will recognize as part of the 4.1.0 release process that will follow. 

Sam Bowen, MD had  the foresight to invest more than $200,000 into this effort at the very beginning of the process.  He used those funds to pay programmers, project management and to fund the servers and infrastructure for our MU development (SVN repository) and our wiki.    This was not enough money to do the whole project, but it got us to about 1/3 and, more importantly, energized the community to support and contribute going forward.   Some of the development teams he contracted with continue to donate staff time and effort to this day.

Michael Brody, DPM acted as our ONC Meaningful Use consultant and paid for the syndromic surveillance registry reporting.  It would have been very difficult to understand the government requirements without his help and direct advocacy with ONC and CCHIT originally.   His contributions allowed us to get started even before the rules were finalized.

ClinicDoctor (cassilup) - Almost at the last hour we discovered this commercial reseller and noticed that they had a live built in patient portal.   They agreed to contribute a version of that portal that would run entirely inside OpenEMR and meet the MU criteria.  

Ensoftek (DrCloud) contributed staff to work with mi-squared on clinical decision rules, automated measure calculations and patient reminders as well as clinical quality measure reporting and immunization register reporting.

Garden State Health contributed expertise and programmers to develop the CCR and CCD core modules that allow OpenEMR to meet many of the certification criteria around patient medical records sharing, both with the patients and with referrals.  Thanks specifically to John Williams and Micheal Firilolo.

Medical Information Integration (mi-squared) contributed overall project management from the beginning.   Additionally, staff from mi-squared, including Aron Racho and Ken Chapple contributed significant parts of the clinical rules, clinical quality measures, automated measure calculations, patient reminders, document encryption and integrity modules.  Jeremy Wallace wrote interfaces and improvements to the “procedures” tools to work with Lab Exchanges to meet the “incorporate lab results” requirement.  Jason Brooks put many hours into maintaining and improving OEMR web, wiki and repository servers and Sara McCormick maintains the User Guides.

Brady Miller has contributed more time to this project (and OpenEMR as whole) than actually exists in this time continuum.   Brady wrote many of core parts of the ONC requirements including clinical decision rules engine, automated measure calculations, widgets for displaying that information, reports, rule sets, and more.   But all of that pales to the tireless effort in reviewing contributed code from ALL of  us, merging and testing that code and offering keen insights into ways to solve complex issues in a system that is now more than 600,000 lines of code.  Brady gets the MVP award in my book.

MRSB, LTD – for contributing a lawyer (Greg Neumann) so that we could get OEMR recognized as a 501©(3).  This allowed us to be able to make contracts with the certification body, ICSA Labs, without which we would not be able to be registered or get certification at all as an open source project.  The rest of the world requires a legal entity to work with.

Phyaura contributed code to help integrate RxNorm and SNOMED coding requirements which are used in CCR/CCD and in clinical quality reporting.

Sunset Systems, Rod Roark, contributed the procedures/orders system that has been used to meet the “incorporate lab results” requirement as well as helping review and advise on contributed code.

Z&H Healthcare Services has contributed the completion of the CCR/CCD modules and development of the NewCrop e-RX interface to meet the CPOE requirements.  They also contributed a very complete patient portal option can been used in this test if required and does meet all the requirements as an optional solution for those clinics that do not want to manage their own portal access.

Vicare+/Visolve – Selvi’s team has been the mainstay of the team by being the sole formal Quality Assurance group.   This group are experts at interpreting the NIST testing criteria and working out what needs to be adjusted, fixed or redone to make it possible for us to pass these onerous tests.   They are the best organized and we could not have done this without their contributions.   Their team also developed all of the required security modules, we wouldn’t even have been able to start the testing without these components:  Password policies, audit logging, client certificates, emergency access, recording disclosures, HIPAA de-identification, consent management. 

Finally, the community at large.   OEMR is proud to have a group of people that care, that download the development code base, test it, identify issues quickly, contribute patches to fix small bugs, write FAQs and help each other.  It is amazing to see and amazing to be part of.

Thank you all!
OEMR.org 501©(3)
Custodial Agent for OpenEMR

tmccormi wrote on Thursday, July 28, 2011:

Errata:  error in ZHH’s actual company name, it should be:  Z&H Healthcare Solutions, LLC,  sorry Shameem and team.
-Tony

tmccormi wrote on Friday, July 29, 2011:

We have completed the testing pass exercise for the evening.  Much thanks to Selvi and Team at Visolve, Vinish at Z&H and Jeremy at Mi-Squared for their help.  ALL of the heavy lifting was done by Selvi, Satyha and Devi.  You are great!

The summary is that we passed all but two tests.  The failures were minor issues, but will need to be fixed and retested next week along with a smattering of randomly chosen tests to prove we did break anything that we already passed.   ICSA will send us details and we will coordinate the fixes and schedule are retest as soon as that is done and ICSA has a slot on their calendar next week

Eligible Provider (Ambulatory)
PASS - 170.302 (n) Automate measure calculation
PASS - 170.304 (j) Calculate and Submit Clinical Quality Measures*
FAIL -  170.302 (k) Submission to immunization registries*
PASS - 170.304 (i) Exchange Clinical Information and Patient Summary Record (combine with 170.304.f)*
PASS - 170.304 (f) Electronic copy of health information (combine with 170.304.i)*
PASS - 170.304 (h) Clinical Summaries*
PASS - 170.304 (b) Electronic prescribing*
PASS - 170.302 (b) Drug formulary checks
PASS - 170.302 (j) Medication reconciliation
PASS - 170.302 (a) Drug/Drug and Drug/Allergy Interactions
PASS - 170.304 (d) Patient Reminders
PASS - 170.304 (e) Clinical decision support
PASS - 170.302 (m) Patient specific education resources
PASS - 170.304 (g) Timely Access
PASS - 170.304 (a) Computerized provider order entry
FAIL- 170.302 (h) Incorporate lab results

Security
RE-PASS - 170.302 (o) Access control (combine with 170.302.t)
RE-PASS - 170.302 (t) Authentication (combine with 170.302.o)
RE-PASS - 170.302 (p) Emergency access
RE-PASS - 170.302 (q) Automatic log-off
RE-PASS -170.302 (s) Integrity
RE-PASS - 170.302 (u) General encryption
RE-PASS - 170.302 (v) Encryption when exchanging electronic health information
RE-PASS - 170.302 (r) Audit log
RE-PASS - 170.302 (w) Accounting of disclosures (optional)

Good night all!
-Tony

tmccormi wrote on Friday, July 29, 2011:

Errata: …prove we did NOT break anything …

I hate sourceforge’s forum.

zhhealthcare wrote on Friday, July 29, 2011:

Congratulations!  
Shameem

bradymiller wrote on Friday, July 29, 2011:

Awesome job!!
-brady

antekpr wrote on Friday, July 29, 2011:

Felicidades!, Congratulations! We are sure everything will work out fine.
Alma Brunet
Consultores EMR, Puerto Rico

tmccormi wrote on Monday, August 01, 2011:

From: Visolve …

The remaining issues w.r.t ICSA are given below. I won’t be able to attend the weekly telecon on Monday PST night. Do let me know if you’ve any questions.

1. 170.302 (h) Incorporate lab results

Reason for failure:
Units for test results are not displayed in patient lab results screen.

Solution:
Patient results and pending review screens should have the units of results. The information is present in the structured format message received from lab. OpenEMR needs to parse it and to display it in the respective screen.

2. 170.304 (e) Clinical decision support

Reason for failure:
While demonstrating, the Clinical decision rule was not performing as expected. We created two new rules based on medication, allergy. But they didn’t show up in the patient summary screen for the appropriate patients.

However, for all the patients, it showed all the inbuilt clinical decision rules irrespective of their details.

We tried with new instance of OpenEMR and CDS is working fine as expected.

Brady, do you foresee any dependencies here which might have caused the issue during the demo?

3. 170.304 (j) Calculate and Submit Clinical Quality Measures
Only requires the data to be populated, that we’ll do that before the demo.

If (1) and (2) are fixed,  we can verify the same against the NIST test procedures.

thanks
selvi

bradymiller wrote on Monday, August 01, 2011:

Hi Selve,

Was hoping to get clarification on the number 2. It’s sounds like it is working fine on the official codebase but didn’t work on your demo (let me know if that interpretation is incorrect) What code did you add to the demo besides the official codebase?

thanks,
-brady

bradymiller wrote on Monday, August 01, 2011:

error, meant Selvi (not Selve)

bradymiller wrote on Tuesday, August 02, 2011:

Hi Selvi,

Some other thoughts on this is something that Rod noted awhile back when coding within the pid functions:
“Clinical Reminders seems to require that $_SESSION (which becomes $pid) be a string value.  It fails if the value’s type is integer.”
I think it causes the same behavior as you are explaining above where all the actions show up.

Perhaps one of the external code items you brought into the demo forces the pid to be integer. If this is the case, could stop that (although it would be even more useful to figure out where an integer pid is breaking the CDR engine).

-brady

visolveemr wrote on Tuesday, August 02, 2011:

Hi Brady,

The cause you have stated might be the correct one. May be ZH health care can answer whether they are passing PID as integer or string from newcrop to openemr while pulling back the records.

Thanks,
Vicareplus Team

bradymiller wrote on Tuesday, August 02, 2011:

Hi Selvi,
Still trying to understand when it happens. Does it happen when newcrop fx is on?
Thanks,
-brady

zhhealthcare wrote on Tuesday, August 02, 2011:

Hi Brady,
We are passing a variable $medArray to the function processAmcCall. When we checked the variable with function is_numeric/is_string, both are returning true. This also was the official code base at the time of checking. We have to confirm that whether visolve applied the patch we have sent or directly taken it from official codebase. Apart from that, what we added is setListTouch() function in page soap_allergy.php line 95. There also pid is taken from global/REQUEST.
Can visolve send us the exact steps they have taken so we will try it in out machine and check whether we can produce the error or if ok sathya can try to add the rule in our server and try to reproduce that error.

Vinish K
ZH HealthCare

tmccormi wrote on Tuesday, August 02, 2011:

Jeremy of MI2 has provided a patch for the Lab Results issues for testing.
branch name is “mu”
try this: https://github.com/jwallace00/openemr/commit/a9df470618e69591390d100d9022d943d4429331
-Tony

bradymiller wrote on Thursday, August 04, 2011:

Hi Visolve and Zhhealthcare,
Just to get an idea of the priority, when is the next ICSA testing.
-brady

tmccormi wrote on Thursday, August 04, 2011:

As soon as Visolve approves the patch from mi-squared, I will schedule the next test pass.  Hopefully by the end of this week.
-Tony

bradymiller wrote on Thursday, August 04, 2011:

Hi,
Is the CDR engine bug still active?
-brady

visolveemr wrote on Thursday, August 04, 2011:

Hi Brady/Vinish,

We also made an assumption that enabling e-prescription might cause the issue (after brady’s post @11). We din’t face the issue before demonstration and we couldn’t reproduce the same issue with new instances of Openemr.

Vinish, we have used the patch you have sent on official codebase.

Thanks,
ViCarePlus Team

bradymiller wrote on Thursday, August 04, 2011:

Hi,
Very odd. I wonder if there was in issue with the rule that you added via the CDR-Admin-GUI that threw everything off. Just to be safe, I’ll hopefully have a fix for the pid string/integer CDR issue.
-brady