Members
Daniel Chaibi
Eivind Berg Johannessen
Eirik Molnes
Division of labour
The project group have mainly focused on three aspects throughout the project. Eirik has mainly been looking into the KIDS sourcecode, and has been testing the import-functionality. Daniel's special field has been the IXF fileformat. He has been trying to dissect it and find out what and how the functionality of IXF can help us import data from DHIS into KIDS. Eivind has mainly been looking at the DHIS code to implement an IXF exporter.
Task
Key Indicator Data System
(KIDS) is a Geographic Information System
(GIS). KIDS is an opensource solution developed using Java
, Java Servlets
and JSP
running on a Tomcat
server. It is developed by the World Agriculture Information Centre
(WAICENT) of the Food and Agriculture Organization
(FAO) of the United Nations
(UN).
To use the data from DHIS in KIDS, the user have to go through several steps to import the data into KIDS which is often hard to understand for a person who are not very into georaphical indicator systems.
The goal of this project is to get data elements and indicators from DHIS 2.0 into KIDS in an easy and userfriendly way.
Specific goals
The project group started out with the following goal:
KIDS is a Geographic Information System. The goal of the project is to get values from DHIS 2.0 to KIDS, hopefully by getting KIDS to use the DHIS 2.0 API to do bulk updates or continuous fetching.
After looking into the KIDS sourcecode and looking at several different approaches on how to solve the data exchange between DHIS and KIDS, the best soulution seems to be using the IXF fileformat.
Enlightened by the information we aquired during the project, we redefined our primary goal:
The goal of the project is to get values from DHIS 2.0 to KIDS by using the IXF fileformat. To achieve this, there was need to explore the IXF fileformat, understand how it works, and try to implement a prototype for an IXF-exporter in DHIS 2.0.
Description of the project work
The project group started out by having a large discussion on what would be the best approach to get the data from DHIS into KIDS. The main focus was to make the solution as easy as possible for the people who are going to use KIDS with DHIS 2.0 data. Several different solutions have been explored:
There are several options on how to get DHIS data into KIDS. Some requires somewhat tighter integration than others:
- Using KIDS as a separate program - import datasets
- Integrate KIDS as a whole
- Use KIDS' import from database feature
- Import extension for fetching data from DHIS
A discussion about the different solutions can be found here. Based on this discussion and input from the KIDS development team, we decided to move forward on the 1st option; more specific:
- Extend DHIS export capabilities to support the IXF
format.
- Look into the IXF fileformat to find out more about what we need to use in the fileformat, and find out if it is enough information in the DHIS data to use the IXF fileformat.
This option requires IXF support in KIDS, which was fully supported as of version 2.4. You may get it to work in earlier versions as well. You can find a tutorial on how to import IXF files into KIDS here.
The project group have been trying to explore how the IXF fileformat work. An exploration of the IXF fileformat can be found here.
What the project group achieved
To test the import function in KIDS, we used some sample map data provided by Knut Staring, and imported a manual-made IXF file. A tutorial on how to do this, can be found here.
We have achieved to strip the IXF format down to a minimum of what is needed to import datasets into KIDS. (Please see the attached file of the Import tutorial for details)
We found the IXF format to be the best solution for getting DHIS 2.0 data into KIDS. We have added a prototype IXF exporter in DHIS, currently in sandbox. The prototype adds an option to the dropdown list of available exporters. The exported .cris-file can easially be imported into KIDS using the import from file function. (KIDS need the IXF files in a .cris extention to accept them) We have done a small test on the IXF-exporter in DHIS 2.0 and imported the file into KIDS. Everything seems ok at the moment.
Future work
The prototype is indeed a prototype, and should be refined. There are several improvements to be made;
- Adding support for different timeperiod types in a general manner, e.g. IXF format supports timeperiod types to be Monthly, Yearly etc. This should be reflected in the resulting IXF file. Observe that IXF requires these types to be, for instance, Month and not Monthly; some translation need to be done. For time being, a hardcoded value Month is set. KIDS does not seem to care, as it gives it the label Year regardless of what the specified timeperiod type is.
- The prototype has not been thoroughly tested using large data sets. For each DataValue exported, we need to collect DataElements, OrganisationUnits etc. due to the nature of the IXF format. This approach may serve as a memory hog when working on large data sets.
- Do a code clean up. Possibly by adding more wrappers and converters to get a more consistent and understandable design.
- Adding more information to the resulting IXF file. The project group have only worked on a minimal sub-set of the data needed. One may add comments, descriptions and other meta-data. More on this in IXF.
- Intercept KIDS' import capabilities. A huge improvement would be to create a data exchange channel between DHIS and KIDS using Spring RMI or similar. The original plan of this project group was to provide such functionality, but intercepting KIDS' way of working seemed hard. But with the IXF format in place at the DHIS side, this might be easier.
- Add import possibility. Allow users to import their IXF data into DHIS?