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


DHIS2 is an open source health management information system that is currently being used in 47 countries. DHIS2 can be customized and extended by the creation of apps. A DHIS2 app is an extension of the DHIS2 interface and functionality, and consists of zipped Javascript, HTML and CSS files, in addition to a "manifest.webapp" file in its root folder which describes the app to the system. Apps communicate with instances of DHIS2 through the Web API, which is the component that makes it possible for external systems to access and manipulate data stored in the DHIS2 instance. DHIS2 has its own app store which enables its users to download and install apps in order to better support their needs.

One of the apps available in the DHIS2 app store is called the Tracker Capture app. This app enables enrollment of patients in health programs and registration of patient data for various stages in the program. In the MNCH (maternal, newborn, and child health)/PNC (prenatal care) program of the Tracker Capture app, patient measurements such as weight and blood pressure are registered with every visit throughout the pregnancy and after birth. Health workers using the Tracker Capture app have expressed their wish to be able to view earlier measurements while registering new ones, which is not possible in the current version of the Tracker Capture app.

Our project assignment is to modify the Tracker Capture app in order to enable the users to view measurements from previous visits while registering current measurements.

Group members and the divsion of tasks

Name E-mail
Ronja Knudtsen ronjark@ifi.uio.no
Helene Isaksen helenis@ifi.uio.no
Ida Lothe idalot@ifi.uio.no
Mari Iversen mariive@ifi.uio.no

We are a group of four students with Bachelor's degrees in interaction design. One of us have previously worked with HTML, JavaScript and CSS, but the rest of the group members are new to these languages. As such, we have chosen not to divide the tasks, but rather to collaborate together as a group. Because of this, the number of commits per person in the repository hosted on BitBucket is not an accurate representation of the division of the tasks nor the workload of each of the group members. All the work has been done by us together, as a group.

Summary of requirements

Our goal is to modify the current DHIS2 Tacker Capture web app, in order to make it possible for health workers to view measurements from the previous stage of the program, while registering current values. We will accomplish this by using a Postgres database filled with sample data, in order to alter the code to show results from previous visits. As only one of the members of the group has previously worked HTML and JavaScript, it is difficult for us to foresee all the details as relating to the requirements, progress and future milestones of the project.

Architecture and technology

  • Spring
  • Maven
  • Hibernate
  • JavaScript
  • Angular
  • HTML5
  • JSON
  • CSS


Milestone #1:

Deadline: 8th November

Task(s): Finished documenting features and architecture on Wiki + show understanding of DHIS2 web apps

Milestone #2:

Deadline: 22nd November

Task(s): Finished first bare-bone version in static HTML + made uploadable as DHIS2 web app

Milestone #3:

Deadline: 4th December

Task(s): Finished implementing web app.

Milestone #4:

Deadline: 11th December

Task(s): Final delivery

Milestone #5:

Deadline: Mid-December

Task(s): Presentation

Time schedule

Based on the milestones set by the course, we have worked towards the following goals for each stage of the process:

Milestone #1 - 8th November 2015:

  • Create Wiki-page
  • Present team members
  • Describe current development methodology and technology to be used
  • Document features and architecture
  • Create project repository
  • List tasks, and divide between members

Milestone #2 - 22nd November 2015:

  • Create first bare bone version - static HTML
  • Upload first app
  • Divide workload
  • Add updated screenshots and design
  • Discuss database design and used DHIS API

Milestone #3 - 4th December 2015:

  • Finish project
  • Document flow and screenshots
  • Document missing features and of what can be improved
  • Document how the work has been divided
  • Run/install the app if applicable


We spent an inordinate amount of time just locating the correct version of DHIS2 and getting it to work on each of the group members' respective computers. This took a lot more time than initially planned for, as we ran into a great deal of problems underways and we did not feel we got enough help and guidance during the group sessions, and we were not able to find help online to the specific error messages we got in Eclipse. Because of this, we got delayed in our project and are still a little bit behind schedule.

On Thursday the 19th of November, we finally reached the point in which all four group members had a working version of DHIS2 in Eclipse, as well as a Postgres database with sample data to work with. We have found the source code to be very uninformative, and we struggle to understand all the parts of the code as there is not a lot of comments or documentation. We have managed to locate the point in the code in which we are supposed to add the proposed functionality, but we are still struggling with finding the correct place in the code in which we might be able to extract data about previous visits. The work with this is still in progress.

Sunday 22nd of November, we finished a static HTML version of what we envision.

Up until December 4th we have worked with modifing the source code in order to implement the functionality that this assignment calls for. We have made changes in the file "defaultform.html" in order to display data from the previous visits of a patient enrolled in a program. The changes to the code are minimal, and most of the work went into trying to understand how the different parts of the system communicated and which parts of the system were responsible for what. This has entailed a lot of trying and failing in order to gain a better understanding of the system.

Future plans

As previously noted, only one of the group members have previously worked with HTML, and none of us have worked with AngularJS previously. Because of this, we find it difficult to make detailed plans for the future progress of the project.

Screenshots and screen flows


Documented learning during project

We have gained a better understanding of large and complex systems, and have learned the basics of HTML5 and JavaScript and AngularJS, and how AngularJS can be used as a bridge between the module and the view. Firstly we got a better understanding of the architecture of the tracker capture and the difference between stages and events, which was quite confusing. After that we could use the eventsByStage to get all the events to the stages to display data from previous and later visits.

Suggested improvements to APIs

All four of the group members are writing master theses regarding the usability graphical user interface of DHIS2. DHIS2 is a system that was made by a team consisting of only programmers, which is the reason why we as design students have been invited to explore the usability of the app and what may be done to improve this. The project has given us a better understanding of the system and we have also been able to actually use the system. Through the exploration of the system we have identified a number of things that we find confusing and which should be improved. For instance (...)

Link to repository


The repository is private. For read-access, send an e-mail to either of the group members.

Download link for DHIS2 app