Blocking Algorithm for Patient Registration - Midterm Presentation


This is my video presentation for Blocking Algorithm.

This screen-cast includes

  1. Background
  2. Project Aim
  3. Work Plan
  4. Completed Work
  5. Ongoing task
  6. Next Steps
  7. Walk-through Code
  8. A small execution of script demo
  9. Screenshots
  10. Conclusion

I have used ‘stringdist’ package of R for checking distance between incoming new patients and the existing patients in the system. What do you think is the best distance measure from -Levenshtein distance, Full Damerau-Levenshtein distance, Hamming distance, Longest common substring distance, q-gram distance, cosine distance between q-gram profiles, Jaccard distance , or Jaro-Winker distance ?

Feel free to provide suggestion. Your feedback is highly appreciated!

Cheers Kesha Shah


@keshashah, thanks for your presentation. I would be interested in hearing a little more detail on how you plan to implement the blocking scheme into the registration module. Are you referring to the registrationcore module? Or something else? How would the algorithm for the blocking algorithm be introduced? More specifically, for someone writing a UI (e.g., module) or client (e.g., mobile) using the registration service, how would things change?

Hi @burke, Thanks a lot for viewing the presentation. The registrationcore module is surely one of the ways to integrate a blocking scheme with the patient registration module. Another way would be to create a standalone feature exposed via REST api which can be called for registration (that might internally call registrationcore module) specifically targeting thin mobile clients. Either way the user will be given the flexibility to toggle on/off the blocking feature at times of latencies/server overload for better performance. Since feature could be in R will have to integrate it with java based framework using rJava or JRI. Your thoughts on these are highly welcomed.

@keshashah, interesting to see this work going on.

As Burke mentioned, it’s not clear from your presentation how this is going to fit into other OpenMRS work. For example the registrationcore module defines an interface for a SimilarPatientSearchAlgorithm, and OpenMRS 2.0 leverages this in its Registration app. If as part of your project, you have your code implement that interface, then it could be one of the alternative algorithms that people can choose between for their implementations…

1 Like