LRGP2 ;DALOI/STAFF - COMMON PARTS TO INSTRUMENT GROUP VERIFY/CHECK ;05/08/15  16:54
 ;;5.2;LAB SERVICE;**153,221,263,290,350,446,458**;Sep 27, 1994;Build 10
 ;
 Q
 ;
 ;
EXPLODE ; from LRGP1, LRVR, LRVRARU, LRVRPOCU
 ; LRORDR="P" indicates background POC interface, order type=POC
 ; LRAUTORELEASE indicates background Auto Release of Lab UI results.
 ;
 N %,C,DIC,DIR,DIROUT,DIRUT,DUOUT,LREND,LRI,LRTEST,LRX,I,X,X1,Y
 I $G(LRORDR)'="P" K ^TMP("LR",$J)
 S LRCFL="",LRI=0 S:'$D(LRNX) LRNX=0
 F  S LRI=$O(^LRO(68.2,LRLL,10,LRPROF,1,LRI)) Q:LRI<1  I $D(^(LRI,0))#2 D
 . S LRI(0)=$G(^LRO(68.2,LRLL,10,LRPROF,1,LRI,0))
 . S LRX=$P(LRI(0),"^") K LRTEST
 . I '$P(LRI(0),U,3) D EX6(LRX)
 . S:'$D(^TMP("LR",$J,"VTO",LRX))#2 ^(LRX)=""
 K LRVTS S LRVTS=11,LRI=0
 F  S LRI=+$O(^TMP("LR",$J,"T",LRI)) Q:LRI<1  D
 . S X=$P(^TMP("LR",$J,"T",LRI),"^",5)
 . I $P(X,";",2)<1 Q  ; Invalid data name number
 . S LRVTS($P(X,";",2))=LRI,LRVTS=LRVTS+1
 . S ^TMP("LR",$J,"VTO",LRI)=$P(X,";",2)
 ;
 I $G(LRORDR)="P"!$G(LRAUTORELEASE) Q
 ;
EX3 ;
 G:$G(LREND) STOP
 ;
 K DIR,DIROUT,DIRUT,DUOUT,X,Y
 S DIR(0)="YO",DIR("A")="Would you like to see the test list",DIR("B")="No"
 D ^DIR
 I $S($G(DIRUT):1,$G(LREND):1,1:0) K ^TMP("LR",$J),LRVTS Q
 I Y=1 D
 . W @IOF,!,"The ("_$P(^LRO(68.2,LRLL,0),U)_") ["_$P(^LRO(68.2,LRLL,10,LRPROF,0),U)_"] Profile has"
 . D LIST
 ;
 K DIR,DIROUT,DIRUT,DUOUT,X,Y
 S DIR("A",1)=" "
 S DIR("A")="Do you wish to modify the test list"
 S DIR("?")="i.e. would you like to add or subtract ATOMIC tests?"
 S DIR("B")="NO"
 S DIR(0)="Y" D ^DIR
 I $D(DIRUT) S LREND=1 G STOP
 I Y=1 D EX1 G:'$G(LREND) EX3
 ;
STOP ;
 I $G(LREND) K ^TMP("LR",$J),LRVTS S LREND=0 Q
 ;
EX2 ;
 K LRVTS,DIC
 S LRVTS=11,LRI=0,C=0
 F  S LRI=$O(^TMP("LR",$J,"T",LRI)) Q:LRI<1  D
 . S X=$P(^TMP("LR",$J,"T",LRI),U,5),LRVTS($P(X,";",2))=LRI
 . S LRVTS=LRVTS+1
 . S ^TMP("LR",$J,"VTO",LRI)=$P(X,";",2)
 . S C=C+1
 . I $P($G(^LAB(60,LRI,4)),U,2) S LRCFL=LRCFL_$P(^(4),U,2)_U
 S (X,X1)=0 F  S X=$O(^TMP("LR",$J,"VTO",X)) Q:X<1  S X1=X1+1
 I C>0 W !,"You have selected ",X1," tests to work with."
 I C<1 D
 . W !,$C(7),">> Please check the PROFILE you have selected."
 . W !,">> At least one should be build name only = no "
 K ^TMP("LR",$J,"T")
 Q
 ;
 ;
EX1 ;
 N DIC,DIR,DIRUT,DIROUT,DTOUT,X,X1,Y
 ;
 S DIR("A")="Do you want to add ATOMIC test(s) to this panel",DIR("B")="NO",DIR(0)="YO"
 D ^DIR
 I $D(DIRUT) S LREND=1 Q
 I Y=1 D
 . K LRVTS,DIC
 . S DIC("A")="Select ATOMIC test(s) you wish to add: ",DIC="^LAB(60,",DIC(0)="AEMOQZ" ; ,DIC("S")="I $G(^(.2))"
 . F  D ^DIC Q:Y<1  K LRTEST D EX6(+Y)
 . W @IOF,!?5,"The List now has" D LIST
 ;
EX4 ;
 K DIR
 S DIR("A",1)=" "
 S DIR("A")="Do you wish to exclude ATOMIC tests in this panel"
 S DIR("B")="NO",DIR(0)="YO"
 D ^DIR
 I $D(DIRUT) S LREND=1 Q
 I Y=1 D
 . N LREXCL,%
 . W !!,$$CJ^XLFSTR("Tests removed from this panel will not be included for review or editing.",IOM),!!
 . K DIC
 . S LREXCL="",DIC("A")="Select ATOMIC test(s) you wish to exclude: ",DIC="^LAB(60,",DIC(0)="AEMOQ"
 . S DIC("S")="I $D(^TMP(""LR"",$J,""T"",Y))"
 . F  D ^DIC Q:Y<1  D
 . . S X1=$P($P(^TMP("LR",$J,"T",+Y),U,5),";",2)
 . . I X1 K LRVTS(X1)
 . . K ^TMP("LR",$J,"VTO",+Y),^TMP("LR",$J,"T",+Y) S LREXCL(+Y)=$P(Y,U,2) D
 . . .N I,X
 . . .S I=0 F  S I=$O(^LAB(60,+Y,2,0)) Q:I<1  I $D(^(I,0)) S X=+^(0) D
 . . . . I X K ^TMP("LR",$J,"VTO",X),^TMP("LR",$J,"T",X) S LREXCL(X)=$P($G(^LAB(60,X,0)),U)
 . I $O(LREXCL(0)) D
 . . N I
 . . W @IOF,!,"Excluding" S I=0 F  S I=$O(LREXCL(I)) Q:I<1  W !,LREXCL(I) K LRVTS(I) H 2
 Q
 ;
 ;
LIST ;
 N LRI,DIR,DIRUT,DTOUT,DUOUT,X
 W " the following tests: "
 S LRI=0,DIR(0)="E"
 F  S LRI=$O(^TMP("LR",$J,"VTO",LRI)) Q:LRI<1!($D(DUOUT))  D
 . W !,?10,$P($G(^LAB(60,LRI,0)),U)
 . I $Y>(IOSL-4) W ! D ^DIR W @IOF I $D(DIRUT) S LREND=1
 Q
 ;
 ;
YESNO ;
 W !
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S DIR("B")=$S($G(%)=1:"Yes",$G(%)=2:"No",1:"")
 S DIR(0)="Y" D ^DIR S %=Y
 Q
 ;
 ;
EX6(LRX) ; Expand test list
 ;
 N T1
 ;
 S (T1,LRTEST)=LRX,LRTEST(T1)=LRX_U_$G(^LAB(60,T1,0))
 S LRTEST(T1,"P")=LRTEST
 D ^LREXPD
 S:'$D(^TMP("LR",$J,"VTO",LRX))#2 ^(LRX)=""
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRGP2   4198     printed  Sep 23, 2025@19:50:36                                                                                                                                                                                                       Page 2
LRGP2     ;DALOI/STAFF - COMMON PARTS TO INSTRUMENT GROUP VERIFY/CHECK ;05/08/15  16:54
 +1       ;;5.2;LAB SERVICE;**153,221,263,290,350,446,458**;Sep 27, 1994;Build 10
 +2       ;
 +3        QUIT 
 +4       ;
 +5       ;
EXPLODE   ; from LRGP1, LRVR, LRVRARU, LRVRPOCU
 +1       ; LRORDR="P" indicates background POC interface, order type=POC
 +2       ; LRAUTORELEASE indicates background Auto Release of Lab UI results.
 +3       ;
 +4        NEW %,C,DIC,DIR,DIROUT,DIRUT,DUOUT,LREND,LRI,LRTEST,LRX,I,X,X1,Y
 +5        IF $GET(LRORDR)'="P"
               KILL ^TMP("LR",$JOB)
 +6        SET LRCFL=""
           SET LRI=0
           if '$DATA(LRNX)
               SET LRNX=0
 +7        FOR 
               SET LRI=$ORDER(^LRO(68.2,LRLL,10,LRPROF,1,LRI))
               if LRI<1
                   QUIT 
               IF $DATA(^(LRI,0))#2
                   Begin DoDot:1
 +8                    SET LRI(0)=$GET(^LRO(68.2,LRLL,10,LRPROF,1,LRI,0))
 +9                    SET LRX=$PIECE(LRI(0),"^")
                       KILL LRTEST
 +10                   IF '$PIECE(LRI(0),U,3)
                           DO EX6(LRX)
 +11                   if '$DATA(^TMP("LR",$JOB,"VTO",LRX))#2
                           SET ^(LRX)=""
                   End DoDot:1
 +12       KILL LRVTS
           SET LRVTS=11
           SET LRI=0
 +13       FOR 
               SET LRI=+$ORDER(^TMP("LR",$JOB,"T",LRI))
               if LRI<1
                   QUIT 
               Begin DoDot:1
 +14               SET X=$PIECE(^TMP("LR",$JOB,"T",LRI),"^",5)
 +15      ; Invalid data name number
                   IF $PIECE(X,";",2)<1
                       QUIT 
 +16               SET LRVTS($PIECE(X,";",2))=LRI
                   SET LRVTS=LRVTS+1
 +17               SET ^TMP("LR",$JOB,"VTO",LRI)=$PIECE(X,";",2)
               End DoDot:1
 +18      ;
 +19       IF $GET(LRORDR)="P"!$GET(LRAUTORELEASE)
               QUIT 
 +20      ;
EX3       ;
 +1        if $GET(LREND)
               GOTO STOP
 +2       ;
 +3        KILL DIR,DIROUT,DIRUT,DUOUT,X,Y
 +4        SET DIR(0)="YO"
           SET DIR("A")="Would you like to see the test list"
           SET DIR("B")="No"
 +5        DO ^DIR
 +6        IF $SELECT($GET(DIRUT):1,$GET(LREND):1,1:0)
               KILL ^TMP("LR",$JOB),LRVTS
               QUIT 
 +7        IF Y=1
               Begin DoDot:1
 +8                WRITE @IOF,!,"The ("_$PIECE(^LRO(68.2,LRLL,0),U)_") ["_$PIECE(^LRO(68.2,LRLL,10,LRPROF,0),U)_"] Profile has"
 +9                DO LIST
               End DoDot:1
 +10      ;
 +11       KILL DIR,DIROUT,DIRUT,DUOUT,X,Y
 +12       SET DIR("A",1)=" "
 +13       SET DIR("A")="Do you wish to modify the test list"
 +14       SET DIR("?")="i.e. would you like to add or subtract ATOMIC tests?"
 +15       SET DIR("B")="NO"
 +16       SET DIR(0)="Y"
           DO ^DIR
 +17       IF $DATA(DIRUT)
               SET LREND=1
               GOTO STOP
 +18       IF Y=1
               DO EX1
               if '$GET(LREND)
                   GOTO EX3
 +19      ;
STOP      ;
 +1        IF $GET(LREND)
               KILL ^TMP("LR",$JOB),LRVTS
               SET LREND=0
               QUIT 
 +2       ;
EX2       ;
 +1        KILL LRVTS,DIC
 +2        SET LRVTS=11
           SET LRI=0
           SET C=0
 +3        FOR 
               SET LRI=$ORDER(^TMP("LR",$JOB,"T",LRI))
               if LRI<1
                   QUIT 
               Begin DoDot:1
 +4                SET X=$PIECE(^TMP("LR",$JOB,"T",LRI),U,5)
                   SET LRVTS($PIECE(X,";",2))=LRI
 +5                SET LRVTS=LRVTS+1
 +6                SET ^TMP("LR",$JOB,"VTO",LRI)=$PIECE(X,";",2)
 +7                SET C=C+1
 +8                IF $PIECE($GET(^LAB(60,LRI,4)),U,2)
                       SET LRCFL=LRCFL_$PIECE(^(4),U,2)_U
               End DoDot:1
 +9        SET (X,X1)=0
           FOR 
               SET X=$ORDER(^TMP("LR",$JOB,"VTO",X))
               if X<1
                   QUIT 
               SET X1=X1+1
 +10       IF C>0
               WRITE !,"You have selected ",X1," tests to work with."
 +11       IF C<1
               Begin DoDot:1
 +12               WRITE !,$CHAR(7),">> Please check the PROFILE you have selected."
 +13               WRITE !,">> At least one should be build name only = no "
               End DoDot:1
 +14       KILL ^TMP("LR",$JOB,"T")
 +15       QUIT 
 +16      ;
 +17      ;
EX1       ;
 +1        NEW DIC,DIR,DIRUT,DIROUT,DTOUT,X,X1,Y
 +2       ;
 +3        SET DIR("A")="Do you want to add ATOMIC test(s) to this panel"
           SET DIR("B")="NO"
           SET DIR(0)="YO"
 +4        DO ^DIR
 +5        IF $DATA(DIRUT)
               SET LREND=1
               QUIT 
 +6        IF Y=1
               Begin DoDot:1
 +7                KILL LRVTS,DIC
 +8       ; ,DIC("S")="I $G(^(.2))"
                   SET DIC("A")="Select ATOMIC test(s) you wish to add: "
                   SET DIC="^LAB(60,"
                   SET DIC(0)="AEMOQZ"
 +9                FOR 
                       DO ^DIC
                       if Y<1
                           QUIT 
                       KILL LRTEST
                       DO EX6(+Y)
 +10               WRITE @IOF,!?5,"The List now has"
                   DO LIST
               End DoDot:1
 +11      ;
EX4       ;
 +1        KILL DIR
 +2        SET DIR("A",1)=" "
 +3        SET DIR("A")="Do you wish to exclude ATOMIC tests in this panel"
 +4        SET DIR("B")="NO"
           SET DIR(0)="YO"
 +5        DO ^DIR
 +6        IF $DATA(DIRUT)
               SET LREND=1
               QUIT 
 +7        IF Y=1
               Begin DoDot:1
 +8                NEW LREXCL,%
 +9                WRITE !!,$$CJ^XLFSTR("Tests removed from this panel will not be included for review or editing.",IOM),!!
 +10               KILL DIC
 +11               SET LREXCL=""
                   SET DIC("A")="Select ATOMIC test(s) you wish to exclude: "
                   SET DIC="^LAB(60,"
                   SET DIC(0)="AEMOQ"
 +12               SET DIC("S")="I $D(^TMP(""LR"",$J,""T"",Y))"
 +13               FOR 
                       DO ^DIC
                       if Y<1
                           QUIT 
                       Begin DoDot:2
 +14                       SET X1=$PIECE($PIECE(^TMP("LR",$JOB,"T",+Y),U,5),";",2)
 +15                       IF X1
                               KILL LRVTS(X1)
 +16                       KILL ^TMP("LR",$JOB,"VTO",+Y),^TMP("LR",$JOB,"T",+Y)
                           SET LREXCL(+Y)=$PIECE(Y,U,2)
                           Begin DoDot:3
 +17                           NEW I,X
 +18                           SET I=0
                               FOR 
                                   SET I=$ORDER(^LAB(60,+Y,2,0))
                                   if I<1
                                       QUIT 
                                   IF $DATA(^(I,0))
                                       SET X=+^(0)
                                       Begin DoDot:4
 +19                                       IF X
                                               KILL ^TMP("LR",$JOB,"VTO",X),^TMP("LR",$JOB,"T",X)
                                               SET LREXCL(X)=$PIECE($GET(^LAB(60,X,0)),U)
                                       End DoDot:4
                           End DoDot:3
                       End DoDot:2
 +20               IF $ORDER(LREXCL(0))
                       Begin DoDot:2
 +21                       NEW I
 +22                       WRITE @IOF,!,"Excluding"
                           SET I=0
                           FOR 
                               SET I=$ORDER(LREXCL(I))
                               if I<1
                                   QUIT 
                               WRITE !,LREXCL(I)
                               KILL LRVTS(I)
                               HANG 2
                       End DoDot:2
               End DoDot:1
 +23       QUIT 
 +24      ;
 +25      ;
LIST      ;
 +1        NEW LRI,DIR,DIRUT,DTOUT,DUOUT,X
 +2        WRITE " the following tests: "
 +3        SET LRI=0
           SET DIR(0)="E"
 +4        FOR 
               SET LRI=$ORDER(^TMP("LR",$JOB,"VTO",LRI))
               if LRI<1!($DATA(DUOUT))
                   QUIT 
               Begin DoDot:1
 +5                WRITE !,?10,$PIECE($GET(^LAB(60,LRI,0)),U)
 +6                IF $Y>(IOSL-4)
                       WRITE !
                       DO ^DIR
                       WRITE @IOF
                       IF $DATA(DIRUT)
                           SET LREND=1
               End DoDot:1
 +7        QUIT 
 +8       ;
 +9       ;
YESNO     ;
 +1        WRITE !
 +2        NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
 +3        SET DIR("B")=$SELECT($GET(%)=1:"Yes",$GET(%)=2:"No",1:"")
 +4        SET DIR(0)="Y"
           DO ^DIR
           SET %=Y
 +5        QUIT 
 +6       ;
 +7       ;
EX6(LRX)  ; Expand test list
 +1       ;
 +2        NEW T1
 +3       ;
 +4        SET (T1,LRTEST)=LRX
           SET LRTEST(T1)=LRX_U_$GET(^LAB(60,T1,0))
 +5        SET LRTEST(T1,"P")=LRTEST
 +6        DO ^LREXPD
 +7        if '$DATA(^TMP("LR",$JOB,"VTO",LRX))#2
               SET ^(LRX)=""
 +8        QUIT