Discussions about Master Person Index in Haiti

Hi @mogoodrich, @mseaton, & @ball

We’re working on the integration with OpenEMPI and would like to discuss a few items:

  • I see that you have code in Mirebalais that connects to a MPI. Did you connect to OpenEMPI?
  • The ZL EMR ID is the unique identifier across the PIH sites in Haiti. I see in the ConfigureHaitiGenerators class that you have both local and remote generators for the identifier. Can you describe the architecture for generating this ZL EMR ID? Do you have to deal with internet outages between the site and the remote generator?
  • iSanté has a mechanism for developing a unique patient identifier based on the site where the person first visited. I believe that shifting to the MPI will require defining characteristics of a national identifier that’s auto generated from OpenEMPI. Has PIH done work on this in Haiti?

Thanks, Craig

FYI - @jmaxy, @guerschon, @nathaelf, @jamesfeshner, @arbaughj

Thanks Craig!

  • We are not currently connecting to OpenEMPI or another MPI, though this is something that has been on our to do list for a long time. What code are you referring to? We do have a module that we use to import a patient from another OpenMRS instance (https://github.com/PIH/openmrs-module-importpatientfromws). This was something we wrote relatively quickly around the time the hospital at Mirebalais opened to allow us to import demographic information and identifiers from an existing OpenMRS system we had a Lacolline. We recently have been looking to expand this to allow us to import all patient information from one OpenMRS system to another, though this in the beginning stages.

  • We use a standard pattern provided by the IDGen module. We have a single OpenMRS instance that has a “Local Identifier Generator” (to use IDGen module terminology). Then each of our OpenMRS instances in Haiti fetch identifiers from this master source–but they fetch the identifier in batches and maintain a “Local Identifier Pool”. Of the top of head I don’t remember the exact configuration, but I believe we fetch identifiers in batches of 1000, and “refill” the pool any time the number available drops below 500. So, as long as there’s Internet there should be at least 500 identifiers in the pool, allowing us to register at least 500 new patients while Internet is down. (And the pool size and refill point can be tweaked on a site-by-site basis depending on the number of new registrations per day and the frequently/duration of Internet outages)

  • No. I know we’ve had discussions regarding incorporating the existing national identifier in our system, but we haven’t done much with this to my knowledge. @ddesimone

Hope that helps–we are definitely interesting in collaborating further on this!

Adding @cioan

Take care, Mark

FYI - the only national identifier we’ve talked about is an existing identifier sometimes used in Haiti that can be derived from the patient’s demographic information:

  • The first 2 letters of the first name
  • The first 2 letters of the surname
  • The 2 digits corresponding to the month of the birth date
  • The 2 last digits of the birth year
  • The first letters of the mother’s first name

So you can see that this identifier is not unique to a each person. We don’t really use this much to my knowledge and we have not done anything in the EMR with this.

I do not know of any existing unique national identifier in Haiti, but some of the other folks initially tagged on the original post would know better than I would.


Thanks @ddesimone–yes, that was the identifier I was thinking of. I didn’t remember the details, but knew that a major limitation was that it wasn’t guaranteed to be unique.

@craigappl, regarding the question about connecting from the registrationapp to OpenEMPI, there was an effort to enable this (optionally) via a Google Summer of Code project that @darius mentored 2 years ago.

So there may already be a bunch of work done on this that you will be able to leverage, if it matches your planned workflow.

Googling “openmrs” “registration” “mpi” brings up several hits. like this and this and this.

Awesome that the team plans to work on this in the coming months! Mike

And I guess you’ll have read my comments on what has happened with that module and OpenEMPI integration since the GSoC project:

Thanks Everyone,

iSanté uses the combination of a site code + the patient’s local site ID. We realize that this approach doesn’t follow best practices around patient identifiers and are looking in to operationalizing the suggestions in this UNAIDS publication around generating unique patient identifiers.

@darius we definitely saw your comments. I’ll respond now to them soon.

Here’s the current status of the project:

  • We have OpenEMPI up and running in a demo environment with the following identifiers installed: – OpenEMPI Enterprise Client ID (Standard GUID) – Haiti NationalID (patient demographic ID described by David) – Legacy iSanté Clinic Patient ID (Site Specific sequentially numbered Patient ID) – Legacy iSanté PatientID (Globally Unique Legacy iSanté Clinic Patient ID prefixed with a site code)

Next Steps:

  • Identify a national unique identifier generation algorithm and generation source
  • Link the registration process to OpenEMPI building on the work of the GSoC project.