VistA: a first-class citizen in the JSON-centric future of Health IT

Similar documents
EWD.js on FHIR. Rob Tweed M/Gateway Developments Ltd. Wednesday, 12 March 14

EWD Lite. Rob Tweed M/Gateway Developments Ltd. Tuesday, 16 July 13

EWD.js Architecture. Rob Tweed M/Gateway Developments Ltd. Saturday, 23 November 13

EWD.JS INTRO WHAT IS EWD.JS AND HOW DO I USE IT? Christopher Edwards -

A Linked Data Translation Approach to Semantic Interoperability

M/Gateway Developments Ltd. ewd-federator. Reference Guide. M/Gateway Developments Ltd.

Kyle Rainville Littleton Coin Company

Open Health Tools UI Platform The MITRE Corporation. All rights Reserved. Approved for Public Release: XXXXX. Distribution Unlimited.

XML JavaScript Object Notation JSON Cookies Miscellaneous What Javascript can t do. OOP Concepts of JS

REST. Web-based APIs

So, if you receive data from a server, in JSON format, you can use it like any other JavaScript object.

AJAX. Lab. de Bases de Dados e Aplicações Web MIEIC, FEUP 2010/11. Sérgio Nunes

Electronic Medical Records and Javascript Object Notation(JSON) DR. EVREN ERYILMAZ CALIFORNIA STATE UNIVERSITY SACRAMENTO 10/24/2016

Introduction to XML. Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd

Create-A-Page Design Documentation

Introduction to XML 3/14/12. Introduction to XML

REST Easy with Infrared360

CSC 443: Web Programming

CSC 309 The Big Picture

Integrating Progress Rollbase with OpenEdge the REST of the story. Mike Fechner, Director, Consultingwerk Ltd.

Integrating the Progress Rollbase Portal into OpenEdge Applications. Mike Fechner, Director, Consultingwerk Ltd.

Developing node-mdb. SimpleDB emulation using Node.js and GT.M

Controller/server communication

Front End Programming

Managing Remote Medical Devices Through The Cloud. Joel K Young SVP of Research and Development & CTO Digi International Friday, September 9 11:30AM

Assigns a number to 110,000 letters/glyphs U+0041 is an A U+0062 is an a. U+00A9 is a copyright symbol U+0F03 is an

Node.js Vulnerabilities

Take a Load Off with U2 RESTful Web Services. Nik Kesic, Lead Technical Support for Rocket U2

Composable Software, Collaborative Development, and the CareWeb Framework. Doug Martin, MD

The Panorama Framework. By Sam Habiel, Pharm.D. Technical Fellow OSEHRA Arlington, VA & Alexis Carlson Seattle, WA

Assignment: Seminole Movie Connection

CSC443: Web Programming 2

Rich Web Applications in Server-side Java without. Plug-ins or JavaScript

Rich Web Applications in Server-side Java without. Plug-ins or JavaScript

Human-Computer Interaction Design

Networking & The Web. HCID 520 User Interface Software & Technology

The C-Suite Guide to Mobile Technologies for mhealth Development. Medical Web ExpertsTM

Send me up to 5 good questions in your opinion, I ll use top ones Via direct message at slack. Can be a group effort. Try to add some explanation.

HL7 FHIR. Rik Smithies, HL7 UK Technical Committee Chair September 28 th 2016

Server-Side JavaScript auf der JVM. Peter Doschkinow Senior Java Architect

Tuesday, January 13, Backend III: Node.js with Databases

Databases/JQuery AUGUST 1, 2018

<Insert Picture Here>

Uber Push and Subscribe Database

Ur/Web: A Simple Model for Programming the Web. Adam Chlipala MIT CSAIL POPL 2015 January 15, 2015

EWD Custom Tag Development. Built-in Custom Tags for defining and manipulating Javascript

Introduction to Azure DocumentDB. Jeff Renz, BI Architect RevGen Partners

Module 6 Node.js and Socket.IO

FHIR Mappings and Transforms. Grahame Grieve Robert Worden

relational Key-value Graph Object Document

JSON and COBOL. Tom Ross Captain COBOL GSE Nordic Reykjavik June 3, 2016

Use Cases for Argonaut Project -- DRAFT Page

RESTful APIs ECS 189 WEB PROGRAMMING. Browser s view. Browser s view. Browser s view. Browser s view. Which will It be for photobooth?

MongoDB Web Architecture

Enabling Web 2.0 User Experience for E-Business Suite. Padmaprabodh Ambale, Gustavo Jimenez Development Managers, Applications Technology Group

Petr CZJUG, December 2010

Distributed Systems 8. Remote Procedure Calls

Networking & The Web. HCID 520 User Interface Software & Technology

Profound.js. Future of open source development on IBM i. Alex Roytman Profound Logic

RIA Security - Broken By Design. Joonas Lehtinen IT Mill - CEO

Oracle - Developing Applications for the Java EE 7 Platform Ed 1 (Training On Demand)

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN

Homework 8: Ajax, JSON and Responsive Design Travel and Entertainment Search (Bootstrap/Angular/AJAX/JSON/jQuery /Cloud Exercise)

RESTful Health Exchange (RHEx)

Integration Test Plan

Backends and Databases. Dr. Sarah Abraham

10/18/2017. Announcements. NoSQL Motivation. NoSQL. Serverless Architecture. What is the Problem? Database Systems CSE 414

Mobile Web from the RPG and Dojo Perspectives

Oracle Developer Day

Microservices with Node.js

welcome to BOILERCAMP HOW TO WEB DEV

CS193X: Web Programming Fundamentals

What's New in ActiveVOS 7.1 Includes ActiveVOS 7.1.1

Advance Mobile& Web Application development using Angular and Native Script

VistA Novo Developer Toolkit

Etanova Enterprise Solutions

What the Bayeux? Filip Hanik. SpringSource Inc Keystone, Colorado, Slide 1

JSON is a light-weight alternative to XML for data-interchange JSON = JavaScript Object Notation

Web Technology for Test and Automation Applications

Modern and Responsive Mobile-enabled Web Applications

Develop Mobile Front Ends Using Mobile Application Framework A - 2

Andy Gregorowicz OSCON - July 23, 2008

Data Access and Analysis with Distributed, Federated Data Servers in climateprediction.net

Chapter 10 Web-based Information Systems

/ Introduction to XML

5/2/16. Announcements. NoSQL Motivation. The New Hipster: NoSQL. Serverless. What is the Problem? Database Systems CSE 414

Enterprise Smart Outlet: Android Development

Elementary! Incorporating BlueMix, Node-RED and Watson in Domino applications

Grading for Assignment #1

Introduction to Kony Fabric

Database Systems CSE 414

TECHNICAL NOTE HOW TO USE WEB SERVICES. Document: Kalipso_TechDocs_Web_Services. Revision: 1.0. Kalipso version:

Back-end architecture

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js

Project Avatar: Server Side JavaScript on the JVM GeeCon - May David Software Evangelist - Oracle

FULL STACK FLEX PROGRAM

EPHP a tool for learning the basics of PHP development. Nick Whitelegg School of Media Arts and Technology Southampton Solent University

AWS Lambda + nodejs Hands-On Training

Backends and Databases. Dr. Sarah Abraham

Transcription:

VistA: a first-class citizen in the JSON-centric future of Health IT Rob Tweed M/Gateway Developments Ltd @rtweed

What is JSON? JavaScript Object Notation A simple and compact syntax for describing Objects of any level of complexity Built-in to JavaScript dynamically creating objects importing objects exporting objects Increasingly being adopted in other languages 2

JSON v XML Both describe hierarchies JSON is rapidly replacing XML as the lingua franca for data exchange and description less verbose easier to parse almost no overhead in JavaScript just as readable by humans Can be cross-converted: JSON to XML can lead to ambiguities 3

Data transfer JSON is now the preferred syntax for describing data for transfer between systems 4

JSON initiatives in Healthcare ONC Mitre / Cypress Server HL7 FHIR SMART / Harvard Medical School/ Josh Mandel JSON-LD self-defining JSON CCDA Receiver CCDA XML > JSON conversion 5

JSON initiatives in Healthcare VA: Virtual Patient Record Health Management Portal Vista Novo: HL7 FHIR etc... eg OpenEHR interfacing via JSON 6

What does JSON look like? var object = {}; var array = []; 7

Simple name/value pairs var person = { name: Rob Tweed }; person.name = Rob Tweed The Rise of JSON and Javascript in HIT UIs 8

As many as you like var person = { firstname: Rob, lastname: Tweed }; person.firstname = Rob person.lastname = Tweed The Rise of JSON and Javascript in HIT UIs 9

A property can be an array var person = { firstname: Rob, lastname: Tweed, children: [ Simon, Helen ] }; person.children[0] = Simon Rise of JSON and Javascript in HIT UIs 10

or another object var person = { firstname: Rob, lastname: Tweed, children: [ Simon, Helen ], address: {city: Reigate, country: UK } }; person.address.city = Reigate Rise of JSON and Javascript in HIT UIs 11

or arrays of objects var person = { firstname: Rob, lastname: Tweed, children: [ Simon, Helen ], address: {city: Reigate, country: UK }, bikes: [ {make: Trek, model: Madone 4.5 }, {make: Cannondale, model: SuperSix Ultrega Di2 } ] }; person.bikes[1].make = Cannondale Rise of JSON and Javascript in HIT UIs 12

etc, etc Complex objects of arrays of arrays of objects of arrays... Hierarchical tree in memory, in JavaScript 13

Parsing JSON Incoming JSON-formatted string: var obj = JSON.parse(string); Converting a JavaScript object to a JSON string: var string = JSON.stringify(obj); 14

The Rise of JavaScript JavaScript is the natural home of JSON JSON supported in many other languages too Grew up in the browser Now becoming dominant in the server: Node.js 15

Node.js Server-side JavaScript originally a project by Ryan Dahl open source sponsored by Joyent massively popular Modules available for anything you can think of Approved technology at the VA 16

JSON persistence? Document databases: MongoDB CouchDB 17

JSON persistence? Document databases: MongoDB CouchDB and Mumps too GT.M - via NodeM interface Caché - via built-in Node.js interface GlobalsDB - via built-in Node.js interface hierarchical database, so a natural and very efficient fit 18

Node.js Interface

JavaScript Document Storage var griddata = [ {col1: 1, col2: 1, name: rec1 }, {col1: 4, col2: 4, name: rec4 } ]; var session = new ewd.mumps.globalnode( %zewdsession, [4020]); session.$('newgriddata')._setdocument(griddata); ^%zewdsession("session",4020,"newgriddata",0,"col1")=1 ^%zewdsession("session",4020,"newgriddata",0,"col2")=1 ^%zewdsession("session",4020,"newgriddata",0,"name")="rec1" ^%zewdsession("session",4020,"newgriddata",1,"col1")=4 ^%zewdsession("session",4020,"newgriddata",1,"col2")=4 ^%zewdsession("session",4020,"newgriddata",1,"name")="rec4"

JavaScript Document Storage ^%zewdsession("session",4020,"newgriddata",0,"col1")=1 ^%zewdsession("session",4020,"newgriddata",0,"col2")=1 ^%zewdsession("session",4020,"newgriddata",0,"name")="rec1" ^%zewdsession("session",4020,"newgriddata",1,"col1")=4 ^%zewdsession("session",4020,"newgriddata",1,"col2")=4 ^%zewdsession("session",4020,"newgriddata",1,"name")="rec4" var griddata = session.newgriddata._getdocument(); [ {col1: 1, col2: 1, name: rec1 }, {col1: 4, col2: 4, name: rec4 } ];

Invoking Mumps code Can invoke functions from within the backend JavaScript module: var result = ewd.mumps.function('getpatientvitals^myehr', params.patientid, params.date); 22

Invoking Mumps code Can invoke functions from within the backend JavaScript module: var result = ewd.mumps.function('getpatientvitals^myehr', params.patientid, params.date); This is the equivalent of the Mumps code: set result=$$getpatientvitals^myehr(patientid,date) 23

Invoking Mumps code Can invoke functions from within the backend JavaScript module: var result = ewd.mumps.function('getpatientvitals^myehr', params.patientid, params.date); This is the equivalent of the Mumps code: set result=$$getpatientvitals^myehr(patientid,date) Then use _getdocument() to retrieve Vitals from Global to corresponding JSON 24

Browser-based Applications Browsers used to be limited to web applications HTTP Protocol Ajax to add dynamic access to back-end still limited by HTTP protocol 25

Browser-based Applications Now it s a client-server environment lightweight event-driven WebSockets HTML5 bi-directional socket connection event-driven at each end No more polling! 26

EWD.js Framework for JavaScript applications Mumps databases abstracted to appear to be JSON stores Also supports MongoDB Fully event-driven Client/server in the browser 27

Node.js Interface EWD.js Runs in Node.js

EWD.js = 100% JSON Browser to/from back-end: JSON messages via WebSockets Data storage: JSON storage in MongoDB or Mumps _setdocument(json) Data retrieval: JSON from MongoDB or Mumps: _getdocument() 29

So VistA is fully JSON-enabled Today! Automatically, without any other technologies than Node.js + EWD.js 30

JSON initiatives in Healthcare ONC Mitre / Cypress Server HL7 FHIR SMART / Harvard Medical School/ Josh Mandel JSON-LD self-defining JSON CCDA Receiver CCDA XML > JSON conversion 31

JSON initiatives in Healthcare VA: Virtual Patient Record Health Management Portal Vista Novo: HL7 FHIR etc... 32

Reinventing the JSON Wheel? Opportunity to consolidate and co-ordinate the various JSON initiatives one common JSON representation of the patient? VistA data to/from JSON EWD.js: browser-based access Web Service access 33

HL7 FHIR Using EWD.js Or EWD.js on

HL7 FHIR = REST RESTful interfaces are a key part of HL7 FHIR http://localhost:8081/fhir/patient/@1/observation Returns JSON specific HL7 FHIR syntax 35

EWD.js and REST EWD.js doesn t have a REST interface built in but it does have secured HTTP-based WebService interface built-in Node.js: Restify - off-the-shelf REST server module Restify-based module: ewdrest rewrites REST URLs as digitally-signed EWD.js HTTP Web Service Requests 36

HL7 FHIR handling in EWD.js FHIRServer module for EWD.js parsing incoming FHIR requests interfacing to VistA / FileMan APIs read and write Current version limited to what s required for the Vista Novo demo /observation : gets all observations for a patient /observation/create: saves a new observation ready for extension by community will be posted on GitHub will be Apache 2 licensed 37

Back-end module REST Requests ewdrest Server Signed EWD.js Web Service Request EWD.js Server GT.M Caché or MongoDB Back-end module REST Response ewdrest Server Web Service JSON Response EWD.js Server GT.M Caché or MongoDB

Back-end module EWD.js Server GT.M Caché or MongoDB REST Requests/ Responses ewdrest Server EWD.js Server Back-end module etc GT.M Caché or MongoDB

EWD.js / Node.js Patient CCDA (JSON) _setdocument() Stored in Mumps DB Patient CCDA (XML) File George Lilly s work VistA

EWD.js Forwarded to FHIR REST Server EWD.js Back-end FHIR Module getobservation(): HL7 FHIR JSON-format getvitals(): JSON-format getvitals(): HL7 FHIR JSON-format Josh Mandel s Blue-button logic Adapted for EWD.js JSON-formatted CCDA Stored in Mumps Or MongoDB Mumps function API wrapper VistA

EWD.js Server GT.M George Lilly's VistA Server EWD.js Server FHIRServer.js GT.M: CCDA Database VistA Blood-pressure Application Definitive Blood Pressure Results from VistA FHIR REST Requests ewdrest Server Secure EWD.js Web Service Requests EWD.js Server Patient-entered Blood Pressure results FHIRServer.js globalsdb Servers at my home in UK My EC2 Server