Wiki Spaces

Documentation
Projects
Resources

Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack

Projects

Page tree

Versions Compared

Key

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

...

Primary MentorElliott Williams
Backup MentorTBD
Assigned toTBD

[Objectives & ideas will almost definitely change this week as I meet with OpenHIE shortly]

Abstract

Elliott built the OpenMRS ID Dashboard as a student in 2011. The Dashboard is a lightweight web application (~4000 SLOC) that facilitates user-account creation and profile management in the OpenMRS Community. While it has served its purpose well, it's currently hard-coded to provide all functionality through its static user interface. As the OpenMRS community faces a site redesign, and as other organizations such as OpenHIE want to use the Dashboard for their profile management, the dashboard should allow more flexibility for how its UI and information are presented. Additionally, the Dashboard needs to communicate with other applications through a web services (REST) interface, initially with HingX. We're looking to design better ways for users to "create a profile" that allows them to tie lots of information to their OpenMRS ID—such as who they are, what their needs are, what they're interested in. We will be evolving the OpenMRS ID system to be capable of holding this kind of information.

Currently, the OpenMRS ID's data model is built around an LDAP user object (we use OpenLDAP under the hood to store the basic user profile data). Since we want to store much more versatile data than LDAP allows, the the Dashboard will need to be decoupled from its LDAP core, and a new data model that can store and manipulate all kinds of data on the user will be implemented. Building and implementing this new data model is the first objective of the project.

OpenMRS ID also needs better connectivity with other services that hold OpenMRS contributor data. We want to allow users to get data into their OpenMRS Profile from other networks—GitHub, Twitter, etc. We also need to interact with the data outside of the Dashboard—from other applications like Desk.com or HingX. To handle this, a REST interface should be implemented that has full access to the new data model.

 

The Dashboard is written in Node.js.  

...

Knowledge of server-side JavaScript, web services (REST and OAuth), and LDAP user-management is recommended.

Objectives

  • Re-write OpenMRS ID's data model to a generic data store, probably based on MongoDB. This data model will need to sync with the current OpenLDAP server or needs to implement an LDAP protocol server using ldapjs.
  • Build a REST and OAuth-backed interface to the Dashboard's profile data on-par with all current functionality in the UI
  • Make the current interface and its page templates more customizable and CMS-like

Extra Credit

  • Develop a way to aggregate more complex data in the user profile, such as Github committer info, JIRA history, wiki history, or Answers contributionsnew data model. 
  • Improve the signup and profile-editing interface at https://id.openmrs.org with some of the new OpenMRS ID functionality.

Extra Credit

  • Use the REST API you built to import data from OpenMRS ID to Desk.com, our CRM/Helpdesk service.

Design Ideas

  • TBA

Resources