RMPVVALM ; OIT/JDA - SCAMP runtime support; Nov 17, 2024@23:35:37
;;1.0;PROSTHETICS VISION 4 SIGHT II;**2**;Jan 31, 2025;Build 38
;
; WARNING - This functionality is largely untested.
Q
EN(NAME) ; Mimic call to EN^VALM, only make it non-interactive
D WRITE^RMPVIO("VALM^"_NAME)
N NAMEIEN S NAMEIEN=$O(^SD(409.61,"B",NAME,""))
N PROCM S PROCM=$P(^SD(409.61,NAMEIEN,0),"^",10)
N PROCMIEN S PROCMIEN=$O(^ORD(101,"B",PROCM,""))
N ITEM,TARGET S ITEM=0
F S ITEM=$O(^ORD(101,PROCMIEN,10,ITEM)) Q:'ITEM D
.N ITEMIEN S ITEMIEN=$P(^ORD(101,PROCMIEN,10,ITEM,0),"^")
.N ENTCODE S ENTCODE=$G(^ORD(101,ITEMIEN,20))
.I $E(ENTCODE,1,2)="D " D ; TODO - allow DO, not just D
..N DOARG S DOARG=$P($E(ENTCODE,3,99),")")
..; TODO - validate that it's a simple DO call
..N EREF S EREF=$P(DOARG,"(")
..N RTN S RTN=$P(EREF,"^",2) Q:RTN=""
..S $P(EREF,"^",2)=$$NEWNAME^RMPVRT(RTN)
..I $T(@EREF)'="" N SPEC S SPEC(RTN)=$$NEWNAME^RMPVRT(RTN) S ENTCODE=$$REPLACE^XLFSTR(DOARG,.SPEC)
.N MNEM S MNEM=$P(^ORD(101,PROCMIEN,10,ITEM,0),"^",2)
.S TARGET(MNEM)=ENTCODE
N CMD S CMD=""
; input: NAME := free text name of list template or routine call
; PARMS := parameter list
I $G(PARMS)["T" K VALMEVL ; kill if 'T'op level
D INIT^VALM0(.NAME,$G(PARMS)) G ENQ:$D(VALMQUIT)
; -- build list of items
I $G(^TMP("VALM DATA",$J,VALMEVL,"INIT"))]"" X ^("INIT") G ENQ:$D(VALMQUIT)
; -- start event loop
S VALMBCK="R" D ASK
X:$G(^TMP("VALM DATA",$J,VALMEVL,"FNL"))]"" ^("FNL")
;
ENQ D POP^VALM0 ; Exit menu
Q
ASK ; Ask for user input via RMPVIO instead of a READ command.
F D Q:CMD="QUIT"
.D READ^RMPVIO(.CMD)
.Q:CMD="QUIT"
.;D LOG^RMPVTEST("VALM command '"_CMD_"' would invoke '"_$G(TARGET(CMD))_"'")
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRMPVVALM 1756 printed May 25, 2026@12:51:07 Page 2
RMPVVALM ; OIT/JDA - SCAMP runtime support; Nov 17, 2024@23:35:37
+1 ;;1.0;PROSTHETICS VISION 4 SIGHT II;**2**;Jan 31, 2025;Build 38
+2 ;
+3 ; WARNING - This functionality is largely untested.
+4 QUIT
EN(NAME) ; Mimic call to EN^VALM, only make it non-interactive
+1 DO WRITE^RMPVIO("VALM^"_NAME)
+2 NEW NAMEIEN
SET NAMEIEN=$ORDER(^SD(409.61,"B",NAME,""))
+3 NEW PROCM
SET PROCM=$PIECE(^SD(409.61,NAMEIEN,0),"^",10)
+4 NEW PROCMIEN
SET PROCMIEN=$ORDER(^ORD(101,"B",PROCM,""))
+5 NEW ITEM,TARGET
SET ITEM=0
+6 FOR
SET ITEM=$ORDER(^ORD(101,PROCMIEN,10,ITEM))
if 'ITEM
QUIT
Begin DoDot:1
+7 NEW ITEMIEN
SET ITEMIEN=$PIECE(^ORD(101,PROCMIEN,10,ITEM,0),"^")
+8 NEW ENTCODE
SET ENTCODE=$GET(^ORD(101,ITEMIEN,20))
+9 ; TODO - allow DO, not just D
IF $EXTRACT(ENTCODE,1,2)="D "
Begin DoDot:2
+10 NEW DOARG
SET DOARG=$PIECE($EXTRACT(ENTCODE,3,99),")")
+11 ; TODO - validate that it's a simple DO call
+12 NEW EREF
SET EREF=$PIECE(DOARG,"(")
+13 NEW RTN
SET RTN=$PIECE(EREF,"^",2)
if RTN=""
QUIT
+14 SET $PIECE(EREF,"^",2)=$$NEWNAME^RMPVRT(RTN)
+15 IF $TEXT(@EREF)'=""
NEW SPEC
SET SPEC(RTN)=$$NEWNAME^RMPVRT(RTN)
SET ENTCODE=$$REPLACE^XLFSTR(DOARG,.SPEC)
End DoDot:2
+16 NEW MNEM
SET MNEM=$PIECE(^ORD(101,PROCMIEN,10,ITEM,0),"^",2)
+17 SET TARGET(MNEM)=ENTCODE
End DoDot:1
+18 NEW CMD
SET CMD=""
+19 ; input: NAME := free text name of list template or routine call
+20 ; PARMS := parameter list
+21 ; kill if 'T'op level
IF $GET(PARMS)["T"
KILL VALMEVL
+22 DO INIT^VALM0(.NAME,$GET(PARMS))
if $DATA(VALMQUIT)
GOTO ENQ
+23 ; -- build list of items
+24 IF $GET(^TMP("VALM DATA",$JOB,VALMEVL,"INIT"))]""
XECUTE ^("INIT")
if $DATA(VALMQUIT)
GOTO ENQ
+25 ; -- start event loop
+26 SET VALMBCK="R"
DO ASK
+27 if $GET(^TMP("VALM DATA",$JOB,VALMEVL,"FNL"))]""
XECUTE ^("FNL")
+28 ;
ENQ ; Exit menu
DO POP^VALM0
+1 QUIT
ASK ; Ask for user input via RMPVIO instead of a READ command.
+1 FOR
Begin DoDot:1
+2 DO READ^RMPVIO(.CMD)
+3 if CMD="QUIT"
QUIT
+4 ;D LOG^RMPVTEST("VALM command '"_CMD_"' would invoke '"_$G(TARGET(CMD))_"'")
End DoDot:1
if CMD="QUIT"
QUIT
+5 QUIT