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

an Group members

Alexander Korpusov (oleksako)

Dmitry Filosofov (dmitryf)

Saskia Brinkmann (saskiabr) - left the group due to personal issues

Product descriptions requirements


Master Facility List

Assignment description

This assignment involves making a DHIS2 Web App for searching, browsing and proposing changes to organisation units and related resources such as organisation units groups.


  • Searching through organisation units.
  • Displaying attributes of organisation units.
  • Administrator should be able to configure which data elements should be shown to the users.
  • A possibility for users to propose changes for the organisation units and it's structure. The list with the changes should support filtering to show only proposals relevant for the particular administrator.


Core components

  • react - main library providing all of the necessary basic functionality for developing UI application.
  • react-router-dom - allows to make dynamic routing
  • fuse.js - used to provide fuzzy search functionality
  • leaflet - used to render maps
  • react-bootstrap - bootstrap components for react, provides easy way to write UI using bootstrap without the need to write out pure html

Architectural consideration

The original considerations were to keep the application as simple as possible and for these reasons we opted not to use reducers such as Redux. However, the size of the project is probably on the limit on where one can avoid using reducers. It is our experience from completing this assignment, that web-applications of similar size would benefit from moving all the control on data to a global reducers.

Design/User Interface

User Interface.png
User interface of the application

The user interface of the application has three main parts - search area, information area and map area. In the information area a user can choose an organization unit either from a tree list, or by using search (which support fuzzy searching to avoid simple misspellings). Information area is where all the information about organizations unit is shown. A user has an opportunity to keep three different organization units open simultaneously in the appropriate tabs. The map area is situated on the right side of the application. If an organization unit has the attributte with coordinates, it will be shown as a point or a region in the map area.

Administrators have an opportunity to to add specific Data Elements to be shown in the information area. Access to the set-up page is possible through the Manage panel, where administrator should select the data elements to show. The period in the current version is set to the current year, although the possibly to mark the period is reserved in the data structure of the app. The information on Data Elements that administrators decided to show for users is stored in the DHIS2 system by using dataStore api. All changes are submitted to /ads_data_elements/<org_id> and consist of a single document with a list of data element id's that must be shown to the user, this list is used on the main page when deciding which data elements should be displayed to the user.


Ween number Tasks
Week 43
  • Set-up wiki page
  • Choose main development frameworks and technologies
  • Learn React and DHIS2 api
Week 44
  • Make a basic web-app able to fetch from DHIS2 the organization units list. Display the list as well as the detailed info about a chosen orgunit
  • Decide on details of User Interface (UI) and start implementing it
Week 45
  • Implement UI
  • Search and filtering features
  • Add the option for users to configure which attributes of orgunits should be shown
  • Add Google maps
Week 46
  • Add the option to propose changes for organization units
  • Improve searching options
Week 47
  • Fix all the bugs
  • Make improvementswhere needed


We will be using open source products to develop our app, and our product itself will be open sources (MIT licensed).

React is MIT licensed.[1]

React Bootstrap is MIT licensed. [2]

Fuse has Apache 2.0 license [3]

React Router has MIT license [4]

Leaflet has BSD 2-clause "Simplified" License [5] which is very similar to MIT with only slight alterations.

Division of labour

All the team members will contribute equally to the design and development of the application. Alexander has put an extra effort into the parts with the search/tre area and information area, while Dmitry into the maps area and administrative options.

Link to project repository