Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Project summary

This is a Google Summer of Code 2010 project.

Panel

There are multiple names for this project/module: advanced concept search, enhanced concept management, and concept search, but please use Advanced Concept Management.

Overview

The OpenMRS open-source medical records system is implemented with an EAV data model to store patient-level observations. This provides implementations with a great deal of flexibility with regard to the data that they are able to capture, without the need for extensive changes to the application or database. In OpenMRS terminology, this EAV namespace is known as the Concept Dictionary.

Currently, the only supplied interface for searching the Concept Dictionary this is a simple ajax search by Concept name. This can be seen here (login with admin/test). However, there are many use cases that would greatly benefit from enhanced searching. Looking at the available attributes on Concept by which you can search (http://svn.openmrs.org/openmrs/trunk/src/api/org/openmrs/Concept.java), there are a number of other fields that we could easily make available for searching - name, description, datatype, class, set membership, associated forms, etc.

Goals

One of the goals of this project is to create a new OpenMRS module which can be installed on an OpenMRS 1.6 installation, and which provides the ability to search the concept dictionary as laid out in the provided mockup.

Ideas

from Justin

This section covers the features that could be implemented during this project. We are waiting for feedback from the major stakeholders (Ada, Ellen, Mike).

...

  • Implement a new permission scheme that allows privileges to be based on concept classes, sets of concepts, data type, etc.
  • Allow admin to assign specific privileges to an individual user or group.
  • Allow user to manage only concepts that they have permission to view/edit based on more fine-grained permissions.
  • Allow user to a specific privilege to create/edit concepts of certain class

from Ellen

  • Should have an easy way to add concept mappings. Maybe a nice ui for adding concept mappings to groups of concepts? Especially for concepts added with a module.
  • Is it possible to set a global property to make mandatory concept mappings?
  • What about adding bunches of the same datatype concepts? So I want to add 10 new drugs – I don't want to keep having to select drug and N/A. It would be useful to have a memory for the last one, instead of defaulting to Test/Numeric.
  • Add a method to search for duplicate concepts. If a duplicate is found, select one to be retired AND change observations that used the retired one to use the remaining one (wink) ** Ada's comment added - I agree with Ellen on this one and it's similar to the ticket #1954.
  • It would be great to have a simple way to provide translations. So if I want to translate all concepts used by a form, there would a entry page with columns for multiple languages (ie. English and French) and concept names could be added in either column.

from Mike

I like everything that has been described above, so don't want to take away from that. I'll just add a bit more information off the top of my head that I think would be useful. The main use cases I am thinking of at a high level are:

...

  • Coded Question...
  • Numeric Lab Result...
  • Program Workflow...
  • Drug...
  • Advanced...
  • etc...

from Ada

So far, we have several thousands of concepts in AMPATH. In order for us to answer simple questions such as "HIV Positive", it includes more than 10 different criteria/concepts for the derived concept of "HIV Positive". Similarly, we also use those derived concepts/concepts to further define indicators. If there is some kind of utility to link the concept and derived concept as well as concept, derived concept, and indicator, that's be extremely helpful.

  • In the concept dictionary, indicate if such concept has been used for defining derived concepts and/or indicators.
  • In the concept dictionary, indicate if such concept has been used in any cohort, indicator, report. I understand that it will make the concept dictionary very crowded. So, maybe just a link to further drill down to the details. This way, it keeps the concept dictionary page a little cleaner.
  • When doing a concept search (on the name or synonyms), should provide an option of Advanced Search of the description.
  • When there is no map based on name, synonym, or description, provide option of suggested links of better descriptions for such new concept.
  • Now, the concept search requires at least three characters. We have a concept dictionary of "No" which has been used as coded answers in many concepts, especially we no longer use boolean datatype. We need to have option how to display concepts which have less than three characters.
  • Use the examples of "Yes" and "No" concepts ("Yes" is a concept and "No" is another concept). By phasing out Boolean, "Yes" and "No" concepts are now used as answers for more and more concepts. The current page has a lot list of "Yes" concept has been used as answers for tons of other concept questions. It has become very long. Need to have better way to handle cases like this.
  • On the current concept page, it lists on all the forms the concept has been used. Maybe we can have the option of displaying the published forms only and all published/unpublished forms.
  • When someone made changes in between creation (v1) and last revised (v12), it's hard to know what happened in between those 12 versions. Maybe to include the option to display different versions so that it's easier to review in case it needs to roll back to previous version.

Backlog

Concept Search

  • Allow user to perform basic concept search (by name)
  • Allow user to perform basic concept search (by data type)
  • Allow user to perform basic concept search (by concept class)
  • Add auto-complete widget to the fields (concept name, data type, concept class)
  • Allow user to sort the results (by name, data type, concept class)
  • Add filters to concept search results
    • Concepts which are not used (does not appear in obs table)
    • Concepts which are duplicates (how do we find duplicates)
    • Concepts which are incorrectly modeled (how do we find these)

Concept Editor

  • Make creating new concepts easier
  • Remember last datatype added
  • Save changes when a concept is changed

Milestones

These are the milestones till midterm (12-July)

Milestone 0

Milestone 1

31-May to 13-June

  • Allow user to search by concept datatype
  • Allow user to search by concept class
  • Copy comments from here to OpenMRS-wiki page
  • integrate new class ConceptSearch in basic search
  • integrate ConceptSearch in advanced Search

Milestone 2

14-June to 27-June

  • Allow user to sort the results
  • Add filters to concept search results
  • Display summary (1/2)

Milestone 3

28-June to 11-July

  • Add auto-complete widget to the field 'concept name'
  • Display summary (2/2)

Mockups