OpenMRS Radiology: Finished Issue

My group was working on an Issue ticket, RAD-159, where we had to delete unused code in two files. It appeared to be a simple task at first, but through a lot of confusion, we had to redo our deletions multiple times. The tickets description of what to do was not specific enough, and even after asking for help, we were still confused. This shows how important clarity of instruction is when designating work to other people. This ticket should have taken a day at the longest, but it was extended for long periods of time due to having to ask numerous questions and then having to get our group together after each answer. We did finish our issue though, and we are hopefully going to have our revisions accepted. In the future, I will know to be as thorough as possible when writing directions for other people.

OpenMRS Radiology: Difficulties

My team chose to work on a simple issue with the OpenMRS Radiology module. We had to delete unused lines from a couple of property files, this should have been an easy thing to do, but in order to know if the code was unused, we had to test it in the module itself. No one in our group had a completely working module, so we were unable to quickly finish this issue, and are still trying to get things working.

Our groups problems have made me learn a few things when it comes to outsourcing work to other teams. It is important to make sure the instructions for getting things set up are 100% accurate, and will work with any computer setup. If not, many people will be stuck on just the setup process like we have been in this OpenMRS project. Another important step is to include the system requirements for a project, if there are any. I am running on Windows Vista, which limits the versions of software I can download, and I don’t know if these older versions will be supported in the project.

When a project like OpenMRS expects college students, who have most likely little experience with similar work, to contribute to their project, they need to have directions for setup and submission that are refined to a classroom level. They do have the forum to post any issue we have, but this seems like a roundabout way to solve the problem, if someone keeps facing problem after problem, they will just be waiting for a response on the forum continuously. I hope we are able to get something done with this project before the end of the semester.


OpenMRS-Radiology Module Setup

I am using an old Windows Vista laptop, with very little memory, so I did not expect the Vagrant and Virtual Box to run properly. I tried to set it up regardless but got errors, I tried to fix them but I think it is just not going to work. I will still be able to work on this projects coding, but I will have to rely on someone else or another device in order to test my code on the module. I wish there were system requirements in this modules tutorial, so I could know if my system is the issue or something else I am doing wrong. This taught me how important it is to have good instructions for users in tutorials, and to include every piece of information they will need in order to run it. Moving forward, I might attempt to get it working, but I want to work on the module as well, and actually get work done, so we will see how far I get.

Clean Coder Chapter 4-5

Robert C. Martin’s book Clean Coder: A Code of Conduct for Professional Programmers, continues about what it physically takes to program and also talks about the test-driven development model. One of my biggest flaws that Martin points out is staying focused while working on your code, it is very easy to get distracted while working on something, and I think this is something I should work on. He makes some other good points about pair programming or taking breaks when you are stuck, that is also something I need to get experience with. A lot of what he says about test-driven development is stuff I already know, but I also do not use this method exactly by the book, I believe that everyone is different and should just code how they feel comfortable, unless there is strict team rules. I feel like these chapters had more practical information that I can actually follow, I look forward to seeing what is in the following chapters.

Setting up my OpenMRS Environment

To begin working on the OpenMRS project, me and my assigned team had to set up our work environment on our computers, which proved to be no simple task. Here is the list of steps I took in order to get it working on my computer.

  1. Checked the list of prerequisites we needed locally for OpenMRS
    • Java 1.7 or higher
    • Maven
    • MySQL 5.6
    • Git
    • Java IDE (I used IntelliJ IDEA)
  2. Clone the “openmrs-core” Github repository locally
  3. Run “mvn clean install” in the openmrs-core directory on the command line
    • Everything built fine
  4. Run “mvn jetty:run” in the openmrs-core/webapp directory on the command line
    • Wait for the message saying it is running
  5. Go to http://localhost:8080/openmrs and follow the instructions
    • I setup the database with demo data
  6. Clone the “openmrs-module-legacyui” Github repository locally
  7. Run “mvn clean install” in the openmrs-module-legacyui directory on the command line
  8. Copy the file “openmrs-module-legacyui/omod/target/legacyui-{version}-SNAPSHOT.omod” ON WINDOWS put into APPDATA/OpenMRS/modules
  9. Redo step 4 and refresh the page until the legacyUI loads


Clean Coder Chapter 2-3

Robert C. Martin’s textbook Clean Coder: A Code of Conduct for Professional Programmers gives useful insight to being a professional programmer. After reading chapter 2 and 3 of Clean Coder, you can begin to understand the big responsibility a programmer or a team has when they say they “can” or “cannot” do something. When you are completing your tasks on a deadline, other people are relying on your work to be correct and functional. Accepting the task and saying you “can” do it, is not something that should be taken lightly. Sometimes there has to be compromise in order to release something that is acceptable. If there is something that simply “cannot” be done, then speak up and say what you actually achieve. A professional must fully stand behind his acceptance of a task, and be able to complete it. In order to be a professional in the workplace, you must have your own opinion on when and how something can be completed. These two chapters are all about the responsibility that every professional programmer must have.

Clean Coder Chapter 1

Robert C. Martin’s book  Clean Coder: A Code of Conduct for Professional Programmers reviews the basics of being a professional programmer in chapter 1. Some of the important key points are being responsible for all your work, making sure your code is the highest quality you can manage, always test your own code, and being aware of more than just the code. Martin gives a great introduction to being a professional for anyone that is not quite sure what it truly means to be a professional programmer. I personally did not think this was that useful of a chapter though because most people know what being a professional is, it is just the matter of applying yourself to succeed at it. We will see what advice Martin gives in the next few chapters in my next Clean Coder post.