Programming with the VPE code library
From VistApedia
Programming with the VPE code library
Started 7/24/2006 by K Toppenberg
I'll use this to capture notes:
The code library is in the %ZVEM namespace. The source files are stored in _ZVEM*.m on GT_M
The %ZVEMKT* modules contain the code for the scrollable display/selector.
LIST (Generic Lister)
LIST^%ZVEMKT -- generic lister
SELECT (Generic Lister)
SELECT^%ZVEMKT -- generic selecter (different from SELECT^%ZVEMKTF)
Examples:
do SELECT^%ZVEMKTF(50,"TOP") will allow a user to select (by toggling with the space key) a list of fileman fields from file 50. [ESC] will jump out, and the results are stored in ^TMP("VPE","FIELDS",$J,*)
Selector(pArray,pResults,Header) ;"Purpose: Interface with VPE Selector code to select from an array ;"Input: pArray -- NAME OF array holding items to be selected from ;" Expected format: ;" @pArray@("Display Words")=ReturnValue <-- optional ;" @pArray@("Display Words")=ReturnValue ;" @pArray@("Display Words")=ReturnValue ;" pResults -- NAME OF array to have results returned in ;" ** Note: Prior will NOT be KILLED first ;" Format of returned array: ;" Only those valuse that user selected will be returned ;" @pResults@("Display Words")=ReturnValue <-- ptional ;" @pResults@("Display Words")=ReturnValue ;" @pResults@("Display Words")=ReturnValue ;" Header -- OPTIONAL -- A header text to show. new ref set ref=$name(^TMP("VEE",$J)) kill @ref if $get(pArray)="" goto SelDone if $get(pResults)="" goto SelDone
;"First set up array of options new DispWords,RtnValue new order set order=1 set DispWords=$order(@pArray@("")) if DispWords'="" for do quit:(DispWords="") . set RtnValue=$get(@pArray@(DispWords),"<NONE>") . set @ref@(order)=RtnValue_$char(9)_$extract(DispWords,1,$get(IOM,80)) . set order=order+1 . set DispWords=$order(@pArray@(DispWords)) if $get(Header)'="" set @ref@("HD")=Header D SELECT^%ZVEMKT(ref)
;"Format selected options. new index set index=$order(^TMP("VPE","SELECT",$J,"")) if index'="" for do quit:(index="") . new s,s1,s2 . set s=$get(^TMP("VPE","SELECT",$J,index)) . set s1=$piece(s,$char(9),1) . set s2=$piece(s,$char(9),2) . set @pResults@(s2)=s1 . set index=$order(^TMP("VPE","SELECT",$J,index)) kill ^TMP("VPE","SELECT",$J) kill @ref SelDone quit
TestSel new temp,results set temp("Kevin")="option 1" set temp("John")=123345 set temp("Bill")=$J do Selector("temp","results","Here is some header text") if $data(results) zwr results(*) quit