Blocking Algorithm for Patient Registration

Primary mentor


Backup mentor


Assigned to

Kesha Shah


OpenMRS is increasingly used for multiple data collection points across several systems. There are different models of using openMRS in health care for example where a user registers a patient at the point of encounter and subsequently enters all their details into the system, and in other cases a clinician writes patient details on a paper chart, that is later transferred to the openMRS system by data clerks. Moreover , a program may involve a mobile tool that registers patients while out in the field , and sends this data into the main system to create new patients. These data are combined into one record, and depending on the available data elements are appended to an existing patient or used to create a new patient.

Unfortunately , most of the registration work for patients in openMRS remains a data collection exercise. We wish to transform this by developing and implementing a data blocking algorithm that quickly uses the data elements entered during this registration to determine if the patient is existing or new to the system , or is in the 'grey zone ' that requires processing by the patient matching module implemented in openMRS. We aim to improve patient identification and matching , and build a framework to allow for incorporation of additional data elements like biometric data , latitude and longitude to improve patient registration

Project Champions

  • Judy Gichoya
  • TBA


  1. To develop and integrate a blocking algorithm on server side of OpenMRS to capture demographic data details, compute possible blocking approaches and compare results for high return
  2. To implement an algorithm to clean data on registration details for example name misspellings and unexpected characters to improve data blocking and patient matching results
  3. To develop a generic blocking prototype that integrates mobile patient registration connected to server registration that is light weight and responsive in low connectivity areas
  4. To implement an algorithm that corrects for various name variations that occur in various geographic areas e.g. name transposition that affect record linkage and patient matching
  5. To optimise the speed of blocking algorithm to ensure efficient workflows and minimal interruptions during patient registration events for various openMRS implementations


Extra Credit


  • The algorithms above are already implemented and tested for research , just need to incorporate them into OpenMRS
  • +1 if you are good at math and algorithm - this project requires strong analytical and algorithm knowledge
  • + 1 if you have coded on the patient matching module