Presentation is loading. Please wait.

Presentation is loading. Please wait.

Build a Healthcare Information system in 10 days For free Chris Casey.

Similar presentations

Presentation on theme: "Build a Healthcare Information system in 10 days For free Chris Casey."— Presentation transcript:

1 Build a Healthcare Information system in 10 days For free Chris Casey

2 Self taught Mumps 1982 20+ years financial corporates – Analyst/Programmer - Lazards – Technical Support Mgr – Henderson – Head of Support – AMP – Head of Architecture - BNPParibas CPC Computer Solutions Ltd – CitiSoft, Insinger, BNPParibas – Calderdale NHS Trust – Leeds Teaching Hospitals

3 The challenge To build a standalone hospital portal in 10 days Using only OpenSource components Use the style of the existing system

4 Architecture Amazon EC2 Ubuntu linux micro ‘free’ tier GT.m for the database Sencha ExtJS4 for the UI EWD to make it all work

5 The result

6 When is a day not a day? Don’t take each day too literally but the whole thing was done in 10 real days

7 Day 1- Create the environment EC2 environment all default point and click Install Apache (I picked the wrong build) Use winScp (or other) to connect Pick your editor (I use notepad++) Use Mike Clayton’s M/DB installer – wget – sudo dpkg -i mgwtools-1.10_amd64.deb – sudo apt-get -f install Start building

8 Day 2 - Create the framework Design the Viewport and implement

9 Day 2 – The outline

10 Day 3 - Create the forms

11 Day 3 – Notes form code InitNote(sessid) ;initialise the Notes screen s A="*“,ret=$$getHeaders(sessid) s NOID=$$getRequestValue^%zewdAPI("ixn",sessid) s Norec=$g(^LPAT(patNo,"N",NOID)) d setSessionValue^%zewdAPI("NOID",NOID,sessid) d setSessionValue^%zewdAPI("NOdate",$$dateOut($p(Norec,A,5)),sessid) d setSessionValue^%zewdAPI("NOtime",$p(Norec,A,6),sessid) d setSessionValue^%zewdAPI("NOnote",$$loadtext($p(Norec,A,3)),sessid) d setSessionValue^%zewdAPI("NOauth",$p(Norec,A,2),sessid) d setSessionValue^%zewdAPI("CPepNO",$p(Norec,A,8),sessid) q ""


13 Day 4 – Make a grid

14 Day 4 – Column definition s column(1,"dataIndex")="name", column(1,"text")="Name", column(1,"width")=100 s column(2,"dataIndex")="sex", column(2,"text")="Sex", column(2,"width")=30 s column(3,"dataIndex")="age", column(3,"text")="Age", column(3,"width")=32 s column(4,"dataIndex")="episodes", column(4,"text")="Eps", column(4,"width")=30 s column(5,"dataIndex")="oc", column(5,"text")="Open", column(5,"width")=110 s column(6,"dataIndex")="dept", column(6,"text")="Dept", column(6,"width")=80 s column(7,"dataIndex")="notes", column(7,"text")="Notes", column(7,"width")=40 s column(8,"dataIndex")="vitals", column(8,"text")="Vitals", column(8,"width")=40 s column(9,"dataIndex")="orders", column(9,"text")="Orders", column(9,"width")=40 s column(10,"dataIndex")="results", column(10,"text")="Rslts", column(10,"width")=35 s column(11,"dataIndex")="treatments", column(11,"text")="Tments", column(11,"width")=40 s column(12,"dataIndex")="meds", column(12,"text")="Meds", column(12,"width")=35 s column(13,"xtype")="actioncolumn”,column(13,"text")="Actions“, column(13,"width")="300" d mergeArrayToSession^%zewdAPI(.column,"patGridcolDef",sessid)

15 Day 4 – Populate the grid s data(i,"name")=$p(prec,A,1) s data(i,"sex")=$p(prec,A,6) s data(i,"age")=$$age($p(prec,A,5)) s data(i,"episodes")=tot("E") s data(i,"oc")=$$dateOut($p(prEP,A,5)) s data(i,"dept")=^Lopts("Etype",$p(prEP,A,4))... d deleteFromSession^%zewdAPI("patGrid",sessid) d mergeArrayToSession^%zewdAPI(.data,"patGrid",sessid)

16 Day 4

17 Day 5 – Make some controls

18 Day 5 – Put data in them m tree=^LTree("tree1") d mergeArrayToSession^%zewdAPI(.tree,"TreeOpts",sessid) m tree2=^LTree("tree2") d mergeArrayToSession^%zewdAPI(.tree2,"TreeSels",sessid) m tree3=^LTree("tree3") d mergeArrayToSession^%zewdAPI(.tree3,"TreeSels2",sessid)

19 Day 5 - Data ^LTree("tree2",1,"child",1,"nvp")="Episode" ^LTree("tree2",1,"child",1,"text")="Episodes" ^LTree("tree2",1,"child",2,"nvp")="Clinical note" ^LTree("tree2",1,"child",2,"text")="Notes" ^LTree("tree2",1,"child",3,"nvp")="Vitals" ^LTree("tree2",1,"child",3,"text")="Vitals" ^LTree("tree2",1,"child",4,"nvp")="Orders" ^LTree("tree2",1,"child",4,"text")="Orders" ^LTree("tree2",1,"child",5,"nvp")="Results" ^LTree("tree2",1,"child",5,"text")="Results" ^LTree("tree2",1,"child",6,"nvp")="Treatments" ^LTree("tree2",1,"child",6,"text")="Treatments" ^LTree("tree2",1,"child",7,"nvp")="Medications" ^LTree("tree2",1,"child",7,"text")="Medications" ^LTree("tree2",1,"text")="Filters"

20 Day 5 - Tree

21 Day 7 – Make some charts This version hand crafted but new version of EWD has this included

22 Day 8 – Grid Icons s column(13,"icon",3,"icon")="/Icons/Hospital.png" s column(13,"icon",3,"tooltip")="Add Episode" s column(13,"icon",3,"handler")=handtext_" EWD.ajax.getPage({page:'AddEpisode',nvp:nvp}); _"}" s handtext="function(grid, rowIndex, colIndex) {var nvp='rowNo='+EWD.ext4.getGridRowNo(grid,row Index)+'&ext4_addTo=EastPanel&ext4_removeAll =true';"

23 Day 8 - Icons

24 Day 9 – Make it work 2 ways s EdDispWin=^LControl("winmode") D setSessionValue^%zewdAPI("EdDispWin",EdDispWin,sessid) s handtext="function(grid, rowIndex, colIndex) {var nvp0='rowNo='+EWD.ext4.getGridRowNo(grid,rowIndex)+' &ext4_addTo='+EdDispWin+'&ext4_removeAll=true';"

25 Day 9 – One way

26 Day 9 – or the other

27 Day 10 – Debug and write presentation

28 Live Demo

29 Key points Productivity with Style – Great looking systems – Minimal effort and $$$ Small reusable chunks of code – Each form used 3 different ways – Can be designed and tested with no code – Swap the onBeforeRender for different code base Easy to Retrofit to existing Mumps code Link to Vista being built at this conference

30 Developer tool is your friend

31 Any Questions? @ChrisPCasey Skype: borochris99

Download ppt "Build a Healthcare Information system in 10 days For free Chris Casey."

Similar presentations

Ads by Google