OpenMRS Planet

May 22, 2018

Jude Niroshan

Google Summer of Code with NS-3

I’m so much excited to know that I was selected for Google Summer of Code for second time. Last year I worked with OpenMRS. It was a unique experience I’ve ever had thanks to OpenMRS and GSoC team. I was so much thrilled with all I gained from the GSoC program. I never through I’d be able to contribute for such a large open-source project. So, I decided to apply again in 2018 which is my last year as a GSoC student.

As this is my final year at college I have to work on my research project. I’m working on a routing protocol enhancement for Mobile Ad-hoc Networks. I used the open-source software called NS(Network Simulator)-3. Surprisingly NS-3 was also applied for GSoC 2018 and I didn’t want to miss this chance.

I proposed my research topic to NS-3 community. But they explained me my solution is too specific. Therefore, Tommaso has suggested me to make my solution as a generic framework which enables many NS-3 developers to take advantage out of it.

My project is Trust-based routing protocols framework. This project is aimed to write a new framework that facilitate for trust based routing protocols to be implemented and tested in NS-3. Trust based routing protocols are very popular among researchers who are seeking to improve the network security. There are large amount of research papers have been published in this area of study. So, there are so many people who seek to implement those variations into a network simulator and try out for results.

My mentor is Tommaso_Pecorella. He is an active contributor for ns-3. He has been working with NS-3 almost a decade. I’m so much excited to have him as my mentor.

by Jude Niroshan at May 22, 2018 05:14 PM

May 21, 2018

Suthagar Kailayapathy

Introduction to Location Based Access Control

Week 1 [May 14, 2018 — May 21, 2018]

OpenMRS is an open source platform which enables the design of a customized medical records system without any of the software development experience (although it required medical and system’s analysis knowledge to use the system). OpenMRS is also a community of people working to apply health information technologies to solve problems, primarily in resource-poor environments.

OpenMRS Core is the baseline of the OpenMRS development and other modules are allowed to integrate with OpenMRS Core to expand their services and features. There are multiple distributions around the world based on the OpenMRS platform.

I am very exited to work with OpenMRS once again through this year Google Summer of Code(GSoC) . Yes, I had a chance to work with OpenMRS last year also (GSoC 2017). I worked on a project called More Metadata Management in AdminUI1under the valuable guidance of @dkayiwa. So I loved to work with OpenMRS once again for this summer.

Location Based Access Control

Currently, OpenMRS has access control based on the user privileges. So the user needs to have the required privilege to access some of the OpenMRS service.

Anyway, OpenMRS doesn’t have any proper location control for their services. Even anyone from any location can access the metadata in the OpenMRS. Actually, still, they haven’t concerned about the location management inside the OpenMRS. But we should prepare the OpenMRS to support the access control based on the locations. It will add more value to the metadata security also.

What is the solution to restrict the services based on the locations?

OpenMRS has the privilege based access control implementations. Like that one, we need to implement a Location based Access control system. It will manage the access to the services based on the locations.

Some implementations want to register the users and patients (the persons also) in certain selected locations. Then access them based on the location that someone has logged in. That way, if someone is logged in a certain location, they should see only those encounters, observations, and patients registered in that location.

Anyway, the user who has multiple locations access (like Admin in our privilege based access control system) should be able to see patients in all locations. We can allocate multiple locations access to the System Developer or System administrator.

I have started the project. Actually we are busy with project design right now to come up with a proper design for the implementation.



by Kailayapathy Suthagar at May 21, 2018 03:58 PM

May 20, 2018

Milan Karunarathne

Getting Started with Patient Merge Enhancement

As the first step of the GSoC project – Merge Patient Enhancement, Since “community bonding period”, I had around five discussions how to implement this project with Simon Savai and Ada Yeung. At the begin of the bonding period, Simon and Ada were tried to give an understanding of the implementation. How it uses the current module, how it’s working, what’s the purpose of the project implementation.

After having three meeting with my mentors, I started designing my UI mockups as matching project requirements. As my understanding, I have developed UI mockups first phase. However, After getting valuable feedback from the mentors, We decided those UI should have a redesign for matching easier way.

In the GSoC project implementation, there are major three components,

  • Merge Patient Registration Data
  •  Create New Patient Registration Data
  • Enhance Error resolution UI to make it easy for resolving other types of errors encountered during processing of data coming from mobile devices.

Merge Patient Registration Data Mock-ups

In the merge, patient registration data UI give those functionalities for the user,

  • Use The user can select “Short View” or “Extend View”, If the user selects “Short View”, the user can only see conflicted data attributes and new attributes with red and orange colors. “Extend View”, the user can see all attributes of the Patient Registration data from EMR DB and Patient Registration data from mUzima mobile side by side.
  •   The user can start edit by click on the locked padlock. If padlock unlock user can start change attributes of the registrations.
  •  The user has two ways to edit Patient Registrations. 1) The user can edit Patient Registration by type on the text area of each attribute, or 2) User can select attributes by click on the checkbox. As an additional feature, the user can merge all conflicting data into one registration from another registration by click on the relevant “Select All” checkbox.
  •  From the different colored UI, User can clear understand edited, conflicted, conflicted after edited, identically same after the edit.
  • Merging Alerts avoid user mistakes clicks.

Create New Patient Registration Data Mock-ups

  •  The user can start edit by click on the locked padlock (If padlock unlocked user can start change attributes of the New Registration)
  • From the different green color indicates edited attributes of the Patient Registration.
  •   The user can continue New Patient Registration with newly edited attributes or old patient registration data which came from the mobile application.
  • Alerts avoid user mistakes clicks and give an understanding of the changes on registrations.

With the aim of provides more idea about UI, I have created a demo video for the UI mock-ups.

mUzima – Patient Merge Enhancment Mock-up Demo

TODO List:

  • How to incorporate the new UI.
  • Understand current uzima core module.
  • Divide workload into subtask and create Tickets.


by milankarunarathne at May 20, 2018 07:09 PM

May 11, 2018

Jude Niroshan

April 28, 2018

Milan Karunarathne

GSOC 2018 with OpenMRS and mUzima

og-image           logo-200             edited_muzima_logo

I’m really proud getting selected as a student for Google Summer of Code 2018. This is my second time got select GSoC with OpenMRS. This time I will work with both OpenMRS organization and mUzima organization. This will be a really impressive experience for me in my life.

My experience with OpenMRS was started at 2015, When I was beginning of my opensource software developer carrier path, I heard about OpenMRS organization from my brother. Since knowing about the organization, I started working with the community, When my first GSoC project discussion period at 2015, Sashrika gave a lot of motivations and guidelines to contribute to the organization. I would like to give my special thanks for “Sashrika Waidyarathna“, he is my turning point on the OpenMRS. Since starting my project at OpenMRS, Harsha Kumara helped me a lot to get through some difficult tasks. Thank you very much, Harsha!. Also, I like to thanks to Judy Gichoya, Suranga Kasthurirathne, and Daniel Kayiwa! and every other member of the organizations to success my previous GSoC project and other works!

At the beginning of the GSoC 2018 project, I have worked on both Apache and OpenMRS project to getting selected GSoC project. In the Apache organization, I have prepared my works on Tomcat project. It’s project about creating AJP client and Command line tool. I would like to thanks for having a nice interview with Mark Thomas. At the GSoC 2018 project discussion period I worked with “Merge Patient data from Multiple Installations” project. However, I think Samuel Male is the right person for that GSoC project. I would like to wish for him and other GSoC students!

Finally, I have selected “Patient Merge Enhancement” project. Thanks, very much Daniel FutermanSimon Savai, and Ada Yeung to getting selected me for this project. Thank you very much OpenMRS for selecting me as a student!.

by milankarunarathne at April 28, 2018 05:07 AM

April 18, 2018

Jude Niroshan

It’s the bitter truth of life.

It’s the bitter truth of life. When you try to improve by 1% daily, the winner has 5% improved than you. You’ll never make it to the top without any backing up for yourself.

by Jude Niroshan at April 18, 2018 07:34 AM

Ayush Goyal

The second one is quite tricky!

The second one is quite tricky! It’s very difficult to do some deed selflessly. If we give closer thought to anything which we do, something selfish will surely come up!

by Ayush Goyal at April 18, 2018 06:25 AM

April 17, 2018

Ayush Goyal

Importance of Things!

Today, I was thinking about how quickly and how vastly our priorities, importance of things and people, change over time. Personally, I have seen that one thing which was once very important in my life now is just speck of sand in a desert.

The reason today I started writing about it was very trivial; my end semester examinations commence from tomorrow.
I still remember the exam time from my first semester, I was terrified (of course a lot less from the time I was in my high school) mugging up the formulas, solving the tutorial sheets, looking over the solved examples again and again, etc. But today just one day for the examinations, knowing that I have not attended a single class attentively, not even aware of the syllabus, I am Ok! In fact more better than that.

I actually feel that over time our way to perceive “important” things in life changes a lot. One thing which is currently so important to you that you will push yourself more than your limits may be rendered entirely useless in some time.
For example, I worked my ass off during the examinations in school, but now when I look back to those grades which I secured in school, they are unquestionably useless, they have zero significance in my life right now. So, the point is should I be worried about anything which is going in my life right now knowing that after some time I will look back and say that it was just waste of time and I could have done something else more productive or enjoyed that time of my life more peacefully?

Now, the significant thing to closely see is that it’s not like those events never actually had any importance, it’s just over the time I am forgetting or don’t want to acknowledge what their significance was. Retaking the example of exams, during those school times, the marks in those exams were essential. Because, if I didn’t study hard, I would not be able to get a good college and which will lead to a low paying job, and thus I will be making compromises at every facet of my life, and the list goes on and on. But now when I am in a good college, I feel those marks are useless.

So, it’s not that nothing is worth the efforts, but after achieving the importance of them, we tend to think of those events as useless. For example, most of the people are worried about exams in college because they know if they fuck these up they are not going to beg a proper placement. But since I know these grades are not going to help me in my placements, so I give zero fucks to the exams. Contrary to my first semester where I had no such backup, so I prepared hard for the exams and was worried too.

by Ayush Goyal at April 17, 2018 07:41 PM

March 22, 2018

Ayush Goyal

KGP developer’s Meet

On 18th March 2018, KGP witnessed its first ever developers meet[1]. The initiative was taken up by Ksheera Sagar the UG Representative to the Senate. He got to know about the MetaKGP hack day[2], and he thought of a bigger version of it to bring all the developers in the campus on a single platform and also welcome students who are interested in becoming developers.

Following were the goals he thought of :

1. To give a brief idea of works done by MetaKGP and the open source community on campus
2. Ongoing key projects and initiatives
3. Discussing the potential projects for the upcoming and existing developers
4. Explaining the necessity of ERP API
5. Presentation of 2–3 student wellness projects by myself and Krushi (G.Sec Students Welfare TSG) which needs developers
6. Encouraging women from STEM areas to start with dev
7. Requesting the professors (like PPD, PDG, PPC….) to speak on this occasion
8. Requesting office/ lab space for developers

Metakgp[3], Lean In[4], Kharagpur Open Source Society[5], Institute Wellness Group[6] came together to make the event a success.

The event started with Naresh and Nishant giving an introduction of MetaKGP and its various projects. After that Kshitij gave a presentation about the initiatives of KOSS to promote the opensource culture in the campus.
Siddharth took the opportunity to bring to the notice of the administration on how providing some open endpoints to the data in ERP can help developer community build cool projects around the ERP and benefits of enabling an OAuth 2.0 authentication for the ERP to make it more developer friendly.

One of the most frustrating and time-consuming thing for all the final and pre-final year students in building their CV on ERP. Ksheera Sagar pointed out the problems in the CV module and proposed a solution for the same.
We all know how bad the gender ratio is in IITs and it is worst in the tech community of the IITs, Ayushi Mrigen gave an introduction about Lean In and also an insight of the perspective of girls community on why they think this problem exists and what are their steps to improve this situation.

Prof Sriman Kumar Bhattacharyya, Prof Pallab Dasgupta, Prof Adrijit Goswami shared their views on the open source movement currently prevailing in the campus and about the steps already taken by the administration and their plans of the future to help the developer community.

Prof Sriman Kumar Bhattacharyya, Deputy Director, IIT Kharagpur briefed the students about the opportunities for the funding of projects and lab spaces from the administration side.

Professor PDG of Computer Science and Technology Department, an alumnus of the batch of ’90, shared the story from his college time. Since we all know, it was the time of genesis of open source. He shared how they were just shifting to UNIX systems and how Donald Knuth developed Tex and open sourced it, but due to complications, no one was able to use it and later came Latex a more user-friendly version of Tex which was again open sourced. His talk was very insightful and inspired a lot of people sitting there.

Prof Adrijit Goswami, ERP Chairman, talked about how the ERP functioning is different in Kharagpur than other IITs and the autonomous structure of ERP in our institute. He also told about the current problems faced in ERP and how students can help in overcoming them. Though, he didn’t talk much related to the presentation given by Siddharth on OAuth for ERP which was quite disheartening.

Thanks to Himanshu, the whole event was video recorded, and the video for the same can be found here.

All the presentations from the event can be found here.







by Ayush Goyal at March 22, 2018 08:57 AM

March 02, 2018

Jude Niroshan

My batch is Graduating, but me

It’s been 4 years since I thought I would be able to wear that cloak and the hat which every graduate wear on graduation day. I see lot of happy faces. My friends are there with their parents and all of those faces are full of happiness and pride. I know it’s not an easy task to get into that level. Today is the day that “Under graduates” will become “Graduates”.

When I look back into the past 4 years, the friends I met at the very first class has changed alot. They have grown up. They have learnt a lot. I’m happy to see that many of those friends have even got jobs which they were dreaming of. So, life is such.

Time is not a measurement, it’s just an indicator to our life events.

I could learn many mistakes of myself and also I could understand the people with these 4 years of time. College life is not only about the studies. Many of the things are all about the life. Making friends, working on teams, studying, playing games, having lunch together, helping each other, that’s what it really means.

When I see my friends are graduating, I couldn’t stop the tears coming down from my eyes. There is no seat for me in this graduation day! How frightening is that? Yeah, life is hard. I see when people are giving speeches, they just say their college life was hard. But I doubt whether they even mean it or not. I never failed a single module in my curriculum course(never even had lower than B grade). But I had no choice other than to skip one year of college. I wish I could go back in time and make things correct.

People have called me a stupid, but I do believe I made correct decisions when I have to. Nobody was there to tell me what to do and when to do. Nobody knows the future. I missed the graduation of 2018. I know I have already booked my seat in 2019 graduation day.

However I do happy to see the people who I saw in back in 4 years and see them today. Some people have changed their mindset for me in bad way, for no reason. I don’t have any hateful feelings for them.

by Jude Niroshan at March 02, 2018 07:17 AM

February 17, 2018

Ayush Goyal

Why Facebook ?

So, some time back I deactivated my facebook account and was cut-off from the social network realm entirely. I thought it was the best decision I could make because now I had a lot of free time with me which I was previously wasting in scrolling through unnecessary feeds.

The reason why I deactivated my account is mentioned in my previous post[1]. It was also not the first time I tried staying away from Facebook, I have deactivated my facebook account before too.

The problem nowadays is, Facebook has spread its roots so deep in the life of people that even if a single individual wants to stay away from it, he/she could not.
In my case, I am not returning to facebook because of some addiction. I am returning because I had to.
In the absence of Facebook, I was missing out a lot of things. All of the people from my department primarily share information, notes, books, etc., on the facebook group only. And I was missing out all the things. I had to repeatedly tell people to share stuff from the group to me via E-mail, but how can I ask for something which I don’t even know is shared in the group.
For example, yesterday only we were supposed to have our Tractor and Power Systems Lab class and since I had till now not submitted a single lab report I wrote everything till night and was prepared for the submission. But just a few hours before the lab my friend told that lab class was cancelled !
I was so frustrated that if I has this information this beforehand, I could have done some other important work the day before instead of copying the lab manual. It was the time I decided I have to go back to the facebook!

References :

[1]Leaving the realm of social media, again !


by Ayush Goyal at February 17, 2018 03:27 AM

February 09, 2018

Ayush Goyal

Religion vs Evolution

I recently started reading the book Sapiens- A brief history of humankind[1]. And this post is inspired from the book.

In the book “Sapiens” there is a comparison of evolution alongside religion. According to almost all the religions, humans were the epitome of creation, completely different, superior than the animal kind. But according to the theory of evolution species similar to us walked the facets of Earth long before the evolution of Homo Sapiens. Some of them are Homo Neanderthalensis who lived in Europe and Asia, humans of Denisova, etc.

A question was, in the later stages of evolution when Homo Sapiens were evolving on the different part of the world and after migration when the met their half-brothers, how they might have reacted?

Two possible theories are discussed in the book:

  1. When the Homo Sapiens met their other counterparts they may have interbred with them, and the same thing might be happening in different parts of the world at the same time, and this might be the reason for the rise of distinct races around the world. This theory raises a lot of political tensions claiming different races of humans are different on the genetic level and thus may trigger interracial wars. So, may be due to political pressure or the lack of evidences, this theory is not supported by a lot of people.
  2. When the Homo Sapiens met the other organisms, who looked a lot like them, a rage built inside the Homo Sapiens and a fight outbroke for food and shelter among them which might have led to the mass murder and eventually the extinction of other races. During this long quarrel, some of the citizens might have fallen in love and interbred, and maybe that is the reason why recent studies have found our DNA to be around 1% — 5% similar to that of other humans of that time.

Whatever might be the reason of vanishing of other human tribes from the face of Earth, both the theories contradict with the teachings of most of the religious texts. All most all the religions of the world consider humans to be the epitome of creation, far superior to the other organisms and enjoying special privileges from “God” making them completely different from the animal kingdom. Most of the religions teach us that we all popped out of nothingness and enjoyed the supremacy over other organisms.

We have concrete proof of evolution, and there is no denying that millions of years ago organisms similar to humans resided on Earth. Now the question is how did the so-called “Gods” of the different mythologies had regarded of the earlier human civilizations. Because the problem is, primitive humans didn’t know how the worship the idols of the deities.

The concept of God looks a total scam to me. I will personally talk about the Hindu mythology here. Let roll back to the time of the Sadhus. There is no denying that a lot of very brilliant people were present at that time. What might have happened was they would have discovered a lot of ways to make the life more easier by following a lot of practices which required a lot of dedication and patience but those practices paved the roads for a healthier and more prosperous life. Now, the problem was to convince the majority to follow these practices. It would have been tough to convince a large group of people, so over time they created a supernatural entity to create a fear in the hearts of people and to make them follow what is right. And over time this fictional fear was engraved so deep in the minds of people that now, people are ready to even kill others for them.

The best example for this is Harry Potter. Let’s suppose a group of people started believing that Hogwarts is real and Hogwarts Express awaits wizards and witches on the platform 9 3/4 of the King’s Cross Station to take them on the journey to a magical realm. And slowly the population of these “believers” started expanding, and over time they became aggressive and started murdering people who claim that it doesn’t exist. Now, a time will come when the only people left on Earth to breathe are those who believe that wizards and witches dwell the world. This fictional story will be fueled for ages by a lot of rumor spreading personnel and it will never cease to exist. So, over time the imagination of J.K. Rowling will become real. Something like this might have happened in case of say Ramayana, Mahabharata, etc.

Again these are all theories, and if someone is watching over us or not, no one knows. So, just do whatever you feel is right!


References :


by Ayush Goyal at February 09, 2018 10:22 AM

January 23, 2018

Jude Niroshan

What is feels like to be a GCI-mentor with OpenMRS

Google Code-In is an annual program hosted by Google. This program is focused to spot the hidden talents in high school children and bring them to the open source culture. Program is announced by Google. Usually timeline goes up-to 3 months duration. Many open source organizations are willing to take part in this program and welcome the youngsters to come and do something for the open source world.

It was bit difficult sometime to review all the tasks which are pending in the task review list. But I understood that providing feedback soon is very important for the students.

It was my final exams in the college and I couldn’t catch up with some weeks. There was a situation where GCI admin for OpenMRS asked some help from every mentor. There were few times where we were taking some delays when it comes to reviewing tasks.

That was the moment I really felt that time has come for me to do my job for the community at that time. So, I started off 2018 by clearing out the entire review queue and I was constantly provided feedback. Once you are reviewing it’s like riding a boat. You’ll never get tired because of the feeling that you get. (Dopamine… LOL)

Things to take away:

They are teenagers. Always appreciate their work (Say NO to copied work)

Provide in detail feedback. Give some guidance on what needs to be changed.

Propose solutions and let them to pick and develop it further.

If you are not sure about their past work in the same thread, ask the most recent mentor to check it out.

interact with them through IRC or other chat channels

interact with them through IRC or other chat channels.

by Jude Niroshan at January 23, 2018 07:36 AM

January 06, 2018

Ayush Goyal

Leaving the realm of social media, again !

So, sometime back I stopped using Facebook, WhatsApp, etc for around a year. The reason was personal, but it did help me a lot in focusing on important things in life. For the first, I got to know how many are “real” friends in my life. I feel in today’s connected life where everyone is just a click away the real bond which you share with the people in your life is lost somewhere.

So, I was watching a video[1] today. The thing which led me to deactivate my facebook account was that in the video it was mentioned that people in today’s world try to please the 16 million people around the world when they share something or upload something and I think it is quite true. Wherever I go or whenever I click a picture the first thought that comes to my mind is to take the picture more artistically good so that it looks better whereas I think the purpose of it should be to keep the details as sharp as possible so that you can recollect the memories properly. And with social media where 100s of people are there watching you, this motive is lost somewhere. One can argue that you can stop posting pictures or share things, but the thing is when you see others sharing their experiences, there is an urge inside you to do the same to get the same praise, at least I feel so. So, to completely detach myself from all this I have deactivated my facebook account again. Currently, I will still be using messenger, but I may disable it also after some time.

References :


by Ayush Goyal at January 06, 2018 07:09 PM

December 30, 2017

Sanatt Abrol

Cracking Google Summer of Code 2018

Google Summer of Code is a program sponsored by Google to introduce students to open source programming. Students work on the projects mentored by different open source organizations. It is an incredible opportunity to learn the various tools and practices used in real world softwares. I was GSOC 2017 student under OpenMRS in my sophomore year. In this post I will shed some lights on how to start preparing for GSOC.

2018 Program Timeline :

Understanding the GSoC 2018 Timeline

Before I go on to the general guidelines of getting selected for a project, let’s look at the timeline of the GSoC 2018 program. I’ll be discussing the events that are relevant to students, and the detailed timeline can be found on the official site.

  • February 12: List of accepted mentoring organizations published on the Google Summer of Code 2018 site.
  • 12 March: Student application period opens.
  • 27 March: Student application deadline.

The period of February 12th to 27th March is of utmost importance to students who wish to get through. This is the time when you decide which organizations to work on, connect with the mentors of the project and prepare your proposals to be reviewed by your mentors. By 27th March, you must have submitted your proposal on the official site, after which your proposal is locked. If, however, you find mistakes in your proposal, you may ask your mentoring organization to make it editable.

A student is allowed to submit at most five proposals to the program under various organizations. It is therefore possible that two or more proposals are selected. But a student can work on only one project during the summer as per the rules of the program. So the organizations try to resolve it first among themselves, or ask the student which project they would like to work on.

  • 23 April: Accepted student proposals announced on the Google Summer of Code 2018 site.
  • 14 May: Students begin coding for their Google Summer of Code projects;

The time between the announcement of selected students and the beginning of the coding period is called the ‘community bonding period’. Google recommends that you spend the time getting to know people on the mailing list or the IRC, read documentation and get up to speed with what is happening in the organization to begin your coding. However, you may also start the coding in the community bonding period if you and your mentor decide that’s the best thing to do. A welcome package is sent to you at this time.

  • 15 June: Phase-1 evaluations deadline; Google begins issuing Phase-1 student payments provided passing student survey is on file.

Your work is evaluated by your mentor after four weeks since the coding starts. If you have been meeting the goals you set in your proposal, you should be able to pass this fairly easily.

  • 13 July: Phase-2 evaluations deadline; Google begins issuing Phase-2 student payments provided passing student survey is on file.

Phase-2 evaluations are a lot more harder than the Phase-1. Under these evaluations, mentors expect to have a clear picture of whether or not the student will be able to finish the project or not.

  • 14 August: Firm ‘pencils down’ date. Students can begin submitting final evaluations to Google. By this date you MUST be complete with all your work and proper documentation.
  • 21 August: Mentors submit their final evaluation.

Your final work is judged by your mentoring organization to decide if you have passed the program. A certificate of completion and a Google Summer of Code t-shirt along with a few goodies would be mailed to you on successful completion of the project.

How can I get selected?

I have successfully completed the program last year and people often ask me for the secret recipe for getting accepted. There is obviously no such secret. However, there are definitely certain guidelines you can follow, but they are not applicable to every individual.


I believe the most important factor in getting into GSoC is having sound knowledge in one technology. Be it Java, Python, Ruby or JavaScript — make sure you are comfortable in the language and target organizations with projects based on your comfort zone.

Secondly, all open source organizations use version control software to manage changes in code from a globally distributed team. Be it git, svn or mercurial, you should know the basics of version control and be comfortable using it.

Another important pre-requisite in my opinion is the use of unit tests. Most organizations need you to write unit tests for the code that you submit and therefore, you need to know how to write them well.

Although prior contribution to open source projects is an advantage, it is not necessary as long as you can prove you can contribute to the codebase by submitting a patch.

Choosing the right OS

If you are a Windows user then you might feel odd one out in the group of developers. Most of the developers (including myself) prefer Linux over Windows for various obvious reasons. Although it is not a necessity (unless you are working on the Linux kernel itself :P) but it is highly recommended that you install and learn any of the Linux flavor. You might find it difficult at first but trust me, it will make your life a lot easier later into the program. Go to your org and ask people on IRC to help you with setting up the developing environment.

Start early

Although it’s already late to consider this, but if you plan to apply for GSoC 2018, start now. If you are reading this already late post, finish it! Stop everything you are doing and start! The earlier you start, the better your chances are for selection. But how exactly do you “start”?

You could check the organizations that have been selected (If the list of organisations is not out yet look at previous years organisations), go through their “ideas page” and see if you are interested in their projects. You could suggest your own ideas, but the ideas listed on their respective pages have already been debated and organizations are most probably going to go with those ideas — unless yours is really innovative! (and that’s very rare :P)

If an organization interests you, join their developers’ mailing list and hang out in the IRC chat room. Open source people are generally very friendly and if you have any issues, they’re there to help you out! However, remember that mentors also have full time jobs and open source is only voluntary work, so you should be considerate too!

Also, make sure you’re polite when you communicate in the mailing list or IRC. In addition to that, be patient (and avoid being like this).

Remember, mentors are volunteers and they are not obliged to help you. They have many other important things to do, so respect their time. Learn the IRC, mailing list etiquettes and how to ask smart questions. This presentation is also going to help you a lot.

Prove you can contribute to the codebase

Getting introduced on the mailing list or IRC may not be enough. To be selected for a competitive program such as the GSoC, you need to prove you’re among the best. The easiest way to get noticed is to contribute to the codebase.

Read the documentation and clone the code on your local machine. If you have issues running it locally, you can always revert back to the mailing list or IRC (you will surely get your issues resolved!)

Every organization also maintains an issue tracker (or some list with some other name like a bug tracker). Find an easy bug to start off, or ask for one on the mailing list. At this point, you must know one important thing — many others are working on the organization, so never start working on a bug unless you have been assigned the bug. If you do and someone was already working on it, the organization is obliged to accept the solution that was provided by the one who got it assigned first.

Once you solve a bug, submit a pull request (or a patch, if it’s on GitHub, GitLab or BitBucket). Then work on a second bug. Then a third and fourth and so on. Most organizations require you to submit a pull request as a pre-requisite to be accepted in the program.

Making the proposal

The proposal is a detailed document that you submit to the organization before getting selected for the program. It roughly contains information on what you plan to do over the summer, which requires good understanding of the project that you are working on.

The outline for proposals are usually supplied to you by the mentoring organizations. They usually don’t have a word limit — so it’s a good idea to make it as long as possible, explaining every small detail. In my opinion, include everything in as much detail as you can, include UI ideas (if your project involves one), include diagrams, graphs. Try to make it as detailed as possible, a good proposal would be around 10-15 pages.

Here are a few guidelines on writing a great proposal.

Here’s my own proposal

Code, eat, sleep, repeat!

Code the summers away! And don’t get disheartened if your proposal is rejected, you can always contribute to the organization and learn from the community.

The post Cracking Google Summer of Code 2018 appeared first on Sanatt Abrol.

by sanattabrol at December 30, 2017 02:47 PM

October 25, 2017

Alexis Duque

ACM Mobicom'17 week

ACM MobiCom 2017 Conference

From October 16th to 20th, I attended the ACM MobiCom conference that has been held in the Snowbird Ski resort near Salt Lake City, Utah.

Sponsored since 1995 by the SIGMOBILE group of the Association for Computing and Machinery (ACM), MobiCom is an annual international forum that gathers researchers and students, from** academia and industry**, to present their latest results in the fields of networks, systems, algorithms, and applications that support mobile computers and wireless networks.
MobiCom is a highly selective conference (about 18% of acceptance this year) offering quality works and presentations.

The 20’ presentations were allocated along the week and peppered with social events, demos and posters sessions, concurrent workshops, the Student Research Competition (SRC) and MobiJob.

This year, during the VLCS 2017 workshop that preceded the main conference on October 16th, I presented the paper SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding co-authored with Razvan Stanica, Hervé Rivano and Adrien Desportes.

During the week, some papers particularly attracted my interest:

In her paper, Zhang creates a covert-channel based on the reflection of surrounding RF signals on smartphone or laptops. This is achieved controlling the impedance of the device’s wireless network interface card (NIC) by switching it ON or OFF. Even if the throughput is very low (< 2 bps) the main interest of NICScatter is that it doesn’t need any OS modification or root permissions.

After unveiling Litell in 2016, C. Zhang presented Pulsar, an indoor VLC localization system. Pulsar œrelies on off-the-shelf luminaries, a USB dongle with two photodiodes, and the smartphone sensors to provide accurate (about 10cm) 3D indoor positioning using the angle-of-arrival (AOA) method.

On the first day of the main program, Chen introduced a novel near-field communication protocol, called MagneCom, that takes advantage of Magnetic Induction (MI) signals emitted from CPUs and captured by magnetometers on mobile devices for communication.

Ambush Varshney presented a Visible Light Sensing (VLS) system that consumes only tens of μWs of power to sense hand gestures and communicate. Their design uses solar cells to achieve a sub-μW power consumption for sensing and further transmit the gesture detection results by backscattering the ambient RF signals. Note that Andreas Soleiman, co-author of this paper won the Student Research Competition and showed a working prototype during the VLCS workshop demo session.

The researchers from University of Minneapolis introduced a promising approach to physical-layer cross-technology communication (CTC) between WiFi and Zigbee.
WEBee opens a promising direction for high-throughput CTC via “physical-level emulation”. WEBee uses a high-speed wireless radio (e.g., WiFi OFDM) to emulate the desired signals of a low-speed radio (e.g., ZigBee) by manipulating only the payload of WiFi packets.
Their paper won the best paper award.
The authors also showed WEBee during the Tuesday demo session.

Tutorial Sessions

This year, in addition to the conference and workshops, two tutorials funded by the NSF were organised during the weekend.
These tutorials held on the University of Utah campus, were mostly hands-on, providing exposure to emerging wireless platforms and technologies.

The first tutorial made use of PhantomNet, a platform to enable experimental research in mobile and cellular technologies like 4G and 5G.

The second introduced the edge-computing platform created by the WiNGS Laboratory team led by Suman Banerjee (University of Wisconsin-Madison) called Paradrop.
Paradrop provides computational and storage capacities to the extreme edge of the network, here the WiFi Acess Point, to avoid useless communication to a Cloud platform.

After Hawaï, Paris, New-York and Snowbird, the next edition of Mobicom will be held in New Delhi (India). I hope to be there :)

October 25, 2017 07:39 AM

October 20, 2017

Ayush Goyal

Diwali — The festival of lights

So this Diwali I decided to stay in the campus instead of going home because of low attendance and not having optimum holidays. I thought it would be excellent to stay and enjoy the awesome illumination of IIT Kharagpur, but it turned to be a total disaster. I had some heated arguments with the hall council members on the forced illu duty and power cutting in junior residential blocks which killed the Diwali mood! But in the evening two of my friends Prakhar and Rahul came to my room and we were chilling, and after some time our other friends also joined us, and it lightened my mood, and we decided to go to Park Hotel for drinks and dinner. While we were just reaching Park, someone suggested to go Shergil Dhabha, and that was the best decision of the day.

The place had the typical Dhabha ambience and we enjoyed like hell. But the main reason which motivated me writes this whole thing up was the talk with one of the people there. His name was Sukhwinder Singh. He was a remarkable person. He was the owner of the place and was sitting on the counter. Rahul and I went up to him and casually started talking. He told us he was from Jalandhar and when we asked him when he came to Kharagpur, to our surprise, he remembered the exact date, time, weather and even the car number with which he came here. He told us he was 15 years old when he came to Kharagpur and now his age was around 60–70. He also said that he has three kids, one daughter, and two sons. And all three of them are currently in Melbourne, Australia. That was an amazing thing to hear. He also told us that his dad owns the petrol pump on the other side of the road. He was the most impressive guy I met in a while. He really made this Diwali worth remembering for me.

by Ayush Goyal at October 20, 2017 10:05 AM

Alexis Duque

Paper presentation at the VLCS'17 workshop

University of Utah

From October 16th to 21th, I attended the ACM Mobicom conference that has been held in the Snowbird Ski resort, Utah.

On October 16th, I presented the paper SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding co-authored with Razvan Stanica, Hervé Rivano and Adrien Desportes at the VLCS 2017 workshop.

The paper is now available in the VLCS’17 workshop proceedings.

October 20, 2017 07:39 AM

Suthagar Kailayapathy

GraphQL — Next Level of API Language

Combine your multiple REST endpoint into One…

Image from

GraphQL is a new API standard that provides a more efficient, powerful and flexible alternative to REST Web services. It was developed and open-sourced by Facebook and is now maintained by a large community of companies and individuals from all over the world. It provides an alternative to REST and ad-hoc web service architectures.

It enables declarative data fetching where a user can specify exactly what type of data it needs from an API endpoint. Instead of multiple endpoints that return fixed data models, a GraphQL server only exposes a single endpoint and responds with precisely the data a client asked for. Simply says, You can get a bundle of data using only one GrpahQL API request instead of triggering so much of API endpoints.

Let Assume, there are some API endpoints to retrieve some useful information from the server.

  • Getting user information from an API endpoint. It will return the user id, name, address and birthday of the related user id.
Image from
  • Now you want to fetch some posts information of this respected user. So you need to trigger another API endpoint with the user id which was used for the last rest call.
Image from
  • Finally, you want to fetch some followers of the respected user to create some statistical report. So you need to trigger another endpoint to fetch this data.
Image from

So, If you want to analyze the user info, you want to trigger at least three API endpoints to retrieve the required info. The count of the triggers may differ about your API designs. It can be large or less than this count. Anyway there are one or more API triggers required to achieve some tasks.

GraphQL is one of the solutions which can reduce this amount of triggers to retrieve the response from the massive data collections. It based on some kind of querying for the data retrieval.

For the above example, You can retrieve the required data using one API trigger! How is this possible?

Let’s play with GraphQL,

Endpoint : ~/api/graphql
Request : query {
User(id : "er3tg439frjw") {
posts {
followers(last:3) {
Response : {
"data" : {
"User" : {
"name" : "Mary",
"posts" : [
{ "title" : "Learn GraphQL today" }
"followers" : [
{ "name" : "Jhon" },
{ "name" : "Alice" },
{ "name" : "Sarah" }
Image from

Have you seen the Response of the GraphQL request? It contains almost much required data for the request.
Yah, you can get it by only one API request!. That’s the very big advantage of the GraphQL based API endpoints.

GraphQL — A Query Language for APIs

Now a days, Most applications want to fetch data from a server where that data is stored in a database. It’s the responsibility of the API to provide an interface to the stored data that fits an application’s needs.

GraphQL is often confused with being a database technology. This is a misconception, GraphQL is a query language for APIs — not databases. In that sense it’s database agnostic and effectively can be used in any context where an API is used[1]

GraphQL is totally based on queries. It will fulfill the request queries with your existing/pre-defined data as the response.It provides a complete and understandable description of the data in your API and gives users the power to ask for exactly what they want over the huge data and nothing more, makes it very easier to evolve APIs over time, and enables powerful developer tools.

You can simply ask for what you need from the massive data, you will get exactly that one.

Just send a GraphQL query to your API endpoint and get exactly what you need from there, nothing more and nothing less-exactly what you want.

The response for the GraphQL queries always contains the predictable results. API endpoints using GraphQL are fast and stable because they control the data they get, not the server.

It will reduce the number of API calls for a scenario. GraphQL queries access not just the properties of one resource but also smoothly follow references between them. While typical REST APIs require loading from multiple endpoints, GraphQL APIs get all the data in a single request.

Just summary about the GraphQL,

  1. REST and GraphQL are totally different — Don’t put them into one bucket.
  2. You can definitely use both at the same time — There are no blockers or restrictions in the real time.
  3. GraphQL is dope if used for the right thing — Just read more about GraphQL

REST vs GraphQL

  • GraphQL reduces network requests by allowing users fetch or retrieve all the data they need in a single query using the single endpoint. There are no multiple requests to fetch the data in the real time.
  • Data fetching is one of the most significant improvements in theGraphQL. In a typical REST API, to fetch or retrieve data from a server, users might need to trigger multiple endpoints. But with GraphQL, users only have one endpoint with which they can access data on a server.
  • Typical REST APIs contains the versioning like v1, v2, v3 etc. which simply indicate the version of the REST API we are using. But with GraphQL, there is no need for versioning as users can easily add new fields and types to our GraphQL API without impacting existing queries.
  • GraphQL has no caching mechanism. Since HTTP already implements caching, and REST is implemented using HTTP, the client can use HTTP caching to avoid re-fetching resources.
  • GraphQL only responds with 200 OK response status. That means, If the query contains the required data or not, users will get the 200 OK response status. They need to check with the response to understand the success or error status. But Error handling in REST is pretty straightforward, We have different status codes to indelicate the response status.
Image from

Why is GitHub using GraphQL as their V4?

GitHub chose GraphQL for their API v4 because it offers significantly more flexibility for their integrators. The ability to define precisely the data you want — and only the data you want — is a powerful advantage over the REST API v3 endpoints. GraphQL lets you replace multiple REST requests with a single call to fetch the data you specify.

Thanks and for the more read,

[1] —
[2] —

[3] —
[4] —

[5] —

[6] —

by Kailayapathy Suthagar at October 20, 2017 07:09 AM

October 16, 2017

Mount Rushmore

Just got back from a wonderful trip to South Dakota with Lorrie. I wanted to see Mount Rushmore before it became this:

by burke at October 16, 2017 05:57 PM

September 28, 2017

Suthagar Kailayapathy

Nice! As a request, Do not attache code as images or screenshots.

As a request, Do not attache code as images or screenshots. You can use `code blocks` in medium to show your codes.

by Kailayapathy Suthagar at September 28, 2017 04:57 AM

September 26, 2017

Suthagar Kailayapathy

The way to Google Summer of Code — Start your Engineering

From the experience of a GSoC Student from OpenMRS

The biggest summer 2017 has reached the end. I think you all are enjoyed your summer holidays very well. Most of you went for the trips and some of you took the long rest.

What did I do?

I got a valuable gift for my career. YES! I was busy with Google Summer of Code and spent all summer to gain a lot of knowledge. I never felt hard to miss the trips or rest. Because I am very satisfied and enjoyed my summer with OpenMRS — I am happy to say, I lived with my passion and wrote Codes, save lives.

I got some capital for my career through the Google Summer of Code Program. I am not speaking about the Stipend, Just mentioned about the knowledge and experience. Now I can develop my self using that valuable experience.

Google Summer of Code

Google Summer of Code

Google Summer of Code is a global program sponsored by Google Inc focused on introducing students to open source software development for the open source organizations. Students work on a 3-month development project with an open source organization under some mentors.

Do you like to get a chance to work on Google Summer of Code? Then better to think about these guidelines first,

  1. Do you have the passion about the Software development or IT related field?
  2. Do you have much time to spend the summer with an Open source Organization? — Cool, No need of much time. 30+ Hrs per week is enough for a general project. You can enjoy your summer with rest of the time.
  3. Are you willing to get a paid learning opportunity during your college time? — Definitely, you can buy a new Apple Mac book pro with your stipend.
  4. Do you want some friend in your field from other nations? — You will get a chance to meet more than 1000 students through the GSoC Program
  5. Don’t miss the chance to meet the experts as your mentors — You will be directed perfectly to achieve your target quickly.
  6. Do you have the goal to reach Google? Get a change for Google One time referral chance— You will be invited for the job/intern interview quickly for the applied position.
  7. Show your colors to the society. Definitely, they will catch you as a paid employee- Truly, Some of the GSoCers got the opportunity to continue the work as a paid employee after the GSoC period.
  8. Fill your LinkedIn, Resumes and CVs with the weight roles like Google Summer of Code. Definitely, you will be shined among the others if you have mentioned your GSoC title.
  9. Everyone can write the code to complete the task. But one mentor can direct you to utilize the methods to increase the task efficiency. You can catch those techniques using the GSoC experience.

You can get information about GSoC program through the GSoC FAQ section.

How did I familiar with GSoC?

  1. Contacted past mentors from various organizations and gathered a lot of details about GSoC and that process (OpenMRS, WSO2, Moodle and Apache Software Foundation)
  2. Subscribed mailing list and GSoC official group to know about the current discussions.
  3. Researched a lit bit about past projects and technologies which belong to some organizations
  4. Got experience with some new technologies which are mentioned in those projects.
  5. Read some blogs of past GSoC Students and referred some important workflows


OpenMRS is an Electronic Medical Record System with a lot of facilities and OpenMRS is also a community of developers, implementers, and users working toward a shared and open foundation for managing health information in developing countries. So as a developer, I would like to be part of OpenMRS to make it more efficient using my Computer Science and Engineering related knowledge. OpenMRS is an open source platform, so there are a lot of ways to contribute. One of the most identified methods to contribute OpenMRS is Google Summer of Code.

Image from OpenMRS Wiki

How did I get a chance to work for OpenMRS?

I never try anything massive! Don’t think too much about the activities needed for this role.
Simply Says, Do something to get community focus on your activities.

  • I just spend some time on OpenMRS talk page get familiar with the environment
  • As the request, I got access to the OpenMRS Issues page and take some simple issues to solve!
  • Created some talk post about the issues and fixes and discussed about that with the community people
  • Contacted my mentor and discussed about the project idea
  • Did some demo works to show my potential to the community — Yes, Hopefully, I can do this project :-p
  • Created an awesome proposal for the project :-)

Yah, I got the chance to work for OpenMRS though this year GSoC. I worked with Daniel and Wyclif during this summer period.

Let follow this another post to get more about contributing to the OpenMRS,

How to reach OpenMRS as GSoC Student?

A little bit about the project selection

More metadata Management in AdminUI — Can you understand anything using this title?
No, If you are not familiar with this domain, then definitely you can’t understand the content of this project with only the title. The title of the project might reflect the concept as more complex. But there is nothing difficult.

Image from Graphicsbuzz

Don’t get afraid of the Project title and the content. It may contain some unknown technical terms or technologies. Just Google it them and clarify.
You should Google it everything and get some immediate knowledge about them At least try to get knowledge about the used terminologies.

Can you imagine the implementation of the function in an abstract class?

Like that, GSoC Title and content is the abstract of the project. You should try to get more information about that respected project from the community or your mentor.

What Can I do to get more information about the project?

  • Go to the Organization official webpage and find out the pages respected to this project. It may contain some more information about the project
  • Just go through the content and contact the mentor for that project. He/She will response you with a list of resources to you about the project. You can continue the discussion with the mentor to get more information about the project.
  • You can follow(subscribe too) the email threads, Discussion groups and IRC talks which are used for the discussions about this project

Don’t spend much time on unrelated projects for your domain area. If you are only like to learn something new, then you can involve some new domains.

If you can’t get familiar with the project content, then better to move with another project. There will be a lot of projects to you. You can select one project which will make you really enjoy.

The project may need more than 5 technologies but still, you are the only familiar with 2/3 technologies. Then don’t hesitate to try on that project. Just Google the unknown technologies and go through some of those documentations. You will have much time before the project starting period from the project selection time(Approx. 2 months). Definitely, you can learn some of those technologies within this time gap.

GSoC is open for the Students(who can learn!) not for the employees(who already knew it)

How to increase the chance for the GSoC?

The perfect answer will be, Show your interest and Do something to convert the community view about you. They should trust you and follow your works and interest.

Contact the mentor frequently and discuss about the project. Try to get more information about the project from the mentor.

He/She is the only resource person who knows totally about the project.

If you are learning anything new, then just write some blog posts about that. It will increase your chance to the GSoC. Blogging is very important to the Open Source world. You should expose your knowledge to some others using the blogs or any other writing materials.

Read articles and learn something new, then Write blogs about that!

If you can find any ideas to write something about the organization which is your target or any ideas related to your project domain will increase your changes for the GSoC. It will express your ability and interest to the others as well as a community.

No need to fulfill the GitHub timeline with all green boxes. Anyway you need to have some of the green boxes at there :-p (I think. I had only 10% of green boxes when I was planning for the GSoC)
The Community will not depend on your GitHub timeline. You don’t need to think about that much. They only expect your interest and commitment to the project.

Before the Google Summer of Code period
During the Google Summer of Code period

GSoC Project Proposal Techniques

You can apply maximum five projects for the GSoC. Anyway, you need to work on that projects and want to show your efforts to the community. Showing efforts to five projects will not increase your chance at GSoC. So just plan and catch 1–3 projects among them and work only for those during the proposal time.

Please go through the official proposal template for the organization which is your target. Each organization prepared some proposal templates for their easy of access. If you missed that templates, then you can’t think about the GSoC :-p

If you can, just implement some demo samples for your project and include them in your proposal. Do not forget to include the timeline for the project. Clearly, indicate the main task and sub task about your project plan and better to describe those within 1–2 sentences in the timeline.

Do not wait until the last minute of the proposal submission deadline. Start working on proposal writing before one or two weeks and check all the spelling mistakes, grammar, and terminologies carefully. Making mistakes in the proposal may decrease your chance at GSoC. You should fit on your proposal and show your innovative ideas through your proposal.

Submit your draft proposal before one week of the submission and request your mentor or community to review that. Do not ask them at the last minute for the review, then surely they will fire you. If you ask early as possible, then they will spend some more time to review your proposal will give some comments to improve your ideas. Then finalize the proposal and submit to the GSoC.

What I learned through the Google Summer of Code 2017

I learned a lot of new aspects during my GSoC time. I got an awesome mentor :-). He helped me in so many ways and community cared about me every time.

  • A Chance to work with Community — A good chance to get more contacts from the industries and make friends around the world.
  • Good value for the Resume/CV — Yes, Definitely GSoC will replace the first row in my Resume/CV. It will some extra advantages while applying for the software related roles. Tech guys know the impact of the resume in their career.
  • Stipend — You are not supposed to do anything free to the community. Google will pay you! You can’t imagine the amount within your college time. I think you can buy a new Mac Book Pro or you can pay your semester fees with your GSoC stipend amount.
  • One time referral for the Google — You can get one time referral for the Google Jop. Then you will be interviewed for the role. If you satisfied their requirements during the interview, then you can land on the Google!
  • Colors — Yes, You are the most wanted guy in your university because of the contact with Google. Some of the universities honored their GSoC students and gave some credit for their works also.
  • Chance for the Mentoring — If you played your student role very well and completed your project with some good comments from the community, then you will get a chance to become a mentor for next GSoC. It will increase the chance to join with the Organization as an employee.

Hopefully, I have developed these following skills during my GSoC time,

  1. Technical skills — I learned a lot of new techniques for my project. I already familiar with most of them but I want to know them deeply to create new ideas about my project features.
  2. Coding conventions — How to code better and how to maintain the coding standards among the community
  3. Documentation Skills — I wanted to create some documentation for my project also. So I learned how to handle the wiki pages and documentation pages. Got some experience with documentation preparations tools.
  4. Open Mind — I learned how to review the PRs and How to guide others. Yes, we are allowed to guide other projects also. That means we can suggest our ideas in the talk thread and able to move with that ideas also.
  5. Problem Solving techniques— I faced some critical problems while working on the project and asked help from the community. There are so much of resource persons and they came up with different solutions. So I can learn from their solutions, How to think like them within my self.
  6. Blogging habit — Yes, I wanted to write blogs at least once per week. So I just updated my weekly works to the blog and explain the steps at there. So totally I created more than 12 blogs during my GSoC time. It increased the blogging habit among us.

This is the final report about my work for the Google Summer of Code 2017,

More Metadata Management in AdminUI — GSoC 2017 Project

Spend some time during your summer and, Start Your Engineerings!

Do not miss your years!

Google Summer of Code 2017 had 12 mentors under the age of 18.
Say what? 15 years old!? Yep! This group of enthusiastic teens started their journey in our sister program, Google Code-in, an open source coding competition for 13–17 year olds.

Prepare you for the next Google Summer of Code…!

by Kailayapathy Suthagar at September 26, 2017 06:47 AM

September 14, 2017

Alexis Duque

Tutorials on PhantomNet and Paradrop

University of Utah

On October 15th, a day before the start of MobiCom, I will attend two hands-on tutorials hosted at the University of Utah about two emerging wireless technologies: PhantomNet, a platform with an end-to-end mobile testbed to experiment with new wireless technologies in the wild; and ParaDrop, a new edge computing platform that allows experimenters to deploy edge services in a WiFi Access Point.

September 14, 2017 07:39 AM

Make your Bluetooth Low Energy IoT device more secure with Visible Light Communication

I wrote a post on Medium about Bluetooth Low Energy security showing how Visible Light Communication can improve it.

Follow this link to read it on Medium.

About IoT security

Since the Internet of Things is still in the emerging phase, ensuring security and privacy is an important issue that must be addressed and resolved now.

The number of IoT and connected objects grows exponentially, so their security exploits will have more and more repercussions, making them very attractive for the hackers. Recent news and the growing IoT track at security conferences such as Blackhat, or Defcon perfectly illustrates this phenomenon.

About Bluetooth

In regards to Bluetooth, the SIG greatly enhanced the BLE security releasing at the end of 2014 the Bluetooth Core Specification 4.2. This update introduces LE Secure Connections pairing model with the numeric comparison method and the Elliptical Curve Hellman-Diffie (ECDH) algorithm for the key exchange.
LE Secure Connections fixes BLE 4.0–1 exploits unveiled in 2012 by Mike Ryan at TOORCON (video, crackle project).

Like LE Legacy pairing, LE Secure Connection defines several modes and levels of security (see section 5.2.4 Association Models of the Bluetooth Core Specification 4.2). Nonetheless, the available modes depend on the “IO Capabilities” — keyboard, display, button — that the pairing devices have.

The highest level of security, Numeric Comparison requires that both BLE devices have a keyboard and a display to confirm and compare a number displayed on both the peripheral and smartphone. An alternative and more convenient approach is using NFC.
By placing a smartphone close to the BLE (and NFC) peripheral, NFC will automatically initiate the BLE pairing and keys exchange mechanisms to establish an authenticated and encrypted communication channel.

However, the highly limited bill of material (BOM) cost or the PCB size prevents placing a screen, an interactive input, or an NFC antenna on such devices.
As a consequence, they provide a weak level of security whereas the attacks targeting such smart objects are rising.

To overcome this issue, we propose a technological solution based on Visible Light Communication (VLC) solution to assist the pairing and the secure connection setup between a BLE 4.2 peripheral and a smartphone.
This solution targets low-cost and size-constrained IoT devices that need to setup the Secure Connection with Numeric Comparison to provide a high level of security even on BLE devices that have neither input and display nor NFC.

Few words about Kiwink and VLC

Rtone has recently developed Kiwink®, a short range bidirectional Visible Light Communication system between an unmodified smartphone and a basic and cheap LED.
Kiwink® uses the camera and the flashlight of an Android or iOS smartphone and does not need hardware modification in the IoT peripheral since it works with any micro-controller.

In fact, bringing Visible Light Communication to your nRF52 BLE device just need a firmware update!

The communication range of such technology is tens of centimeters while the throughput is about 1kbps from the peripheral LED to the smartphone and 50bps from the smartphone to the peripheral LED.

Kiwink® is a trademark and its technology patented.

Improving BLE security with Kiwink and VLC

To solve the problem described above, we propose to take advantage of this VLC-based technology and ubiquitous LEDs, to provide a safe side channel to acknowledge or display a confirmation code and establish a BLE Secure Connection. We can also envisage to transmit a larger key if another Secure Connection mechanism is used.

This out of band key exchange is thus safer than NFC against passive eavesdropper since the light signal is highly directive and easy to obfuscate.

In practice, the connection establishment should work as follow:

  1. The smartphone starts sending a BLE Secure Connection request to the peripheral
  2. The smartphone and the peripheral proceeds to the Secure Connection Establishment with Numeric Comparison according to the BLE 4.2 standard
  3. While the smartphone confirmation number appears on the smartphone screen, the peripheral LED starts lightning and transmits its number.
  4. By placing its smartphone above its screen, the application decodes the signal and displays the peripheral number on the smartphone screen.
  5. The user confirms that both codes are equal.
  6. The smartphone sends the acknowledgment to the peripheral using the flashlight.
  7. The peripheral decodes the acknowledgment signal and the secure connection establishment can proceed according to the BLE 4.2 standard.


We have shown that Kiwink and VLC offer the possibility to setup a SecureConnection with Numeric Comparison or Out-Off-Band authentication on low-cost and size-constrained IoT devices that have neither input and display nor NFC.

Our solution brings a high level of security on BLE devices that would have been completely unsafe otherwise. The costs of this major improvement are negligible since Kiwink only relies on a cheap LED and a piece of software.

Besides, many application fields and use cases of VLC exists like access control, device-to-device communication, or accurate indoor localization using ceiling LEDs (Kiwink website gives further information about VLC).

Finally, feel free to give your feedback about that. We are are waiting for your comments and suggestions!

You can also read this post and engage the conversation on the NordicDeveloperZone.

September 14, 2017 07:36 AM

August 28, 2017

Lahiru Jayathilake

GSoC 2017 - Final Report

Patient Matching 2.0

Student               -    Lahiru Jayathilake 
Primary Mentor   -    Burke Mamlin
Backup Mentor   -    Shaun Grannis

Project Wiki        -    Patient Matching 2.0
TALK Thread      -    OpenMRS TALK Thread Patient Matching 2.0
GitHub  Fork       -    Lahiru-J/patient-matching

What is Patient Matching 2.0

Patient Matching Module is an application where it tries to identify records that belong to the same patient among different number of data sources. This module is significant because in real world it has to be dealt with erroneous data. For example, a patient’s name can be misspelled. Benefit of this module is by linkage of records it would be easier for a patient to visit a hospital without carrying hard copies of test results whether or not the tests were done at the same hospital.

Summary of the Work

✔︎ Incremental Patient Matching

To give a little introduction on what incremental patient matching is, it is a method of identifying duplicate patients very efficiently. 
In a real world scenario, the requirement would be to match thousands of patients with each other. Once this matching process continues it would be very time consuming since all of the patients are compared with each of them regardless of the fact that two or three new patients are added/updated. Incremental patient matching is used as a suggestion to save time.

This task was my primary goal and I have successfully completed it.
Following are the commits & pull requests related to this task. Note that commits related to a branch are squashed according to the OpenMRS convention.


PTM-82 -  

PTM-83 -

PTM-84 -

PTM-85 -

PTM-86 -

PTM-89 -

Pull Requests

PTM-82: Functionality to load patients considering the date created and date changed

PTM-83: Save and update incremental patient matching report to the database

PTM-84: Functionality to support two datasources

PTM-85: Functionality to select or deselect incremental match

PTM-86 : Remove matching pairs from the report when patients are updated

PTM-89 : Ignore voided patients when running a patient match

✔︎ Merge Patients

If some of the patients in a group supposed to be the same then the user can merge those patients making they will not appear again in a patient matching report. 

PTM-87 -

Pull Request
PTM-87 - Functionality to Merge Patients in the report

✔︎ Exclude Non-Matching Patients

There can be some scenarios where the module results some of patients to be same but in real life those patients are related to totally different people. If this happens Patient Matching 2.0 project provides a functionality to eliminate such records without them repeatedly appearing on a patient matching report.

PTM-88 -

Pull Request
PTM-88 : Functionality to exclude non-matching patients

Blog Posts

Blog Post
Week 12
Week 11
Week 10
Week 9
Week 8
Week 7
Week 6
Week 5
Week 4
Week 3
Week 2
Week 1


Throughout this summer I learned a lot. Whenever there were problems related to the project I had a great support from my mentor and the community. Participating in daily scrums showed me how good this OpenMRS community is. 
My mentors are the best. They gave me guidance at the first place, conducting many video conferences because of that I could carry out this project with a sound knowledge. Burke, Shaun thank you very much for your support throughout this summer. I feel really grateful to these mentors.

by Lahiru Jayathilake ( at August 28, 2017 04:57 PM

Ankit Kumar

Week 12 - GSoC Final Evaluations

This is the last week of GSoC 2017 and we are trying to scrub our code and making efforts to design the final presentation demo. Time flied and we got many new things to learn this summer. The experience I got by interacting with the some of the brilliant minds in the community can't be explained in words.
Past week I almost completed the "Patient Create" component with proper validations and provided the functionality of selecting the identifier type so that this component may work for each and every one.

Link to my openmrs talk thread where whole project is described :

Link to the project wiki :  here

Code Contributions :

Merged PRs :


The above PR covers almost more than half of the work done this summer.
It covers :
** Introducing the use of ui-commons library.
** Use of some of the components from the ui-commons library i.e header component, breadcrumbs, notification and translate component.
** Designing new search components as per the suggestions of the community. The four search components are : Patient search, Encounter Search, Observation Search and Provider Search.
** Scaffolding the testing infrastructure for AngularJs into the Generator. Testing Environment was set up using the Jasmine and Karma Environment.
** Writing tests for all the four search components with the use $httpBackend for faking the  REST calls.
** Removing the transition superseded error by providing relevant config into the home.js file.


The above PR consists of the "Patient Create Component" which consists of the options for selecting all the identifier types, all the locations and it also has the feature to generate the OpenMRS identifier through the idgen module.
I have provided all the onField validations with the red color as depicted by the OpenMRS style guide.
I have also provided a short summary at the top of the form to facilitate a better UX.

Note :  A detailed description of this component is provided below in this blog post.






Final Presentation demo video (covers whole project in brief) : 

Demo for the Patient Create Component

Previously, it was planned to devise an easy way to introduce the FHIR module into the generator, but as REST api's are widely used today, so we decided to take suggestions from the community and after that we agreed upon the proper use of REST API into the generator.

I then created a patient search component having following features :

** Includes two steps having text field of varying size (as per the length of the input characters)

** First step includes the fields which basically needs the patients personal details like Name, Age, Address, Gender, etc. (address fields are optional hence hidden by default)

** The second step includes a select box which contains a list of all the identifier types (fetched by querying the REST API's).

while OpenMRS ID is selected as an identifier

while Old Identification Number is selected as an identifier

** Once an user selects an appropriate identifier type, he/she will get the form field as required. for example, in case of the identifier "OpenMRS ID", we only need the one identifier but in case of other identifiers, we need one extra field apart of that "OpenMRS ID Identifier" field (as shown above).

** As the OpenMRS Identifier uses the LuhnMod30Validator Scheme, hence I have also provided an option to generate the openmrs identifier through the idgen module by querying as below :


** have proper onField validations with the colors mentioned in the Openmrs style guide.

** Apart from the onField validations, a short summary of the response is also shown at the top of the form (so that an user could get the idea of what actually happened after submitting the form)

** All the summaries are placed into proper colored div boxes i.e green color for the success and fade red for the errors boxes (all are according to the openmrs style guide).

Demo for the error and success summaries

**Note : While creating the patient create component, I had also shown the proper use of breadcumbs and a good example of ui-routing by placing a link at the home page and then changing only the end hash element of the URL (for this I used the ui-sref like below) :


Proper use of breadcrumbs:

My future plans on this Project

** To add a ul form breadcrumbs design to the patient create component

** To add Angular 2 scaffolding

Ankit Kumar

by Ankit Kumar ( at August 28, 2017 06:36 AM

Xu Hao

Google Summer of Code 2017 with OpenMRS

Google Summer of Code is sponsored by Google, which aims to allow students to writing code and learning about open source development while earning a stipend with their summer break. There are many amazing projects that you can select your favourite. If you are accepted, your organization will provide mentors for your project to help you to complete the project.

OpenMRS is a collaborative open source organization which aims to develop software to support the delivery of health care in developing countries. And In fact, there are many helpful developers, implementers and user in OpenMRS community from around the world who contribute to the OpenMRS projects.

I am glad that I am one of the students of Google Summer of Code 2017 with OpenMRS, and now GSoC 2017 is coming to an end, so I would like to make a summary of this summer vacation of my life.

Open Concept Lab Enhancement


Open Concept Lab (https://openconceptlab.org1) is the tool that we want to use in the OpenMRS community to mix-and-match shared, curated concepts (e.g. from the CIEL dictionary) with locally-defined concepts.
The goal of this project is to make UI enhancements to OCL to make it easier for OpenMRS implementations to use it to create and share content.

Main Objectives

  • Add a “Fork This Concept” feature to be convenient for user to make local edits to someone else’s concept
  • Add a graphical “Diff Viewer”. User can view the changes across concepr versions.
  • Add a “Relationship Browser” view in OCL, so user can see immediately-related concepts in an intuitive way, and quickly browse to them.

Extra Objectives

  • Fork This Mapping
  • Diff Viewer can compare different concepts to each other.


I put all features in one pull request with each module, so there are many changes in each pull request, and mentor is reviewing it. So it needs time to be merged. Sorry for this.



Future Work

  • Add a “Fork This Collection” feature, e.g. so an implementation could take a form of “OpenMRS Condition List starter set” and make some local modifications.
  • Make UI more beautiful



Time files, three months has passed. There are too many words to talk in my heart.

Firstly, thanks OpenMRS very much, OpenMRS is reponsible and helpful to students. OpenMRS arranges everything for our students, which is with the bases that I can finish my work better.

Secondly, sincere thanks to my mentor @paynejd who gave me many help to finish this project. He always be patient and helpful to my questions and problems, I can ask him for help no matter what diffculties I encountered.

In the end, thanks to Google for sponsoring the project, providing chances for our students to contribute to open source project.


Xu Hao

by Xu Hao at August 28, 2017 03:50 AM

August 27, 2017

Shivang Nagaria

GSoC’17 — Data Integrity Module

GSoC’17 — Final Blog Post

Hello Everyone,

This post is the summery of what I did during GSoC 2017 and how you can use it along with other useful resources.

Primary Mentor: Stephen S. Musoke (@ssmusoke)
Backup Mentor: Mayank Sharma (@maany)

OpenMRS receives data from various sources which have a different implementation. It is not always possible to check the validity of the data immediately, thus the Data Integrity Module is very helpful to check the validation of the data and alert the administration if something wrong. It helps to maintain data quality.


  • Improved filtering and display of results page.

Added multiple filters, upgraded the datatables versions. Arranged various components in intuitive way.

Result Page
  • Added feature which exports filtered list of results into CSV, Excel or PDF.
Export Buttons
Exported List

Added this feature using the datatables library. Adding icons in OpenMRS was a tough task.

  • Create and Expose Module’s APIs

Most of the APIs are written but some APIs are left along with their unit tests. Learned about Test Driven Development here. Used OpenMRS Web-Services module.

  • Externalize all Labels, messages, and errors into the module

There was lots of hard-coded string in the module. Moved them to a particular file which can also be used for localization.

  • Others

Updated ReadMe of the project and few wiki pages. Added an example module which is already integrated to Data Integrity Module.
Minor fixed in patient dashboard — took me a lot of time to understood the working of widgets within OpenMRS.

What’s left

  • DINT-82: Create and Expose Data Integrity Module APIs
  • DINT-70 — Add the ability to run SQL based rules

There are the two major work left I couldn’t complete during GSoC period. Anyways, I’ll keep contributing in OpenMRS with the focus of completing these tasks first.


Pull Requests

  • DINT-73: Improve filtering of results of results from running the rules
  • DINT-79: Update README
  • DINT-77: Add dashboard widget definition
  • DINT-76: Add capability to export rule violations to CSV and/or Excel
  • DINT-80: Externalize all Labels, messages, and errors into the module
  • DINT-82: create and expose API of the Data Integrity module — Work in progress
  • UICM-76: Need to update version of Datatables.
  • DINT-77: Dashboard Widget — Should show the note for the result by default
  • AC-408: Write Introduction (Android Client User Guide)
  • Android Client User Guide Readme updated.

Issue I’ve opened

  • DINT-82: create and expose API of the Data Integrity module.
  • RA-1382: Patient Dashboard — buttons shift below if text beside it is very long
  • DINT-79:Update Data Integrity Github README
  • DINT-78: Update Data Integrity Wiki Page to reflect latest updates
  • UICM-76: Need to update version of Datatables


After last midterm evaluation there wasn’t much visual addition so I’ve used the same video.


I have learned lots of things that I couldn’t even count. From Webpack to sass, Hibernate to Test driven development, etc. I found mentors and OpenMRS Community is very helpful whenever I got stuck somewhere or whenever I need any feedback.

Before GSoC, I haven’t contributed to any OpenMRS module and it took me a lot of time to understand the architecture and working of OpenMRS. During the community bonding, I was struggling to set-up data integrity module on my machine. Mentors and especially, @ssmusoke was very patient and encouraging. He helped me in every way possible in each and every time I asked for help or guidance. Overall it was a great fun and learning experience.

There is a lot of work needs to be done and I really love contributing to OpenMRS so I will keep contributing.

Thanks Stephen(@ssmusoke), Daniel(@dkayiwa), Darius(@darius) for you help. Thanks OpenMRS for such a wonderful summer :D


by Shivang Nagaria at August 27, 2017 01:52 PM

August 26, 2017

Jai Tatia

FINAL REPORT GSOC-2017 [Generic Tagging Mechanism]

Generic Tagging Mechanism

Primary mentor : Wyclif Luyima
Backup mentor : Burke Mamlin
Student : Jai Tatia
Project wiki : Link To Wiki

OpenMRS has always lacked a mechanism that allows users to annotate domain objects with simple text labels/tags, these labels can be useful in various ways e.g to group data and generating work queues. The goal of this project was to provide a tagging mechanism in OpenMRS that cuts across all domain objects.


There were changes made to the objectives midway based on feedback from the community.

  • To create a generic robust Api which will interact with the database and can be used for tagging OpenMRS Objects. (COMPLETED)
  • To create a Rest Resource to expose the module and to be able to make Rest Calls to obtain tagging related data. (COMPLETED)
  • To create a UI fragment extension to the second Column Fragment of the clinician facing patient dashboard, for performing simple functions such as adding, removing and viewing tags. (COMPLETED)
  • To add a feature where-in clicking on a tag redirects to a page where all Patients having that tag are listed. (COMPLETED)

The following pages cover the implementation details, including rest calls and the user interface.

Video Presentation:

Commit History

Main Project Link

Other Resources

Project Documentation:
Talk Discussion:

Blog History

by jtatia at August 26, 2017 05:42 PM

Reuben Varghese

GSoC 2017 — Add-On Index Enhancements | Gist of work done

Add Ons Enhancements

Primary mentor : @darius
Backup mentor : @mseaton
Student: @reubenv
Project wiki: Link

Personal website:


This project aims at making certain changes to the existing OpenMRS Add Ons infrastructure thereby making it fit as a complete replacement for the existing OpenMRS modulus. The main motive behind this project is to be able to completely retire OpenMRS modulus whose codebase has become tough to maintain. OpenMRS Add Ons also supports OWA’s which is a vital feature that Modulus lacked. The developer is now free to host his module in any of the supported hosting sites while Add Ons does the job of adding it to the OpenMRS module index. Add Ons also gives the freedom of choice of hosting location in hands of the module developer. Add Ons is built on a light framework and hence is hopefully easier to maintain as compared to Modulus.


  • (Front-end) Allow a user to find add-ons that are compatible with their particular version of OpenMRS
  • (Backend) Support for indexing Modules and OWAs that are released as GitHub Releases
  • (Front-end) Show a list of most-active or most-downloaded modules
  • (Backend) Add new Rest end points for getting module by its Package Name and also add the Package
    Id as metadata to the details of a module
  • (Backend) Improve Search algorithm used
  • (Front-end) Improved utility of tags in add-ons
  • Ensure smooth migration from using as the primary data source to Bintray
  • Ensure Add-Ons is live by the end of GSoC period

Final Video Presentation

GSoC Contributions


Other Resources:

Project Documentation:
Talk Discussion:
Blogs: Medium blog


I must admit that this has been by far one of my most productive summers yet. I loved every moment of working for this organisation. There have been so many nights, I was up all night implementing features, not because I was forced to but because I was enjoying it. I would like to especially thank @darius for his immense support, help and patience. He has been patient enought to review all my silly mistakes and poor coding habits. He is a person who clearly stands by this quote : “The finest steel has to go through the hottest fire”. He ensured that I fix each and every minute detail in my PRs so that I won’t commit those silly mistakes again. I must admit that my coding style and knowledge has surely improved greatly. I also wish to thank all of the other wonderful members for helping me get involved in this community.

Though GSoC is coming to an end, my contributions to this community will continue for a long time. So don’t miss me just yet

by Reuben Varghese at August 26, 2017 05:28 PM

August 25, 2017

Suthagar Kailayapathy

OpenMRS SystemAdmin Open Web App

GSoC 2017 — More Meta Management in Admin UI

Module Management

System Information

Manage Scheduler

For more project information,

by Kailayapathy Suthagar at August 25, 2017 05:22 PM

August 24, 2017

Jude Niroshan

There is no project type called Reference Application.

There is no project type called Reference Application. There are only platform modules. Platform modules are the ones which runs on the OpenMRS platform. FYI, there is a platform module called “Reference Application”. But this is just another typical platform module.


by Jude Niroshan at August 24, 2017 07:48 AM

August 22, 2017

Jude Niroshan

Shivang Nagaria


Hello Everyone!

Last week I continued working on DINT-82 which is going to complete soon, the complex stuff is done, just need to build on it.

This week is 12th week— i.e. last week of GSoC. I have learned lots of things during this period of 4 month (including 1 month of community bonding). I will include all the things I learned in my final post of GSoC’17 .

Coming back to DINT-82, I had real problem testing the REST APIs I was building. Basically, these APIs are written in Java and there isn’t any default hot-reload support for this so testing them every time you make a change was a real pain. Finally, tired of restarting server again and again I asked my mentors what can we about it ? Darius came to my rescue — I was introduced to test driven development. It is a great method for test if being developed feature is working as it supposed to.

I also learned that how can you mock the database and use it for testing, you just need an xml file with the data.

That’s all for now. Thank!

Useful links:

by Shivang Nagaria at August 22, 2017 08:25 AM

Jude Niroshan

Google Summer of Code with OpenMRS — Final Report

OpenMRS is an open source community driven software which can be used in clinical environments(specially for resource constrained). It has many functionalities and it is widely used across millions of users. As there are many users, product has different variants for different use cases. Typically those are known as distributions. OpenMRS keeps a general purpose distribution called Reference Application. This distribution comes with a modern UIs and most essential modules which needs to have for any clinic to manage the work.

It was suggested that to include reports which are out of the box for Reference Application which gives a better picture about the system data. So, this idea has turned out to be a Google Summer of Code project in 2017.


Built-in reports for Reference Application


Final Presentation (OpenMRS talk thread post):

GSoC 2017 - Built-In reports for Reference Application | Final Presentation

Project Goals:

  • Define reports inside the OpenMRS server
  • Access those reports through Reporting REST API
  • Create a new Open Web App
  • Visualize Data through charts

Basic Reports

  • Number or Visits
  • Number of Patient Registrations
  • Number of Admissions/Transfers/Discharges per service area
  • Number of Visit Notes
  • List of Diagnosis’s made and quantity
  • List of Providers (grouped by active/retired)
  • List of Users (grouped by active/retired)
  • List of new Patient Registrations
  • Patient Visit Report

Implementation in brief

Before starting any work, knowledge about the reporting module is essential to this project. The best time for this was the Community Bonding period. Within this period, basic reports were created by simply using the reporting module. This is purely a functional task which involved no coding work. This led the developer to get a clear picture of the existing module functionalities and how it should be used in order to achieve the project goals.

This was communicated in the first meeting with the mentors.

First meeting with GSoC mentors

Defining reports inside the server would give a clear idea on what needs to be achieved. Therefore, development work was started by defining the reports inside reference application module. Once the module has deployed into a OpenMRS server, those defined reports has to be created automatically. It was realized that those report definitions actually needs to resides within the Reference MetaData module rather than Reference Application module. So, those developments were moved to this module.

Implementing reports in Java — OpenMRS

Server side commits — ReferenceMetaData module:

Client side — Open Web App:

Once this has completed, it was time to create a new Open Web App to access those reports and display them with rich graphical interface. This new web app makes calls through reporting REST API in the OpenMRS server.


Problems faced while development:

There was a build problem I was facing while implementing the unit tests.

Implement a report inside a .omod (Build Error)

I have spent some weeks struggling on getting the created_date into a cohort definition. Finally with the help from Mike Seaton I was able to find a solution.

how to get date_created as a data definition [solved]

When I was fetching the report data through Reporting REST API, I was facing some other problems to get the proper report data.

Fetching a report to OWA through Reporting REST API

Passing Location as a parameter to some of my reports through Reporting REST had an issue. My mentor Rafal helped me to get through this problem.

How to pass Location object from OWA to reporting REST API

Mid-term presentation

Basic Reports:

These are the report interfaces which are implemented inside the openmrs-owa-built-in-reports

Weekly blog posts:

OpenMRS talk thread:

Since the day I decided to work on this project and being selected for Google Summer of Code 2017, all things can be tracked down in this thread post:

[GSoC-2017] : Built-In Reports for Reference Application

I would like to take this moment for say a big thanks to my mentor Rafal Korytkowski who gave me this wonderful opportunity to become a GSoC student and work on this cool project.

Also special thanks goes out to Akshika Wijesundara who supported me in lot of ways to get into this position. Without him, I wouldn’t have the privilege of becoming a GSoC student.

by Jude Niroshan at August 22, 2017 07:35 AM

It’s great work, and you have completed everything!

It’s great work, and you have completed everything! This is really helpful for future GSoC students.

by Jude Niroshan at August 22, 2017 07:02 AM

Chanuka Wijayakoon

GSoC 2017 With OpenMRS – Operation Theater Module Workflow Enhancements

It’s a little hard to think 12 weeks have passed already. But as they say, all good things must come to an end. So goes Google Summer of Code 2017 with OpenMRS. This summer, I worked on the Operation Theater module to bring it up to speed with 2017. The project had 2 main targets. …

by merovingienne at August 22, 2017 05:21 AM

Ayush Goyal

GSoC Week- 12

So this is the final week of GSoC, the time was amazing I learnt a lot of new things and my coding skills improved lot. I was quite busy at the end due to college and internship season but still I managed to work it out.

Last week I worked a lot. I tested the app in every possible way to find bugs and fix them at the earliest. I also added somore features and started writing my final report too.

by Ayush Goyal at August 22, 2017 12:39 AM

August 21, 2017

Jai Tatia

WEEK 12 [16th August – 22nd August]

This was the final week of GSOC before the evaluation week begins. For this period i added a feature where clicking on a tag redirects a user to a page which lists all patients with that tag.

Screenshot from 2017-08-22 00-48-33

This week will mainly be spent on cleaning up the code, getting rid of any bugs and completing the documentation.

by jtatia at August 21, 2017 07:21 PM

Nipun Thathsara

Refining and Working on Demo.

As i've finished all the objectives listed in the project site, this period is used to do refinements and creating the final demo of the project.

I've given all the information on building and running the product in the previous post.

Github Repos

I've forked all three repositories that were required to register and test an Unknown patient.
But developing on the master branch of each repo seems to be useless as Openmrs barely support any backward compatibility.
If i were to develop the platform using the master branch, it would not be compatible with the modules.
Therefore, my approach was to develop using the versions that are available on the downloads page, so that they are confirmed compatible with each other.
However, i still needs to talk further about this with my mentor.

When develop using a version other than the master branch, i've selected the tag releases. This caused me a serious problem at the end since i can't push any changes to a tag branch.
Sincere there were not much of a choice left to me, i've created a branch in each repository starting
For now, you have to refer to this branch in Core, RegistrationApp and RegistrationCore modules.

I'll update the blog once the demo video is done.

by Nipun Thathsara ( at August 21, 2017 05:52 PM

Lahiru Jayathilake

Week 12 : Exclude Non Matching Patients

In this week I have been working on the PTM-88 which is to exclude set of non-matching patient records from the report generation process. 

The main reason to carryout this task is, the match process generates a list of highly likely matches (probable duplicates) for human review. The human reviewer will declare true matches and non-matches from this list. Currently, the Patient Matching module repeatedly presents all likely matches each time it runs, without being informed by the human reviewer information learned from prior runs. 

User Interface,

You can exclude the patients by selecting them and clicking the button Exclude Patients.

by Lahiru Jayathilake ( at August 21, 2017 05:12 PM

Choxmi Sathsara

GSoC @OpenMRS 12th week — DHISReport Reporting Enhancements


DHISReporting module automates the process of running sql queries against an OpenMRS instance and posting the results to a DHIS2 instance. It even exposes a set of web services that can be consumed through your applications or by using cURL. The module works with OpenMRS 1.9.x and higher.


  • Implement report mapping function

Report mapping function is about mapping DHISReports with Reporting module reports. With this functionality DHIS Data elements will be mapped with the Reporting Indicators of the reporting module. More

  • Handle un-mapped reports

Module should be able to handle the data indicators which hasn’t mapped with any SQL query or any other cohort report. With this implementation, those reports will be indicated and will not allow the user to generate the report until the mapping is get completed.

  • Generate report history in reporting module and link history to DHIS report

With the new implementation, now user can view the history of the reports which is linked to DHISReports. About this implementation and un-mapped report part is described here.

  • Prioritize the report generation

This objective is about report rendering. The user can decide which should be prioritize when rendering the report. It can be SQL or Reporting. Some reports may have mapped with SQL Cohort reports. In that case the query result may be different from the result generated in reporting module. This functionality will address that issue. More

Demo (Created for mid evaluation. Prioritize the report generation hasn’t included) :

Documentation :

Github URL :

Blog posts : week1, week2, week3, week4, week5, week6, week7, week8, week9, week10week11

Issues reported and worked on : DRM-28 , DRM-9 , AC-395 , AC-399 , REPORT-812 , REPORT-828

by Choxmi Sathsara at August 21, 2017 03:53 PM

Xu Hao

Open Concept Lab enhancements — The 12th Week of GSoC 2017

Hello, guys, as you see in the title, this is the last week of coding period, and we should finish the coding work to be ready for the last evaluation. In fact, I have to say, this is a difficult week for to to do the last objective. Because I have to show the data with visualization. You know that, front-end is hard for me. Up to now, I have a question that I can not solve.

Alright, I say something about the work in this week. You know that, the objective of this month is to add a “Relationship Browser” view in OCL, so that when you are looking at a concept, you can see immediately-related concepts in an intuitive way, and quickly browse to them. So what I should do is that get right data and display them with right way. So Firstly, I coded in back-end to get data, and select them to delete data that does not match. And Secondly, I should show them with visualization ways, so I need to find a right JavaScript library to use, but I met an emergency, so I asked for mentor to help me find a proper JavaScript library. Now, I am working for show data with it.

In fact, I encounter the problem that show the data with JavaScript library, so I have to solve it tomorrow, and finish the work of this month. And I need to get ready for the last evaluation. That’s all work I will do next week.

That’s all, thanks to everyone who cares for me and helps me a lot. Have a good time.

by Xu Hao at August 21, 2017 03:37 PM

Reuben Varghese

WEEK -11 Updates [12th August — 19th August]

This is the 2nd last week of Gsoc and I was busy fixing some issues that were caused after migration to Bintray . After all , no script can be perfect ;-)

Moreover, I’ll be focusing on getting the Module versions based on user platform version to work. I am currently also trying to tackle my college exams on the other hand and hence was busy;-)

Personal website:

by Reuben Varghese at August 21, 2017 02:43 PM

Gsoc 2017 Final week @ OpenMRS

After 3 whole months, 2 evaluations, thousands of LOC, countless nights of coding, this week has finally come when Gsoc comes to an end. I am not sure whether I am happy or sad about it but one thing is for sure and that is that I will never forget this experience ever. Moreover, I am so glad to have got this opportunity to work with an open source organisation.

Coming to the progress report, this week had been all about getting the new Rest APIs set up and also the suggestion of modules compatible with the user’s platform version. In the final week, I will be implementing the download counts feature wherein I’ll be fetching the info from Bintray and rendering it in Add Ons.

So finally, now comes the big question. Will the Gsoc mean the end of my relation with OpenMRS? NEVER! I absolutely love working in this organisation and I don’t think I’ll ever want to stop contributing to it.

Personal website:

by Reuben Varghese at August 21, 2017 02:37 PM

Suthagar Kailayapathy

More Metadata Management in AdminUI — GSoC 2017 Project

Google Summer of Code Final Report — Week 12


OpenMRS Legacy Module contains a lot of administrative functionalities which are needed to manage the reference application. Most of this administrative functionalities contain a legacy model and less experience to the users. So OpenMRS Community wanted to migrate those administrative features to the Modern Open Web App view. More Metadata Management in Admin UI project is one of those projects which are designed to migrate some of these administrative functionalities to the modern open web app view. In the More Meta data Management in AdminUI project, We focused on this following functionalities,

  1. Manage modules
  2. System Information
  3. Manage Scheduler

Those features are implemented as Open Web Apps with the modern view to the users.

More Metadata Management in AdminUI - GSoC 2017 Project - Projects - OpenMRS Wiki

Project Goals

  • Migrate the legacy functionalities to the modern open web apps
  • Increase the user experience and feasibility of the legacy functionalities
Use some better user interfaces instead of legacy model
Change the workflow of the functionalities to increase the usability
Simplify the administrative functionalities for the users.
  • Extend the usage of the legacy functionalities with REST APIs
  • Extend the administrative features using existing functionalities
  • Improve the problems which are identified in the legacy UI modal
Implement Module Drag and Drop features
Implement Module Information page
Allow user to directly download the modules from OpenMRS Addons
Increase the System Information view
Implement Real Time Task Execute features

Demo Presentation


Those features are implemented as an Open Web App and included into the SysAdmin Open Wep App.

Used technologies for the developments,

  • Front End Development : HTML, CSS, Angular JS, jQuery
  • Back End Development: Java, REST API
Home Page of the Open Wep App

Manage Modules

This feature will be used to manage the modules in the OpenMRS reference application. Users can use this implementation for this following functionalities,

Features of the Manage Modules

  1. List all the installed Module — New Icons used to indicate the module status
  2. Start the module
  3. Stop the module — Confirmation Pop up will be shown with the dependent modules details to alert the user
  4. Delete/Unload the module — Confirmation Pop up will be shown with the dependent modules details to alert the user
  5. Check updates — Module updates will be checked with OpenMRS AddOns and listed in the new page for
    the user selection.
  6. Check one module update — Check the update with OpenMRS AddOns and indicate the update status
  7. Start All Modules — No Modifications
  8. Add/Upgrade Modules — Implemented Drag and Drop feature
  9. Search Modules — Connected with OpenMRS Addons and user can search the module independently
  10. Search Module Information — User can view the detailed information about the searched module
  11. Module Information View — Used to display the module information with required modules, aware of modules,
    and depend on module details
  12. View not installed module information — Connected with OpenMRS add-ons and indicate the user about the installation features.
Some of the Manage Module’s screens

System Information

This feature will be used to display the System information about the OpenMRS server and the system. Users can use this feature to get this following information,

  1. OpenMRS Information
  2. Operating System Information
  3. Java Runtime Information
  4. User Information
  5. Memory Information
  6. Database Information
  7. Module Information

New Features

  1. Divided the existing System Information under different set of categories to increase the usability
  2. Used some new kind of Icons to illustrate the Information Category properly
  3. Modified Module Information Section with some new ideas.

Manage Scheduler

This feature will be used to manage the tasks in the OpenMRS reference application. Users can use this implementation for this following functionalities,

Features of the Manage Modules

  1. List all the installed Module — New Icons and UI used to indicate the module status
  2. Schedule Task — No Modifications
  3. Shutdown Task — Confirmation Pop up will be shown to alert the user
  4. Reschedule Task — It will reschedule the existing task in the system
  5. Delete Task — Confirmation Pop up will be shown to alert the user
  6. Reschedule All Tasks — It will reschedule all the tasks in the system
  7. Shutdown All Tasks — It will shut down all the tasks in the system
  8. Startup Tasks — It will reschedule all the tasks in the system
  9. Refresh Tasks — It will refresh the list of registered tasks
  10. Add New Task Definition — Used to create new Task Definition, Implemented new UI for this functionality
  11. Edit Task Definition — Used to edit existing Task Definition, Implemented new UI for this functionality
Some of the Manage Scheduler Screens


OpenMRS talk discussions

You can get more information about the projects development workflow using those talk threads

GSoC 2017 - More Metadata Management in AdminUI

REST Implementation for Scheduler in Legacy UI Module

Manage Scheduler Implementation on SysAdmin OWA

New REST Implementation for SystemInformation

System Information Page Interface Modification

OpenMRS JIRA Tickets Information

Created and worked tickets during the project development

[OWA-21] Implement Module Management Functionalities in OWA - OpenMRS Issues

[OWA-22] Implement System Information functionality in OWA - OpenMRS Issues

[OWA-24] Modify System Info Page - OpenMRS Issues

[OWA-25] Implement Module Details view page - OpenMRS Issues

[OWA-26] Integrate with OpenMRS Add-Ons to get module updates - OpenMRS Issues

[OWA-27] Implement Manage Scheduler functionalities in OWA - OpenMRS Issues

[RESTWS-673] Implement REST services to Manage Scheduler functionalities. - OpenMRS Issues

[RESTWS-674] Include More Test cases for ModuleController1_8 in REST Module - OpenMRS Issues

[OWA-31] Implement Drag and Drop module upload feature - OpenMRS Issues

Created tickets for the issues by me during the development period

  1. AO-8 : Allow cross-origin calls to our REST API
  2. AO-9 : REST endpoint for getting a module by it’s modulePackage value
  3. PDMO-1 : Implement Encounters functionalities in OWA

Weekly Blog Post

  1. Week 1 — OpenMRS Module Management OWA
  2. Week 2 — Upload module to OpenMRS using REST
  3. Week 3 — System Information Open Web App
  4. Week 4 — OpenMRS System Administration OWA
  5. Week 5 — First Evaluation — Google Summer of Code
  6. Week 6 — System Administration OWA — Final Stage
  7. Week 7 — Complete the SysAdmin — Final Stage
  8. Week 8 — Module Update with OpenMRS Add Ons
  9. Week 9 — Second Evaluations — GSoC 2017
  10. Week 10 — Started working on Manage Scheduler
  11. Week 11 — Drag and Drop Module Implementation

Code Contributions

REST Web services module

SystemAdmin Open Web App


Get more Open Web App Screens here,

OpenMRS SystemAdmin Open Web App

GSoC Time with OpenMRS…. Write Code, Save Lives….!

by Kailayapathy Suthagar at August 21, 2017 02:21 PM

Sanatt Abrol

Week 12 – Controller Finished – SMART in final development

This week was very productive in terms of quality and quantity. Finally, the module is FINISHED !!

This week, I finished the Client Management REST Controller. Initially all testing was done against the authenticationManager used by the token services. So, I made a new authenticationManager one custom to server the needs of the REST Controller.

The controller supports the following endpoints :

  • GET /clientManagement?username=xyz&password=xyz
  •          This will return all the clients registered by the client developer xyz.
  • POST /clientManagement?username=xyz&password=xyz?name=abc….
  •          This will create a new client for the client developer xyz
  • DELETE /clientManagement?username=xyz&password=xyz?client_id=abc
  •          This will unregister the client with client_id abc
  • UPDATE /clientManagement?{details here}
  •          This will update the client details


Progress on SMART ?

All initial research was finished and discussed thoroughly with Mayank (my mentor, @maany) this week and all the authorization endpoints were completed in the module. The next step is to code the JavaScript based SMART on FHIR client which will run against the OAuth module, get a token and access FHIR resources. The JavaScript client is in development phase at the time of writing the blog and I am expected to finish it by Tuesday.

What next?

After the SMART on FHIR client is completed, I will be documenting all the work done in this summer and create a static page explaining all the work and give useful statistics about my work.



The post Week 12 – Controller Finished – SMART in final development appeared first on Sanatt Abrol.

by sanattabrol at August 21, 2017 01:12 PM

Jude Niroshan

[GSoC-2017: 12th week] Built-In Reports for Reference Application OpenMRS

So, this is it! It’s the final week of Google Summer of Code program. I’m still so proud that I was chosen as a student in OpenMRS community to do some cool work in this summer. This week I was mainly working on writing test cases for React components. Now It’s the time to bundle up the things and make things shinny.

I have changed the appearance drastically with CSS modifications to the user interfaces. Now the things are more clean and minimal. I’m still left with the documentation and preparing a video presentation which need to be shared among the OpenMRS community.

Tomorrow I’ll have the weekly meeting with my mentor. I plan to discuss about the release of this OWA and integrating the TravisCI to this OWA. At the same time I have to write clean documentation what I have done in this summer. Seems like a busy week is coming up ahead. So, I’m getting ready for it :-)

by Jude Niroshan at August 21, 2017 06:03 AM

August 19, 2017

Kwateng Ofori

12th Week of GSoC @ OpenMRS

This is the last week of GSoC. I managed to complete all tasks. The swagger SDK generation postpond due to major version upgrade to STU3. I completed medication request GET, POST and DELETE operations. OpenMRS DrugOrder not allow to edit.

Added Documentation added in

Medication request specification

Challenges and Concerns when implement the MedicationRequest

  • Medication request timing can’t match with DrugOrder
“timing”: {
“repeat”: {
“boundsPeriod”: {
“start”: “2015–01–15”,
“end”: “2015–01–20”
“frequency”: 1,
“period”: 6,
“periodMax”: 12,
“periodUnit”: “h”
  • Medication request fields status, intent, maxDosePerAdministration and validityPeriod can’t map

I’ll add my final presentation in next which is the last post.

by Ofori Kwateng at August 19, 2017 11:40 AM

August 16, 2017

Suthagar Kailayapathy

WSO2 API Cloud Live Log Viewer

Back in Action….

Live Log Viewer feature has been enabled in the WSO2 API Cloud. Unfortunately, Live log viewer feature was disabled in the API Cloud for a long time due to some internal reasons. After some improvements, WSO2 API Cloud is going to provide the live log viewer feature again to increase the user experience and feasibility. It will give the real experience to the users like real log viewers.

Visit WSO2 API Cloud to get the Live Log Viewer Experience

Why is Live Log Viewer Important?

WSO2 API Cloud contains a reasonable amount of customer in this time and they are using API Cloud for their internal and external API Management. They are creating/managing their APIs in the API Cloud and debugging for their needs.

Do you know the challenge of Debugging? The following quotes of Brian Kernighan will express the depth of debugging,

“ Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it? ”

So there should be some kind of tips to identify the issues in the debugging time. Now a days the Logs are plays major role in the debugging, every programmers and debugger depend on the different type of logs to identify the issues to fix it. It is an easy way also to identify the issues regarding some problems.

WSO2 API Cloud is the middle ware platform which is working in the background to manage the customer’s APIs. If there are any critical time for the customers and while they are trying to debug it, There is no way to debug with API Cloud from the customer level. The only way is getting the logs from API cloud and analysis those logs to identify the problem. So WSO2 API Cloud is responsible to provide the logs for their customers in the real time. Now customers can easily go to API Cloud live log viewer and get their logs in the real time when they are dubbing their API’s.

Follow these steps to get your live log viewer in the API Cloud

  1. Log in to your WSO2 API Cloud (If you are an existing customer you are required to log out and log in again at the first time of the use)
  2. Go to API Cloud Admin Dashboard ( Click the Configure menu in the top bar and click Admin Dashboard menu)
  3. Then Click Log Analyzer menu on the left side, then It will expand and show Live Log Viewer menu
  4. Click on Live Log Viewer to get your recent logs.

Features of WSO2 API Cloud Live Log Viewer

It provides the recent logs respected to your organization. If you haven’t any logs for last certain time, then you will get an empty live log viewer. So better to use it in the real time while you are busy with debugging.

It will automatically refresh and provide the latest logs to the customers. Works across all regional gateways around the globe. Customers can get the following type of logs from Live Log viewer

  • INFO Type Logs — Blue color tag
  • ERROR Type Logs — Red color tag
  • WARN Type Logs — Golden Brown color tag
  • DEBUG Type Logs — Green color tag

Live log viewer display pattern will be like,


Live Log Viewer notifications and solutions

Live Log Viewer failure notification

Are you getting the above error message in the Live Log Viewer? then the reasons for the error message and solutions are,

  • Your current browser session might be corrupted due to some browser actions. So just Refresh the browser to get the logs.
  • Your browser session might be expired or cleared. So just log out from the API Cloud and log in again
  • It may take some time to retrieve the logs at the first time. So if there any corruptions during this interval It may lead to this error message, So better to refresh the Live log viewer page.

Live Log Viewer too much of logs notification

If you are getting above type of error, that means you have reached the maximum limit of log line during your current session. The limit of the log lines is very large and appropriate for the debugging. If you intend to get more logs using this current session, It may lead to down your browser. So better to refresh your browser once to get the latest logs.

If you can’t get the logs using those above solutions, then feel free to contact our WSO2 Cloud team —

by Kailayapathy Suthagar at August 16, 2017 07:22 AM

August 15, 2017

Nipun Thathsara

Up and Running

I have completed movingthe functionality to core. And altered registration appa dn registration core modules to function with that.

Here are the instructions to test the priject

Please follow the instructions to build and run the project.
1. Platform
Checkout branch: git checkout b-2.0,5
Build: mvn clean install -U -DskipTests (Build core first and update your .m2 to build other modules)

2. RegistrationCore module
Checkout branch: git checkout b-1.7.1
Build: mvn clean install -DskipTests

3. RegistrationApp module
Checkout: git checkout b-1.8.0
Build: mvn clean install -DskipTests

4. Download other required modules
Delete registrationapp-1.8.0.omod and registrationcore-1.7.1.omod from extracted directory
Replace them with your build artifacts
put modules to modules directory
restart the tomcat

by Nipun Thathsara ( at August 15, 2017 07:14 PM

Sanatt Abrol

Week 11 – Back to Controller

So last week, I was having some troubles with integrating the Client Management REST controller into the module. The troubles were about managing the entry point for the URL mapping. Finally, me and my mentor Mayank decided to do it the way IETF (Internet Engineering Task Force) describes. Like the document here and also manage the client dynamically using protocols defined here.

So I’ve implemented the process using the standards defined by IETF.

Next Problem ? (Because there’s always one  😛 ) Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->org.openmrs.module.oauth2.Client["creator"]->org.openmrs.User["creator"])

The client class inherits fields like “creator” and “voided” from the BaseOpenMRSData which in turn inherits org.openmrs.User. This leads to a recursive cycle and causes a Jackson JsonMappingException.

Meaning? We simply can’t return OAuth client objects and expect Jackson to convert them into JSON (like it’s supposed to)

Fix? Convert your objects into JSONObjects manually using JSON classes and then send them with the appropriate Http Message.

Progress on SMART ?

As mentioned in the last week’s blog post, the next piece of business was supposed to be SMART. I worked and researched a lot on SMART. SMART on FHIR is a use-case for the module and it’s highly necessary that it is completed in this year’s GSoC.

My initial plan was to use the SMART on FHIR sample JS application and modify it to our needs. However after spending lots of time on 17000 and so lines of code on the fhir-client.js it turns out the app was designed only to be run against their own sandbox server 🙁

So the work on SMART is put on hold for now and further work will be done after a call with my mentor (The call is scheduled for 15th Aug 9:30 pm IST).


The post Week 11 – Back to Controller appeared first on Sanatt Abrol.

by sanattabrol at August 15, 2017 08:09 AM

Shivang Nagaria

WebServices, REST APIs & OpenMRS

Hello Everyone!

This week followed the work I have done last week. Last week I have designed the APIs and gathered feedback from community. I started with implementation of the REST APIs this week. Turns out OpenMRS developed a module for facilitate the development of REST APIs — it looks quite useful even I though I didn’t explore it much.

Major design issue of last week was tackle by @darius and he gave me but wonderful feedback. One of the major issue was should we host run_rules under /results or /rules . By the help of Darius, I was able to solve this issue. Finally we are hosting runrequest instead of run_rule under /rules , so this APIs call can maintain a queue or run the rule immediately and send back the response.

Even during last weeks I’m learning something new. During the discussion I came across realised that testing could be sometimes better that hot-redeployment. It would be much faster and you’ll also get accurate behaviour. All thanks to @darius again. I’m not much familiar with Test Driven Development but I will learn it and try to use it.

This week I will continue with the implementation and try to finish it as soon as possible. Apart from this I have other works like — updating wiki pages, fix some small issues etc as this is the last week of GSoC’17 ,


by Shivang Nagaria at August 15, 2017 07:49 AM

Ayush Goyal

GSoC Week — 11

This was the worst week ever. I was working on a lot things and I was half way through my work. Since the code was not complete so I haven’t pushed it anywhere and was working on the localhost, and then suddenly my mac froze and I had to force restart it. And then the most devastating thing happened. My hard disk crashed. Every bit of data gone in snap.

And this is not the worst part, since Apple’s internet recovery doesn’t work behind proxy so I cannot just reinstall the OS directly. I first had to find a person who has Mac, then I had to download OS on his system from App Store and then make a bootable pendrive to install OS on my system. And due to bad internet speed it took forever to download that 5 GB file.

Anyway at last I installed everything, setup my working environment and started working again.

I am definately gonna replace my hard disk now once the GSoC period is over.

by Ayush Goyal at August 15, 2017 07:08 AM

August 14, 2017

Jai Tatia

WEEK 11 [9th August – 15th August]

We are almost at the end of the GSOC period. Just one more week to go. This week I focused on cleaning up my UI code. A couple of asynchronous features weren’t working so i worked on getting them to work. Other than that i made corrections based on my mentors review. I also submitted a pr for changing the module structure which was merged.

There is one small feature left, which i plan to work on after the current pr gets merged, hopefully by tomorrow. The feature shouldn’t take too much time.I then plan on working on the documentation and debugging my code.

by jtatia at August 14, 2017 08:55 PM

Chanuka Wijayakoon

GSoC 2017 – Week 11

Over the 11th week, I tried to refactor the code to use as many concepts as possible for data collection. I have added required concepts to be loaded via the module activator at module startup. Then I tested adding data to the system with the saved concepts. We’re now properly using concepts to store theater …

by merovingienne at August 14, 2017 05:44 PM

Ankit Kumar

Week 11 - Create Patient Component

We are now almost at the last week of our GSoC project period. Time flies and I am really going to miss those days spent with my mentor and the community members. I will definitely try to continue contributing to the OpenMRS whenever I will get time from my college work.
Past week passed with a little bit of hectic schedule. I continued working on the Patient Create component to add more functionalities and also to fix various bugs as pointed by my mentor. We are trying to provide users with a better UX (user experience) as possible.
I tried to show the use of ui router as well as the breadcrumbs component but still I am working on some further reviews given by my mentor.

Here is the PR link :  which I am currently working on.
Despite of my college works, I am trying my level best to give more to this community in my last stage of the coding period. Hoping to complete this part soon !!

Ankit kumar   

by Ankit Kumar ( at August 14, 2017 05:27 PM

Jude Niroshan

[GSoC-2017: 11th week] Built-In Reports for Reference Application OpenMRS

It was a very busy week for me. I was left with bunch of small tasks in my project. In the last meeting with my mentor, I showed the progress on Open Web App which I developed using ReactJS.

User Interfaces are not super fantastic, but it does what we expect. I am having a big plan to take care of this OWA for the rest of my life. I can see many things can be improved in this web app. But with limited time period in GSoC program, everything is not possible. But with the current work, anyone can further improve this module. Foundation has laid properly with the help from my great mentor Rafal.

Currently I’m working on writing unit test for React components. It’s something new for me, and I like to learn something new. As coming up week is my last week of the program, I need to bundle up what I have done for last 12 weeks.

by Jude Niroshan at August 14, 2017 03:32 PM

Suthagar Kailayapathy

Drag and Drop Module Implementation

Week 11 [Aug 08, 2017 — Aug 14, 2017]

I am reaching the end of GSoC timeline and wanted to prepare for the final evaluations. Last week, I spent more time on Scheduler REST Implementation and SysAdmin Modifications. I couldn’t move with OpenMRS Add-Ons with last week also, because they haven’t pushed the changes to the live. So probably I will work on OpenMRS Add-Ons this week.

I have implemented Drag and Drop feature to the SysAdmin module upload. It is a new feature to the users and they can easily drag and drop the .omod files to upload the module.

Drag and Drop module changes and updates · suthagar23/openmrs-owa-sysadmin@55a316f

Then I have updated the Loading spinner icon from OpenMRS logo to another one. OpenMRS Community decided to move with a new spinner logo for the usage instead of OpenMRS Logo, I have changed like this following,

Last week, I worked on these tickets

  1. RESTWS-673 : Implement REST services to Manage Scheduler functionalities.
  2. OWA-27 : Implement Manage Scheduler functionalities in OWA
  3. RESTWS-674 : Include More Test cases for ModuleController1_8 in REST Module

and created a ticket for module drag and drop feature,

  1. OWA-31 : Implement Drag and Drop module upload feature

I could not complete the REST Implementation with in last week and wanted to complete the REST development with in this coming week :-)

by Kailayapathy Suthagar at August 14, 2017 03:08 PM

August 13, 2017

Kwateng Ofori

11th Week of GSoC @ OpenMRS

The GSoC coming to and end. Past week I publish my video on my current work. Please watch it below.

During this week I implement medication request GET and POST implementations. Now person can create a DrugOrder through FHIR Medication Request. Below content use to create a DrugOrder.

“resourceType”: “MedicationRequest”,
“id”: “56b9196c-bcac-4c2f-b3a2–123464a96439”,
“status”: “stopped”,
“intent”: “order”,
“priority”: “routine”,
“medicationCodeableConcept”: {
“id”: “865fceb1-ad0c-4102-aead-26ca25c77b09”,
“coding”: [
“system”: “”,
“code": “cedf8fc4–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “Cetirizine”
“subject”: {
“id”: “cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“reference”: “Patient/cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “John Patient(Identifier:100)”
“context”: {
“id”: “3fcd2047–2aca-404f-ab9d-0d009265d4dd”,
“reference”: “Encounter/3fcd2047–2aca-404f-ab9d-0d009265d4dd”
“authoredOn”: “2008–10–19T09:24:10+05:30”,
“requester”: {
“agent”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Super User(Identifier:Test)”
“recorder”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Horatio L Hornblower(Identifier:Test)”
“dosageInstruction”: [
“sequence”: 1,
“timing”: {
“code”: {
“coding”: [
“system”: “”,
“code”: “ae984cea-24cb-4e1e-abdd-fd19c9802704”,
“display”: “1/day x 7 days/week”
“text”: “1/day x 7 days/week”
“route”: {
“id”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91”,
“coding”: [
“system”: “”,
“code”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91",
“display”: “UNKNOWN”
“text”: “UNKNOWN”
“doseQuantity”: {
“value”: 3.0,
“unit”: “mg”
“dispenseRequest”: {
“quantity”: {
“value”: 1.0,
“unit”: “tab (s)”

In swagger console you can see the medication request is added.

Next week plan is to complete update and documentation. Few concerns will be raised in OpenMRS talk.

by Ofori Kwateng at August 13, 2017 11:46 PM