Winning the prize
with EWD and Vista
CAMTA 2013
Chris Casey
The announcement
To encourage development of systems that help
Veterans schedule appointments to receive care
from the Veterans Health Administration and to
reduce risks in the future procurement and
deployment of those systems, the Secretary of
Veterans Affairs (VA) announces a prize contest
under Section 105 of the America COMPETES
Reauthorization Act of 2011, Public Law 111-358
(2011), 15 USC 3719 (the “Act”).
Too good to be True?
VA will award monetary prizes of as much as $3
Million to as many as three entrants that deliver
demonstration software or service which the
judges determine delivers the required
functionality and is compatible with Open
Source VistA, as described in this notice.
Why not
• We knew we had the right
tools
– EWD
– Node.js
– Sencha Ext.js framework
Reality Check
• The scale
– Probably at least 6 months work
• The Competition
– Very big players including BT,HP, CSC, etc
• The complexity
– Neither Rob or myself knew Vista
The Way Forward
• Oroville Hospital wanted a scheduler for Vista
– We would develop it for them and enter it into the
competition
Oroville Hospital
•
•
•
•
153 bed acute care facility
Private, non-profit corporation
Based in Oroville, California
First hospital in the world to self-implement
VistA
• CEO Robert Wentz
The Team
•
•
•
•
Zach Gonzales – Head of Development Oroville
Rob Tweed
Chris Casey
Small team of clinicians and
schedulers
The requirements
• VA requirements designed by committee
A different approach
Build what Oroville wanted:• Designed with and for people doing the job in
the real world
• Tested and used by real clinicians in a working
hospital
• Designed for VistA – see what fitted for
competition
The original system -1
The Original system -2
The code
S SD1(1)=^SC(I,"SL"),SD1=$P(SD1(1),"^",3),SB1=$S(SD1:SD1,1:8)1/100,SD1=$P(SD1(1),"^",6),HSI1=$S(SD1:SD1,1:4),SI1=$S(SD1="":4,
SD1<3:4,SD1:SD1,1:4),SDDIF1=$S(HSI1<3:8/HSI1,1:2) K SD1
S S=^SC(I,"ST",$P(SD,"."),1),SDQ=SD#1SB1*100,ST=SDQ#1*SI1\.6+($P(SDQ,".")*SI1),SS=SL1*HSI1/60
I SDQ'<1 F I=ST+ST:SDDIF1 S SDQ=$E(STR,$F(STR,$E(S,I+1)))
Q:SDQ="" S S=$E(S,1,I)_SDQ_$E(S,I+2,999),SS=SS-1 Q:SS'>0
S ^(1)=S
Simple Architecture
User
Browser
EWD
Node.js
Master
Process
Ext.js
Node.js Child
Processes
Sockets
OpenMdws
Vista
OpenMDWS
• Standardise VistA one
chunk at a time
• Wrap unreadable code into
functions
• Open, flexible, extendable
• Stateless and Scalable
Web Sockets
• Real-time feedback of actions taken by other
users or events
• Ability to send information to one, a group, or
all browsers FROM VISTA
• Event-driven and bi-directional
• Used in the application to send appointment
changes to all current users
• No Polling required!
Getting Started
• Main Requirements
– Visually appealing
– Simple to use
– Multiple views
• Three main parts
– Core Calendar - Rob
– Interactivity with VistA – Me and Zach
– Rest of application - Me
Core Calendar
• Open-source samples calendar from Sencha
• Complex but functional – including
drag’n’drop
• Tailor to our needs
– Colours (calendars) based on event types
– Variable timeslots per clinic
– Extendable edit window
– Control
Multiple Clinics view
• First attempt in a grid – whilst waiting for core
Calendar
• Later thrown away and put back to calendar
UI
• Most of processing code salvaged but suboptimal
Interaction with Vista
• Spend lots of time reading Vista code
• Wrap Vista “api’s” as OpenMDWS calls
– Often required rewriting
• openMDWS functions then available for all
projects
S ok=$$request^%zewdMDWSClient(
"getAppointmentsByPatient",
.nvps,.results,sessid,.params)
• Also work for EWD.js (next talk)
Key Features
•
•
•
•
•
•
•
•
Simple and intuitive (feedback from clinicians)
View multiple clinics across systems at once
Drag-n-Drop appointments
Resource appointments/calendars
Providers can see/merge Google Calendar
Flexible and intuitive resource scheduling
Real Time feedback to users
Provider holiday replacements
Multiple systems
Mail Templates
Demo
In Summary
•
•
•
•
Production ready system
Not ‘Proof of Concept’
Designed for Oroville not just for competition
Easily extendable to meet VA requirements
Deploy and enhance
•
•
•
•
•
Access granted to 3xVM 14/5/2013
Systems to be frozen 13/6/2013
All three systems set up differently
Test cases we had to meet changed
Told to use test scripting tool which was
impossible for web based apps
• First real chance to test cross-system
Four days to go
•
•
•
•
•
Could not get Cmake working properly
Team trying to install and use Selenium
96 hour day
Needed one more hour
Forced to hand over with a written test script
Several weeks later
•
•
•
•
Call to present for stage 2
But not allowed to present product
Answer yes/no and describe
N x reports
The Announcement – not quite
• Told that we had won
• Couldn’t tell anyone
until formal
announcement
• Then the government
shut down
The Result
Conclusions
• We had the right tools
• We had the right people
• We took on the big boys and won
Questions and contact
•
•
•
•
[email protected]
Skype: borochris99
Twitter: @ChrisPCasey
Blog: [email protected]