QuestMark is an open source framework for developing Android applications which are capable of generating graphical interfaces, after a synchronization process, based on DHIS2 data and metadata.

QuestMark is not an app but a framework to build an app.

QuestMark (QM) aims to provide a new Android platform to NGOs, research organisations, international consultants, and other data warehouse server developers. QM translates DHIS2 concepts into intuitive processes covering the following key functions: Data Collection (e.g. for Malaria Case Surveillance apps), Monitoring and Evaluation (e.g. for Quality Assessment Tools) and Logistics Management Information System (e.g. for per-clinic stock control). This is accomplished by relying on the combination of a modular system and a clean internal architecture to properly separate the responsibilities of the different pieces. QuestMark is an open source framework for developing Android applications, which are capable of generating graphical interfaces after a synchronization process, based on DHIS2 data and metadata.

EyeSeeTea started developing QuestMark back in 2015 in the context of the PSI HNQIS project. Afterwards, Save the Children Myanmar and the University of Oslo also contributed. There is a growing community of volunteers involved in the project.

Why QuestMark?

Non-experts can find it difficult to optimize and interact with DHIS2 servers. Furthermore, in many low and middle-income countries, field workers can be functionally hard of reading. Isolating users from this complexity is a crucial aspect in order to reach communities that may be able to provide very important and critical feedback.

Many organisations all over the world share common problems when collecting data and statistical analysis. Therefore, developing these applications in a flexible manner offers a great opportunity to reuse, improve and extend them. QuestMark makes data collection and quality assessment tools accessible for everyone and facilitates easy designing and implementation of new applications.

QM is open source, so developers from target countries can be part of the development.

QuestMark variants

A QuestMark Variant (QMV) is a custom configuration of the QM framework. A QMV is composed of modules which can implement some screens/layouts or just provide an specific functionality. The structure of a QMV is defined in a configuration file which allows integrating the desired modules and screens in the app. We have developed already four variants for different collaborators:

  • MTT Malaria Case Surveillance.  A version to monitor malaria cases for Angola.
  • Save the Children Malaria Case Surveillance for Myanmar. This QMV integrates other functionalities like a stock control module automatically calculated from the malaria cases and a treatment-aid system.
  • PSI Malaria Case Surveillance for Laos & Cambodia. PSI has implemented in Laos & Cambodia different versions of an image-driven application to report malaria cases in near real time.
  • PSI HNQIS. This quality assessment variant helps to efficiently allocate resources where and when they are needed most. PSI assesses the quality of care offered by his partners mainly in African countries but also in Asia and Latin America.
  • PATH EDS. PATH has implemented an Electronic Data System (EDS) based on DHIS 2 for Data Collection and Quality of Care Assessment

QuestMark modules

The currently available modules and screens are:

Core Modules:

All the metadata needed to build the app can be retrieved from a DHIS 2 instance, some plain text files populated on app start or can be downloaded from a central configuration file store. The interaction with DHIS 2 both for data submission and metadata sync is implemented by using an EyeSeeTea modified version of the University of Oslo software developer’s kit.

It provides authentication to a DHIS 2 server or any other backend.

Extension Modules:

Depending on a score and a time frame, this module generates charts and plots providing monitoring capabilities for M&E implementations.

Provides events scheduling. This is particularly useful for scheduling data collection, feedback provision or monitoring alerts. The organiser module can have 2 different layouts: planning and bulk operations.

This module collects the data that will turn into Data Values for DHIS 2. There are several possible data types. A hierarchical grouping score can also be configured to obtain a global score depending on the given answers. This module can have 2 different configurations: Question-driven data collector, generates a survey organised in different screens (tabs), and Image-driven data collector, structures the survey as a set of images that represent different questions and options. This last mode is widely used in scenarios where the user is not highly qualified. The DC module has a big complexity and comes with some configurable rules to add some extra logic like show/hide functionality, auto-answer depending on other questions values, screens workflow engine, etc. The module can have up to 3 different screens: survey creation, survey listing and data collection.

Once the survey is completed, the feedback module provides some information to the user depending on his answers. Feedback can be highly customizable by using score thresholds and different layouts such as listing, feedback and future actions.

Using a Google Drive storage, the library module can be used to download images/videos that will be later used in the app, either as a gallery or embedded in other modules. Multimedia library module can work without screens or can have a gallery layout.

Module for Logistics Management and Information System (LMIS) to monitor stock of drugs, rapid diagnostic tests…

Functionality to help decide the best treatment according to several variables.

In the longer term, we intend to expand the functionality of the platform to include new modules and features such as hybrid technologies modules (combining web and Android technologies), delay tolerant networks capabilities (allowing synchronization between mobile devices) or module installation on-the-fly (installing new plugins to your existing application).

Tech highlights

Years of Development
Lines of Code