I sincerely apologize for the radio silence for the past few months. Being a solo open source software developer has its challenges (while at the same time…being a doctor seeing patients, taking boards for specialty certification, and most importantly, being a dad!). Unfortunately, some things had to be put on the back burner and that was blogging and tweeting and all the social media stuff.
But now that I’m out of my coding cave, I’m pleased to announce my newest update for NOSH.
One of the fun things about being a developer is being able to review your own work, and it was interesting to see what I was coding when I was building NOSH in the wee hours of the night while rocking my infant daughter to sleep back in 2009. And some of it, honestly, was not pretty. And sometimes those not-so-pretty code came back to bite you when you’re trying to add in a new feature or fixing a bug which turned out to be a bigger hidden bug, and it’s just like peeling an onion. It goes deeper and deeper and then you see the things that make you go “Huh?!”.
On top of that, Codeigniter, the PHP framework that is the basis of NOSH, had changed its open source licensing and I was worried about the future development of my project and the legal implications of it. It probably was not such a big deal, but it worried me anyway.
And then, Nate DeNiro, whom I was meeting over for some coffee, mentioned to me about Laravel, another PHP framework. Now, I knew about other PHP frameworks and I had compared the ones that existed when I was initially coding NOSH, but I had not come across it (because I suppose it didn’t exist back then). Codeigniter, at the time, had a big developer base and lots of interest, and it made a whole lot of sense to me, so I stuck with it.
But over time (and even initially), there were significant modifications to Codeigniter that I had to make for NOSH to work to my liking, such as the authentication library (Codeigniter didn’t have one), and creating PDF’s (had to hack on a mPDF class, which took a lot time to make it right) that made the coding a bit more difficult.
When I started NOSH, I thought it was more efficient to replicate and take away code for each access control user (like the provider, patient, billing, and assistants). But now, I’m wondering, “what the hell was I thinking??!!” (I suppose it was from sleep deprivation with a crying infant). With each new modification to the code, any similar code on the other users had to be accounted for. And that became such an increasing pain over time and it subsequently created more bugs and more bugs due to inconsistencies in code when I didn’t account for changes between user levels. And when it came time for me to tackle on a big change in electronic order entry, it became abundantly clear this was not going to work for me anymore.
Why Laravel? Here it is in a nutshell:
1. It’s fully featured – All the relevant features I needed for NOSH are already available out of the box.
2. It’s secure – It comes with a robust authentication library out of the box. No new modifications needed. Hurrah!
3. It’s easily expandable – Laravel uses the Composer dependency manager and so any plugin and anything else that the plugin needs gets accounted for. And it doesn’t mess with your own code when you install it which is great. It made my life a whole lot easier! One cool plugin that I want to shout out about is the wkhtmltopdf binary that is an open source library that generates PDFs from HTML code. NOSH had that feature before, but in a clunky and memory intensive way. But thanks to the open source rendering engine of WebKit (which is the code that is behind the Google Chrome and Safari web browsers), wkhtmltopdf allows NOSH to generate PDFs very quickly without all the memory intensive processing it used to do through PHP. With its excellent HTML rendering, I don’t have to worry anymore about having to designing and modify the HTML for the PDF document anymore. And with a Laravel wrapper which gets easily installed, it was perfect.
4. Although it required me to unlearn my habits with Codeigniter coding, I grew to appreciate the elegant way Laravel coded some things that allowed me to condense my code significantly. In fact, with the changes I made, NOSH went on a major diet again, going from 20 mb of code to 8 mb! That’s a 60% reduction. That’s way cool. But I suspect it also means I actually learned how to code better. It’s a learning experience for me all the way, which is kinda surreal since I’m a doctor treating patients too. Doctor Web Artisan calling…
So yes, Laravel saved my project. It was nuts that I re-coded NOSH from the ground up in 3 months, but I feel that in the long-term, it is definitely worth it. We shall see… And without further ado. NOSH 1.8.0 is here and check it out the latest and greatest with the fully featured live demo here.
BTW, NOSH in the Cloud is now on 1.8.0 too.
In future blog posts, I’ll speak about the specific changes with 1.8.0. In conclusion, I’ll list off the user-apparent changes in NOSH 1.8.0 (the full feature list is here):
- Ability to create HPI (History of Present Illness), ROS (Review of Systems), and PE (Physical Exam) templates.
- There is now an additional Encounter template (rather than the 1 standard medical template that has been used previously). This allows assistant users to be able to sign this template (called the Clinical Support Visit) and to be able to bill for this type of encounter. The way the framework is designed allows future updates to occur easily, by allowing increased customization of different types of encounters.
- Ability to now import a Consolidated Clinical Document Architecture (C-CDA) which is going to be a new standard of sending relevant clinical information about a patient from one record system to another. Check out the BlueButtonPlus initiative regarding this. The way NOSH integrates C-CDA involves the ability to upload the C-CDA document, parses the information and displays a Reconciliation process where the provider can then update the Problem List, Medications, Allergies, and Immunizations for the patient so that it is current. Furthermore, the provider can view a C-CDA though a document generated by bbClear which is a great open-source tool that allows easy visualization of C-CDA by normal human beings. It’s great for patients to have and for providers to use.
- Easier access to the schedule and intra-office/patient portal messaging system.
- The user interface was improved for tablet and touch interface devices. An example of this is the use of an accordion-like interface on the left side panel of the patient chart where a user has quick-click access to the pertinent medical history of the patient.
- Visit types for the scheduling system are now configured per provider instead of per practice.
- HCFA forms are now up-to-date to the 02/12 version which is what is required for insurance claim compliance on April 1, 2014.
Happy NOSHing 🙂