The Registration module allows for a flexible configuration of patient attributes that will suit several implementations. The following types of fields to be captured for a patient.
Core Fields
Core fields come out of the box with Bahmni. Current set of core data are Name, gender, age and address. Addresses can be configured to take from a dictionary using the Address Hierarchy configuration.
Implementation Specific Fields
Fields that needs to be captured from the user can be configured using OpenMRS PersonAttributes functionality. If you need to add more attributes in an implementation, follow these steps.
1. Navigate to "Manage Person Attributes Types" link in OpenMRS Administration page.
2. Add "New Person Attribute Type". The "format" of the attribute will define the type of GUI element to be shown on Bahmni's Registration Page. If the attribute type is string, a textbox will be shown. If it is of "org.openmrs.Concept" type, then a dropdown is displayed. The label on the UI is taken from the "Description" of the attribute.
3. Apart from this, the bahmni-config (implementation specific configuration folder) provides an additional level of customiz
ation. We can display/hide some of the GUI elements that are configured in PersonAttributes. The settings are available at bahmni-config/openmrs/apps/registration/app.json. The following are some of the configurations.
showMiddleName, showCasteSameAsLastNameCheckbox,localNameSearch
4. Also, for the patient name, the autoComplete feature can be configured in app.json using the configuration-
"autoCompleteFields":["familyName", "caste"]
Configuring sections in Registration page
We can have patient attributes distributed into sections in the patient registration page. The configuration looks like this:
"patientInformation": { "additionalPatientInformation": { "title": "Additional Patient Information", "attributes": [ "distanceFromCenter", "isUrban", "cluster" ], "order" : 1 }, "patientFinancialInformation": { "translationKey": "REGISTRATION_FINANCIAL_INFO_KEY", "shortcutKey": "REGISTRATION_FINANCIAL_ACCESS_KEY", "attributes": ["familyIncome", "debt"], "order" : 2 }, "hidden": { "attributes": [ "RationCard","cluster" ] }, "defaults": { "class" : "General", "caste" : "Thakur", "isUrban" : true } }
There can be multiple sections like "additionalPatientInformation", "patientFinancialInformation", etc. Each section can have the related patient attributes like - "familyIncome", "debt", etc; and title and/or translation key and a shortcut/access key. "hidden" is a special section which holds the patient attributes that should not be shown. So "Other Information" will now contain:
"Other Information" attributes = Attributes that are not present in any of the section minus attributes specified in the hidden section.
"defaults" - this section holds the default value to be populated in registration page for the patient attributes . Default values can be applied to any type of patient attribute ex:-concept, string, integer, boolean
These patient attributes will be shown in the order of "order" value that is present in the configuration. If some of the fields having the order value and some of the fields not having the order value then all the attributes that is having order value will be shown, then default behavior for the remaining attributes. If none of the attributes are having order value, then default behavior(that is alphabetical order) will be displayed.