OpenMRS-DHIS2-SDMX-HD integration Project Plan
Project Details
This page is my proposal on what this project is and how it can be taken forward and what are it's challenges.
What is this project's objective?
Creating a renderer for the report module for mapping report output elements to the exchange format(SDMX-HD/DHIS2).
How i propose to develop it?project plan?
(Preferably the project would be focusing on cohort Indicator Data set reports to convert to SDMX-HD/DHIS2 in the beginning.)
Week | Activities | Deliverables |
---|---|---|
0-3 | 1.Investigate(formats of sdmx-hd/dhis2) 2.Familiarize(Reporting module and messaging module) | UI Mockups,Finalized Project schedule,Exact workflow of how the integration between the reporting module and messaging module can be achieved. |
4-6 | User Interface | The user interface on the reporting module-selection of the format and the final display of the message. |
7-9 | SDMX-HD/DHIS2 integration | The code of the renderer.(java classes providing the functionality of transforming the data) |
10-11 | Buffer time for Cleaning and Testing | The code must be reviewed and test cases must be provided. |
12 | Documentation and tutorials | Written documentation on project with project details and technical details and how to use it, Video tutorial on how to use it. |
Objectives of the project
1. Locate the DHIS2 instance
2. Get a template of all datasets and keep it in the file system
3. For a particular dataset, create a return template
4. Select a report
5. Display all the columns in the report and all the fields in the template
6. Allow the user to map from one to the other
7. Save the mapping in the return template
8.After the report is run, there will be a new return template with substituted values.The new return template is specific to the parameter values chosen when the report was run.This report can be sent to the DHIS2 instance corresponding to the dataset using the parameters that we keep on each DHIS2 installation
What to expect at the end of the project?
The following functionality can be expected at the end of the project :
Step 1 : The user selects the output type to be SDMX/DHIS2+destination(where the message is to be sent) in the reporting module's interface.(the administrator would already have set up any transmission parameters on an administration page).
Step 2 : The report's data is converted to the SDMX/DHIS2 and is forwarded to the messaging module.
Step 3 : The message is sent to the destination address specified by the user through the messaging module. The destination address might be an email or a destination where the user can receive such aggregate data from multiple websites.
Step 4 : The log of what happened is displayed i.e. as the message is sent through the messaging module it would be displayed to the user that the message has been successfully sent.
Doubts and Resolutions
The above content of the page will get updated based on the clarifications, so the doubts might seem irrelevant.
No. | Date | Doubt | Resolution | Date | Resolved by |
---|---|---|---|---|---|
1 | May 9,2013 | Is my flow of understanding correct?(on taking data from reports and converting it into sdmx xml and displaying it to the user) | I was thinking that we would have a report renderer; from the user's point of view, it would be just like running a report and choosing the output type as SDMX/DHIS2+destination; the administrator would already have set up any transmission parameters on an administration page (see the messaging module). The period indicator report might be a good type of report, but maybe not the only type; it's probably a good place to start, but keep type-specific code isolated maybe in a helper class which implements an interface/extends a base class with a generic representing the type. | May 10,2013 | Roger Friedman |
2 | May 9,2013 | Is this only for taking aggregate data as these are finally viewed as indicators? | Probably we will deliver numerators and denominators separately, but some indicators will be counts only (not a ratio). | May 10,2013 | Roger Friedman |
3 | May 9,2013 | In step 1 do we provide the option to (select the aggregate data for multiple questions or single question) per conversion. | Per 1, I would prefer to keep 1 report definition = 1 message, but if it is not easy to duplicate parts of report definitions, then it might be necessary to let users select those outputs to be packaged into the message. | May 10,2013 | Roger Friedman |
4 | May 9,2013 | After the conversion the xml must be displayed to the user?(y/n) | No, but it might be nice to have an xslt to allow them to see it in a simple format. | May 10,2013 | Roger Friedman |
5 | May 9,2013 | The xslt structure would remain constant or this must change on user selection?(this doubt is related to doubt 4). | I think the xslt structure would remain constant unless the message definitions changed. | May 10,2013 | Roger Friedman |
6 | May 9,2013 | Is the xslt the only integration between DHIS2 and this xml or do we provide some other kind of integration? | I think we should provide a message transport service like the messaging module and/or something special for MIRTH | May 10,2013 | Roger Friedman |
7 | May 9,2013 | I suppose the user interface consists of providing an option for selection of question and display of xml in the reporting module itself? or should it be different? | I think what the admin interface needs is a way to associate reports with messaging parameters and dataset contents with indicator definitions. I think in most cases there will be a message template which includes the indicator IDs; the association with dataset contents will be managed through the interface; you may need the ability to start with an empty template and build it as you go. | May 10,2013 | Roger Friedman |
8 | May 30,2013 | What can we take down as the projects objectives or the workflow could be? | -Extending reporting module's tables to persist the requested report's data for this project. -Understanding the present SDMX integration project and implementing it to the present reporting module.(It is the required use case as per the present requirements) -Designing the project's plan based on exact requirement of how the exact integration between the reporting and SDMX-HD(presently it is of creating a UI in reporting module to create the report int sdmx format and when the user select that specific option the message would be generated and would be forwarded using the messaging module). -Possibly integrating the reporting module's rest services project(Currently a GSOC project) with this module. -Designing the Module's exact targets. -Integration between DHIS2 and this module must be discussed | May 30,2013 | Roger Friedman |
9 | June 6,2013 | This is also a continuation to the previous doubt but this was discussed with the project champions. | 1.export of dhis2 report 4.show this template 5.ready to run-users can run the report 6.report would sent using the messaging module./sent them by email/sent into a queue to be sent to dhis2 | June 6,2013 | Roger Friedman, Bob Jolliffe,Saptarshi Purkayastha and James M. Kariuki |
10 | June 6,2013 | Todo list for me to get started on the project | 1. Use the DHIS2 webAPI to download the dataset definition (template) | June 6,2013 | Saptarshi Purkayastha and Roger Friedman |
11 | June 7,2013 | project beginners info on hisp india module and integration with dhis2 | 1. The hisp module assumes that the DHIS2 instance is accessible to the OpenMRS instance. I think that we still have to support a distributed (i.e. intermittent synchronization) model. Perhaps the easiest way to do this would be to have a DHIS2 instance co-located on the OpenMRS server; it could accept DHIS2 metadata updates from the central server. That might not work if there were multiple DHIS2-based systems in the country, e.g. a routine health data system run by the Ministry of Health and a TB indicator system run by an NGO. Alternatively, we could process the metadata export ourselves, perhaps using code from DHIS2, although I don't like that tight coupling. | June 7,2013 | Roger Friedman and supported by Bob Jolliffe with suggestions. |
12 | June 11,2013 | First Testing Use case for trying out the functionality | 1. OpenMRS large dataset is basis | June 11,2013 | Roger Friedman |
13 | June 11,2013 | Tips for starting the module | Exploring Reporting module with test data and period indicator reports. | June 11,2013 | Roger Friedman |
14 | June 20,2013 | What exactly are disaggregations | Disaggregations are segregation of the report data obtained into a more detailed data parts having information about them. Meaning if a data such as current who stage is generated, separating the data obtained based on age groups can be called disaggregation. | June 20,2013 | Roger Friedman |
15 | June 20,2013 | Suggestion by Roger to start coding | Create a basic module using the maven archetype which can take in report definition. | June 20,2013 | Roger Friedman |
16 | June 20,2013 | i am facing difficulties in creating the disaggregations in the report | That's an area we need to investigate and discover how we need to acheive that. | June 20,2013 | Roger Friedman |
17 | June 27,2013 | Is the following flow fine or do I need to change it? 1>> I'm trying to run the definitions that are existing in the database(the ones created as cohort queries) 2>> I'll work on giving controls to take in definitions from the user/which can be added from a function. 3>> Then i plan to take in the DHIS2 xml and map it to our data elements. 4>> Run the Reports and Generate the SDMX-HD message. | Rather than giving an option or writing a function it's better to use the preexisting api. In the first step also instead of using the services try to use the reporting api directly | June 27,2013 | Roger Friedman |
18 | June 27,2013 | In the first step mentioned above is it fine if i use the services such as the ones used in the query parameter class? to obtain the | It's better if in the beginning we take the test data and analyze that and provide the functionality from the testing procedure and later on we can add more complexities based on the requirement. | June 27,2013 | Roger Friedman |