Monday, August 13, 2018

Final Report of OpenMRS Android Client

Hello Everyone,

It has been more than 4 months and still, it feels like the beginning. Time has flown away and eventually, we all have come to the end of this year's Google Summer of Code programme.
I think I have made some great progress during my internship period and below, you all can find the summary of what I have done in this project.

OpenMRS Android Client 3.x Project

This project was basically targeted the Android client of the OpenMRS system and IT has a lot of useful features in parallel to the web application where users can easily use the features using their Android smartphones.

The main objectives of this project were to improve the existing Android client by doing various feature implementations and bug fixes.Since it was an Android project I was mainly involved in developing, using Java programming language with the help of Android SDK.

While working in the objectives, My mentor Shivang was very helpful and we had skype calls frequently to discuss the progress of the project and he was always guiding me to the correct path by suggesting new ways to overcome some hard obstacles I have faced during my developments.
Other than my mentor Daniel Kayiwa was also very helpful as usual to solve some general problems regarding the system. I thank them both because without their help I may not be able to come this far.

Main Objectives

  • Provider Module Implementation
  • Visual Improvements:
    • Make improvements to the way that charts are being displayed
    • Progress Dialog Improvements
    • Replace RangedEditText with seekbar
    • Use TextInputLayout instead of the normal EditText
  • Security Improvements:

    • Encrypt the database using the details derived from the username and password of the user
    • Password Change detection and log out the user
    • Forgot password option
  • Application tour
  • OpenMRS Analytics tool implementation
Since the project was actively developed by the opensource developer community, It was implemented as a Github repository.
All the issues and features were solved as a separate branch and then Pushed to the main repository by creating a pull request to review the code to mentors.

PR list

Blog posts

Mid-term presentation

Talk thread discussion 

That's the wrap of all the works I have completed during this years programme and initially I was so worried about how to do all those works because at that time I was a noobie to the programming and also to the opensource contributing but thanks to the great organization the OpenMRS, I have learnt a lot about how a project should be implemented according to the standards under the guidance of very smart and knowledgeable people and It was really a great privilege for me.

It was really a positive one and for the feedback I want you guys to give more opportunities to the students like me where they can learn and improve their programming knowledge while also earning a good amount of stipend.

I wish good luck to everyone and This won't be the end of my affiliate with OpenMRS and I hope to be in touch with you all while contributing to the Opensource community where we can make wonderful products as a group collaboration. So let's Write Codes and Save Lives.

Sunday, August 5, 2018

Final week of GSoC

Hello guys,

The end of this year's programme has come and we all have worked hard to achieve the objectives of the individual projects that have been assigned to us. I have completed more 80% of the objectives of my project and currently wrapping them up by testing and documenting everything so I can transfer all my developments to the future contributors in a good way.
Here I would like to thank all those who have helped in many different ways to make this project a success including my mentor Shivang Nagaria and the Daniel Kayiwa who was always there to help everyone.
I will write a separate blog post with the finalized description of my overall project and until then see you all.

Sunday, July 29, 2018

Finalizing the Security features

Hi everyone,

We are in the last 2 weeks of the Google Summer of Code programme and I have been busy this week finalizing the Security related tasks of the project.
What I have done in this week is I have started to work in the feature which is implementing a way to detect user credential changes in the web app and log out the user automatically if there are any changes happened.
There are many different approaches that can be used to achieve this and I have chosen to create a separate service which is sending requests to the server periodically to verify the login credentials.
The service is automatically stopped when the app is killed and start again after app becomes active.
In this way, we can minimize the resources utilization while achieving our target.

That's all for this week and let's meet on next week with the more interesting news. Until then see you.

Sunday, July 22, 2018

10th week of GSoC

Hi guys,

It's almost the 10th week and eventually, we are closing to the end of this year's Google Summer of Code programme and every student including myself has been doing our best to complete the tasks within the available time frame.
In the previous week, I didn't get much time to involve in the project because of some personal matters but I have started to implement the forgot password task and hopefully, I can finish it during the next week so I can move into the final task set of the programme. Up to now, that is the progress and let's meet in the next week with the more interesting news.

Saturday, July 14, 2018

Improving security features

Hello guys,
During the past week, I have been busy with implementing a way where the system detects the changes in user credentials and log out the current user if something changes. This task is related to security features which are assigned as the objectives of this years summer of code project.

It looks like we have to find the most efficient way of implementing this since the way I have proposed in my prosal may lead to some performance issues because running a separate service which is continuously requesting logging details in the background can consume a lot of resources from the device.

Currently, I'm discussing with my supervisor the best ways we can achieve this and soon will complete this and then I can move into the last security task and so on.

So I guess that's all I have to say regarding previous week and let's meet next week with more details.

Saturday, July 7, 2018

8th week of GSoC

The second evaluations deadlines are closing and everyone including myself being busy working with the tasks related to our projects. This week I have been busy with creating a methodology where the database of the application is encrypted using the details derived from the username and password of the user.
previously the encryption key was generated using a random key generated using the Android key generator API and the new approach is somewhat more secure than the previous one.
Apart from the username and password, I have also added the timestamp of the date and time to the key so it will be more secure. The newly created encryption process is as follows

Coming week  I will also have to create a short presentation regarding the things I have done up to now to demonstrate in talks thread. That's all for now and see you all in next week with new exciting stuff.

Sunday, July 1, 2018

Finalizing the UI improvements

Hi people, It's been a busy week for me since I have to prepare for my final year research Viva which is happening in the coming week. Due to the preparations, I couldn't commit much time to the developments but within the time available I have done some tasks related to correcting and finalizing the improvements I have done to the UI in the application.

Some of those include finding redundant codes related to RangedEditText and the Native SeekBar.And I have also replaced all the EditTexts with the Android provided Native Text Input Layout to give the user a better interaction with the application.

After completing my academic works I'm expecting to move into the security-related tasks within next weeks. That is the update for now and see you all later.

Saturday, June 23, 2018

WOW it's almost the 6th week

Hello everyone..WOW it's almost the 6th week in the GSoC and I'm in the edge of completing UI related improvements and with the help of my mentor, I think I can complete almost everything within the coming week.
In the previous week, I have successfully completed the Charts display optimizations and I had some spare time to move into the other task too which is related to some internal UI component called RangedEditText.

The above image shows the changes I have done to the Charts display fragment. In nutshell, I have just moved the child component of the previously existed ExpandableListView by opening it on a new Activity. It makes the whole TabView activity lite and run smooth.
Within next week I hope to conclude all the UI related tasks and then move into the Security tasks under the guidance of my mentor Shivang.I guess that ll be all for now.Catch you all later.

Monday, June 18, 2018

UI improvements continues

Hello folks,

After completing the progress Dialog improvements I have moved into the Charts section in the Patient's Dashboard. The current Chart section is quite a mess and it makes the whole tab layout as I promised in my proposal I have created a separate activity and migrated the expandable Listview component to there.
Now when a user clicked on a particular vital the request will open a new activity and show the relevant chart to the user in there.
Currently, I'm optimizing the chart displaying activity and hopes to complete it in this week
That's the wrap for previous week and let's meet next week with some more interesting news.

See ya

Saturday, June 9, 2018

Progress Dialog Improvement

Hi Everyone,

It's almost 4th week in the Google Summer of Code 2018 and Everyone including myself has been busy doing the tasks relevant to the projects we have been assigned.
This week I have been busy with improving the Existing progress dialog and with the help of my mentor I was able to redesign it according to the standards requested in the project page.

Above diagram shows the newly redesigned Progress Dialog and I have also made a pull request to Project repository with the latest changes.
Next week I'm expecting to continue the UI improvements by starting the Charts optimizations.I guess that will be all for now. Se you people.

Monday, June 4, 2018

UI improvements to create a better user experience

Hello everyone
This week I have discussed some new things with my mentor to improve the User experience related tasks which has assigned in the project task list and I have started implementing the Progress Dialog related task.The currently existing progress dialog design has some major problems with the way it renders in the user interface such as It is taking unwanted space from the layout So I have to think of a proper way of redesigning the dialog layout to avoid this space problem.Currently I'm working on it and will make a PR as soon as I have something to push to the main repository.
I'm also continuing the Provider module implementation I have stated as my first task in previous weeks and will update the progress in here.So i guess that is all for this week and hopes to catch you guys later with some cool stuff I did.Until then see ya

Saturday, May 26, 2018

Coding Continues

Hey guys,

It has been almost 2 weeks since the coding period started in GSoC and every one is busy including myself to complete the tasks according to the time frame planned. It has been a tough week for me since I had to migrate from the ubuntu to windows so I had to resetup everything from scrath and Now I'm dealing with asome strange error which has happened while building the OpenMRS web application and I have posted in Talk to get some addtional help from the experts regarding this. Let's hope I can solve it soon because runnig the app locally is crucial for my developments.

So if I get in to the things I have done in this week, I have almost completed the provider manager activity and currently doing the UI adjustments and other improvemrnts. Soon I can move in to the provider dash board activity which is one of the most wanted tasks in the whole project so I'm postive about the progress I'm making and will continue this until I can solve everything I have assigned to do in this summer 😊😊. That's all for now. See you guys soon.

Sunday, May 20, 2018

First week of my Google Summer of Code life

hello everyone,

The first week of my Google summer of code life is almost completed and I'm very excited to share my experiences with you all.
This week we all have started our coding contributions to the projects and I have also started to implement my first task which is the provider module and since it is a big task I have divided it into few subtasks and initiated the developments. To gather more knowledge about the provider module I have referred the wiki documentation which is related to provider module APIs and also asked questions about it in Talk. I got into a trouble while installing the openMRS platform locally on my windows machine and currently I'm solving it too.
After It gets solved I can continue my developemnts from next week and I hope to make a PR by completing some tasks in next week also. So I guess I'm holding pretty good and will update you all soon, See you guys

Wednesday, May 9, 2018

I'm a Google Summer of Code Student This year

Hello Everyone,

I have some interesting news to share with you all. I have been selected as a Google Summer of Code Intern for an amazing organization called OpenMRS and I'll be contributing to their opensource Android client by giving out solutions to the features they have requested and the bugs which need to be fixed and at the end newly created version will replace the existing 2.x version by upgrading it to 3.x version.

Since the start of my first contribution, Shivang Nagaria and all the other fellow contributors have helped me a lot to prepare for the GSoC and also to write a good proposal for the event. It's an honour to be one of this years selected GSoC students and I'll do my best to give my full contribution to the project and successfully implement the given requirements before the end of this summer.

Since the start of community bonding period we all have introduced each other in Talk thread and then Suthagar created a Telegram chat to closely share our doubts and experiences with the fellow students who are contributing as this year interns and also I have started looking in to the existing bugs in issues section and talked with my mentor about how I can plan to start my developments and he gave some instructions for me and now I'm following them to get more knowledgeable about the tasks I have in my path to complete.
Keep in touch with my blog since I'll be posting frequently with new things, new experiences and a lot more exciting news.

Ok, then That's all for now. see you guys soon