Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Primary mentor

Unlicensed user Nyoman Ribeka

Backup mentor

Unlicensed userWyclif Luyima

Assigned to

Unlicensed Former user (Deleted)


Background

In the OpenMRS Data Model, the person table has attributes like gender & birthdate and – through links to other tables – names & addresses.  These are attributes (or properties in Java) that are built directly into OpenMRS and, thereby, shared across all implementations.  As OpenMRS has been implemented through countries across the world, we've discovered multiple attributes that are needed to meet local needs.  For example, in Tanzania, they wanted to record a "ten cell" for each person, which refers to a group of 10 homes.  To accommodate these implementation-specific (local) needs, Unlicensed user Daniel Kayiwa suggested that we allow for local extensions of the person table.  We did this by introducing the person_attribute and person_attribute_type tables, where the attribute definitions are stored in person_attribute_type and the actual values for each person are stored in person_attribute.  To date, we have supported some fairly simple attribute types and have had limited capability for supporting more complex attribute types.  We are also interested in expanding the "attribute" pattern for local extension of other tables in the data model.

Recent work has added visit attributes to the OpenMRS data model (

Jira Legacy
TRUNK-2131
TRUNK-2131
serverOpenMRS JIRATRUNK-2131
).  This project will take on the task of
Jira Legacy
TRUNK-2134
TRUNK-2134
serverOpenMRS JIRATRUNK-2134
, to bring person attribute in line with this more generic approach to attributes.

...

  • Refactor person attributes to align with the new design for attributes that Unlicensed user Darius Jazayeri introduced for visit attributes
  • Create a handful of basic attribute datatypes.
  • Support extension of basic attribute types to further constrain them.
  • Support additional (e.g., through modules) of completely new attribute types – i.e., that may not extend a basic attribute type.
  • For each type, support settings like:
    • Input mask – e.g., constraining input with regular expression(s)
    • Provide a choice list of possible options
    • Validation
    • Single value vs. multiple value (via repeated entries of the same
    • Constraining to unique values vs. duplicates allowedFor example, for a telephone number, OpenMRS should be able to validate the phone number entries, making sure the phone number is in correct format. Another example is citizenship. Instead of giving a totally free text, it would be more convenience to give the user a list of predefined possible String values.

Required Skills

  •  Knowledge of the Java programming language

...