Most of the projects will make use of the DHIS2 Web API. The manual is here: 
Here is a nice intro to the API
There are other (sometimes not quite up-to-date) apps available in the DHIS2 appstore.
Please note the the manual refers to version 25 of DHIS2, in this way:
demo/api/25/resources.json. Since 25 is the latest version, you can also just remove the version and get the same result, i.e. demo/api/resources.json
When you explore the API, it is very useful to install plugins for formatting JSON such as JSONView(Chrome) or JSONView (Firefox). The Chrome app PostMan is nice to use to test requests without having to code, similar to cURL.
(Or: To get cURL on your Windows computer, use Git Bash.)
- 1 A Cleaning and Deduplication of Events
- 2 B Data Store manager app
- 3 C Messaging and integration with Facebook/Twitter
- 4 D Import, matching, visualizing
- 5 E Health Facility Registry
- 6 F Refactor/Expand Comparative/Trend Analysis App with charts and maps
- 7 G New app for standard aggregate data entry
A Cleaning and Deduplication of Events
The DHIS2 Tracker module allows people to collect individual level data. Material on the data model can be found here.
These come in two forms:
1) “Singleton” cases that are recorded only once without registration or follow-up (e.g. Outpatient data). DHIS2 calls this a single event.
2) Events linked to a person (the DHIS2 term is a Tracked Entity Instance - TEI) where you first look up a person (or register a new) who is enrolled in a health program and then follow the patient over a period, with each visit to the doctor recorded as an event, linked to the program (e.g. a TB patient).
However, patients often go to different clinics for the same thing, and a lot of data is collected offline, without the possibility to check if the patient is already in the system. Therefore, there is a need to A) identify duplicate people and B) reconcile the data belonging to the same person.
The task is to make a webapp which helps administrators to easily identify clear and potential duplicates (e.g. slight misspellings) and mark them for reconciliation (which the app could also assist in). A combination of automated and manual filtering/navigation. You can initially assume the number of persons and events is small enough to be handled in the client. For more advanced functionality, it is also interesting to link to server side procedures.
B Data Store manager app
Browse and update the values in the DHIS2 Data Store. User friendly presentation and navigation, and display/visualize statistics regarding the data, e.g. broken down by DHIS2 webapp (i.e. broken down by name space, assuming each app has a separate namespace).
You should first generate some data, which can for example be done using various Node.js libraries. See one example here.
- Nice browsing of JSON (pretty print, collapse/expand json)
- Write (POST) of key/values
- Update (PUT) of key/values
- Listing of namespaces, listing of keys under namespaces
- Follow DHIS layout style with material UI and use React
- Support for both system and user data store
- Handled encrypted values (ie. not display the values, but rather an explanation)
C Messaging and integration with Facebook/Twitter
Sharing favorites on Facebook / Twitter, and using fb / twitter api to post DHIS 2 Charts. Add support for sharing favorites of pivot tables, charts and maps to Facebook.
Existing maps (favorites) are accessible through the API, e.g. like this:
Useful information about sharing objects:
Lists are here:
Map favorites: https://play.dhis2.org/demo/api/maps.json
Chart favorites: https://play.dhis2.org/demo/api/charts.json
Report/Pivot table favorites: https://play.dhis2.org/demo/api/reportTables.json
Note: The best solution would be to implement these functionalities natively in DHIS, but that requires too much work for this course. Therefore, make it as a DHIS webapp.
D Import, matching, visualizing
- Import data (and metadata) from the Demographic and Health Survey external API or from the World Bank API: Mock-up The range of data available from the external API should first be displayed, then selected through parameters by the user, and imported to DHIS2. For that step to work, the metadata (country names and data elements) must already exist on the DHIS2 side, or created if missing. Finally, it would be nice to visualize the imported data (room for creativity here). You can be provided with a orgunit hierarchy of all the countries in the world, which also includes the country boundaries for mapping in the GIS module.
- Import events AND health facilities with coordinates linked to the organisational (orgunit) hierarchy using geography http://turfjs.org/ (earlier this text said events OR health facilities). For example, districts or chiefdoms are usually areas, and represented as (geojson) polygons in DHIS2. Together, one level or layer of such polygons will cover the whole country (e.g. Norwegian fylker or kommuner). This means that point coordinates representing an event (e.g. a case of malaria) or a health facility (e.g. a rural clinic) will fall within exactly one of the polygons and can thus be tied to that organisational unit. However, ideally an event point would rather be tied directly to a facility point - and it is mostly a sound assumption that it would be tied to the nearest facility.
E Health Facility Registry
App providing an interface to the health facilities in a country (e.g. the Sierra Leone or Trainingland demo databases). The add should make it possible to search and list organisation units and see these in a map, along with relevant details regarding each facility such as type, the district it belongs to etc.
Some inspiration can be found in the Kenya Master Health Facility List
Place names with coordinates for the whole world can be found using MapZen
Make a web app in order to manage organization unit easily.
The user should be able to:
- Search for an org. unit and get facility details, using live search
- Filter the search results, e.g. based orgunit groups or by selecting a polygon from a higher level (district or chiefdom)
- Present the information pertaining to the chosen facility in a drop-down menu beneath its name
- Locate on map
- Edit coordinates
- Edit org. unit details. This can be extended by linking to a particular dataset called Infrastructural Indicators, which can be found under System Settings.
- Add a new facility by clicking on the map
F Refactor/Expand Comparative/Trend Analysis App with charts and maps
The purpose of the Comparative/Trend app is to enable visual comparisons of charts and maps by placing them side-by-side or in a grid. For maps, the purpose is to show the same basic map for different time periods, so that changes over time become visible. An example could be a map showing measles incidence by district, week by week. For charts, the purpose is to show the same chart from multiple organisation units. An example could be a line chart showing the trend in a disease over time, district by district. The maps and charts could either be based on either existing chart or map favourites, or made ad-hoc based on selecting an indicator. However, the purpose is not to re-create the full Data Visualizer or GIS module of DHIS. An app was developed some years ago, available here.
G New app for standard aggregate data entry
The DHIS2 module for entering aggregate (not individual) data is old and not using the new Web API.
We need a new version which is also clever, so that when there is only 1 option, it is automatically selected, it displays option sets and preferably even allows for tabular data entry (with orgunits or data elements).