Mkm

From mn/ifi/inf5750
Jump to: navigation, search

Project Details

LMIS light

Health systems has to ensure stocks of life saving commodities at all time, and many countries using DHIS2 are now requesting for an implementation of Logistics Management Information System(LMIS).

We will create a web app that can be used for sending supply orders to higher authorities through DHIS2. The user can fill in commodity name and the quantity they need for the specific commodity and click “Send”. The order will then be placed, and the higher authorities will get a notification of the request.

Group members

Araz Abishov (abishov@ifi.uio.no)

Marit Kilde Mjelva (marikmj@ifi.uio.no)

Mathias Rove Olaussen (mathiaro@ifi.uio.no)

Summary of requirements

Basic requirements:

  • Application should allow users to fill out commodity request forms and then send them to managers (privileged User Group). Managers at the same time, should be able to receive notifications through DHIS2 messages.
  • Automatic notifications for defined period. (Request for commodities should be sent automatically after certain period of time defined by user).

Strategy for work with meta-data and data:

  • Instead of creating custom forms in DHIS2, we can utilize DataSet model with custom attributes. By following this approach, we can also benefit from aggregation functionality of DHIS2.
  • In order to send notifications, we can utilize messaging functionality of Web API.

Tools:

- IDE: WebStorm.

- D2: Instead of calling Web API directly, we will be using Javascript client SDK for DHIS2.

- Javascript framework: React.js.

- HTML/CSS: Material UI library which is targeted for use with React.js (www.material-ui.com)

Time schedule

Milestone 1: 8th November

  • Document features and architecture on Wiki
  • Show understanding of DHIS2 web apps

Milestone 2: 22th November

  • First bare-bone version - static HTML
  • Uploadable as DHIS2 web app

Milestone 3: 4th December

  • Finished implementing web app

Milestone 4: 11th December

  • Final delivery

Dividing of tasks

  • Sketch an overall design of application [Marit, Mathias].
  • Decide the location of main application controls [Marit, Mathias].
  • Commit design mock-up to GitHub [Marit, Mathias].
  • Set up DHIS2 instance for development purposes [Araz].
  • Set up the skeleton project with pre-installed tools (NPM, React, Babel, Webpack, Material-UI) [Araz, Marit, Mathias].
  • Build basic React components for application [Araz].
  • Define application manifest and deploy application to DHIS2 instance [Araz].
  • Integrate D2 library. [Araz, Marit, Mathias].

Screenshots and screen flows

The screenshot of bare-bone HTML application.

Http://i.imgur.com/voAKJ92.png

Documented learning during project

  • Gained a better understanding of how to utilize Git
  • Learned how to use react javascript framework
  • Understanding the basics of really powerful JavaScript SDK (D2) for building DHIS2 apps on top of Web API.
  • Learning about Webpack (web application build tool).
  • Material design guidelines.
  • Using Babel to transpile ES6 sources to ES5 in order to support older versions of browsers.

Suggested improvements to API

  • User oriented API responses: It could be really nice if API was aware of user access rights. For example, if I am trying to access /api/organisationUnits, the response should contain only those organisation units to which current user is assigned.

Repository link

The whole project will be hosted on GitHub:

https://github.com/inf5750-mkm/LMISLight

Link to sample web app

As application under the hood uses CORS to communicate to server, it can be executed from anywhere.

You can try it even by running from GitHub:

https://htmlpreview.github.io/?https://github.com/inf5750-mkm/LMISLight/blob/master/build/index.html