EWD.js and VistA: now with no barriers to entry

Over the past few weeks I’ve been busy.  Before explaining what I’ve been busy doing, I’ll start by stating my sincere thanks to Christopher Edwards (KRM Associates and Certification Manager at OSEHRA) for enhancing and extending his installer for VistA to include an option to automatically install, configure and fire up EWD.js.

Meanwhile, I’ve been focusing on creating a set of demonstration applications that show how EWD.js is used to integrate with VistA and allow new, modern, browser-based applications to be built incredibly quickly and easily.  Those applications will run across all platforms: desktop devices (including ChromeBooks), tablets and phones.  Additionally I’ve created two new products that work with and support EWD.js:

  • a REST Server interface for EWD.js.  I’ve provided some explanation of this prevously in the context of the VistA Novo HL7 FHIR project, and I’ll be writing a follow-up article that describes the EWD.js REST server in more detail.
  • a browser-based JavaScript VT-100 terminal emulator with a Node.js/WebSockets-based back-end interface VistA.

Combine these pieces of work and what do you get?  Fire up Chris’s fully-automated installer (either using Vagrant or using a pre-built Ubuntu Linux server or Virtual Machine) and 30 minutes or so later (depending on the performance of the server), you’ll have the following, installed, configured, running and ready to use:

  • GT.M
  • VistA
  • Node.js
  • EWD.js
  • EWD Rest Server

After another 10 minutes or so, by following a simple set of instructions that I’ll provide in a subsequent posting, you’ll also be able to run VistA Roll and Scroll applications within a browser, allowing users to use new and old applications within the one browser-bsed User Interface (UI): no more hassle to users caused by having to switch between their browser and terminal client.

Furthermore, with the help of Steve Owen and Roy Gaber, I’ve tested the same applications, components and demonstrations on a configuration that is typical of what is used within the US Dept of Veterans Affairs (VA): ie Caché and Red Hat Linux.  Everything even works on the versions of Internet Explorer used within the VA!

The demonstration applications have been designed to prove that EWD.js can provide, with ease and agility, solutions to the many problems that both the VA and the Open Source Community have been trying to address for years, including:

  • mobile application development that doesn’t require the significant overhead of different set of skills and technologies: with EWD.js you write one application and it will run across all platforms;
  • fully-secured, federated REST interfaces to VistA that, once again, don’t require different technologies and separate application logic: with EWD.js, the same code base that you use for browser-based applications can be very simply redeployed as REST services;
  • modernisation of VistA applications and the creation of a SOA-enabled VistA environment without throwing the baby out with the bathwater: with EWD.js you can make use of existing legacy VistA Mumps code, without making any invasive changes to it;
  • full support for and compatibility with the numerous JSON-orientated projects that are under way within both the VA and the Healthcare IT world (eg HL7 FHIR): EWD.js is a completely JSON-focused environment and 100% JavaScript-based and it exposes the VistA (Mumps) database as a sophisticated, high-performance JSON/document database

With the extremely high performance of EWD.js, there is no need for extra database caches or extra middle tiers.  This means fewer moving parts to go wrong and maintain, and fewer layers to introduce latency and drag down performance.  EWD.js derives its performance from several key features:

  • it is built on Node.js, a server-side JavaScript environment that has become renowned for its blisteringly high performance;
  • the interface between Node.js and the GT.M or Caché database is about as thin, efficient and lightweight as is technically possible.  On Caché databases, EWD.js makes use of InterSystems’ official Node.js interface module that they now distribute with new versions of Caché.  This interface communicates with Caché via its very low-level, high-performance Callin Interface (this Callin interface is the one used by InterSystems to support the incredibly demanding requirements of the European Space Agency’s Gaia mission).  On GT.M, EWD.js makes use of David Wicksell’s NodeM module which is replicates identically the APIs used by the InterSystems Node.js module;
  • The moving parts of EWD.js take the form of just four server-side Open Source JavaScript files that execute within Node.js.

By leveraging the functionality built into Node.js and the huge library of modules that has been created by its development community, there’s really nothing that EWD.js can’t be used for.

You can now try this technology out for yourself, see it in action with VistA and experience its performance.  You’ll have all the source code for the examples, so you can try developing your own applications and discover how simple it is to develop with EWD.js.

In my next posting I’m going to explain how to run Chris’s installer and create your own VistA/EWD.js system, and in subsequent postings I’ll look in more detail at the three key demonstrations that are included in your operational system:

  • the browser-based VistA Demonstration application.  This is built as a responsive application using the Bootstrap 3 framework, and as a result it will run on desktop devices, tablets and phones.  The application demonstrates three critical steps in any VistA application: how to log in, how to select and find a patient by name, and how to retrieve information for that patient;
  • a set of REST services that access VistA and make use of the same back-end logic that is used by the browser-based application.  Those three key steps above are exposed as corresponding REST methods;
  • the browser-based JavaScript terminal for running VistA roll and scroll applications.

Welcome to the future of VistA development and the fun and exciting world of EWD.js!

 

Advertisements

5 comments

  1. If you make use of the Webmin administration tool you’ll need to change it’s default port of 10000 to another value. ewdGateway2.js uses port 10000 to set a default externalListenerPort.

  2. Nice features Rob, thank you for working so hard in bringing a fresh interface methodology to VistA.

  3. Steve,

    You can also change the port in your ewdGateway2 server configuration. Here is an example from one of my configurations:

    webSockets: {
    enabled: true,
    externalListenerPort: 10001
    },

    Of course, you can use any port number you want, as long as it is available.

  4. dlwicksell · · Reply

    I should also add that if you use a port < 1024, you would have to run your ewdGateway2 server process as root.

  5. Lew Pearson · · Reply

    Can I point EWD to a different VistA instance and if so, how?
    Much Appreciated,
    Lew

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: