Biometrics Implementation in OpenMRS

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

3 Likes