Note |
---|
This page is outdated and no longer receives updates! |
As of version OpenMRS v1.5 most objects/tables have a UUID property. This property is automatically filled in for every row and is 99.9% guaranteed to be unique across the universe. The primary reason for uuids is to support the Sync Module and allow for identifying objects that are identical across different OpenMRS installations.
...
The uuid can really be any unique string within the table, but to follow conventions, all OpenMRS uuids should be 36 characters in length and contain no whitespace. (Ideally, all OpenMRS uuids would be in the canonical form, but the uuids in the MVP dictionary, which were created manually, don't follow the 8chars-4-4-4-12chars convention, though they are all 36 characters in length.) Certain modules, such as the HTML Form Entry module, operate under the assumption that a uuid is 36 characters long and contains no whitespace, so if you are manually creating uuids for some reason, you should follow this convention.
...
The UUID is used as a normal property of every object instead of a primary key for several reasons:
Using long string uuids reduces performance. Its much faster to use smaller integers for PKs
The uuid is a long ugly 36 character string that would not look good in urls
Initial Column Values
When upgrading a current installation of openmrs, all rows will get a uuid generated for them. If you are using mysql, then openmrs uses the uuid() method during the update to do something like:
...
There are some UUIDs shared across all OpenMRS implementations for metadata that are common across all implementations.
Concept Datatype UUIDs
Name | UUID |
---|---|
Numeric | |
Coded | |
Text | |
N/A | |
Document | |
Date | |
Time | |
Datetime | |
Boolean | |
Rule | |
Structured Numeric | |
Complex | |
Role UUIDs
Role | UUID |
---|---|
Anonyous | |
Authenticated | |
Provider | |
System Developer | |
HL7 Source UUIDs
Name | UUID |
---|---|
LOCAL | |
Location UUIDs
Name | UUID |
---|---|
Unknown Location | |
Patient Identifier UUIDs
Name | UUID |
---|---|
OpenMRS Identifier | |
Old Identification Number | |
Concept Class Identifier UUIDs
Name | UUID |
---|---|
Test | |
Procedure | |
Drug | |
Diagnosis | |
Finding | |
Anatomy | |
Question | |
LabSet | |
MedSet | |
ConvSet | |
Misc | |
Symptom | |
Symptom/Finding | |
Specimen | |
Misc Order | |
Relationship Type UUIDs
A is to B | B is to A | UUID |
---|---|---|
Doctor | Patient | |
Sibling | Sibling | |
Parent | Child | |
Aunt/Uncle | Niece/Nephew | |
Encounter Types UUIDs
Name | UUID |
---|---|
ADULTINITIAL | |
ADULTRETURN | |
PEDSINITIAL | |
PEDSRETURN | |
Person Attribute Types UUIDs
Name | UUID |
---|---|
Birthplace | |
Citizenship | |
Civil Status | |
Health Center | |
Health District | |
Mother's Name | |
Race | |
Field Types UUIDs
Name | UUID |
---|---|
Concept | |
Database element | |
Set of Concepts | |
Miscellaneous Set | |
Section | |
Tables without UUIDs
There are many tables without the uuid property because they are either helper tables, mapping tables, or just used for business logic by other libraries used within openmrs.
cohort_member
concept_complex (extends concept table and shares uuids with that)
concept_derived
concept_name_tag_map (1 to many mapping from tags to names)
liquibasechangelog (externally used by liquibase library)
liquibasechangeloglock (created by liquibase library)
location_tag_map
notification_alert_recipient
role_privilege
role_role
scheduler_task_config_property
patient (extends person table and shares uuids with that...might change for 1.6)
user (extends person table and shares uuids with that...might change for 1.6)
user_role
See Also
Online UUID Generator