Category Archives: cs-wsu

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.

From the blog cs-wsu – mmoussa7wsu by mmoussa7 and used with permission of the author. All other rights reserved by the author.

Clean Coder Chapters 2 and 3

I have recently read more of The Clean Coder, and what I find interesting is that the two chapters I read talk about polar opposites when it comes to clean coding in the software world. There are other tips in the chapters that I find interesting, and I’d like to share some of these tips and how they relate to my beta testing experience, if applicable.

Chapter 2 was all about Saying No and how to say it properly. However, what i found interesting and important was that not only does one have to defend their No answer, but there’s a way to find the best possible outcome. The example described in the book shows how an issue over a dysfunctional login page turned into the best possible outcome: a mock-up that doesn’t actually check the username-password combination, but one can still log in. This I find is a more appropriate approach to defending a No answer for the reason that the program that was expected wasn’t ready at the time.

Chapter 3, however, talked about how saying Yes produces the right result. One scenario I found interesting is the scenario in a conversation between a manager and her employee who is responsible for modifications to a rating engine. As the scenario progresses, the book talks about how to improve the situation, by not saying “try” and committing to the task. The situation also carries some “what-ifs” in-between. For example, “What if this happened” and “what if that happened”. The conversation between developer and manager gets really interesting as the read continues.

This book is already interesting as it is. I hope to read more of The Clean Coder soon.

From the blog cs-wsu – jdongamer by jd22292 and used with permission of the author. All other rights reserved by the author.

The Clean Coder – Chapter 4 and 5

I continue to enjoy this book a lot and glean valuable information pertinent to developing myself as a professional and continue to enhance myself and my career. Chapter 4 focuses on Coding and the goals of a programmer. A software developer’s code must first and foremost solve the problem at hand. Code should solve the correct problem, and a professional developer must often determine what the correct problem actually is by interacting with the customer and business analysts. Any new code developed must integrate seamlessly with the existing system, and must be readable by any other developers.

In Chapter 4, Martin also cautions the reader about 3 AM Code and Worry Code and advises them to take a step back instead. Writing software at 3 AM after staying up all night trying to solve a particularly perplexing problem is not going to produce quality code, nor is coding while personal issues are at the forefront of your brain. I often find it hard to pull myself away from a difficult task and basically just sit at my machine making no progress, only to think of am easy and elegant solution on my drive home as Martin mentions later in the chapter. Martin asserts that taking a step back and clearing your mind will often result in seeing the problem in a new way, and a solution will come to you, and I would have to agree.

Martin also voices his opinions on The Zone and listening to music. I do believe that sometimes certain types of music like video game soundtracks help enhance my concentration and also somewhat block out outside distraction. I know distractions happen and are a regular part of work, but it can be incredibly detrimental to progress with distractions often occupying more time than dedicated development. I don’t mind interruptions as being part of a team and working towards a common goal is important, but if it hinders my own tasks and goals then it is actually quite harmful.

I’ve never really had Writer’s Block when it comes to writing code, as I usually can just move on to a different task or go through, but I see how pairing can help alleviate the inability to progress. Martin also mentions the dangers of working overtime and how it is generally only helpful in some cases. I would have to agree that helping others is also important even if it can sometimes be frustrating if you need to focus on a particular task, one should know that they also  require help sometimes, and asking for help when you need it is okay.

When I first began developing software professionally, I had the view of debugging Martin initially described in which it was something that had to be done and was not really a part of coding. But in part due to reading this book and my growing desire to be more professional, I have changed my views and always spend the necessary time debugging. However, I find it difficult to subscribe to Test Driven Development in some cases even though I believe it would be extremely beneficial.

Chapter 5 is entirely about the benefits of Test Driven Development, and Martin’s initial suspicion but eventual embracing of the practice. I’m not sure if I’m jaded or believe that it is very difficult to introduce TDD practices into an existing project with multiple systems involved. With JavaScript talking to a SaaS platform that then speaks to a Java backend, the amount of unit and integration tests is enormous, and verifying correct testing behavior for all aspects of the system is very time consuming, but generally worth it. Regression and automated testing are invaluable when it comes to developer productivity and assurance of correct behavior. TDD enables a developer to freely refactor code while ensuring that existing functionality is not disrupted. TDD also significantly reduces defect rate by verifying that new code is working the way the developer intends.

Overall I am enjoying this book and finding it incredibly useful as a tool to make myself more of a professional.

From the blog cs-wsu – Spencer Leal by spencerleal and used with permission of the author. All other rights reserved by the author.

Clean Coder ch.5: TDD

The author is very much in favor of Test Driven Development, but while I am not opposed to it, I do not feel that it is always necessary. TDD is excellent for more difficult program projects, especially those with a lot of closely working parts, but when you have a program that is made up of many simple pieces, TDD seems to slow me down. I end up writing tests eventually, but when I do write the tests later on, I have a full view of what my program is doing, making it easier to write needed test cases. Starting by creating tests is a great idea, and I do use it from time to time, but it is just one style, and each style has its strong moments and its weak points. As a final note I will say that I should use this more than I do, and that sometimes I do need to slow down.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Clean Coder ch.5: TDD

The author is very much in favor of Test Driven Development, but while I am not opposed to it, I do not feel that it is always necessary. TDD is excellent for more difficult program projects, especially those with a lot of closely working parts, but when you have a program that is made up of many simple pieces, TDD seems to slow me down. I end up writing tests eventually, but when I do write the tests later on, I have a full view of what my program is doing, making it easier to write needed test cases. Starting by creating tests is a great idea, and I do use it from time to time, but it is just one style, and each style has its strong moments and its weak points. As a final note I will say that I should use this more than I do, and that sometimes I do need to slow down.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Clean Coder ch.4:Coding

This chapter was full of excellent tips and many hard truths. I would love to believe I work better by listening to music, but it is not the case. Recently, I have stopped listening to music while doing work and I get things done much faster. The writer of Clean Coder knows that it is usually distracting as well, and advises others not to multi task as it either leads to distraction or what he calls “entering the zone”. He makes the point that entering the zone is not a good thing because while you may get more done when you are extremely concentrated, you may make bad decisions that will later cause you to go over that code again to make changes. This is a valid point, but for me personally, I seem to always be in either one of two states: concentrated or distracted. If I am focusing on something, every thing else is a blur. If you talk to me in this state, I probably will not hear you. And if I stop and go do something else, it takes a bit for me to concentrate again.

Some of the other points he made was the distractions of worrying, interruptions, and writers block. These are all real life situations that get in the way of our thinking, and we need to find our own ways of combating these inhibitors. Worrying causes us to always be thinking of our situation than what we need to work on right now. Interruptions can cause us to snap at others for breaking our concentration. And writers block is the inevitable situation we find our selves in from time to time that stunts our productivity. His solution was pair programming, and while this is a good thing to keep in mind, we can’t always work with someone else. Sometimes we do not have access to another person for insights.

Lastly, he also goes through the debugging process in detail, explaining why debugging is so important. Debugging is not a waste of time or something that just has to be done, it is a part of programming and is just as costly as the program itself. Debugging is what tells you the quality of your code. Without it, you are basically taking a test without finding out how you did on it. Lastly, he mentions how time allotment and scheduling is important as well, and how bad pacing can cause late submissions. Being late is what we strive not to do, but when it does happen, we need to alert others as soon as we realize our blunder.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Clean Coder ch.4:Coding

This chapter was full of excellent tips and many hard truths. I would love to believe I work better by listening to music, but it is not the case. Recently, I have stopped listening to music while doing work and I get things done much faster. The writer of Clean Coder knows that it is usually distracting as well, and advises others not to multi task as it either leads to distraction or what he calls “entering the zone”. He makes the point that entering the zone is not a good thing because while you may get more done when you are extremely concentrated, you may make bad decisions that will later cause you to go over that code again to make changes. This is a valid point, but for me personally, I seem to always be in either one of two states: concentrated or distracted. If I am focusing on something, every thing else is a blur. If you talk to me in this state, I probably will not hear you. And if I stop and go do something else, it takes a bit for me to concentrate again.

Some of the other points he made was the distractions of worrying, interruptions, and writers block. These are all real life situations that get in the way of our thinking, and we need to find our own ways of combating these inhibitors. Worrying causes us to always be thinking of our situation than what we need to work on right now. Interruptions can cause us to snap at others for breaking our concentration. And writers block is the inevitable situation we find our selves in from time to time that stunts our productivity. His solution was pair programming, and while this is a good thing to keep in mind, we can’t always work with someone else. Sometimes we do not have access to another person for insights.

Lastly, he also goes through the debugging process in detail, explaining why debugging is so important. Debugging is not a waste of time or something that just has to be done, it is a part of programming and is just as costly as the program itself. Debugging is what tells you the quality of your code. Without it, you are basically taking a test without finding out how you did on it. Lastly, he mentions how time allotment and scheduling is important as well, and how bad pacing can cause late submissions. Being late is what we strive not to do, but when it does happen, we need to alert others as soon as we realize our blunder.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Radiology Project part 1

For the openMRS radiology module, so far I have installed Vagrant and a virtual machine and am currently in the process of fixing errors that have arisen, as well as dealing with authorization issues. Here are the steps I have done so far:

  1. Download Vagrant – Vagrant Download Here
    1. Download the software for your computer version, run the .msi file, and follow the default options unless you want to change something.
    2. What is it? – A quote from the developers of Vagrant, here is their mission statement so to speak: “If you are a developer, Vagrant will isolate dependencies and their configuration within a single disposable, consistent environment, without sacrificing any of the tools you are used to working with (editors, browsers, debuggers, etc.).”
    3. Do I need it? Yes, the radiology module is currently setup to utilize Vagrant, and even though it takes a few minutes to install, it will automate the VM setup and meld it with openmrs for you.
  2. Download Virtual Box – Download Here
    1. Download the version you need, preferably the most recent Stable version.
    2. Run through the setup, and choose what settings you feel comfortable with. However, keep in mind that it can only use what memory you let it use, so if you will not be using any other heavy hitting programs simultaneously, give Virtual Box a good chunk of your RAM (preferably 6gb or more) so that it can run efficiently.
    3. You do not have to create any vm machine instances, just install the program right now. Vagrant will create a vm for you automatically.
  3. Clone the directory:  https://github.com/teleivo/puppet-openmrs-radiologydcm4chee.git
    1. You will need a git account if you do not have one, but if you are a programmer you should consider using a git account as it not only works as a version control software, but also as a portfolio of sorts.
    2. Make sure you remember where you cloned this folder. You will need to refer back to this source folder so keep it somewhere easily accessible.
    3. What is this? – This will help you by running a server which will contain both openMRS and dcm4chee (An open source medical application/utility).
  4. Let Vagrant do your work! – Just use any console to navigate inside the git folder you just cloned, and type “vagrant up” and hit enter.
    1. Now you wait, a while. Walk away and get some coffee while vagrant sets up your vm and server fuctions. It takes about 30 minutes on a standard internet connection, and it will bring up a new line in the command prompt when it is finished.
    2. Taken from the programmer’s page who setup this project here: “This will download a virtualbox VM with Ubuntu 14.04 64bit, install all necessary puppet modules via r10k and run the manifest/site.pp which:”
      1. Installs mysql server
      2. Installs dcm4chee and deploys DICOM viewer weasis
      3. Installs tomcat 7 and deploys OpenMRS version 1.11.4
  5. Access openMRS – you can now open a localhost window in your internet browser (firefox not confirmed to work yet).
    1. To do this, just type “localhost:8080/openmrs/” into the url.
    2. This is an exact word for word step guide on what settings to choose which is also obtained from teleivo’s gitHUb page:
    3. In the wizard select/enter the following:
      • Which type of installation do you want? => Advanced
      • Step 1 of 5, Do you currently have an OpenMRS database installed that you would like to connect to? => No
        • If no, what would you like to name this database? Database name => openmrs
        • A user that has “CREATE DATABASE” privileges must be specified here…
          • Username => openmrs
          • Password => openmrs
      • Step 2 of 5, Do you currently have a database user other than root that has read/write access to the openmrs database? => Yes
        • If yes, specify the login user name and password for that database user
          • Username => openmrs
          • Password => openmrs
      • Complete the remaining steps of the wizard
  6. At this point, you should have a working environment, but I ran into a few issues.
    1. First, even though I created a user account, I am unable to login when booting up the server instance. I have tried every account I have setup as well as default accounts or leaving the fields empty. I know someone else had this issue, so once I figure out what it is I will edit this post with the solution.
    2. For a while, when I was running the program, every other program running in the background of my pc was terminated abruptly. I did not lose anything, but I could not have any other windows open. This might be my specific pc, but be careful to save any work you have before running this.
    3. When running the ‘vagrant up’ command, it failed twice on me before running properly. Could be a connection issue, but try running it a few more times before searching for fixes.

And hopefully that is all you should need. There is a Slack group for people working on this project, so if you need help you can ask there or directly on the openmrs talk page. Feel free to fiddle around with the features as you are on a local host you will not ruin any data.

What I learned:

  1. That an installation and setup process can be made to be automated
  2. What dcm4chee is and how it is relevant to this module
  3. How openmrs functions/runs
  4. When something says it is needed, it is NEEDED (should be obvious).

How would I proceed differently:

  1. I would make sure I had all requirements before starting
  2. I would make sure I had the correct version of Virtual Box
  3. I would be more attentive to other people’s errors in case I encountered them as well

Applications:

  1. This whole process will come in handy when creating programs in the future. This process makes installing things much easier, especially if I had to install this on multiple computers throughout a hospital.
  2. I will be able to apply some of this knowledge on any local server project I work on.

Credits to:

  1. teleivo on gitHub
  2. Vagrant software by HashiCorp
  3. Virtual Machine
  4. dcm4chee

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Radiology Project part 1

For the openMRS radiology module, so far I have installed Vagrant and a virtual machine and am currently in the process of fixing errors that have arisen, as well as dealing with authorization issues. Here are the steps I have done so far:

  1. Download Vagrant – Vagrant Download Here
    1. Download the software for your computer version, run the .msi file, and follow the default options unless you want to change something.
    2. What is it? – A quote from the developers of Vagrant, here is their mission statement so to speak: “If you are a developer, Vagrant will isolate dependencies and their configuration within a single disposable, consistent environment, without sacrificing any of the tools you are used to working with (editors, browsers, debuggers, etc.).”
    3. Do I need it? Yes, the radiology module is currently setup to utilize Vagrant, and even though it takes a few minutes to install, it will automate the VM setup and meld it with openmrs for you.
  2. Download Virtual Box – Download Here
    1. Download the version you need, preferably the most recent Stable version.
    2. Run through the setup, and choose what settings you feel comfortable with. However, keep in mind that it can only use what memory you let it use, so if you will not be using any other heavy hitting programs simultaneously, give Virtual Box a good chunk of your RAM (preferably 6gb or more) so that it can run efficiently.
    3. You do not have to create any vm machine instances, just install the program right now. Vagrant will create a vm for you automatically.
  3. Clone the directory:  https://github.com/teleivo/puppet-openmrs-radiologydcm4chee.git
    1. You will need a git account if you do not have one, but if you are a programmer you should consider using a git account as it not only works as a version control software, but also as a portfolio of sorts.
    2. Make sure you remember where you cloned this folder. You will need to refer back to this source folder so keep it somewhere easily accessible.
    3. What is this? – This will help you by running a server which will contain both openMRS and dcm4chee (An open source medical application/utility).
  4. Let Vagrant do your work! – Just use any console to navigate inside the git folder you just cloned, and type “vagrant up” and hit enter.
    1. Now you wait, a while. Walk away and get some coffee while vagrant sets up your vm and server fuctions. It takes about 30 minutes on a standard internet connection, and it will bring up a new line in the command prompt when it is finished.
    2. Taken from the programmer’s page who setup this project here: “This will download a virtualbox VM with Ubuntu 14.04 64bit, install all necessary puppet modules via r10k and run the manifest/site.pp which:”
      1. Installs mysql server
      2. Installs dcm4chee and deploys DICOM viewer weasis
      3. Installs tomcat 7 and deploys OpenMRS version 1.11.4
  5. Access openMRS – you can now open a localhost window in your internet browser (firefox not confirmed to work yet).
    1. To do this, just type “localhost:8080/openmrs/” into the url.
    2. This is an exact word for word step guide on what settings to choose which is also obtained from teleivo’s gitHUb page:
    3. In the wizard select/enter the following:
      • Which type of installation do you want? => Advanced
      • Step 1 of 5, Do you currently have an OpenMRS database installed that you would like to connect to? => No
        • If no, what would you like to name this database? Database name => openmrs
        • A user that has “CREATE DATABASE” privileges must be specified here…
          • Username => openmrs
          • Password => openmrs
      • Step 2 of 5, Do you currently have a database user other than root that has read/write access to the openmrs database? => Yes
        • If yes, specify the login user name and password for that database user
          • Username => openmrs
          • Password => openmrs
      • Complete the remaining steps of the wizard
  6. At this point, you should have a working environment, but I ran into a few issues.
    1. First, even though I created a user account, I am unable to login when booting up the server instance. I have tried every account I have setup as well as default accounts or leaving the fields empty. I know someone else had this issue, so once I figure out what it is I will edit this post with the solution.
    2. For a while, when I was running the program, every other program running in the background of my pc was terminated abruptly. I did not lose anything, but I could not have any other windows open. This might be my specific pc, but be careful to save any work you have before running this.
    3. When running the ‘vagrant up’ command, it failed twice on me before running properly. Could be a connection issue, but try running it a few more times before searching for fixes.

And hopefully that is all you should need. There is a Slack group for people working on this project, so if you need help you can ask there or directly on the openmrs talk page. Feel free to fiddle around with the features as you are on a local host you will not ruin any data.

What I learned:

  1. That an installation and setup process can be made to be automated
  2. What dcm4chee is and how it is relevant to this module
  3. How openmrs functions/runs
  4. When something says it is needed, it is NEEDED (should be obvious).

How would I proceed differently:

  1. I would make sure I had all requirements before starting
  2. I would make sure I had the correct version of Virtual Box
  3. I would be more attentive to other people’s errors in case I encountered them as well

Applications:

  1. This whole process will come in handy when creating programs in the future. This process makes installing things much easier, especially if I had to install this on multiple computers throughout a hospital.
  2. I will be able to apply some of this knowledge on any local server project I work on.

Credits to:

  1. teleivo on gitHub
  2. Vagrant software by HashiCorp
  3. Virtual Machine
  4. dcm4chee

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Clean Coder ch.3:Saying Yes

Chapter 3 in this book contrasted the last chapter, because the subject this time was saying Yes. We cant always push things off till later and tell our boss, “I need time”. Sometimes it just needs to get done, or at least made progress on. If you can’t commit to doing the whole thing, make a commitment to doing parts of it. Also on that topic, if you can’t do something, do not say you will try, or that you will see what you can do, just tell it like it is. Say only what you intend to fulfill.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.