Fingerprints in OpenMRS

What fingerprint solutions are currently being used with OpenMRS?

A quick search shows the legacy Registration Module and mUzima Fingerprint Module (@aeadara) as possibilities for the legacy UI. I’ve also seen the Talk Discussion. @sunbiz, where can I find more information on the “FingerprintMatcher” server you mentioned in that previous talk post?

Is there any work done or planned for fingerprinting or other bio-metrics with the Reference Application?

Thanks also for any thoughts or suggestions for other open source fingerprint solutions that might be able to be used with OpenMRS.

If you are running a Windows server to host OpenMRS, then you will be able to use the FingerprintMatcher service and all the fingerprint apps (written in C#) that are mentioned in that answer.

1 Like

Thanks @sunbiz.

The servers are Linux servers. Would it be possible to setup a single FingerprintMatcher server at a national server and the Linux servers hosting OpenMRS could pass the requests on to the central Windows server assuming they had Internet connectivity at the time?

Where can I get the FingerprintMatcher, is it open source?

Yes, it would be possible to use a central server hosting the MatcherService and the clients that have the patient records could be running Linux. It is all open-source:


Thank you so much! We’ll have a look into that.


We have also done some work on fingerprinting in OpenMRS. For now, we are able to register a patient using the RegistrationApp.

Its based on java. We have started to do the search for a patient using the same. We have an applet involved.

Code is here: FingerPrinting in OpenMRS-Uganda

1 Like

@smuwanga does your app require specific hardware?

1 Like

Not sure. As of now, I have been using digitalPersona 4500. I haven’t tested it with any others.

1 Like

Thanks @smuwanga. Glad you are working in this domain! We’ll likely be in touch with more questions.

did you ever test any of the code samples and pointers we suggested? @smuwanga

No I didn’t test. I looked at the design part.

I wanted to make sure the user would operate within one screen. Yours had to install a c# client side application, work with a servlet to communicate with the server-side(OpenMRS).

@judy kudos for the great work, please what’s the current progress of the muzima fingerprint module, and what openmrs version is compatible plus whats required to run with at the moment?

Cheers Gibril

@judy kudos for the great work, please what’s the current progress of the muzima fingerprint module, and what openmrs version is compatible plus whats required to run with at the moment?

Hello all,

@arbaughj, sorry, I should have replied much earlier than this, I think I was in Rwanda when the original post went through. I assume this is for Haiti? Our Haiti team has been keen for quite some time to roll out fingerprint identification at our clinics there, so would be great to hear more about what you are doing and think about syncing up.

Over the past couple weeks I did a quick spike on creating a fingerprint client app that could integrate with the Registration App module. Our Haiti team has a license for the Neurotechnology SDK, so that’s what I’ve been focused on. This is the same SDK (I believe) that @judy and team have been using in their solution.

One of the challenges we have been facing is that the default solution for deploying a web-based solution has been to build an applet, but applet support is rapidly being dropped from current browsers.

For my prototype/proof of concept, I build a standalone Java application (starting from sample code in the Neurotec SDK) and then a OpenMRS UI Framework fragment that is injected into the Registration App module to provide searching and enrollment as part of the registration process. All communication between the fingerprint Java app and OpenMRS happens on the client side–the Java apps fire up a simple http server, and then the client communicates with it via jquery/AJAX. I also created a Windows installer package to install the client app.

Right now the Java application is backed by a mysql database that can be hosted on another machine, but this doesn’t seem suitable for a multi-client environment. This may be enough for us to start, but it sounds like we may need to switch to using Neurotec’s “Matching Server” if we scale to multiple clients per database.

We recently got something working–we can collect a patient’s fingerprint during the registration flow, and then search for a patient via fingerprint on the registration screen. However, it it really rudimentary at this point… :slight_smile:

Would love to hear what you have going on on your end.

Take care, Mark

Hi @mogoodrich, great to hear from you and the exciting work that you’re doing on fingerprinting.

You’ve guessed it right. I-TECH is researching a fingerprinting solution for OpenMRS (Reference App). Here is some of the background information…

Finger Print Feasibility Memo - December 22, 2015 Problem Statement: The Ministry of Health in Haiti (MSPP) has expressed the desire to implement fingerprint identification linked to the three electronic medical record systems used in Haiti. Fingerprint technology can be used in EHRs for several purposes including: 1) site level patient identification; 2) as a biometric approach to creating a national master patient index; and 3) de-duplication of medical records. I-TECH programmed the functionality into the iSanté EMR in 2014 to interface with the M2SYS fingerprint readers to pull up patient records. At this time the functionality of iSante and the M2SYS proprietary readers and software is limited to site level retrieval of patient records. To achieve the benefit of fingerprints to be part of a national master patient index requires additional functionality across all EHRs in use in Haiti, specifically those EHRs reporting to HASS. The current question is to explore the feasibility of implementing a fingerprint identification system that is functional across all EHRs with a national fingerprint repository.

Summary: There are fingerprint identification products available on systems that run Linux, both open source and proprietary. Additional research and investigation is required to determine whether or not these systems would work with existing hardware and what it would take to adapt the system to iSanté. There has been work on Linux based fingerprinting applications, though the solutions are generally individual implementations where the developer invested significant time to get the software and hardware interface to work. In preparation for further investigation and estimation of the cost of implementing fingerprint identification on Linux based systems in Haiti, an initial review identified the following questions to establish standards prior to implementation.

Q: What is the ultimate goal of fingerprint identification in Haiti? I-TECH recommendation: A clear vision for fingerprint identification implementation is necessary. There are a few options:

  1. Fingerprint identification at all sites with a national server to create a biometric master patient index based on fingerprints and de-duplicate patients and identify and transfer uniquely identified records between health facilities in “real time.”
  2. Fingerprint identification to retrospectively de-duplicate patients for public health analysis (unique identifier sent via HASS data stream and fed into deduplication algorithm). The fingerprint identifier could be more accurate than the current identifiers used to de-duplicate patients.
  3. Fingerprint identification used at patient registration to improve speed at which sites can retrieve records.

Another option would be to continue with demographic based patient deduplication in HASS as is being done now. Among the cases of duplicate records found by HASS, after validation, this duplication identification was found to be 95% accurate.

Q: Will all finger print identification systems used to provide data to HASS need to use the same standard for capturing fingerprints?
I-TECH recommendation: To accurately represent the HIV epidemic in Haiti and achieve patient duplication, all EHRs should use the same fingerprint identification standard. We would recommend an open, non-proprietary solution that meets international standards for fingerprint identification. If however the goal of fingerprinting is to only facilitate record retrieval, each EHR could use a different fingerprint identification system.

Q: Will there be a requirement for use of Open standards based fingerprint reader, or will we try and reuse the M2SYS readers? I-TECH recommendation: It is more cost effective to use the already purchased M2SYS readers if they produce a unique number for each fingerprint that is compatible with all EHRs in use in Haiti. In the case of the initial readers UGP purchased from M2SYS, they were outdated and did not work with the version of M2SYS software deployed. This raises the issue of doing due diligence on the expected lifetime of fingerprint readers. The current readers owned by Haiti from M2SYS are only supported on Microsoft clients running IE.

Q: What Operating systems, and browsers need to be supported, for example: Linux (Ubuntu, Redhat) and Microsoft Windows 8, 10 and beyond I-TECH recommendation: The fingerprint solution should be compatible across all browsers and operating systems. The national server would also need to be running an operating system compatible with the fingerprint solution.

Q: What type of data is stored, a picture of the fingerprint or a numerical representation? I-TECH recommendation: numerical representation computed using an open standard is preferred over a picture (JPEG).

Q: What is the acceptable level of false positive or false negative finger print match? I-TECH recommendation: MSPP should establish an acceptable level that meets international standards. The level should be lower than what we can currently achieve using just demographic data.

Q: Will all facilities using fingerprinting need to link to a national finger print server? I-TECH recommendation: If there is reliable internet connectivity at all sites using an EHR, a national fingerprint server could facilitate records transfer and patient identification across sites (biometric master patient index) in “real time.” If however the goal of fingerprint identification is to send a unique identifier by patient to the HASS database to facilitate patient deduplication, a national fingerprint server is not necessary and the unique fingerprint numerical value could be sent by each EMR in the HASS data stream. The former option would be much more labor intensive and resource heavy. The latter is currently supported in iSanté; however readers and fingerprint software would still have to be installed at all iSanté sites.

Fingerprinting is beyond the scope of this phase of the iSanté to iSanté Plus (OpenMRS) migration, so we’re just looking for what others are doing/have done at this point.

We have a version for testing now … Email me


Hello @mogoodrich ,

Just been thinking of this as well. I would love to explore the use of Web Sockets. We are thinking of a way to do away with applets, yet allowing the user to work within one screen without installing any client on the machine.

@carapai @slubwama @jmpango @ssmusoke @arbaughj @judy Simon.

Hello all i am happy to be in this talk. i am a new user of OpenMRS and i want to deploy the finger print module of th UgandaEMR distribution. Can you explain me the process ? I have install Maven and git in my local machine.

@judy hi, just tried out building on my local device, i failed to grab a hold of com.neurotec, i wonder where i can find it!

    [INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] Muzima Biometrics Module ........................... SUCCESS [  0.486 s]
[INFO] muzimabiometrics-fingerprint ....................... FAILURE [01:00 min]
[INFO] Muzima Biometrics Module API ....................... SKIPPED
[INFO] Muzima Biometrics Module OMOD ...................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:02 min
[INFO] Finished at: 2017-11-27T15:47:50+03:00
[INFO] Final Memory: 28M/982M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project muzimabiometrics-fingerprint: Could not resolve dependencies for project org.openmrs.module:muzimabiometrics-fingerprint:jar:1.0.0: Failed to collect dependencies at com.neurotec:neurotec-core:jar: Failed to read artifact descriptor for com.neurotec:neurotec-core:jar: Could not transfer artifact com.neurotec:neurotec-core:pom: from/to openmrs-repo ( PKIX path building failed: unable to find valid certification path to requested target -> [Help 1]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :muzimabiometrics-fingerprint

CC: @maoengm, @mwelazek, @monyatsithulo, @tlohang from Icap Lesotho

@k.joseph, when you download the Neurotechnology SDK, there is a pom that it ships with. You simply go into the root directory and run “mvn install” and it will install all of the Neurotechnology jar files into your local maven repository. It would be great if Neurotechnology deployed these somewhere publicly accessible, but I don’t believe that they do.

You can see a bit of this for the biometric server/client application that we wrote for PIH using Neurotechnology here: - specifically have a look at the first few steps in the README

Can I ask what your use case is and whether you are working on this for Lesotho? If so it would be good to see if we can collaborate on this, given PIH also works in Lesotho and we might be able to leverage the fingerprinting work we already support elsewhere.

Best, Mike

1 Like