GMTSXQ08 ; SLC/JER - XQORM2 for Export w/Health Summary ;1/10/92  15:03
 ;;2.5;Health Summary;;Dec 16, 1992
XQORM2 ; SLC/KCM - Lookup for Menu Utility ;11/20/90  11:32 ;
 ;;6.52;Copyright 1990, DVA;
EN ;From: XQORM  Entry: X,XQORM  Exit: X,Y,XQORM
 K Y,OROTHER I X=" " S XQORM(0)=XQORM(0)_"X" D LAST^XQORM4 I '$L(X) S Y=-1 Q
 D UP^XQORM1 K ORUX S ORUX=X,(ORUT,ORUER,Y)=0,XQORMSF=""
 F J=1:1:$L(ORUX,",") S X=$P(ORUX,",",J) D EAT,SET D:X["-" RNG^XQORM3 Q:ORUER  F K=1:1:$L(X,",") I $L($P(X,",",K)) S ORUT=ORUT+1,ORUX(ORUT)=$P(X,",",K) S:$L(ORUFG) ORUX(ORUT,"=")=ORUFG S:ORUSB ORUX(ORUT,"'")=""
 I 'ORUER S (ORUSQ,ORUT)=0 F I=0:0 S ORUT=$O(ORUX(ORUT)) Q:ORUT=""  S X=ORUX(ORUT) D SPCL I $L(X) D LOOK^XQORM3,CHAL Q:ORUER
 I +XQORM(0),+Y>XQORM(0) D:XQORM(0)["A" NE^XQORM4 S ORUER=1,Y=-1
 I 'ORUER S ORUB=0 F I=0:0 S ORUB=$O(Y(ORUB)) Q:ORUB'>0  D SCRN I 'ORUFG D:ORUX["ALL" SUB I ORUX'["ALL" D:XQORM(0)["A" NS^XQORM4 S ORUER=1
 I 'ORUER,Y>0 W:XQORM(0)["A" "   " S ORUFG=$S($X>(IOM-30):9,1:$X) K:XQORM(0)'["F" ^DISV(DUZ,"XQORM",XQORM) F I=0:0 S I=$O(Y(I)) Q:I'>0  D:XQORM(0)["A" ECHO D:XQORM(0)'["F" DISV
 S X=ORUX I ORUER K Y S Y=-1
KILL K ORUX,ORUFG,ORUSB,ORUT,ORUER,ORUFD,ORUB,ORUDA,ORUW,ORUSQ,XQORMSF,DA,J,K,Y("B") Q
SCRN S ORUFG=1 I $D(XQORM("S"))'[0,$L(XQORM("S")) S DA(1)=+XQORM,DA=+Y(ORUB) I DA N Y X XQORM("S") S ORUFG=$T
 Q
SET S ORUSB=0 I $E(X)="-",$L(X)>1 S ORUSB=1,X=$P(X,"-",2,99)
 S ORUFG="" I $E(X)'="=" S ORUFG=$P(X,"=",2,99),X=$P(X,"=",1)
 Q
SPCL I $E(X,1,2)="^^" S Y=Y+1,ORUSQ=ORUSQ+1,Y(ORUSQ)="^"_X,X="" S:$D(ORUX(ORUT,"=")) $P(Y(ORUSQ),"=",2)=ORUX(ORUT,"=") Q
 I XQORM(0)["+","+-"[X S Y=Y+1,ORUSQ=ORUSQ+1,Y(ORUSQ)=X,X="" Q
 I $E(X)=";" D SC^XQORM4 S X="",ORUER=1 Q
 S X=$P(X,";",1) D EAT
 Q
CHAL I ORUX(ORUT)="ALL" S X="ALL",ORUER=0 D ALL^XQORM4 Q
 Q:ORUER  D:ORUDA UPD^XQORM3
 Q
EAT F I=0:0 Q:$E(X)]" "  Q:'$L(X)  S X=$E(X,2,999)
 F I=0:0 Q:$E(X,$L(X))]" "  Q:'$L(X)  S X=$E(X,1,$L(X)-1)
 Q
ECHO W:($X+$L($P(Y(I),"^",3))+4)>IOM !,?ORUFG W $P(Y(I),"^",3),"  " Q
DISV S ^DISV(DUZ,"XQORM",XQORM,I)=$P(Y(I),"^",3) Q
SUB K Y(ORUB) S Y=Y-1 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSXQ08   2085     printed  Sep 23, 2025@19:37:15                                                                                                                                                                                                    Page 2
GMTSXQ08  ; SLC/JER - XQORM2 for Export w/Health Summary ;1/10/92  15:03
 +1       ;;2.5;Health Summary;;Dec 16, 1992
XQORM2    ; SLC/KCM - Lookup for Menu Utility ;11/20/90  11:32 ;
 +1       ;;6.52;Copyright 1990, DVA;
EN        ;From: XQORM  Entry: X,XQORM  Exit: X,Y,XQORM
 +1        KILL Y,OROTHER
           IF X=" "
               SET XQORM(0)=XQORM(0)_"X"
               DO LAST^XQORM4
               IF '$LENGTH(X)
                   SET Y=-1
                   QUIT 
 +2        DO UP^XQORM1
           KILL ORUX
           SET ORUX=X
           SET (ORUT,ORUER,Y)=0
           SET XQORMSF=""
 +3        FOR J=1:1:$LENGTH(ORUX,",")
               SET X=$PIECE(ORUX,",",J)
               DO EAT
               DO SET
               if X["-"
                   DO RNG^XQORM3
               if ORUER
                   QUIT 
               FOR K=1:1:$LENGTH(X,",")
                   IF $LENGTH($PIECE(X,",",K))
                       SET ORUT=ORUT+1
                       SET ORUX(ORUT)=$PIECE(X,",",K)
                       if $LENGTH(ORUFG)
                           SET ORUX(ORUT,"=")=ORUFG
                       if ORUSB
                           SET ORUX(ORUT,"'")=""
 +4        IF 'ORUER
               SET (ORUSQ,ORUT)=0
               FOR I=0:0
                   SET ORUT=$ORDER(ORUX(ORUT))
                   if ORUT=""
                       QUIT 
                   SET X=ORUX(ORUT)
                   DO SPCL
                   IF $LENGTH(X)
                       DO LOOK^XQORM3
                       DO CHAL
                       if ORUER
                           QUIT 
 +5        IF +XQORM(0)
               IF +Y>XQORM(0)
                   if XQORM(0)["A"
                       DO NE^XQORM4
                   SET ORUER=1
                   SET Y=-1
 +6        IF 'ORUER
               SET ORUB=0
               FOR I=0:0
                   SET ORUB=$ORDER(Y(ORUB))
                   if ORUB'>0
                       QUIT 
                   DO SCRN
                   IF 'ORUFG
                       if ORUX["ALL"
                           DO SUB
                       IF ORUX'["ALL"
                           if XQORM(0)["A"
                               DO NS^XQORM4
                           SET ORUER=1
 +7        IF 'ORUER
               IF Y>0
                   if XQORM(0)["A"
                       WRITE "   "
                   SET ORUFG=$SELECT($X>(IOM-30):9,1:$X)
                   if XQORM(0)'["F"
                       KILL ^DISV(DUZ,"XQORM",XQORM)
                   FOR I=0:0
                       SET I=$ORDER(Y(I))
                       if I'>0
                           QUIT 
                       if XQORM(0)["A"
                           DO ECHO
                       if XQORM(0)'["F"
                           DO DISV
 +8        SET X=ORUX
           IF ORUER
               KILL Y
               SET Y=-1
KILL       KILL ORUX,ORUFG,ORUSB,ORUT,ORUER,ORUFD,ORUB,ORUDA,ORUW,ORUSQ,XQORMSF,DA,J,K,Y("B")
           QUIT 
SCRN       SET ORUFG=1
           IF $DATA(XQORM("S"))'[0
               IF $LENGTH(XQORM("S"))
                   SET DA(1)=+XQORM
                   SET DA=+Y(ORUB)
                   IF DA
                       NEW Y
                       XECUTE XQORM("S")
                       SET ORUFG=$TEST
 +1        QUIT 
SET        SET ORUSB=0
           IF $EXTRACT(X)="-"
               IF $LENGTH(X)>1
                   SET ORUSB=1
                   SET X=$PIECE(X,"-",2,99)
 +1        SET ORUFG=""
           IF $EXTRACT(X)'="="
               SET ORUFG=$PIECE(X,"=",2,99)
               SET X=$PIECE(X,"=",1)
 +2        QUIT 
SPCL       IF $EXTRACT(X,1,2)="^^"
               SET Y=Y+1
               SET ORUSQ=ORUSQ+1
               SET Y(ORUSQ)="^"_X
               SET X=""
               if $DATA(ORUX(ORUT,"="))
                   SET $PIECE(Y(ORUSQ),"=",2)=ORUX(ORUT,"=")
               QUIT 
 +1        IF XQORM(0)["+"
               IF "+-"[X
                   SET Y=Y+1
                   SET ORUSQ=ORUSQ+1
                   SET Y(ORUSQ)=X
                   SET X=""
                   QUIT 
 +2        IF $EXTRACT(X)=";"
               DO SC^XQORM4
               SET X=""
               SET ORUER=1
               QUIT 
 +3        SET X=$PIECE(X,";",1)
           DO EAT
 +4        QUIT 
CHAL       IF ORUX(ORUT)="ALL"
               SET X="ALL"
               SET ORUER=0
               DO ALL^XQORM4
               QUIT 
 +1        if ORUER
               QUIT 
           if ORUDA
               DO UPD^XQORM3
 +2        QUIT 
EAT        FOR I=0:0
               if $EXTRACT(X)]" "
                   QUIT 
               if '$LENGTH(X)
                   QUIT 
               SET X=$EXTRACT(X,2,999)
 +1        FOR I=0:0
               if $EXTRACT(X,$LENGTH(X))]" "
                   QUIT 
               if '$LENGTH(X)
                   QUIT 
               SET X=$EXTRACT(X,1,$LENGTH(X)-1)
 +2        QUIT 
ECHO       if ($X+$LENGTH($PIECE(Y(I),"^",3))+4)>IOM
               WRITE !,?ORUFG
           WRITE $PIECE(Y(I),"^",3),"  "
           QUIT 
DISV       SET ^DISV(DUZ,"XQORM",XQORM,I)=$PIECE(Y(I),"^",3)
           QUIT 
SUB        KILL Y(ORUB)
           SET Y=Y-1
           QUIT