Just an idea to consider

fred0 wrote on Saturday, May 09, 2009:

Hey all and a big welcome to all the new members here!
I’ve been off the radar for a while now (was pretty active about a year ago doing updates to the sql-ledger interface and a few other things) but I’ve been loosely following the discussions and progress. Mostly I’ve been off building websites on the Drupal CMS platform.
For those not familiar, Drupal (http://drupal.org/) is probably the most popular FOSS content management systems (CMS) out there. Joomla is the other, but I decided to start working with Drupal because the community was larger and the 3rd party module development was all FOSS (Joomla had a lot of non-free commercial add-ons).
Because of this, the thing that keeps crossing my mind as I read about various development problems and ideas here is that Drupal would be (to my thinking) an ideal platform on which to build an EMR.
Using Drupal as the core, it would “reasonably” easy to build an EMR as a set of modules that provide the specific functionality while leaving many of the more routine tasks to the Drupal core. A really good example is a project called Ubercart (http://www.ubercart.org/) which has built an eCommerce solution on Drupal. With their model, you install Drupal and their module pack and enable only the functionality you need (ie - payment gateways, shipping methods). They also provide a set of APIs for others to extend the functionality of the system.

Many of the functions we need for EMR and are building from scratch (and having problems with) are easily solved with existing core and 3rd party modules and a little configuration.
Things like:
Foreign language translation (core module)
Calendering (http://drupal.org/project/calendar)
Image and file attachments (both core and 3rd party, too many modules to list!)
Advanced reports and views (http://drupal.org/project/views)
Easy access control (core, user & roles function)
A patient interface would be very easy to build.
Custom content types (http://drupal.org/project/cck)
PDF & print formating (http://drupal.org/project/print)
Patient communications (http://drupal.org/project/messaging & http://drupal.org/project/notifications)
And theming! Drupal themes are really easy to build and there’s a large repository of 3rd party themes available.

On the developer side, Drupal is very well documented and, as I mentioned above, has a large community to lean on for help. Plus there are several books on the subject! There is a standardized format for formatting code (http://drupal.org/coding-standards) that all developers are encouraged to follow. Modules and themes can be distributed via their site which includes a nice issue tracker.
The Drupal API, besides offering the core hosting functions, also includes calls for database updates. When a module is updated and requires a change to the database, the built in update function handles it.
One can upgrade the Drupal core or themes or modules independently.

I could keep going with this argument, but I would just start delving into the minutae of Drupal development. I really wanted to just put this out there for consideration. I know it would be a fair amount of work to adapt the code to Drupal, but I think that doing so would make OpenEMR so much easier to develop and more accessible to end users and developer alike. Just the ease of theming alone might attract many users. I urge you all to take a look at Drupal. Just playing with the Blocks and Menus tools should get many of you excited!

zokidoki wrote on Monday, May 11, 2009:

Hi. I have been using drupal and ubercart too over the last two years or so. I totally agree with your suggestions. Many of the existing modules should make openemr development easier.

cfapress wrote on Monday, May 11, 2009:

Hi Fred,

Thanks for the ideas. It’s been about four years since I tinkered with Drupal and have since switched to WordPress simply because it was available through my various hosting providers. Anyway…

The key to making OpenEMR better, and I agree with you, is to move to a modular design whereby people can selectively add/remove features. Just like with Drupal/Wordpress/<insert your favorite CMS> programs. Unfortunately that would require a complete rewrite of OpenEMR. Not a bad idea, but very time consuming for all volunteer developers involved.

Since you’ve got some in-depth experience with Drupal development, do you think you could put together a mock-up of how you see Drupal working as an EMR? Assemble the most important modules, such as those you described above. Then you’d have something that OpenEMR developers and poke and prod. Your links go to info about the Drupal modules but just reading about them doesn’t have the same impact as seeing them assembled into a loose demonstration.

Jason