This project is assigned to the OpenMRS 1.9 release milestone.  The following design model does *NOT* match the final execution.

Background

Our current concept mapping is fairly low-key and doesn't allow for looser mapping to other terminologies. Our current implementation assumes its almost a 1 to 1.  (Or a "this is that").  In the real world the mapping is less exact.  We need an extra attribute on the concept map to specify this.

We also need to specify the relationship between two mapped terms.  We have no way to do that in openmrs currently.  The goal of this would be to prevent users from having to create actual concepts for each mapped term but still be able to make use of the rich hierarchy in searching, etc.

Initial forum post by Andy

Followup discussion on dev list

Design

Notes on what may be unclear from the image:

UUID
Concept Source

Requirements

To be discussed:

Example

Diabetes Mellitus (SNOMED 73211009) is a parent of Diabetes Mellitus, Type 1 (SNOMED 46635009) in the SNOMED system.

Rows in openmrs:
concept_reference_source: one row. source_id=1, name="SNOMED Clinical Terms"
concept_reference_term: 2 rows
1st row: id=1, code=73211009, name=Diabetes Mellitus
2nd row: id=2, code=46635009, name=Diabetes Mellitus, Type 1
concept_reference_term_map: one row. term_a_id=1, term_b_id=2, a_is_to_b=99
concept_map_type: two rows. id=99, name=IS_A; id=1, name=SAME_AS
(could stop there, no need to map to openmrs concepts if you don't want to)
concept: concept_id=1000, name=Diabetes Mellitus
concept_reference_map: concept_id=1000, term_id=1, map_type=1

Assigned Developer

Unknown User (wyclif)

Testing the feature

http://buea.openmrs.org:8080/openmrs/

Mentors and Other Interested Parties

Ticket(s)