Primary mentor : @maurya
Backup mentor : @k.joseph
Student : @choxmi
Primary objective of my project was to map reporting module report indicators with DHIS data elements. Following post is to showcase the work I completed during during my GSoC period.
List of report indicators - Added all report indicators of the reporting module report which is going to map with the DHIS report as a drop down list and a map button to each Data element of the report.
Map with SQL Cohort indicators - SQL Cohort reports can be mapped with the data elements and those queries can be customized directly from DHISReporting module.
Map with other indicators - Other report indicators also can be mapped with data elements but it will not allow to edit the query. Instead, it will disable the editing funtionality.
Generate mapped report - The report get generated with the result of mapped indicators. In case if the report contains the queries retrieved from the DHIS instance instead of mapping with any indicator, that particular data element will use that query to generate result.
Revert back to DHISQuery - This allows to revert back to the first query which retrieved from DHIS instance. If the query doesn't exist, it will revert back to the first sql query mapped with that data element.
Display mapping - Mapping will we displayed on mapping section, query editing section and will be displayed on report request page as well.
Adding to reporting module history - While a mapped DHISReport execute, reporting module report also get executed in order to get results. It creates a record in reporting module which will help to identify the time it generated and more details about the report.
Link report history to generated report - Added the link of the report history to the generated report.
Generate by preference - As described earlier, a report can be mapped with a SQL Cohort report. In that case, user can edit the SQL query as well. Then there will be two mappings at the same time. One is the SQLCohort mapping exactly same as the reporting module. And the other one is the edited sql query. In that case with this functionality, the user can render the report by giving priority to any section. If it renders with the priority to report module mappings, it will give the result of original SQLCohort or if the priority is sql, it will render the report with priority to sql and will give the result of edited sql query.
Delete report queries and remove mapping - This allows the user to delete sql queries directly from the sql editing interface. It will remove the mapping and the query both.
Handle un-mapped definitions - There are two possible cases to cause un-mapped definitions. Some data elements may not have sql queries at the time they get imported or user may have deleted the query. To avoid crashes, those un-mapped reports are now handled properly. All of them will be indicated in red and it won't allow to generate the report and will show those data elements. Those will be indicated clearly on mapping section as well.
Code contribution :
Report mapping : https://github.com/Choxmi/openmrs-module-dhisreport/tree/report-mapping
Other contributions:DRM-28 : https://github.com/Choxmi/openmrs-module-dhisreport/tree/DRM-28DRM-9 : https://github.com/Choxmi/openmrs-module-dhisreport/tree/DRM-09
created : AC-395 , AC-399 , REPORT-812 , REPORT-828
Documentation link : https://wiki.openmrs.org/display/docs/DHIS+Report+Module#DHISReportModule-3.4ReportMapping
Final demonstration of the project
Mid term evaluation demonstration
Experience @ OpenMRS :
This was the first time I contributed to an Open Source project. I never had an experience working with a community before. Simply this is where I started my contribution. Everything is well managed in this community. It is easy to find anything regarding the community and community members are very helpful.
When talking about my project, it was a great experience working with my mentors. Until the first evaluation, I was working on the back-end project and there was nothing to show at that time. But later on I started working on the UI part and completed the project. Specially @maurya guided me and always encouraged me to ask questions from the community. (Still I am bad at this )
It was a great experience to work with the OpenMRS during my GSoC project and I am planning to work with OpenMRS and other communities in the future as well.
To make this program better :
In my point of view, this program is being done in the best possible way. I just have only one suggestion. Actually this is based on my experience. Most of the students who participate for this program may not have a good understanding the community and the technology, rules and regulations while committing, etc. We all have mentors but obviously they cannot be online always. Best option we have is
Hi @dkayiwa . He is almost always online. But since he do lot of work, before asking a question from him as student we have to think twice because that may be just a simple question and it will bother him. Therefore most of the time students(myself ) doesn't like to ask questions. I suggest it's better if it's possible assign a separate person to answer students' question.
That's all about the project. Thanks...!