Resources
*Registration Module (this page)
Background
Registration is one of the primary modules in any data management system. A patient's medical record management starts with registering a patient with the system. OpenMRS being a customizable and scalable solution to medical record management also requires a customizable patient registration system. Since every implementation of OpenMRS may be different on the type of information that it may require, it is extremely important to keep the registration module generalized in a way where it can be configured to take registration information about a patient according to the needs of the implementer.
Goal
Create a module which will allow the user from within OpenMRS to easily search for a patient and, if the patient is not found, create a new patient record. Allow use of barcode cards to identify patients. Will allow adding patients to the database, even if disconnected from a central OpenMRS server.
Targets
The Registration module will be similar to the RwandaRegistration Module which was built specific to the requirement at Rwanda by PIH. The following are the steps to be followed in achieving the goal of the module:
*Look-And-Feel + Re-factoring + Patient Search:
- The look-and-feel of registration should be similar to OpenMRS web application.
- The RwandaRegistration Module will be re-factored to make it generic to the data (like patient identifier) of OpenMRS
- The module will first display a page to find a patient using patient identifier or patient name
*Search Patient Using Bar-Code Scanning:
- Bar-Code scanner will be able to read bar-code and return the code to the OpenMRS web application
- Match database for bar-code and retrieve patient identifier
- Open the Patient Dashboard directly when successful match found
*Search Patient Using Fingerprint:
- Patient registers own fingerprint on first visit
- On revisit, the patient puts finger on reader and fingerprint is matched with all in database. The patient summary is printed and given to the patient
*Create New Patient:
- If the patient is not found, open registration page with the search name as input to Name field
- Similar form to current OpenMRS registration is displayed
- Create patient generates a new bar-code representing the patient identifier
- Allow printing id-cards / barcode for the patients
*Save Patient Image
- Patient while registering stands in front of the camera.
- A flex widget will capture the patient image and save it as a file with the identifier
Release Notes
1.3.1
- Removed implementation specific concepts
- Fixed bugs
1.3
- Fixed bugs
- Created registration encounter and OPD visits
1.2
- Bug fixes
- Works with OpenMRS 1.7
- Patient attributes and first encounter with observations can be saved
- Uploaded identifiers can be used by multiple data entry operators simulataneously. Added locking of identifiers
1.1
- Patients can be found using fingerprints
- Patient attributes can be saved
1.0.3
- Stable release available in OpenMRS repository
- Base30 Identifiers can be generated
- Uploaded list of identifiers
0.8
- Registration Module is used to register patients or find/revisit patients
0.7
- Identifiers are automatically alloted if MRN ids file is uploaded
Biometric Working
UML Model Diagrams
ACTIVITY DIAGRAM FOR THE REGISTRATION MODULE
USE-CASE DIAGRAM FOR THE REGISTRATION MODULE
Master Patient Index Developer Notes
Errors
Patient Identifier Collision
Situation:
- You have an OpenMRS server set up, it is configured to connect to an MPI through OpenHIM acting as the Interoperability Layer
- Using the registration app
- You create a patient
- It gives no errors and redirects you to the patient page
- Note that the patientId in the URL is actually the uuid of the person which can be found in the person table.
- The Patient ID in the dashboard is in this case the OpenMRS ID which is autogenerated by OpenMRS.
- However, you cannot find the patient you created in the MPI when you search by name
- But if you search by OpenMRS ID, you find a different patient, this patient has the same MPI Global Identifier Domain ID (In this case Open EMPI ID) as the patient you just created
- This can be checked by looking at the patient_identifier table
Explanation
The OpenMRS generated ID already exists in the MPI under a different patient. The local OpenMRS generated the same OpenMRS ID for a new patient and submitted it. This will happen for example if you create two reference application distributions, connect both of them to the same MPI and start creating patients in both of them. There will be no errors. The local patient will be saved locally but with the MPI patient's Global Identifier Domain ID (E.g. ECID for ISantePlus or OpenEMPI ID for default OpenEMPI setup). The local patient will not be saved in the MPI.
Solution
In order to ensure that your multiple OpenMRS servers do not generate IDs that collide you could do one or more of the following:
- Legacy Admin UI → Manage Patient Identifier Sources → Configure
- Add different prefixes and or suffixes
- This can also be done directly on the database table:
- Additionally you could change the next_sequence_value for the different servers.