Can the Bahmni App be customized to show Names as: First Middle Last

We are testing bahmni in Ethiopia. In Ethiopia people use 3 names [Given Name] [Father’s Name] [Grandfather’s Name] This maps easily to Given Middle Family, but Bahmni and openMRS default to using only Given and Family name.

Yohanis Petros Dawit would neber be known as Yohanis Dawit, but would be known as Yohanis Petros

Is there a way to setup Bahmni and OpenMRS (and OpenELIS, etc…) to use all 3 names, or just Given and Middle?

not sure if I understand this. Bahmni does provide first, middle and last name options. meaning a name is composed of 3 parts. You may capture full name as part of any of the fields. You can also specify that any name part can not be blank

Thanks for the response. I will clarify. I am hoping to always SEE all 3 names.

I can register the patient with 3 names and search results on the registration app show three names image

Here on the active patient screen, only First and Last are shown. image

Here on the patient Dashboard, only First and Last are shown image

As a reminder, in Ethiopia, a person has 3 names First Middle Last, but they are known by First Middle, but never First Last.

**This can be solved **

  • Go to openmrs setting (login as superman)
  • Administration >Maintenance>advanced Settings
  • Search for (emrapi.sqlSearch.activePatients)…
  • In sql statement add pn.middle_name,’ ’ at concat(pn.given_name,’ ‘, pn.family_name) which will look like concat(pn.given_name,’ ‘, pn.middle_name,’ ’ ,pn.family_name)

You can do this for emrapi.sqlSearch.activePatientsByLocation and so on

Also you can add new property

Hope I solved you problem so far

Excellent! That really helped. All the “Choose Patient” screens are working! However, it is not working on the Patient Clinical Dashboard


or the Consultation tool

or the patient visit summary page

or the Bed Management module image

@soddoadam Hi Adam, I am evaluating Bahmni for a small clinic in Addis Ababa. Did you resolve the issue about how Ethiopian names are presented on the forms? Also, as you know, the Ethiopian calendar is different. Have you dealt with that particular issue? Thanks, would be great to learn from your experience with Bahmni in Ethiopia.

I did figure out how to use three names throughout Bahmni. Most of the name issues can be solved in the openmrs admin panel, bit a few needed to be updated in the application code.

I am still in the evaluation phases so I have not tackled ever issue yet. Ethiopian dates are on my list but a low priority.

Do you have a programming background? Are you working with any programmers?

I’m interested in work with other Ethiopian users to improve Bahmni for the Ethiopian setting. I found one other group working on Bahmni for Ethiopia on GitHub

When I am back to my computer for I can send you more info on the name issues.



Hi Adam, thanks for getting back to me.

My background is business systems analysis, now retired. My partner in this project is very technical. We are both in Toronto, working as volunteers for a charity in Toronto which funds cleft palate clinics around the world.

I went to Addis to get the business requirements last November. The covid pandemic has slowed the project down but we’re getting back into it now.

Where are you located? Are you working for one particular health setting?

Cheers, Mary

Hey Mary, I can Help you… Just follow this or let your partner do this

  1. copy this {{patientContext.middleName}} } And paste it in “bahmniapps/clinical/displaycontrols/patientContext/views/patientContext.html”
  • It will look like this {{patientContext.givenName}} {{patientContext.middleName}} {{patientContext.familyName}}
  1. Search for mapBasic in this directory bahmniapps/clinical/clinical.min.41e2a6ef.js replace that function with this:

     this.mapBasic = function(openmrsPatient) {
         var patient = {};
         if (patient.uuid = openmrsPatient.uuid, patient.givenName = openmrsPatient.person.preferredName.givenName, patient.familyName = null === openmrsPatient.person.preferredName.familyName ? "" : openmrsPatient.person.preferredName.familyName,patient.middleName = null === openmrsPatient.person.preferredName.middleName ? "" : openmrsPatient.person.preferredName.middleName, = patient.givenName + " " +patient.middleName+ " "+patient.familyName, patient.age = openmrsPatient.person.age, patient.ageText = calculateAge(Bahmni.Common.Util.DateUtil.parseServerDateToDate(openmrsPatient.person.birthdate)), patient.gender = openmrsPatient.person.gender, patient.genderText = mapGenderText(patient.gender), patient.address = mapAddress(openmrsPatient.person.preferredAddress), patient.birthdateEstimated = openmrsPatient.person.birthdateEstimated, patient.birthtime = Bahmni.Common.Util.DateUtil.parseServerDateToDate(openmrsPatient.person.birthtime), patient.bloodGroupText = getPatientBloodGroupText(openmrsPatient), openmrsPatient.identifiers) {
             var primaryIdentifier = openmrsPatient.identifiers[0].primaryIdentifier;
             patient.identifier = primaryIdentifier ? primaryIdentifier : openmrsPatient.identifiers[0].identifier
         return openmrsPatient.person.birthdate && (patient.birthdate = parseDate(openmrsPatient.person.birthdate)), openmrsPatient.person.personDateCreated && (patient.registrationDate = parseDate(openmrsPatient.person.personDateCreated)), patient.image = Bahmni.Common.Constants.patientImageUrlByPatientUuid + openmrsPatient.uuid, patient

Hope I solved your problem

Thank you very much, George. I and my partner will try this. (We’re just now installing Bahmni, just getting started.) Thanks.