LAMIAUT7 ;FHS/SLC - CREATE LOAD LIST FOR VITEK ;7/20/90  09:34
 ;;5.2;AUTOMATED LAB INSTRUMENTS;**42**;Sep 27, 1994
EN ;
 S U="^",(LROPEN,LREND)=0 D DT^LRX S LRAD=DT K ^TMP("LR",$J,"T"),DIC,LRHOLD,LRTSTS
 K DIC S DIC="^LRO(68.2,",DIC(0)="AEMZ" D ^DIC S LRINST=+Y Q:Y<1
 I $P(Y(0),U,12) S LRP=12 D ACCESS I LREND W !!?10,"Access denied to this Load  Work list " G EXIT
 I $S($D(^LRO(68.2,LRINST,3)):$P(^(3),U,1),1:0) W !?10,"Load list is busy now.  Try later" G EXIT
 L ^LRO(68.2,LRINST,3):1 I '$T W !!?7,$C(7),"Some one else is editing this List",!! G EXIT
 S $P(^LRO(68.2,LRINST,3),U,1)=1,LROPEN=1 L
CLEAR ;
 K LRCTRL,LRDSPEC,LRTP
 G:'$D(^LRO(68.2,LRINST,0)) EXIT S Y(0)=^(0),LRTRANS=+$P(Y(0),U,2),LRTYPE=+$P(Y(0),U,3),LRFULL=$P(Y(0),U,5),LRINSTIT=+$P(Y(0),U,7),LRMAXCUP=$S($P(Y(0),U,4):$P(Y(0),U,4),1:30)
 D CLEAR^LAMIAUT8
 S Y(2)=$S($D(^LRO(68.2,LRINST,2)):^(2),1:""),LRTRAY=$S($P(Y(2),U,4):$P(Y(2),U,4),1:1),LRCUP=$S($P(Y(2),U,5):$P(Y(2),U,5),1:0)
 S LRTRANS=$S($D(^LAB(62.07,LRTRANS,.1)):^(.1),1:"S LRCUP=LRCUP+1"),LRINSTIT=$S($D(^LAB(62.07,LRINSTIT,.1)):^(.1),1:"Q")
 S LRP=$P(^LRO(68.2,LRINST,10,$O(^LRO(68.2,LRINST,10,0)),0),U,2),LRP=$P(^LRO(68,LRP,0),U,3)
 S %DT="AEP",%DT("A")=" Accession Date : ",%DT("B")=$S(LRP="D":LRDT0,1:$$FMTE^XLFDT($E(DT,1,3)_"0000","1D")) D DATE^LRWU I Y<1 S LRO(68.2,LRINST,3)=0 G EXIT
 S LRAD=+Y,LRALL=0 S:'LRTYPE LRTRAY=1 I '$O(^LRO(68.2,LRINST,10,0)) W !!?10,"No profile defined for this Load/List ",$C(7) G EXIT
PROF ;
 S LRALL=0 W !?5,"ALL PROFILES " S %=2 D YN^DICN G:%<0 EXIT S:%=1 LRALL=1 I %=2 K DIC S DIC="^LRO(68.2,"_LRINST_",10,",DIC(0)="AQEZ" D ^DIC G:Y<1 EXIT S LRPROF=+Y D PROF^LAMIAUT8 I LREND D EXIT Q
 I %=0 W !!?5,"You may select a single profile or all profiles defined. ",!! G PROF
 I LRALL F LRPROF=0:0 S LRPROF=$O(^LRO(68.2,LRINST,10,LRPROF)) Q:LRPROF<1  D PROF^LAMIAUT8 I LREND D EXIT Q
 I '$D(LRAA) W !!?10,"No Accession area defined ",! D EXIT Q
 I 'LRAA W !!?10,"No Accession area defined",! D EXIT Q
ACCN ;get list of accession numbers
 K LRACNL W !?5,"Enter your list of accession numbers separated by ',' or - ",!,"You can string them together, example  1,2,3-6,7,110. ",!
 F A=1:1 R !,"Enter Acc #(s) ",X:DTIME S:'$T LREND=1 Q:X=""!(LREND)  G EXIT:$E(X)="^" D ^LRWU2 S:$L(X9) LRACNL(A)=X9 I '$L(X9) W !!?10,"Incorrect format ",$C(7),!!
 G EXIT:'$O(LRACNL(0))!(LREND) D CHK G EXIT:LREND
 I $O(^TMP("LR",$J,"T",0)) D STUFF^LAMIAUT8 S LRINSTS=LRINST D ^LRLLP S LRINST=LRINSTS
EXIT ;
 S:LROPEN ^LRO(68.2,LRINST,3)=0 K LROPEN,%,AA,C,DUOUT,I,J,LAST,LRAA,LRAD,LRAN,LRCT,LRCTRL,LRCUP,LRDSPEC,LREND,LRINST,LRKEY,LRP,LRPROF,LRINSTS,LRSPEC,LRTP,LRTRANS,LRTRAY
 K LRURG,T,X,Y,LRFULL,LRACNL,LRALL,LRINSTIT,^TMP("LR",$J,"T")
 Q
ACCESS ;
 S LRKEY=+$P(Y(0),U,LRP),LRKEY=$S($D(^DIC(19.1,LRKEY,0)):$P(^(0),U),1:0),LREND=$S($D(^XUSEC(LRKEY,DUZ)):0,1:1)
 Q
CHK ;
 S P=0 F A=0:0 S A=$O(LRACNL(A)) Q:A=""  X LRACNL(A)_"S:$D(^LRO(68,LRAA,1,LRAD,1,T1,0)) X=+^(0)_U_+^(5,1,0),^TMP(""LR"",$J,""T"",T1)=X"
SHOW ;
 S A=0 D HDR F A=A:0 S A=$O(^TMP("LR",$J,"T",A)) Q:A=""  S LRDFN=+^(A),X=^LR(LRDFN,0),LRDPF=$P(X,U,2),DFN=$P(X,U,3) D PT^LRX W !,A_")",?15,PNM,?35,SSN D:$Y>20 WAIT Q:LREND
WAIT ;
 W !!,?10,$S(A>0:"Is this partial list correct ",1:" All OK ? ") S %=1 D YN^DICN I %=1 D HDR Q
 I %<1 S LREND=1 Q
W1 W !!,"(A)dd OR (D)elete " R W:DTIME I '$T!($E(W)="^") S LREND=1 Q
 Q:W=""  I "AD"'[W W !,$C(7) G W1
 F WW=0:0 W !?5,"Enter number to "_$S(W="A":"Add ",1:"Delete ") R X:DTIME Q:'$T!(X="")!($E(X)="^")  D:X'="?" @($S(W="A":"ADD",1:"DELETE")_"^LAMIAUT8") I X="?" W !?10,"Enter accession number, one at a time."
HDR ;
 W @IOF,!!!,"Acc #)",?15," Patient Name           SSN ",!! Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLAMIAUT7   3671     printed  Sep 23, 2025@19:19:11                                                                                                                                                                                                    Page 2
LAMIAUT7  ;FHS/SLC - CREATE LOAD LIST FOR VITEK ;7/20/90  09:34
 +1       ;;5.2;AUTOMATED LAB INSTRUMENTS;**42**;Sep 27, 1994
EN        ;
 +1        SET U="^"
           SET (LROPEN,LREND)=0
           DO DT^LRX
           SET LRAD=DT
           KILL ^TMP("LR",$JOB,"T"),DIC,LRHOLD,LRTSTS
 +2        KILL DIC
           SET DIC="^LRO(68.2,"
           SET DIC(0)="AEMZ"
           DO ^DIC
           SET LRINST=+Y
           if Y<1
               QUIT 
 +3        IF $PIECE(Y(0),U,12)
               SET LRP=12
               DO ACCESS
               IF LREND
                   WRITE !!?10,"Access denied to this Load  Work list "
                   GOTO EXIT
 +4        IF $SELECT($DATA(^LRO(68.2,LRINST,3)):$PIECE(^(3),U,1),1:0)
               WRITE !?10,"Load list is busy now.  Try later"
               GOTO EXIT
 +5        LOCK ^LRO(68.2,LRINST,3):1
           IF '$TEST
               WRITE !!?7,$CHAR(7),"Some one else is editing this List",!!
               GOTO EXIT
 +6        SET $PIECE(^LRO(68.2,LRINST,3),U,1)=1
           SET LROPEN=1
           LOCK 
CLEAR     ;
 +1        KILL LRCTRL,LRDSPEC,LRTP
 +2        if '$DATA(^LRO(68.2,LRINST,0))
               GOTO EXIT
           SET Y(0)=^(0)
           SET LRTRANS=+$PIECE(Y(0),U,2)
           SET LRTYPE=+$PIECE(Y(0),U,3)
           SET LRFULL=$PIECE(Y(0),U,5)
           SET LRINSTIT=+$PIECE(Y(0),U,7)
           SET LRMAXCUP=$SELECT($PIECE(Y(0),U,4):$PIECE(Y(0),U,4),1:30)
 +3        DO CLEAR^LAMIAUT8
 +4        SET Y(2)=$SELECT($DATA(^LRO(68.2,LRINST,2)):^(2),1:"")
           SET LRTRAY=$SELECT($PIECE(Y(2),U,4):$PIECE(Y(2),U,4),1:1)
           SET LRCUP=$SELECT($PIECE(Y(2),U,5):$PIECE(Y(2),U,5),1:0)
 +5        SET LRTRANS=$SELECT($DATA(^LAB(62.07,LRTRANS,.1)):^(.1),1:"S LRCUP=LRCUP+1")
           SET LRINSTIT=$SELECT($DATA(^LAB(62.07,LRINSTIT,.1)):^(.1),1:"Q")
 +6        SET LRP=$PIECE(^LRO(68.2,LRINST,10,$ORDER(^LRO(68.2,LRINST,10,0)),0),U,2)
           SET LRP=$PIECE(^LRO(68,LRP,0),U,3)
 +7        SET %DT="AEP"
           SET %DT("A")=" Accession Date : "
           SET %DT("B")=$SELECT(LRP="D":LRDT0,1:$$FMTE^XLFDT($EXTRACT(DT,1,3)_"0000","1D"))
           DO DATE^LRWU
           IF Y<1
               SET LRO(68.2,LRINST,3)=0
               GOTO EXIT
 +8        SET LRAD=+Y
           SET LRALL=0
           if 'LRTYPE
               SET LRTRAY=1
           IF '$ORDER(^LRO(68.2,LRINST,10,0))
               WRITE !!?10,"No profile defined for this Load/List ",$CHAR(7)
               GOTO EXIT
PROF      ;
 +1        SET LRALL=0
           WRITE !?5,"ALL PROFILES "
           SET %=2
           DO YN^DICN
           if %<0
               GOTO EXIT
           if %=1
               SET LRALL=1
           IF %=2
               KILL DIC
               SET DIC="^LRO(68.2,"_LRINST_",10,"
               SET DIC(0)="AQEZ"
               DO ^DIC
               if Y<1
                   GOTO EXIT
               SET LRPROF=+Y
               DO PROF^LAMIAUT8
               IF LREND
                   DO EXIT
                   QUIT 
 +2        IF %=0
               WRITE !!?5,"You may select a single profile or all profiles defined. ",!!
               GOTO PROF
 +3        IF LRALL
               FOR LRPROF=0:0
                   SET LRPROF=$ORDER(^LRO(68.2,LRINST,10,LRPROF))
                   if LRPROF<1
                       QUIT 
                   DO PROF^LAMIAUT8
                   IF LREND
                       DO EXIT
                       QUIT 
 +4        IF '$DATA(LRAA)
               WRITE !!?10,"No Accession area defined ",!
               DO EXIT
               QUIT 
 +5        IF 'LRAA
               WRITE !!?10,"No Accession area defined",!
               DO EXIT
               QUIT 
ACCN      ;get list of accession numbers
 +1        KILL LRACNL
           WRITE !?5,"Enter your list of accession numbers separated by ',' or - ",!,"You can string them together, example  1,2,3-6,7,110. ",!
 +2        FOR A=1:1
               READ !,"Enter Acc #(s) ",X:DTIME
               if '$TEST
                   SET LREND=1
               if X=""!(LREND)
                   QUIT 
               if $EXTRACT(X)="^"
                   GOTO EXIT
               DO ^LRWU2
               if $LENGTH(X9)
                   SET LRACNL(A)=X9
               IF '$LENGTH(X9)
                   WRITE !!?10,"Incorrect format ",$CHAR(7),!!
 +3        if '$ORDER(LRACNL(0))!(LREND)
               GOTO EXIT
           DO CHK
           if LREND
               GOTO EXIT
 +4        IF $ORDER(^TMP("LR",$JOB,"T",0))
               DO STUFF^LAMIAUT8
               SET LRINSTS=LRINST
               DO ^LRLLP
               SET LRINST=LRINSTS
EXIT      ;
 +1        if LROPEN
               SET ^LRO(68.2,LRINST,3)=0
           KILL LROPEN,%,AA,C,DUOUT,I,J,LAST,LRAA,LRAD,LRAN,LRCT,LRCTRL,LRCUP,LRDSPEC,LREND,LRINST,LRKEY,LRP,LRPROF,LRINSTS,LRSPEC,LRTP,LRTRANS,LRTRAY
 +2        KILL LRURG,T,X,Y,LRFULL,LRACNL,LRALL,LRINSTIT,^TMP("LR",$JOB,"T")
 +3        QUIT 
ACCESS    ;
 +1        SET LRKEY=+$PIECE(Y(0),U,LRP)
           SET LRKEY=$SELECT($DATA(^DIC(19.1,LRKEY,0)):$PIECE(^(0),U),1:0)
           SET LREND=$SELECT($DATA(^XUSEC(LRKEY,DUZ)):0,1:1)
 +2        QUIT 
CHK       ;
 +1        SET P=0
           FOR A=0:0
               SET A=$ORDER(LRACNL(A))
               if A=""
                   QUIT 
               XECUTE LRACNL(A)_"S:$D(^LRO(68,LRAA,1,LRAD,1,T1,0)) X=+^(0)_U_+^(5,1,0),^TMP(""LR"",$J,""T"",T1)=X"
SHOW      ;
 +1        SET A=0
           DO HDR
           FOR A=A:0
               SET A=$ORDER(^TMP("LR",$JOB,"T",A))
               if A=""
                   QUIT 
               SET LRDFN=+^(A)
               SET X=^LR(LRDFN,0)
               SET LRDPF=$PIECE(X,U,2)
               SET DFN=$PIECE(X,U,3)
               DO PT^LRX
               WRITE !,A_")",?15,PNM,?35,SSN
               if $Y>20
                   DO WAIT
               if LREND
                   QUIT 
WAIT      ;
 +1        WRITE !!,?10,$SELECT(A>0:"Is this partial list correct ",1:" All OK ? ")
           SET %=1
           DO YN^DICN
           IF %=1
               DO HDR
               QUIT 
 +2        IF %<1
               SET LREND=1
               QUIT 
W1         WRITE !!,"(A)dd OR (D)elete "
           READ W:DTIME
           IF '$TEST!($EXTRACT(W)="^")
               SET LREND=1
               QUIT 
 +1        if W=""
               QUIT 
           IF "AD"'[W
               WRITE !,$CHAR(7)
               GOTO W1
 +2        FOR WW=0:0
               WRITE !?5,"Enter number to "_$SELECT(W="A":"Add ",1:"Delete ")
               READ X:DTIME
               if '$TEST!(X="")!($EXTRACT(X)="^")
                   QUIT 
               if X'="?"
                   DO @($SELECT(W="A":"ADD",1:"DELETE")_"^LAMIAUT8")
               IF X="?"
                   WRITE !?10,"Enter accession number, one at a time."
HDR       ;
 +1        WRITE @IOF,!!!,"Acc #)",?15," Patient Name           SSN ",!!
           QUIT