Monday 16 September 2013

Pencils Down Week

Hi Everyone :-)

This might be the last blog post regarding the work done in GSOC 2013 , Not that the work is going to stop :-)

First of all sorry for the delay of the blog post, It has been a hectic week! And well to speak officially my coding must stop today! except for some scrubbing and small changes.

Well, it had been a great summer for me , for i have learned things that i wouldn't have if i had been working in a corporate office. I can openly declare that what i have learned this summer is more than what i have learned my whole undergrad life. And i must thank all of this to my mentor Roger Friedman.

You might wonder what i have gained so much in these three months that i consider more than my engineering study! I agree in theory what we learn in college cant be compensated but, what I've learned here in these three months is more of a practical learning which i consider more important. So below is the list of things I've learned and gained this summer.

-->Spring 3.0
-->Hiberenate
-->Maven
-->Openmrs Architecture
-->Jquery
-->Portlets
-->Git
-->Coding Conventions
-->Information Exchange Standards in the Health Domain(SDMX-HD)
-->Internationalization
-->Presentation skills
-->OpenMRS module structure
-->Importance of right tools in the health care domain(DHIS)
-->Working towards a Solution
-->Importance of open source contribution

Finally, but the most important of all :

-->Roger (My Mentor,I will be grateful to this person my whole life)
-->A Community,Special mention : Daniel Kayiwa, Jeremy Kieper, Mike Seaton(they helped me with the problems I've faced this summer and helped me code better).

Some of you might wonder why do i mention things other than software, well these things matter and will play a major part in a person's life, in my opinion the things that i learned other than software are the ones that will be shaping my life. How? I would be doing my masters next fall and it would most likely be in Health Domain or in Computer Science with a health domain side option :-) Thank you OpenMRS and Thank you Roger. I will be contributing to the OpenMRS community in whatever way possible and encouraging my fellow mates to participate in OpenMRS.

Now, Getting back to the work aspect of the blog:

As far as the calls with Roger, well, we'd been having chats and calls daily and there was a day when we had to work 10 hours straight!

And the work completed this week :

1)Location Mapping Page

2) Results History Page

3) Run Reports Page

4) Report Parameters Mapping Portlet

5)Solved Git conflicts that had been hindering the project's progress

6)OpenmrsDhisObject


The Project is not yet release ready. But we are planning to release it in a couple of weeks.

It been an evolving project from the start when we only knew the what was needed -- a way to integrate Dhis and OpenMRS in a way that would be the simplest to the user and would require his minimal involvement. Just to indicate how evolving it has been, it was envisioned to do this project SDMX-HD was a main part of it, i.e the way in which the data would be exchanged , but later through investigation it was found that the main focus must be on making it simpler for the user rather than to focus on the exchange format.

You might ask how user friendly is this compared to the other modules that exist because there are other modules that does the integration.I'll list out the prominent features of this module:

All the user needs to know in the OpenMRS environment to be able to use this module

1.Creating Cohorts
2.Mapping the Cohorts(Selecting the appropriate cohort from a drop down for a Data Element* and Category Option*)(* being DHIS Terminology)
3.Running the Report(Clicking on the play and Entering the Parameters for the Report like start date and location)

How is Our module different in terms of functionality :
 (1) Support for multiple servers
 (2) Downloading of metadata(of the respective server)
 (3) Using cohorts rather than SQL queries as what user has to create
 (4) Completely compatible with Reporting Module (OpenMRS)

Thank you for following my post :-)

Friday 6 September 2013

31st August to 6th September

Calls With Roger:

Had a discussion with Roger daily mainly regarding the Design of Reporting Part and integration problem that was interrupting the work after the integration of code. And others were status update. Worked together to understand the Reporting module's behavior.

Work Done this Week :

1) Reverted the code back to the previous version to resolve the integration issues, and Integrated parts of code necessary.

2) Resolved the wiring issues and cleaned up the xmls and converted everything to be according to the spring version 3.0

3) Designed the Reporting Integration.

4)Started work on the resultHistory.jsp .

5)Solved the UI issues mentioned in the last week's blog.


Friday 30 August 2013

23rd to 30th August update

Calls With Roger:

Had many calls and chats with Roger , mainly related to two particular issues. One regarding the Reporting module's CohortDefinitionService, and the other being the portlet model and it's behavior. Other calls were status update. Today's call was about the integration of Roger's code.

Work done this week:

1) Internationalization
2)Created new Report page
3) Created the new portlet model for the options, dataElements and Report Templates page.
4)Worked on an issue of Reporting module for it's integration into our module
5) Integrated Roger's code , related to jaxb integration.

Main Work Remaining :

1)Integration of the Reporting module's creating reports and extracting the data.
2)Secondly the total workflow of jaxb integration
3)Some minor Ui Changes and functionality changes

Friday 23 August 2013

Week 16th to 23rd August

This week I've been completing the refactoring of the code for the java classes and the view pages. And some methods have been added. The new methods added needed some lazy loading problem handling that required some time.

Calls with Roger:
 Had couple of calls with Roger regarding the hibernate exceptions and lazy loading problems.
Discussed about new page models and further goals of the project.

Work done this week:
1)Code refactoring
2)Setup of database with the new data model and data.
2)New methods for some pages.
3)New page models according to the call with Roger.
4) Modal windows have been added instead of in page editing tables.

Thursday 15 August 2013

August 12th to 16th Update

As the earlier blog was written on the 12th of August, it explains the state till that day. This is the continuation of that blog.

This week I've looked at reporting api services that will be useful for me to incorporate in this module. And started to refactor the whole project as we know it.  The tables have been changed and many new tables have been added to better accommodate the DHIS data and easily retrieve and utilize them. The new .hbm.xml files , dao files, service files and hibernate files have been created. The forms are in progress and 3 forms are left out until they reach the state before refactoring.

The call with Roger was held yesterday. It was a status update call. Roger had been looking at jaxb connecters and the classes that would be useful for the data transfer. There were some github problems where the code checking was not possible. Anyway, as this was only  status call and there wasn't much to review until we move forward from the point where refactoring was started, Roger said that for further interaction it would be best to have a call after some extra work has been started.

This coming week, the goal is to complete the refactoring part, add the reporting api methods, get the location and run reports forms to a viewable state. Start work on Internationalization and learn the information given by Roger on Jaxb and probably start work on data exchange.

Monday 12 August 2013

Code Review Week

Hi, Sorry for the late blog, it had been a very busy week!

This was the code review week whenre we had setup a cal with James Kariuki , Bob, Jolliffe,Saptarshi Purkayastha. Due to some call clash issues and connectivity issues Bob and Saptarshi could not join the call. But we had their review through mail where they mentioned that they were happy with the direction how the project has been progressing. So we had the call with James and had gotten positive reviews about how the project handled the diasaggregation issues of the data being exchanged.

The week that had gone by I've been working on completing the pages completely and creating the workable formats and created two new dummy pages.So, every page needed for the project has been created.

I had many calls with Roger, the previous week where we discussed like what changes we would like to have and how.

This week , i have a lot of refactoring to do as a new table format has been proposed by Roger which will solve some of the issues and will be a better model.There will be changes in the whole structure of the project.
Then there are some other tasks of fully making them working as in presenting them to the end user, that needs to be completed this week.

Sunday 4 August 2013

Midterm Week!!

First of all, i am very very happy to have cleared the mid term and congratulations to everyone who passed it :).This week had been pretty busy!

The coming few weeks would be busy as well :)

There were many calls with Roger, lot of them involving design of the pages and the tables. One even was the review of my presentation. It is all thanks to Roger that i didn't goof up in my presentation in the mid term!. He meticulously went through my presentation and pointed out the mistakes i was making and helped me resolve them.

I've been working on getting the pages ready and was successful to some extent :).  Almost all the pages are done in basic working state excepting one.  The database is also almost final, there might be some minor changes but the database is also in working state.

So the priority #1 for the coming week would be getting the full functionality of all pages ready! after that i would have to research on the consummation of the data from the Dhis2 server.

Saludos, Maurya :)

Friday 26 July 2013

Calls with Roger on week July 20th-July 26th

This has been the most productive week of the project so far, as earlier expressed the goals were set down perfectly and we've started working to achieve them. This week I've had multiple calls with Roger, each was very informative , some of them were design calls and some of them were status calls but Roger was always making the path clearer.
The project's detailed workflow is updated here including the data model of the project : https://wiki.openmrs.org/display/projects/Detailed+Description+of+Project+Workflow

And the work completed so far is that , the database has been created , and the respective POJO's ,DAO,hbm.xml ,Hibernate files have been created , admin pages had been added with basic structure.

The code will be constantly updating in this git Repository : https://github.com/maurya/openmrs-module-integration

By the midterm presentation we want to complete the pages and the service layer to give the functionality to the pages.

Saturday 20 July 2013

Previous week calls with Roger

First of all, sorry for the delay in the post, was caught up in work.

I have had the wrong understanding of some major part of the project and was thinking in those lines until Roger, pointed it out to me what were the exact goals. We talked clearly about what is required of the project and created some definite goals and created tickets for them in the SDMX jira.

 Further according to the Schedule, i have to complete the front end of the project. So, working on it and simultaneously completing part of the functionality.

Thursday 11 July 2013

11th,July Call with Roger

More of a Status call of what i have been doing and on what i should be doing ahead.

What I have been doing :


-- Renderer design for our module the ui design.

--Code delving into the amrs reporting module and 0.7.8-SNAPSHOT reporting version setup with database.

--How reports are created, run, cohort queries, viewed, dimensions,indicators.


Tasks for the coming Week :


--Write code to create reports and run them to analyze the data consummation process through the DHIS template.

--Create a document for the substitution renderer

--Mock ups for the UI mapping page

--Work with different datasets in Reporting module.

Thursday 4 July 2013

4th,July - call with Roger

Whew!! Today's call with Roger was really awesome!!
Roger, is like the coolest person I've ever worked with, seriously, how many people work on a national holiday? Let alone the work you 'have' to do, Roger sat through his whole holiday morning with me to help me out in making me familiar with what i have to be doing and all the modules that are involved in this.

Before the call i was struggling to run a report through SDMX-HD module and now after the call i have a clear idea of how to integrate different modules to meet our module's precise requirements. This was possible after Roger sat with me for 4 hours straight!.

This week i was working on working on functionality of SDMX-HD integration module and amrs report module, by even going through the code. And was referring to documentation on both and on sdmx separately. Then i included a simple cohort service queries in our module. To test if i could import the reporting service api and use it.

I had a few questions and doubts regarding the SDMX-HD module, and Sent a mail to Roger an hour before the call.
This call involved Roger walking me through what must be done for running a basic use case for sdmx-hd , reporting module and the classes , and where the data is stored how am i to retrieve it.
First Roger, went through the trouble of solving all the errors by understanding every problem. so that the sdmx module could run. After that we had a problem in logging into the openmrs server because of the scheduler. Roger applied such simple solution to go to the database and update with our needed values and where i couldn't retrieve the password, he made me write a security question and answer, So , people who might get stuck by not knowing the password, this would be a 2 minute solution. :-) Then roger made me walk through several links from admin page where i would be integrating, he made me familiarized with what i need to be knowing.

Task for the following week, Work on different reporting techniques, and see which one of them would be the best performance oriented solution.

Saludos:-)

Friday 28 June 2013

June 27th call with Roger And this week's updates

This week I've been upto creating a module and making it deployable using the maven archetype.Well that may sound pretty simple, actually it is. The maven archetype is like a wizard for creating the openmrs module and that's great, as we dont need to spend much time on learning how to create a module and stuff, which might usually take a lot of time. But still there are a few things a developer has to know to create his own module such as the required tag in config file, dependencies in pom.xml , the manage controller, the activator class etc.

Then i went into some digging on the reporting module as it would be of key importance in our module. I've been trying to debug the module and understand the workflow so that i can incorporate it in our module.

Now, coming to our call, Roger corrected me in the flow i was going to follow and gave me pointers which made me understand how it is to be done. Then he gave me guidance over the module's progress and what he is expecting.

I would shortly upload my code on github, then Roger and others can see the state of the project and can analyze the code and provide their valuable suggestions. Hopefully this module's 1.0 version would be usable by the end of the summer :-)

Saturday 22 June 2013

June 20th Call with Roger

This was more of a status update call where i updated roger of what i have been doing and what difficulties i have been facing.

I started working on reporting module and getting to know all the jargon related to it , and those are dimensions,indicators, cohort queries to name a few. They are very interesting and i am intrigued by how much thought process must have happened to bring this reporting module to fruition. I still am struggling with getting the disaggregated data which is key to create our module. We still need to make progress on how to achieve that.

Roger helped me with understanding what exactly disaggregations meant and suggested that i contact someone who are working on reporting for a long time. He also told me to start working on creating a basic module using maven archetype which consume's report schema.

So my further goals would be working on that module.

More details can be found at the project page :https://wiki.openmrs.org/display/projects/OpenMRS-DHIS2-SDMX-HD+integration+Proposed+Project+Plan

Friday 14 June 2013

Week-3 Call with Roger

Roger Explained what must be done ahead and how i should be moving forward.

The discussion was mainly focused on what i know and that was basically just a little functioning of dhis2 as i had it installed in my system. And also on what i must know before starting on the project coding, so i need to be working on reporting module's code and as this project is closely related to the reporting module.
That's all for now:-)

Friday 7 June 2013

Week-2 call with Roger Friedman, Bob Jolliffe,Saptarshi Purkayastha and James M. Kariuki

Thank you so much  Bob Jolliffe,Saptarshi Purkayastha and James M. Kariuki for making this call happen.

This call had totally unexpected effect on me, till this call i had a basic idea of what is needed and what must be done. After this call my whole perspective of the project's idea has changed. Really speaking i didn't understand anything that was discussed in the call(James and Saptarshi were typing some important parts of the call to explain what was happening). But, Roger was so patient and had another follow up call instantly right after the main call and made me understand what i had to do and what was the essence of it. Roger almost sat for an hour later and gave me this following idea of the use case of our project.

https://wiki.openmrs.org/display/projects/OpenMRS-SDMX-HD-DHIS2+Integration+Use+Cases

Now i need to start with working on Dhis2 and understanding the whole functionality as i need to be integrating it closely with the reporting module.

If possible, we will be having another call to finalize the goals(most of this call will also be finalized by the mentors as i'm still a novice in this domain and their expertise is very important to decide the goals) which would follow up with my update of a finalized project plan.

Great learning week ahead!! :-)

Friday 31 May 2013

Gsoc Week-1 Call with Roger

In this week's call,I and Roger discussed about the tentative goals of the project. They are

-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.

More details can be viewed at the Project Wiki page.

There needs to be a lot of calls and i need to find out what exactly is the requirement to make our goals tangible so that coding can start from 17th without having any confusion.

Another great summer ahead with OpenMRS :-)

I had a great summer last year with OpenMRS, was selected for GSOC 2012-Dynamic Autocomplete and List Entry Widget and was able to complete the project's requirements.(The project is currently being integrated with the HTML Form Entry Module).It was the best learning experience i ever had in my undergraduate life. Till then i had coding knowledge but when i started working for OpenMRS it was not just   about contributing to the open source community, it was about writing code systematically, commenting the code,documenting the code, making the code implemented to be of use by creating tutorials for it, all this just about code. Now comes the mentoring and interaction of this specific community, they welcome you with great warmth, if you have any questions just open up the irc channel and ask it, however silly or complex your doubt is, it will be answered, if you have doubts about a specific module ping the module creator,yes they might be a little late in responding but they will respond,  if you still feel they are not taking your request seriously you can ask it in the mailing list. I learnt loads of other things as well such as mailing etiquette, importance of having calls, having my code reviewed, testing and writing my own JUnit test cases for the code i created, importance of following a framework model and the list goes on.... there are many others which i might have not mentioned. 
When i actually was selected for this project i had no idea of what i had to do next, it was a completely new  setting i had been exposed to,  i didn't know what was happening where and even eclipse was new to me, till then i wrote my code in an editor. My mentor Steven Githens is responsible for guiding me when i had so less knowledge of the system through completing the project successfully, he never made me feel pressurized even when i was behind the schedule, he always insisted that he wanted me to learn rather than worry about objectives and goals, i couldn't have asked for a better mentor!. Another great help was Darius Jazayeri, my backup mentor, if i had a doubt in anywhere,any module, i would ask Darius and i never got a no from him. It was like Darius knew everything! i couldn't help but notice an irc conversation which made me smile, where everyone were speculating whether Darius was a robot or a human. He got married last year at that time and still he responded promptly to each of my questions , great guy! Not only them, i had the opportunity to interact with others like Mark Goodrich, Ben Wolfe, Daniel Kayiwa,Saptarshi Purkayastha.

In short it was an experience that changed my life a lot and i thank everyone who is responsible for it.

This year again they have placed trust in me by giving me the project- Openmrs-SDMXHD-DHIS2 integration and my mentor this year is Roger Friedman and backup mentors are Saptarshi Purkayastha and Bob Jolliffe. Truthfully speaking even this time i really have no clear idea as to what needs to be done, but Roger started making me understand all the terms and what needs to be done. This time i guess i would be needing help of lots of people who are working in different modules as my project is the integration of those modules.I guess this year i'm going to make a lot of friends!:-).

I have to wait and see what else i have in store this summer. Thank you OpenMRS for selecting me once again this year!! 

Saludos!!(this i learnt from Roger ;-))