Post on 14-Jul-2020
Agile VistA Development using EWD
Rob TweedM/Gateway Developments Ltd
http://www.mgateway.comTwitter: @rtweed
A bit about me• 1980s:
– Lead Mumps developer at Royal MarsdenHospital, London: Hospital Information System
• Early 1990s: Management consultant at
Touche Ross, London• Major NHS Networking project for UK Dept of Health
• Mid-1990s – present:
– Caché/Mumps web app framework developer
– Javascript expert
– Internet technology industry watcher
A bit about me
• Pioneer of web development for Mumps
& Caché
– WebLink & WebLink Developer
• Sold to InterSystems: 1996
– Consultant for early CSP design
– Assisted most of InterSystems' major
customers worldwide on Web Application
design & development
A bit about me
• Author of EWD
– 2004 – present
What is EWD?
• Extremely Agile web application development framework– Desktop web applications
– Mobile web applications• Look and behave like Native Apps
• Primarily designed for use with:– Caché/Ensemble
• new & legacy Mumps applications
– GT.M
Why use EWD?
• Prevents people wasting time reinventing wheels:– Security– Session/state management
• Creating an illusion of a stateful environment from a stateless one
– Integration of browser/web-server and Caché or GT.M
• Gives everyone instant access to proven, tried and tested solutions for these crucial areas– Reduces learning curve– Reduces risk
Why use EWD?
• Automates everything that can be automated:– Saves developer time, and therefore reduces
development costs
• The fastest and simplest way to develop web applications
• Integrates and massively simplifies the use of the very latest Javascript frameworks– State of the art applications
• HTML5 & CSS3
• Ajax
• Web-sockets (realtime web)
Tried & Tested
• Last 5 years:
– EWD has supported the world's largest
Internet-facing Caché-based web
application
• Quest Diagnostics Care360 EziOrder
– 30,000+ concurrent users
– 500,000 test requests/day
– 24 X 7 operation with no breakdowns or incidents
– No security breaches
The EWD Pedigree
• Stable
• Secure
• Highly scalable
• High Performance
Design Goals of EWD
• Conceptual Simplicity
• Architectural Simplicity
• Design-centric
• Speed of development
• Ease of maintenance
• Embodiment of nearly 20-years experience of developing Enterprise-grade web applications
• Addresses all areas of my dissatisfaction with IT industry's solutions
Conceptual Simplicity
Designing a dynamically
generated page should be
no different, conceptually,
from designing a static one
Architectural Simplicity
• As few moving parts as possible
• Safety
• Maintenance
• Reliability
• Cost
Design-Centric
• Design, not programming, is what makes great
applications
• Clear separation of Design from Programming
• Reduce programming to trivial levels
Speed of Development
• Development times should be orders of magnitude faster than normally expected
Ease of Maintenance
The Importance of Maintenance• 1 day of coding will cost 13 days of maintenance
• ie less coding is good
• Fewer moving parts and layers means that one person
can understand the entire application
Key features of EWD
• User Interface Tier (UI)
• Middle Tier
• Back-end Tier
UI Tier
• HTML5 + Javascript + CSS3 allows browsers to provide a very rich UI
• Which Javascript framework to use?– ExtJS
– Sencha Touch
– jQuery
– YUI
– Dojo
– etc
Javascript Frameworks
• Steep learning curve
• Complex, non-intuitive code
• Describe how, not what
– Difficult to maintain
• Programming
– One developer's code is another's nightmare
– Infinite degrees of freedom in coding
– Cut & Paste Development
EWD: UI Tier
• Framework agnostic– "uber framework"
• Abstracts complex Javascript to XML Tags– Reduced learning curve
– Simpler, much faster development
– Easier to read, write and understand
– Easy to maintain, even by a different developer
• Custom Tags– Encapsulate widgets in re-usable tags
– Avoids cut & paste development
• Ajax "Fragments"– Complex UI broken down into small, easy to understand, pieces
Example EWD/ExtJS UI
Middle-tier
• Conceptual only
• Automated integration of client-side Javascript to:
– Legacy Mumps
– Caché/Ensemble
– Node.js
• As a bridgehead to:
– EWD (for realtime web using websockets)
– Other databases and languages
Middle Tier
• UI and Back-end are deliberately de-coupled,
with "EWD Session" as middle ground
EWD
“Back-end”
GT.M / Caché
db
EWD
Session
Programmer
myVarPre-page
script
EWD Page
<?= #myVar ?>
Designer
setSessionValue^%zewdAPI
Page designer
EWD PageEWD
Session
Display Data
myVar<?= #myVar ?>
?
- UI Designer doesn't need back-end skills
- UI can be initially designed with a simple, spoofed back-end
Programmer
EWD
“Back-end”
GT.M / Caché
db
EWD
Session
Fetch Data
myVarPre-page
script
setSessionValue^%zewdAPI
?
- Back-end developer doesn't need UI skills
- Back-end can be changed without any impact on UI
Design-centric Development
• Designer is key, and stays in the loop, during and after development
• Programming is reduced to:
– moving data between the database and
Session
– Invoking legacy functions to get/fetch/validate
data
Conceptual Widget Integration
• Javascript UI widgets are mapped to EWD
Session Arrays
– Designer doesn't know or care how data is created
– Programmer maps database information to simple, intuitive multi-dimensional arrays that map directly to
JSON
<ext4:gridPanel title="Simpsons" height="200"
width="700" sessionName="simpsons" />
Back-end Tier
• Mumps/ GT.M / Caché / Ensemble
• Physical Integration:– Traditional web server + passive gateway
• IIS, Apache, nginx
• WebLink, CSP, m_apache
– Node.js
• ewdGateway Module for access to Mumps / Caché / Ensemble
• Websockets support for realtime web
• Other Node.js modules for RDBMS and NoSQL access
Back-end Tier
• Seminal Paper, March 2010:– A Universal NoSQL Engine, Using a Tried
and Tested Technology• Rob Tweed & George James• http://www.mgateway.com/docs/universalNoSQL.pdf
– The Mumps database is an extremely high-performance NoSQL database that has the combined capabilities of all 4 categories of NoSQL Database:
• Key/value
• Document
• Columnar
• Graph
Back-end Tier
• Also mapped in Cache to:
– RDBMS
– Object Database
• EWD adds:
– Native XML Database / DOM
• Conclusion: This is a greatly mis-understood
and under-rated database technology that is
ideally suited for underpinning web applications
No other technology layers needed
• Contrary to popular belief, there is no need for
any other technology layers
– NOTHING to be gained by grafting on other
technologies, middle tiers, NoSQL databases or languages (with the exception of Javascript)
– Lots of reasons NOT to add additional layers:
• Reduced performance
• Reduced scalability
• Increased complexity, so decreased maintainability
• Increased cost
Compare complexity of aJ2EE
architecture:
With the Simplicity of a
Caché/Mumps web architecture
Browser Web ServerHTTP
Response
Passive gateway
Caché / Ensemble / Mumps
Web Application
Management
EnvironmentCorporate Applications
Session Storage
With EWD as the Framework:
Browser
Web
Server
(Apache/
IIS)
Gate
way
Caché
http/
httpsW
ebLin
kin
terfa
ce
Caché
CS
P in
terfa
ce
Gate
way
EWD
Runtime
VistA
Page Scripts
EWD
Pages
EWD Session
Store
Caché, Ensemble or GT.M
These are all that need to be developed
EWD: Already in use with VistA
• WorldVistA web development framework of
choice
• Used to develop VistACom
– Small, agile development team
– Key to attaining Meaningful Use Stage 1 accreditation
– In daily use at Oroville Hospital
• Denver Acquisition & Logistics Center (DALC), a
tenant unit of the Dept of Veterans Affairs (VA)
• Basis of SMART App integration for VistA
Agile Development using EWD
• Case Study:– 2012: 1 Clinician, 1 Developer, 10 days
– http://clinuip.wordpress.com
– Clinician: Dr Tony Shannon• Consultant in Emergency Medicine
• Chief Clinical Information Officer, Leeds Teaching Hospitals, UK
• Fellowship in Informatics
– Developer: Chris Casey• Mumps/Caché/GT.M/EWD developer
Aim of the Project
• To broadly ask the question:
– How much of a Clinical Portal could be
designed, developed and implemented in 10-
days by a clinician and developer who are
working closely together?
• Agile development approach
• Open Source tools and technologies
– EWD
– GT.M
– ExtJS v4 (using EWD's custom tag library)
Answer?
• Pretty much a complete Clinical Portal!
– 3 tier
• Hospital overview (aggregate high-level view)
• Patient Group sub-view
• Individual patient view (episodes)
• Read/write
• Results can be seen and tried out for yourself:
– Live on an Amazon EC2 server:
– http://ec2-184-73-102-27.compute-1.amazonaws.com/ewd/leeds/index.ewd
Conclusions
• EWD's productivity is orders of magnitude higher than ANY other web application development framework
• Ideally suited to rapid desktop & mobile UI development to modernise VistA
– No need for one UI fits all
• Custom UIs for different categories of user
Conclusions
• EWD ticks all the boxes:
– High productivity
– High performance & scalability
– Highly secure
– Tried & tested technology
– Latest modern UI techniques (desktop & mobile)
– Low maintenance overhead
– Design-orientated
– Easy back-end development & integration
– Requires no change to VistA itself
More information
• http://www.mgateway.com– See "key documentation"
• ExtJS v4 tag library
• Sencha Touch 2 tag library (coming very soon)
• http://www.mgateway.com/ewd.html
• https://github.com/robtweed/EWD– Open Source version for GT.M
• dEWDrop VM– http://www.fourthwatchsoftware.com/