GMRGEDB ;CISC/RM,RTK-PATIENT DATA EDIT (cont.) ;8/23/93
 ;;3.0;Text Generator;;Jan 24, 1996
REPRINT ; PRINT MENU SELECTIONS USING GMRGSEL ARRAY.
 I '(GMRGNORD\10) X:$D(^GMRD(124.2,$P(GMRGTERM,"^"),7)) ^(7) Q:GMRGOUT  S GMRGNORD=10+GMRGNORD,$P(^TMP($J,"GMRGLVL",+GMRGLVL,$P(GMRGLVL(+GMRGLVL),"^"),$P(GMRGLVL(+GMRGLVL,$P(GMRGLVL(+GMRGLVL),"^")),"^")),"^",3)=GMRGNORD D HDR
 D:$P(GMRGTERM(0),"^",11)&(GMRGSTAR(2)=1)&GMRGTOP EN1^GMRGED9 Q:GMRGOUT  W @IOF,!,GMRGLIN("*"),!,GMRGVNAM,"   ",GMRGVSSN,?50,GMRGVDOB," (",GMRGVAGE,")    PAGE: ",GMRGSTAR(2)
 S GMRGTLC=$Y F X=0:0 S X=$O(^TMP($J,"GMRGHDR",+GMRGLVL,+GMRGLVL(+GMRGLVL),+GMRGLVL(+GMRGLVL,+GMRGLVL(+GMRGLVL)),X)) Q:X'>0  I $D(^(X))#2 W !,^(X)
 S:'$P(GMRGTERM(0),"^",10) GMRGSTAR(0,GMRGSTAR(2))=GMRGSTAR W !! S GMRGXPRT=$P(GMRGTERM,"^",2),GMRGXPRT(0)=$S($D(GMRGPRC(0)):$P(GMRGPRC(0),"^",3),1:"") D EN1^GMRGRUT2 W !,GMRGLIN("*"),! S GMRGTLC=$Y-GMRGTLC
 S GMRGLIN=3+GMRGTLC
 I '$P(GMRGTERM(0),"^",10) F GMRG1=GMRGSTAR:0 S GMRG1=$O(GMRGSEL(GMRG1)) S:GMRG1'>0 GMRGDN=1,GMRGSTAR(1)=GMRGSTAR+1 Q:GMRG1'>0  D REPRT^GMRGED4 Q:GMRGOUT!'GMRGLIN  ; save for split screen
 I $P(GMRGTERM(0),"^",10) D SSC ; save for split screen
 I 'GMRGOUT,$P(GMRGTERM(0),"^",9),GMRGDN W !?5,"Additional Text: " I $S($P(GMRGTERM,"^",3)="":0,1:1) D PRAD^GMRGED4
 Q
SSC ;
 S GMRGSTAR=GMRGSTAR(0,GMRGSTAR(2))
 F GMRG1=GMRGSTAR:0 S GMRG1=$O(^TMP($J,"GMR",GMRG1)) S GMRG0=$S('$D(GMRGSTAR(0,GMRGSTAR(2)+1)):0,GMRG1>GMRGSTAR(0,GMRGSTAR(2)+1):1,1:0) S:GMRG1'>0 GMRGDN=1 S:GMRG1'>0!GMRG0 GMRGSTAR(1)=GMRGCNT-1 Q:GMRG1'>0!GMRG0  D SSCR Q:GMRGOUT!'GMRGLIN
 I $D(GMRGSTAR(0,GMRGSTAR(2)+1)) S GMRG1=GMRGSTAR(3) D PARSEL^GMRGED4
 Q
SSCR ;
 S GMRGSTAR=GMRG1-1,I=GMRG1 D PRN^GMRGED8 Q:GMRGOUT!'GMRGLIN
 Q
HDR ;
 F X=0:0 S X=$O(GMRGHPRT(X)) Q:X'>0  I $D(GMRGHPRT(X))#2 S ^TMP($J,"GMRGHDR",+GMRGLVL,+GMRGLVL(+GMRGLVL),+GMRGLVL(+GMRGLVL,+GMRGLVL(+GMRGLVL)),X)=GMRGHPRT(X)
 I GMRGSCRP,'$D(GMRGTPLT) S GMRGUSL(+GMRGRT_"T")=+GMRGRT,GMRGTPLT=GMRGSCRP,GMRGSCRP=0 D EN1^GMRGED2 D SETSEL^GMRGED4 S GMRGSTAR=GMRGSTAR(0,GMRGSTAR(2))
 Q
ADSEL ; IF THE SELECTION HAS BEEN CHOSEN, BUT NOT CURRENTLY ACTIVE IN THE
 ; FOR THE PLAN, THEN IT WILL BE ADDED WITH ITS ADDED FLAG INDICATING NO
 K DA S DA(1)=GMRGPDA,X=$P(GMRGPRC,"^"),DA=$O(^GMR(124.3,DA(1),1,"B",X,0))
 I DA'>0 D ADNEW
 S GMRGY=1 D EN1^GMRGUTL S $P(GMRGPRC(0),"^",2)=DA,$P(^TMP($J,"GMRGLVL",$P(GMRGLVL,"^"),GMRGTLVL,GMRGSLVL,0),"^",2)=DA
 Q:'$P(^GMR(124.3,DA(1),1,DA,0),"^",3)  S X=1 F GMRG1=0:0 S GMRG1=$O(^DD(124.31,4,1,GMRG1)) Q:GMRG1'>0  X:$D(^DD(124.31,4,1,GMRG1,2)) ^(2)
 D NOADS
 Q
NOADS ;
 S X=0,$P(^GMR(124.3,DA(1),1,DA,0),"^",3)=X F GMRG1=0:0 S GMRG1=$O(^DD(124.31,4,1,GMRG1)) Q:GMRG1'>0  X:$D(^DD(124.31,4,1,GMRG1,1)) ^(1)
 Q
ADNEW ;
 S DA=$P(^GMR(124.3,DA(1),1,0),"^",3)+1 F DA=DA:1 Q:'$D(^GMR(124.3,DA(1),1,DA,0))
 S ^GMR(124.3,DA(1),1,DA,0)=X,$P(^GMR(124.3,DA(1),1,0),"^",3,4)=DA_"^"_($P(^GMR(124.3,DA(1),1,0),"^",4)+1) F GMRG1=0:0 S GMRG1=$O(^DD(124.31,.01,1,GMRG1)) Q:GMRG1'>0  X:$D(^DD(124.31,.01,1,GMRG1,1)) ^(1)
 D NOADS
 Q
FNDTMP ; FIND TEMPLATE THAT WILL BE USED IN PLAYBACK SESSION.
 I $D(GMRGTPLT) W !!?5,$C(7),"Templates CANNOT nested.  You need to finish with the template you",!?5,"are currently using before you can select a new template.",!!,"Press return to continue " R X:DTIME S:'$T!(X="^")!(X="^^") GMRGOUT=1 Q
 S X=$P(GMRGS,"[",2,99),DIC="^GMRD(124.4,",DIC(0)="EQMF",DIC("S")="I $P(^(0),U,2)=+GMRGRT" D ^DIC K DIC S:$D(DTOUT)!$D(DUOUT) GMRGOUT=1 I +Y'>0
 I +Y'>0 W:'GMRGOUT !!?5,$C(7),"INVALID TEMPLATE SELECTION",!!,"Press return to continue " R X:DTIME S:'$T!(X="^")!(X="^^") GMRGOUT=1 Q
 S GMRGTPLT=+Y,GMRGUSL(+GMRGRT_"T")=+GMRGRT
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRGEDB   3663     printed  Sep 23, 2025@19:31:27                                                                                                                                                                                                     Page 2
GMRGEDB   ;CISC/RM,RTK-PATIENT DATA EDIT (cont.) ;8/23/93
 +1       ;;3.0;Text Generator;;Jan 24, 1996
REPRINT   ; PRINT MENU SELECTIONS USING GMRGSEL ARRAY.
 +1        IF '(GMRGNORD\10)
               if $DATA(^GMRD(124.2,$PIECE(GMRGTERM,"^"),7))
                   XECUTE ^(7)
               if GMRGOUT
                   QUIT 
               SET GMRGNORD=10+GMRGNORD
               SET $PIECE(^TMP($JOB,"GMRGLVL",+GMRGLVL,$PIECE(GMRGLVL(+GMRGLVL),"^"),$PIECE(GMRGLVL(+GMRGLVL,$PIECE(GMRGLVL(+GMRGLVL),"^")),"^")),"^",3)=GMRGNORD
               DO HDR
 +2        if $PIECE(GMRGTERM(0),"^",11)&(GMRGSTAR(2)=1)&GMRGTOP
               DO EN1^GMRGED9
           if GMRGOUT
               QUIT 
           WRITE @IOF,!,GMRGLIN("*"),!,GMRGVNAM,"   ",GMRGVSSN,?50,GMRGVDOB," (",GMRGVAGE,")    PAGE: ",GMRGSTAR(2)
 +3        SET GMRGTLC=$Y
           FOR X=0:0
               SET X=$ORDER(^TMP($JOB,"GMRGHDR",+GMRGLVL,+GMRGLVL(+GMRGLVL),+GMRGLVL(+GMRGLVL,+GMRGLVL(+GMRGLVL)),X))
               if X'>0
                   QUIT 
               IF $DATA(^(X))#2
                   WRITE !,^(X)
 +4        if '$PIECE(GMRGTERM(0),"^",10)
               SET GMRGSTAR(0,GMRGSTAR(2))=GMRGSTAR
           WRITE !!
           SET GMRGXPRT=$PIECE(GMRGTERM,"^",2)
           SET GMRGXPRT(0)=$SELECT($DATA(GMRGPRC(0)):$PIECE(GMRGPRC(0),"^",3),1:"")
           DO EN1^GMRGRUT2
           WRITE !,GMRGLIN("*"),!
           SET GMRGTLC=$Y-GMRGTLC
 +5        SET GMRGLIN=3+GMRGTLC
 +6       ; save for split screen
           IF '$PIECE(GMRGTERM(0),"^",10)
               FOR GMRG1=GMRGSTAR:0
                   SET GMRG1=$ORDER(GMRGSEL(GMRG1))
                   if GMRG1'>0
                       SET GMRGDN=1
                       SET GMRGSTAR(1)=GMRGSTAR+1
                   if GMRG1'>0
                       QUIT 
                   DO REPRT^GMRGED4
                   if GMRGOUT!'GMRGLIN
                       QUIT 
 +7       ; save for split screen
           IF $PIECE(GMRGTERM(0),"^",10)
               DO SSC
 +8        IF 'GMRGOUT
               IF $PIECE(GMRGTERM(0),"^",9)
                   IF GMRGDN
                       WRITE !?5,"Additional Text: "
                       IF $SELECT($PIECE(GMRGTERM,"^",3)="":0,1:1)
                           DO PRAD^GMRGED4
 +9        QUIT 
SSC       ;
 +1        SET GMRGSTAR=GMRGSTAR(0,GMRGSTAR(2))
 +2        FOR GMRG1=GMRGSTAR:0
               SET GMRG1=$ORDER(^TMP($JOB,"GMR",GMRG1))
               SET GMRG0=$SELECT('$DATA(GMRGSTAR(0,GMRGSTAR(2)+1)):0,GMRG1>GMRGSTAR(0,GMRGSTAR(2)+1):1,1:0)
               if GMRG1'>0
                   SET GMRGDN=1
               if GMRG1'>0!GMRG0
                   SET GMRGSTAR(1)=GMRGCNT-1
               if GMRG1'>0!GMRG0
                   QUIT 
               DO SSCR
               if GMRGOUT!'GMRGLIN
                   QUIT 
 +3        IF $DATA(GMRGSTAR(0,GMRGSTAR(2)+1))
               SET GMRG1=GMRGSTAR(3)
               DO PARSEL^GMRGED4
 +4        QUIT 
SSCR      ;
 +1        SET GMRGSTAR=GMRG1-1
           SET I=GMRG1
           DO PRN^GMRGED8
           if GMRGOUT!'GMRGLIN
               QUIT 
 +2        QUIT 
HDR       ;
 +1        FOR X=0:0
               SET X=$ORDER(GMRGHPRT(X))
               if X'>0
                   QUIT 
               IF $DATA(GMRGHPRT(X))#2
                   SET ^TMP($JOB,"GMRGHDR",+GMRGLVL,+GMRGLVL(+GMRGLVL),+GMRGLVL(+GMRGLVL,+GMRGLVL(+GMRGLVL)),X)=GMRGHPRT(X)
 +2        IF GMRGSCRP
               IF '$DATA(GMRGTPLT)
                   SET GMRGUSL(+GMRGRT_"T")=+GMRGRT
                   SET GMRGTPLT=GMRGSCRP
                   SET GMRGSCRP=0
                   DO EN1^GMRGED2
                   DO SETSEL^GMRGED4
                   SET GMRGSTAR=GMRGSTAR(0,GMRGSTAR(2))
 +3        QUIT 
ADSEL     ; IF THE SELECTION HAS BEEN CHOSEN, BUT NOT CURRENTLY ACTIVE IN THE
 +1       ; FOR THE PLAN, THEN IT WILL BE ADDED WITH ITS ADDED FLAG INDICATING NO
 +2        KILL DA
           SET DA(1)=GMRGPDA
           SET X=$PIECE(GMRGPRC,"^")
           SET DA=$ORDER(^GMR(124.3,DA(1),1,"B",X,0))
 +3        IF DA'>0
               DO ADNEW
 +4        SET GMRGY=1
           DO EN1^GMRGUTL
           SET $PIECE(GMRGPRC(0),"^",2)=DA
           SET $PIECE(^TMP($JOB,"GMRGLVL",$PIECE(GMRGLVL,"^"),GMRGTLVL,GMRGSLVL,0),"^",2)=DA
 +5        if '$PIECE(^GMR(124.3,DA(1),1,DA,0),"^",3)
               QUIT 
           SET X=1
           FOR GMRG1=0:0
               SET GMRG1=$ORDER(^DD(124.31,4,1,GMRG1))
               if GMRG1'>0
                   QUIT 
               if $DATA(^DD(124.31,4,1,GMRG1,2))
                   XECUTE ^(2)
 +6        DO NOADS
 +7        QUIT 
NOADS     ;
 +1        SET X=0
           SET $PIECE(^GMR(124.3,DA(1),1,DA,0),"^",3)=X
           FOR GMRG1=0:0
               SET GMRG1=$ORDER(^DD(124.31,4,1,GMRG1))
               if GMRG1'>0
                   QUIT 
               if $DATA(^DD(124.31,4,1,GMRG1,1))
                   XECUTE ^(1)
 +2        QUIT 
ADNEW     ;
 +1        SET DA=$PIECE(^GMR(124.3,DA(1),1,0),"^",3)+1
           FOR DA=DA:1
               if '$DATA(^GMR(124.3,DA(1),1,DA,0))
                   QUIT 
 +2        SET ^GMR(124.3,DA(1),1,DA,0)=X
           SET $PIECE(^GMR(124.3,DA(1),1,0),"^",3,4)=DA_"^"_($PIECE(^GMR(124.3,DA(1),1,0),"^",4)+1)
           FOR GMRG1=0:0
               SET GMRG1=$ORDER(^DD(124.31,.01,1,GMRG1))
               if GMRG1'>0
                   QUIT 
               if $DATA(^DD(124.31,.01,1,GMRG1,1))
                   XECUTE ^(1)
 +3        DO NOADS
 +4        QUIT 
FNDTMP    ; FIND TEMPLATE THAT WILL BE USED IN PLAYBACK SESSION.
 +1        IF $DATA(GMRGTPLT)
               WRITE !!?5,$CHAR(7),"Templates CANNOT nested.  You need to finish with the template you",!?5,"are currently using before you can select a new template.",!!,"Press return to continue "
               READ X:DTIME
               if '$TEST!(X="^")!(X="^^")
                   SET GMRGOUT=1
               QUIT 
 +2        SET X=$PIECE(GMRGS,"[",2,99)
           SET DIC="^GMRD(124.4,"
           SET DIC(0)="EQMF"
           SET DIC("S")="I $P(^(0),U,2)=+GMRGRT"
           DO ^DIC
           KILL DIC
           if $DATA(DTOUT)!$DATA(DUOUT)
               SET GMRGOUT=1
           IF +Y'>0
 +3        IF +Y'>0
               if 'GMRGOUT
                   WRITE !!?5,$CHAR(7),"INVALID TEMPLATE SELECTION",!!,"Press return to continue "
               READ X:DTIME
               if '$TEST!(X="^")!(X="^^")
                   SET GMRGOUT=1
               QUIT 
 +4        SET GMRGTPLT=+Y
           SET GMRGUSL(+GMRGRT_"T")=+GMRGRT
 +5        QUIT