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 • • • • chris.casey@ntlworld.com Skype: borochris99 Twitter: @ChrisPCasey Blog: chrispcasey@wordpress.com