Creating a Radiology Report using MRRT Report template LibreHealth Radiology


As of last year the LibreHealth Radiology module which was at that time under OpenMRS supported MRRT report templates. But these templates where not used in the creation of reports yet. This year during GSoC coding phase one, the MRRT templates are been used in creation of radiology reports.

This feature is not stable yet but for the purpose of GSoC evaluations I’m documenting it though a lot will change after GSoC evaluations are over. But the workflow will stay the same. The changes to be made about this feature will not be visible to end users but developers. The current way the report templates are been stored adds unnecessary complexity to the codebase and I already made a proposal to my mentors about refactoring and it was approved.


Get the module

This code is not yet merged into LibreHealth so you’d have to clone of my own version of the code from and checkout the gsoc2017 branch and build then deploy to a running LibreHealth Toolkit 2.0 server. Also install the Open Web Apps Module and the Webservices module.


Before you can go ahead and use the module to create orders and reports there are some configurations that need to be made before you can create orders and reports.

You need to set your orderable concepts before you can create an order.

Also you need to set a complex concept for the reporting tool to use when creating radiology reports. Radiology reports are saved as complex obs. To create complex obs you need to have at least one complex concept in your system. With my new proposal to change how the reports and templates are been stored, you won’t need to configure this. It will be removed but for now just bare with it.

Set Orderable Concepts

The screenshot below shows the property you need to set.

Screen Shot 2017-08-19 at 9.55.46 PM

You need to set the UUID of all concept classes you’ll want to be orderable. For this tutorial we are going to use the concept class Test


Go to Administration/Manage Concept Classes and click on the Test concept class then copy the UUID.

Go to Administration/Settings/Radiology and paste the UUID in the Radiology Concept Classes box as shown above.

Set Complex Obs for Reports

As mentioned above, reports are saved as complex obs. For this there needs to be at least one complex concept in the system. You normally add concepts via a concept dictionary but for this we’ll go ahead and create one just for testing purposes.

Create a complex concept

Go to Dictionary and click add new concept. For testing purposes you can name your concept anything. The most important thing is to make sure it’s datatype is set to Complex and the handler is set to TextHandler

Screen Shot 2017-08-21 at 12.06.57 PM

Save your concept and copy it’s UUID

Screen Shot 2017-08-21 at 12.09.53 PM.png

Go to Administration/Settings/Radiology and paste the UUID to the complex class box

Screen Shot 2017-08-21 at 12.12.10 PM

You are now set up to create Orders and Reports.

Create an Order

In the Radiology dashboard under the Orders tab

Screen Shot 2017-08-21 at 12.22.41 PM

Click on Add Radiology Order to add a new order. To be able to report this order you must set it’s status to Completed.

Screen Shot 2017-08-21 at 12.32.59 PM.png

Under the report section you’ll notice a dropdown with a default of Free Text Report. We are going to create an MRRT report and for that you need to have an MRRT Report template.

You can add an MRRT template by importing it from the Report Templates Tab on the Radiology dashboard

Screen Shot 2017-08-21 at 12.35.36 PM

When creating a report select MRRT Report and search for a template to use for your report. I have one template in my system so I’ll search of Cardiac MRI

Screen Shot 2017-08-21 at 12.39.09 PM

Select your template and click claim report. You’ll be presented with a template editor that uses the template you selected.

Screen Shot 2017-08-21 at 12.40.21 PM

Enter principal results interpreter/Provider and complete your report.


GSoC Final Coding Phase Week 1

The first week of the final coding phase just concluded and for this phase my job was to fetch actual data from the backend via REST.

The screenshot below shows actual orders that are fetched from the backend via REST

Screen Shot 2017-08-06 at 2.51.27 PM

And below are reports fetched from the backend

Screen Shot 2017-08-06 at 2.51.41 PM

More work still needs to be done on how the data is displayed on the tables. I intend to make the table paginated so that it will reduce the load time when reports are been fetched. There are some angular components for data tables that implement pagination but I’ll implement mine. I’ve tried a couple that didn’t work and were not very user friendly.

The app currently only interacts with the backend by fetching data. The next step is adding data. The starting point is radiology orders. And that is the complicated one as during the order creation process a lot of REST calls have to be made to the backend.

When creating an order, you need a patient, provider, imaging procedure, etch and all have these have to be obtained via REST search. See order dialog below

Screen Shot 2017-08-06 at 2.51.59 PM

Once we are able to add orders via REST, the next hard part to implement via REST is Report Template import.

Commits this week



OpenMRS Implementers Meeting 2016 Experience

I have procrastinated for a long time about writing this. Especially since I’ve been busy with GCI16 mentoring, OpenMRS help desk, internship and other personal adventures. But its finally here.

I have been around OpenMRS for two years now since I saw an OpenMRS flyer in a friends note book I borrowed. Can’t remember what the flyer was about though, but that is how I got to know OpenMRS.

My contributions to OpenMRS involves bug fixes and implementing new features. I also help other community members especially new comers with the technical issues they are having since I had much help to from the community when I was starting. And community members like Daniel Kayiwa would not sleep unless my problem was solved. It felt good giving back to the community. I participated for my first in GSoC as a student with OpenMRS. Currently I’m a GCI-2016 Mentor with OpenMRS. I am also one of the help desk managers at OpenMRS. Where I coordinate cases and make sure issues are responded to by the right team and in time. I also follow up with issue creators to make sure their problems are solved and they are satisfied or if they need more assistance.

My story about the OpenMRS 2016 implementers meeting began a little after GSoC 2016. After I had passed the final evaluations, few weeks later I received a mail my mentor Judy Gichoya telling me about a mail from Google Summer of Code which says she can endorse her GSoC student for a $500 travel stipend to attend any conference. Knowing much about my desire to attend conferences and also to finally meet the OpenMRS Community physically, she told me to apply for the stipend and also apply for an OpenMRS Scholarship which I did. The $500 stipend was approved within 24 hours but due to the massive amount of OpenMRS scholarship applicantions my approval came about 6 weeks after my application. I received a mail from Jeff Neiman about my scholarship approval. OpenMRS funded my flight expenses, hotel reservation for 6 days at the Speke Resort, Muyonyo and my conference registration.

I arrived Uganda on the 6th of December 2016 and suprisenly OpenMRS had already arranged for my transportation from the airport.


The drive from the airport to the hotel where the conference was taking place was a long one and 1 hour later I finally met with the OpenMRS community members in person. This was  a really amazing experience. I introduced my self to everyone I recognized, Jan Flowers,Darius Jazayeri , Burke Mamlin, Sri Maurya Kummamuru, Daniel Kayiwa, Kawesi Joseph, Jeff Neiman, Paul Biondich, Theresa Cullen, Suranga Kasthurirathne, Mike Seaton, etc, etc. The list is really long. It was so nice to finally meet all of them. The OpenMRS community is like no other I’ve seen. I’m glad to be part of this awesome community.

Me, Sri Maurya Kummamuru, Darius Jazayeri (from left to right)

Conference started with the singing of the Uganda national anthem.

Photo by Jeff Neiman

I enjoyed the sessions. I learnt a lot about OpenMRS and Bahmni. And now I perfectly sure of which distribution I need to start an OpenMRS implementation here in Cameroon.

Photo taken just before the start of unconference sessions.
Shruthi Pitta from Bahmni talk about Bahmni distribution.



We also visited sites using OpenMRS. My group visited the Kisugu Health Centre.

Uganda EMR in use.

Listening to Matthew Ssemakadde lead a session about OpeMRS education was really awesome. We talked about how make the OpenMRS implementers and developer certifications successful.

OpenMRS Certification Program session

Unlike most conferences, OpenMRS 2016 was not only about talk, talk, talk. There was also entertainment. There was football match of Uganda vs The rest of the world which I think ended in a draw. I last played football in primary school. Which is about 10 years ago. So yes I’m not in field. lol


We also had entertainment during dinner at the Lake side on Thursday Dec 8.

Photo download from Burkes twitter post

We all dressed in our OpenMRS T-shirt in time for the group photosczjpubjusaa5ylq

I volunteered to lead the OpenMRS hackerthon with a tutorial for using the OpenMRS SDK which I ended up learning a lot my self.


Shruthi Pitta submitted her first pull request to openmrs after fixing a bug during the hackerthon.


The hackerthon ended the last day Sunday Dec 11, 2016 with good bye selfies.

Selfie taken by Tadeo

The experience was an amazing one and I say a big thank you to OpenMRS for the funding to attend and Google for the travel stipend. This wouldn’t have been possible without them.

Why Should Students Contribute To Opensource Projects?

At SMCONFB16 which was on the 18th of June 2016, I saw a lot of skepticism from people especially students about getting involved with open source projects. Their concerns were centered around the point, “How do you make money from it, if you give it for free?”.

There are obviously a lot of benefits to anyone contributing to open source projects but this blog post is targeted towards students and especially the ones in a computer science related field of study.

First I would like to say that most of us don’t do it for the money but for the love of it. And contributing to open source is a way of giving back to the community. I know you’d say love alone cannot put food on our tables at least thats what the girls say. But I would like to let you know that as a student there are actually a lot of benefits of contributing to open source projects including financial.

I think the most valuable asset of been part of an open source project is the experience and skills you’ll acquire. Not everything can be taught in class. Open source gives you the opportunity to practice and master software engineering skills taught in class and even learn new things. These include communication skills, project management skills, leadership skills and how to work in teams. You’ll also learn how to use popular software engineering tools like git. Experience gained from open source will help you in your future jobs since most of the tools used in open source projects will be the same you’ll use in your jobs. In open source you get to learn from very talented people who are also volunteering their time to create software and mentor others. You also get to learn about things like convention and culture of a community. You might be the best developer but if you don’t follow a community’s culture, you will not go far in that community.

We usually need internships to master what was taught in class and also learn new things. But getting an internship to work on what you love doing is not very easy. Considering the fact that our environment is made of mostly startups and very little or no giant tech companies, our options for internships are limited because most of this startups will not do what you want. That is, the work that the startup is investing in may not be of interest to you. For example one of my friends loves to do his internship in Artificial Intelligence but how many startups can he find doing that? As a startup, I want to start making money fast so that i can pay my bills, pay my developers and also get something from it. Hence I will always go for the thing that will make it to the market very fast and start selling. As a result most startups do only web development and mobile development using Ionic(if they do any mobile programming at all), since these are easier and can make it to the market very fast. But how many of us actually like building websites or building hybrid apps?  With open source, you have the liberty to choose what you want to work on. There are open source projects for almost any computer science related field for example, Web development, frontend javascript, database, backend, design, compilers, operating systems, systems programming, network security, etc. Hence finding what you love to work on is just a matter of few Google searches.

Your open source contributions will increase your chances of getting your dream job. When you contribute to an open source project, you don’t need to tell employers what you’ve done. You just tell them to Google search your name(that was a joke you obviously have to tell them even if they already know ). Your reputation as an open  source developer will always precede you. Most of our dream jobs will require an experience level of at least 3 years. But after you just graduate, that is something you’ll lack. So you can make up for that by working on big open source projects while you are still a student.

Open source will connect you to the right people. While working on open source projects you get to make a lot of friends. I don’t mean friends that you play football with or go get drunk with(yes you’ll get that too and thats awesome too) but i mean influential friends that can help you attain the level you want in life. Friends that will give  you the advice you never knew existed. Friends that will open your eyes to the opportunities you are ignorant of. Friends that will connect  you to other friends and soon you’ll become a testimony. I mean it, you will be talking with people that others can only read about on the Internet or watch on TV.

That been said, open source is not only about learning and meeting people or increasing your chances of getting jobs. As a student, you can actually make a lot of money as and open source developer. A lot of you are familiar with Google Summer of Code(GSoC) program where Google pays students  $5500 to work on open source projects. For the past years about 30 students from Buea have had the privilege to be part of this program and if you ask from them they’ll tell you that, this is an opportunity you should never miss.  I can vote for this because am a GSoCer my self. Imaging getting paid $5500 to work on something you have passion for. Being a GSoCer will not only benefit you financial but also all the above points will be part of your benefits. GSoC is not the only open source internship out there. You can see more of such internships from this blog post, summer-internships-for-open-source-enthusiasts. The  open source organizations you contribute to may also end up employing you.

A good example of a testimony of contributing to open source is Nyah Check. Most of us know him. If you don’t just google search his name. Due to his contributions to open source, he has done GSoC 3 times and has also traveled out of this country more than 4 times without him spending a dime. Recently he’s traveled to the US twice in 1 month to attend conferences. And while at the conferences he gets to meet a lot of influential people in the tech community.

There are obviously a lot more benefits of contributing to open source projects, but if the above don’t inspire you, then there is no need for me to continue further. For those of you that have been inspired, I encourage you to go to and learn about new & interesting projects. Browse projects on GitHub. Or read about GSoC.  There are a lot of articles about how to get started with open source but if you want something that is not already published, all you need do is leave a comment.