Tuesday, May 23, 2017

OpenMRS Patient Matching Module

First of all, I would like to start with a brief introduction about OpenMRS even though you might know about it.

What is OpenMRS?

"Write Code, Save Lives"


OpenMRS is an electronic Medical Record System with the essential functionalities. It is a community of developers, and users working toward a shared and open foundation for managing health information in developing countries. You can find more details here. As a developer I love their motto "Write Code, Save Lives"

What is Patient Matching Module?

Patient Matching Module is an application where it tries to identify records that belong to the same patient among different number of data sources. This module is significant because in real world it has to be dealt with erroneous data. For example, a patient’s name can be misspelled. Benefit of this module is by linkage of records it would be easier for a patient to visit a hospital without carrying hard copies of test results whether or not the tests were done at the same hospital. 

If you would like you can download the module here and the source code is available here.

Currently it has standalone version which is a Java Swing application and patient matching module can be operated through the OpenMRS reference application as well.

This is an outstanding module as I have mentioned earlier, but in the current version it has some limitations such as, 
  • Patient Matching Module scans all the records each time it runs.
Not an efficient method for implementations having huge set of records. 
For instance, if we have 10,000 patients in our system and we need to match the patients using first name and the date of birth. Goal is to check for the duplicates among them. If we compare all patients to all the others that is roughly 50 million comparisons ( 10,000 x (10,000 - 1) / 2 ). After couple of days if we run the same match where 90 patients have been added and 10 updated, with the current version it would still carry out the same method of comparison and this time it would be about 51 million comparisons!
What if we have a method where the module performs comparisons only for the added and updated records for that particular match. If we have this sort of an amazing method rather than 51 million of comparisons it would result in only about 1 million [(100 x 99 / 2) + (100 x 9990)]. Congratulations we saved the valuable time of the module neglecting 50 million comparisons. This power will be available in Patient Matching 2.0
  • The match process generates a list of highly corresponding matches (probable duplicates) for human review.
Current version presents all similar matches each time it functions. This would not be a positive experience for the user because every time after a comparison, user has to review the same set of records.

This Patient Matching is an amazing module which needs some modifications to perform well in real world. OpenMRS has given this problem as a GSoC 2017 project and I will be solving these problems in this summer. Hope you would read upcoming articles to know more about Patient Matching 2.0. 

Cheers! 😀




No comments:

Post a Comment