Biometrics Implementation in OpenMRS

This is an introduction to use of biometrics in OpenMRS. There are different implementation that are using biometrics and we would like to know them. have a round discussion on them to come up with a comprehensive solution that can meet majority of implementers who have the need to use biometrics. This discussion is a suggestion from the OMR17 Biometrics Unconferenced session. Here are some highlights from the discussion during the session. @dkayiwa @carapai @jmpango @ssmusoke @k.joseph @mseaton


Thanks @slubwama!

I will add a to do on the PIH end to add a little write-up of what we have done so far.

1 Like

Thank Goodrich will be sharing how we have done it in UgandaEMR later after the conference

As a summary… our fingerprint solutions consists of:

  1. A Spring Boot application utilizing the (propriety) Neurotechnology VeriFinger SDK. A typical implementation would use two instances of this application… one that runs on the client machine and interacts with the fingerprint reader to extract a template from a fingerprint (using “Fingerprint Scanning” mode), and another that runs on a server, stores all the templates, and does the matching (using “Matching Service” mode).

The code for this can be found here:

  1. A “Biometrics Engine” interface/API we added to Registration Core to abstract out interactions with a Biometrics Matching engine:
  1. A basic implementation of that engine that interacts RESTfully with a Biometrics Matching engine (this in in our PIH Core module but could possibly be moved elsewhere?):
  1. Functionality added to Registration App that provides a fingerprint widget to collect fingerprints during the registration flow, (as well as the ability to search for existing patients by fingerprint during the registration process to avoid duplicate registrations)
  1. A basic fingerprint search widget added to Registration App:
  1. Modification to the patient search widget in Coreapps that allows an outside search (in this case the fingeprint search) to inject results into the widget:

Our basic configurations of all this functionality can be found in our Mirebalais distro moudle (though unfortunately since we programatically do all our app config instead of using JSON, so you’ll have to derive what the actual JSON config would be):

Whew! There was a lot here… @mseaton feel free to amend/edit if you think I forgot anything and/or described anything incorrectly.

Hopefully this is helpful… also, not sure if there is somewhere else we want to post this information for posterity?

fyi @raphael and @craigappl

Take care, Mark


I bookmarked it! Thanks Mark!