I’ve been wanting to be able to run EWD on the $35 Raspberry Pi for ages. Not only is it an amazing cheap but surprisingly powerful and capable computer in its own right, the Raspberry Pi is very much targeted at the educational sector, with an aim of encouraging a new generation of developers to get into computing. It has also become a key hacker’s platform, allowing all sorts of robotics experimentation and general cool stuff to be possible at a negligible cost. With 2 million units already sold, the development community for the Raspberry Pi is already huge and continuing to grow at a rapid rate.
Node.js has been ported to the Raspberry Pi for quite a long time, and running EWD on top of Node.js on the Raspberry Pi has been my target. What I’d been hoping for was a version of either the GT.M or GlobalsDB databases to be ported to the ARM-based Raspberry Pi: EWD relies on these databases in order to work. Disappointingly, despite me raising some interest from the GT.M Open Source development community and InterSystems (the owner of GlobalsDB), I’ve been waiting, Godot-like, without any sign of progress in sight. Personally I think the two camps are missing out on a huge opportunity: perhaps they just don’t “get it”. Anyway, for now I’ve given up on either camp coming up with the goods.
At the end of last week I decided to have a think about possible alternative solutions to moving things forward. EWD.js is now, of course, the variant of EWD that makes sense to port to the Raspberry Pi. But how to do this without a Mumps database at the back-end?
Of course there was a key limitation to this idea: I’d only be able to use a single Child Process for EWD.js, but since this is a Raspberry Pi we’re talking about, that seemed a reasonable compromise to make.
And so we now have EWD.js up and running on the Raspberry Pi: it’s pretty amazing seeing it running and at the same time looking at this tiny card connected up by a bunch of wires to a keyboard, mouse, my TV and network and with a 4Gb SD acting as its hard-drive. All my standard EWD.js demo applications and the ewdMonitor application work perfectly, and they’re surprisingly fast too.
Although I can’t run, for example, a copy of VistA on the Raspberry Pi, here’s what I can do with it:
- I can load the ewdliteclient module: this provides a secured JSON-based Web Service client for EWD.js running on the Raspberry Pi from which my applications can access an EWD.js-interfaced VistA system on a SOA basis.
- Having retrieved data from a VistA system, I can save it locally on my Pi-based EWD.js system, building up a local database cache over time.
- Alternatively I could build a copy of the noDB.txt file from data on another system and use this to pre-populate the database of a Raspberry Pi-based EWD.js system
- I can also fire messages into another EWD.js system via the latter’s socket listener interface, and so the Raspberry Pi can send in data feeds to another EWD.js application on another platform.
Basically it puts EWD.js into the hands of hackers and, together with EWD.js-interfaced VistA providing the world’s only Open Source, Node.js-interfaced fully-fledged EHR, provides everything needed to kick-start a new era of Open Source innovation in the Health IT space.
If you’re interested in trying out EWD.js on the Raspberry Pi, I’ve added a new Appendix 4 to the EWD.js documentation that explains everything you need to do. I’ve already added noDB.js and a Raspberry Pi-specific EWD startup file to the EWD.js repository. And if you don’t have a Raspberry Pi yet, what are you waiting for? At only $35 you have no excuse!
Let the hacking begin!