OpenLMIS Ideas Page

About OpenLMIS


OpenLMIS is an open source, cloud-based, electronic logistics management information system (LMIS) purpose-built to manage health commodity supply chains. The OpenLMIS initiative incorporates a community-focused approach to develop open source and customizable LMIS systems specifically designed for low-resource settings (read: spotty internet, low-grade infrastructure). “Managing health commodity supply chains” means the process of managing inventory in a depot or storeroom, placing orders, receiving and fulfilling orders, issuing stock and proof-of-delivery (POD), and reporting on inventory, consumption, and stock-on-hand levels. Visit openlmis.org for a high-level intro to the initiative. 

LMIS is a very common term in public health supply chains to describe the processes that developing countries use to manage their health commodities (malaria drugs, vaccines, HIV treatments, essential medicines, etc.). The majority of developing, or low-income countries (LICs), are still utilizing paper-based systems, or some combination of paper and electronic systems. These electronic systems can range from Excel or Access spreadsheets to web-based systems like OpenLMIS. 

LMIS systems are extremely important in helping ensure that critical, lifesaving health commodities are available when and where they are needed. Having the right data (quantities issued, consumed, and available) are key in making sure that stable vaccines get to children, malaria bed nets are delivered to pregnant women, or HIV treatment drugs make it to patients. 

OpenLMIS is currently deployed in Benin, Côte d’Ivoire, Guinea, Malawi, Mozambique, Tanzania, Zambia, and Zanzibar (see the Implementations page) where it manages logistics processes in health commodity supply chains for over 10,000 health facilities. The majority of funding for the initiative has been provided by the Bill and Melinda Gates Foundation, with additional funding provided by USAID.  

Where does OpenLMIS work? What does it do? Why does it matter? 

This 3 minute video is a great way to learn about what OpenLMIS does and why we care 

Contacting OpenLMIS

The best way to reach mentors and others working on OpenLMIS is through Slack. The OpenLMIS Community Slack is highly active, with multiple channels dedicated to varying aspects of software development, features, and assistance

Timezones

  • The core OpenLMIS team (Community Manager, Product Manager, Software Dev Manager, and Architect) are in Seattle, in the Pacific Standard Timezone (PST) UTC-8 
    • The majority of the GSoC Mentors are part of this core team, so please plan accordingly for the potential timezone difference with yours
  • Additional developers who are available to answer questions are in Poland, in the CET Timezone UTC+1

Slack / Chat

  • When joining Slack please introduce yourself, letting everyone know:
    • Your preferred name (and pronouns) 
    • Where you are based 
    • Your years of coding experience
    • Technologies you are familiar with 

  • When you join, you will automatically join the following channels:
    • #help
    • #build
    • #random
    • #general
    • #dev
    • #toolbox 

  • Once you've joined an admin will add you to the #gsoc channel
    • Please limit the majority of your questions and communication to this channel 
    • This is the best place to introduce yourself, ask questions, and share information
    • Mentors will be actively monitoring this channel and participating in conversations 

Getting Started with Software Development on OpenLMIS


Read this first! New Developer Onboarding Guide


Minimum Development Requirements

Java Spring Back-End APIs

To work on the Java back-end of OpenLMIS, you should have knowledge of Java and an interest in working with the Spring Framework and RESTful APIs. To test your Java skills, you could work on this exercise:http://exercism.io/exercises/java/scrabble-score/readme.

If you already have experience with Java Spring and REST, this exercise could test your understanding:https://devskiller.com/coding-tests/java-middle-developer-spring-frameworkjpa-restful-blog-application/(free trial registration is required to access the code).

If you haven't worked with Spring and RESTful APIs, then an interest in learning them will be important.

AngularJS Front-End Browser App

To work on the AngularJS front-end of OpenLMIS, you should have knowledge of Javascript and an interest in working with the AngularJS framework.

To check your JavaScript skills, try this exercise:http://exercism.io/exercises/javascript/diamond/readme.

If you haven't worked with AngularJS, consider this free online course at Codecademy:https://www.codecademy.com/learn/learn-angularjs

Some Experience Required

OpenLMIS uses a powerful and complex toolset that also includes Docker to run different parts of the API using micro-services. Contributing to OpenLMIS is a good fit for people who have experience with some of the tools mentioned here or who are dedicated to learning some powerful tools quickly. The OpenLMIS team can help point you to resources to get up to speed. But it will also take your dedication and interest in learning new and challenging things.

Contributing and further documentation

Read The Docs: http://docs.openlmis.org

Contribution guide: http://docs.openlmis.org/en/latest/contribute/index.html



Project Ideas


Option for small, easy contributions to get started

Look for any “QuickWin” ticket or an open Bug ticket in JIRA. These are usually small, achievable tickets that might be a good place to get started programming in OpenLMIS.


Projects are listed in ascending order from easy, medium, expert 


1. Enhance Detailed Google Analytics Report (easy) 

Outreachy Applicants Please Read

This project is not eligible for Outreachy applicants since it builds off proprietary software (Google Analytics). Please choose another project if you are participating in the Outreachy summer internship. 

  • Project description: Currently, OpenLMIS tracks user interactions and page views using Google Analytics — the next level of detail would be to track users in OpenLMIS based on their roles. This would allow system administrators, implementers, and developers insights into how OpenLMIS is actually being used, rather than relying on user feedback. Ideally, this system would expose OpenLMIS user roles as filters in Google Analytics. 
  • Skills: Javascript, (some) Google Analytics experience
  • Difficulty level: Easy
  • Related Readings/Links: TBD
  • Potential mentors: Brandon Bowersox-Johnson, OpenLMIS Software Developer Manager (VillageReach) 
    • Slack ID: @Brandon 

2. Develop customer feedback mechanism (easy) 

  • Project description: The OpenLMIS Community is dedicated to listening to the users we support — a simple tool we would like to build is a feedback form. The feedback form would then be used by the implementing Ministry of Health, and OpenLMIS developers, to prioritize on-going feature development.
  • Skills: Javascript, REST, Docker
  • Difficulty level: Easy
  • Related Readings/Links: TBD
  • Potential mentors: Brandon Bowersox-Johnson, OpenLMIS Software Developer Manager (VillageReach) 
    • Slack ID: @Brandon

3. Develop interoperability with Facility Registries FHIR/mCSD (easy to medium) 

  • Project description:  As part of OpenHIE Architecture, systems interoperate in part by following and participating in a Facility Registry.  In the new mCSD profile,  which is backed by the popular FHIR STU3 standard, OpenLMIS has a way to generate a partial facility registry as FHIR Locations.  To fully interoperate with numerous other global health systems, OpenLMIS would be extended to follow mCSD/FHIR facility registry, as well as publish a Facility Registry when participating in a federated system.
  • Skills: Java, Spring, REST, Docker
  • Difficulty level:  Easy to Medium
  • Related Readings/Links: TBD
  • Potential mentors: Josh Zamor, OpenLMIS Architect (VillageReach)
    • Slack ID: @joshzamor 

4. Achieve interoperability of Stock with Bahmni (OpenLMIS Stock Management to Odoo Inventory) (expert) 

  • Project description:  OpenLMIS handles issuing and receiving health commodity stock between facilities,  Bahmni is an all-in-one Open Source solution for managing Hospitals.  OpenLMIS and Bahmni share common transaction requirements, like needing to know what your current stock-on-hand, how to re-order new stock, and how to receive stock into inventory.  For hospitals running Bahmni in a municipality that manages their health commodity supply chain through OpenLMIS, we (OpenLMIS) would like to support these essential workflows so that OpenLMIS may supply hospitals running Bahmni. We would also like to make it so resupply requests made through Bahmni turn into OpenLMIS orders to be fulfilled using GS1 EDI standards.
  • Skills: Java, Spring, OAuth2, REST, GS1
  • Difficulty level: Expert
  • Related Readings/Links: TBD
  • Potential mentors: Josh Zamor (primary), OpenLMIS Architect (VillageReach), Darius Jazayeri (backup), Principal Architect Global Health (ThoughtWorks) 
    • Slack ID: @joshzamor, @djazayeri 

Google Summer of Code Applicants


Writing your GSoC Application

As a helpful starting place, use the Summer of Code Student Template from the DIAL Open Source Center to get started. 

We're really excited that you're interested in working on OpenLMIS! Please remember:

GSoC Application

You must list OpenLMIS in the title of your GSoC application as the sub-org you are interested in working on! 

You will submit your application to the umbrella organization (DIAL Open Source Center), but you MUST list OpenLMIS as the sub-org in the title of your application. 

OpenLMIS: the global initiative for powerful LMIS software