LRCAPBB ;SLC/AM/DALISC/FHS - STORE WORKLOAD FROM 65,65.5 INTO ^LRO(64.1 ; 4/4/07 7:40am
;;5.2;LAB SERVICE;**1002,1006,1031**;NOV 1, 1997
;
;;VA LR Patche(s): 72,201,325
;
;Reference to ^%ZTLOAD supported by IA #1519
;Reference to $$NOW^XLFDT supported by IA #10103
;VBECS workload included in process
EN ;
Q:'$P($G(^LAB(69.9,1,0)),U,14)
S:'$D(^LAB(69.9,1,"NITE")) ^("NITE")=""
VBEC ;Process VBECS workload collection
N ZTIO,ZTRTN,ZTDTH
I ZTDESC="COLLECT BLOOD BANK WORKLOAD" S ZTIO="",ZTRTN="LRCAPBV",ZTDTH=$H,ZTDESC="COLLECT VBECS WORKLOAD DATA" D ^%ZTLOAD
L +^LRD(65,"AA"):1 I '$T G FIN
L +^LRE("AA"):1 I '$T G FIN
S $P(^LAB(69.9,1,"NITE"),"^",4)=$$NOW^XLFDT
;S X="TRAP^LRCAPBB",@^%ZOSF("TRAP")
INVENT ;
D INIT G:'$O(^LRD(65,"AA",0)) DONOR D FT
I LRERR K ^LRD(65,"AA") D DUMP S ^TMP("LR WL ERRORS",LRX)="BASIC LRD(65 DATA MISSING" G DONOR
F S LRREC=$O(^LRD(65,"AA",LRREC)) Q:LRREC="" S LRTS="" D
.S LRFILE=LRREC_";LRD(65," F S LRTS=$O(^LRD(65,"AA",LRREC,LRTS)) Q:LRTS="" S LRDTTM="" F S LRDTTM=$O(^LRD(65,"AA",LRREC,LRTS,LRDTTM)) Q:LRDTTM="" S LRACC=^(LRDTTM) D K ^LRD(65,"AA",LRREC,LRTS,LRDTTM)
..S LRCC=0 F S LRCC=$O(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC)) Q:LRCC<1 D
...; LRRRL3 is the log in person, LRRRL4 is location type
...;S $P(^LAB(69.9,1,"NITE"),U,4)=LRREC_"99 "_LRTS_","_LRDTTM_","_LRCC
...S LRX=$G(^LRD(65,LRREC,99,LRTS,1,LRDTTM,0)),LRRRL3=$P(LRX,U,2),LRIN=$P(LRX,U,3),(LRAA,LRMA)=+$P(LRX,U,4),LRLSS=+$P(LRX,U,5) S:'LRLSS LRLSS=LRMA D CHK
...S LRX=$G(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC,0)),LRCNT=+$P(LRX,U,2)
...S:'LRCNT LRCNT=1
...S LRCTM=$P(LRDTTM,".",2),LRCDT=$P(LRDTTM,"."),(LRUW,LRCWT)=1
...I $D(^LAM(LRCC,0))#2 S LRX=^(0),LRUW=$P(LRX,"^",3),LRCWT=$P(LRX,"^",11)
...I (LRIN="")!(LRCC="")!(LRCDT="")!(LRCTM="")!(LRTS="") D DUMP Q
...W:'$D(ZTQUEUED) !,"WKLD CODE "_LRCC
...D ^LRCAPV3
...S $P(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC,0),"^",3)=1
..Q
DONOR ;
I '$O(^LRE("AA",0)) G FIN
S LRERR=0,LRREC="" D FT2
I LRERR K ^LRE("AA") D DUMP S ^TMP("LR WL ERRORS",LRX)="BASIC LRE( DATA MISSING" G FIN
F S LRREC=$O(^LRE("AA",LRREC)) Q:LRREC="" S LRI="",LRFILE=LRREC_";LRE(" F S LRI=$O(^LRE("AA",LRREC,LRI)) Q:LRI="" S LRTS="" F S LRTS=$O(^LRE("AA",LRREC,LRI,LRTS)) Q:LRTS="" D
.S LRDTTM="" F LRDTTM=$O(^LRE("AA",LRREC,LRI,LRTS,LRDTTM)) Q:LRDTTM="" S LRACC=^(LRDTTM) D
..W:'$D(ZTQUEUED) !?5,"DONOR "_LRDTTM
..S LRCC=0 F S LRCC=$O(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC)) Q:LRCC<1 D K ^LRE("AA",LRREC,LRI,LRTS,LRDTTM)
...; LRRRL3 is the log in person, LRRRL4 is location type
...;S $P(^LAB(69.9,1,"NITE"),U,4)=LRREC_"5 "_LRI_"99 "_LRTS_","_LRDTTM_","_LRCC
...S LRX=$G(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,0)),LRRRL3=$P(LRX,U,2)
...S LRX=$G(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC,0)),LRCNT=+$P(LRX,U,2)
...S:'LRCNT LRCNT=1
...S LRCTM=$P(LRDTTM,".",2),LRCDT=$P(LRDTTM,"."),(LRWU,LRCWT)=1
...I $D(^LAM(LRCC,0))#2 S LRX=^(0),LRUW=$P(LRX,"^",3),LRCWT=$P(LRX,"^",11)
...I (LRIN="")!(LRCC="")!(LRCDT="")!(LRCTM="")!(LRTS="") D DUMP Q
...D ^LRCAPV3
...S $P(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC,0),"^",3)=1
..Q
FIN S $P(^LAB(69.9,1,"NITE"),"^",4)="" L -^LRD(65,"AA") L -^LRE("AA")
I $D(ZTQUEUED) S ZTREQ="@"
D CLEAN
Q
FT ;
S LRX=$G(^LAB(69.9,1,8.1,+$G(^LAB(69.9,1,10)),0)),LRIN=$P(LRX,U),(LRAA,LRMA)=+$P(LRX,U,2),LRLSS=+$P(LRX,U,3) S:'LRLSS LRLSS=LRMA D CHK
Q
FT2 ;
S LRX=$G(^LAB(69.9,1,8.1,+$G(^LAB(69.9,1,10)),0)),LRIN=$P(LRX,U),(LRAA,LRMA)=+$P(LRX,U,4),LRLSS=+$P(LRX,U,5) S:'LRLSS LRLSS=LRMA D CHK
Q
CHK S LRERR=$S('LRIN:1,'LRMA:1,1:0) Q:LRERR
S:'$D(^LRO(68,LRMA,0))#2 LRERR=1 Q:LRERR S LRX=^(0) I '$P(LRX,U,16) S LRERR=1 Q
S:'LRLSS LRLSS=LRMA S LRWA=LRLSS
S LRLD=$S($L($P(LRX,U,19)):$P(LRX,U,19),1:"CP")
Q
DUMP ;
S LRX=$S($D(^TMP("LR WL ERRORS",0))#2:$P(^(0),U,3),1:0)+1,^TMP("LR WL ERRORS",0)=U_U_LRX
S LRESTR="BLOOD BANK RECORD= "_$S($D(LRREC):LRREC,1:"")_" TS= "_$S($D(LRTS):LRTS,1:"")_" CC= "_$S($D(LRCC):LRCC,1:"")_" IN= "_$S($D(LRIN):LRIN,1:"")
S LRESTR=LRESTR_" CDT= "_$S($D(LRCDT):LRCDT,1:"")_" CT= "_$S($D(LRCTM):LRCTM,1:"")
S ^TMP("LR WL ERRORS",LRX,$H)=LRESTR
Q
CLEAN ;
Q:$D(TEST) K LRACC,LRAD,LRCC,LRDTTM,LRCDT,LRCNT,LRCTM,LRFILE,LRIDT,LRIN,LRLSS,LRMA
K LROAD,LROL,LRRREC,LRRRL,LRTEC,LRTS,LRUG,LRX,LRZCNT,LRERR,LRQC,LRII
K LRNT,LRCWT,LRREC,LRUW,X,LRESTR,LRWA,%,LRLD,LROAD1,LROAD2,LRRRL1
K LRRRL2,LRRRL3,LRRRL4,LRI,LRFIRST,LRFNUM,LREND
Q
INIT ;
S (LRREC,LRTS,LRACC,LROAD,LROAD1,LROAD2,LRRRL,LRRRL1,LRRRL2,LRRRL3,LROL,LRII,LRIDT,LRTEC,LRFNUM,LRERR)="",LRRRL4="Z",LRUG=50 ; These variables are needed by LRCAPV3
Q
TRAP ;
S LREND=1 S:$D(^LAB(69.9,1,"NITE")) $P(^LAB(69.9,1,"NITE"),U,4)="ERROR"_$P(^("NITE"),"^",4) D @^%ZOSF("ERRTN")
Q
LRCAPBB ;SLC/AM/DALISC/FHS - STORE WORKLOAD FROM 65,65.5 INTO ^LRO(64.1 ; 4/4/07 7:40am
+1 ;;5.2;LAB SERVICE;**1002,1006,1031**;NOV 1, 1997
+2 ;
+3 ;;VA LR Patche(s): 72,201,325
+4 ;
+5 ;Reference to ^%ZTLOAD supported by IA #1519
+6 ;Reference to $$NOW^XLFDT supported by IA #10103
+7 ;VBECS workload included in process
EN ;
+1 IF '$PIECE($GET(^LAB(69.9,1,0)),U,14)
QUIT
+2 IF '$DATA(^LAB(69.9,1,"NITE"))
SET ^("NITE")=""
VBEC ;Process VBECS workload collection
+1 NEW ZTIO,ZTRTN,ZTDTH
+2 IF ZTDESC="COLLECT BLOOD BANK WORKLOAD"
SET ZTIO=""
SET ZTRTN="LRCAPBV"
SET ZTDTH=$HOROLOG
SET ZTDESC="COLLECT VBECS WORKLOAD DATA"
DO ^%ZTLOAD
+3 LOCK +^LRD(65,"AA"):1
IF '$TEST
GOTO FIN
+4 LOCK +^LRE("AA"):1
IF '$TEST
GOTO FIN
+5 SET $PIECE(^LAB(69.9,1,"NITE"),"^",4)=$$NOW^XLFDT
+6 ;S X="TRAP^LRCAPBB",@^%ZOSF("TRAP")
INVENT ;
+1 DO INIT
IF '$ORDER(^LRD(65,"AA",0))
GOTO DONOR
DO FT
+2 IF LRERR
KILL ^LRD(65,"AA")
DO DUMP
SET ^TMP("LR WL ERRORS",LRX)="BASIC LRD(65 DATA MISSING"
GOTO DONOR
+3 FOR
SET LRREC=$ORDER(^LRD(65,"AA",LRREC))
IF LRREC=""
QUIT
SET LRTS=""
Begin DoDot:1
+4 SET LRFILE=LRREC_";LRD(65,"
FOR
SET LRTS=$ORDER(^LRD(65,"AA",LRREC,LRTS))
IF LRTS=""
QUIT
SET LRDTTM=""
FOR
SET LRDTTM=$ORDER(^LRD(65,"AA",LRREC,LRTS,LRDTTM))
IF LRDTTM=""
QUIT
SET LRACC=^(LRDTTM)
Begin DoDot:2
+5 SET LRCC=0
FOR
SET LRCC=$ORDER(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC))
IF LRCC<1
QUIT
Begin DoDot:3
+6 ; LRRRL3 is the log in person, LRRRL4 is location type
+7 ;S $P(^LAB(69.9,1,"NITE"),U,4)=LRREC_"99 "_LRTS_","_LRDTTM_","_LRCC
+8 SET LRX=$GET(^LRD(65,LRREC,99,LRTS,1,LRDTTM,0))
SET LRRRL3=$PIECE(LRX,U,2)
SET LRIN=$PIECE(LRX,U,3)
SET (LRAA,LRMA)=+$PIECE(LRX,U,4)
SET LRLSS=+$PIECE(LRX,U,5)
IF 'LRLSS
SET LRLSS=LRMA
DO CHK
+9 SET LRX=$GET(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC,0))
SET LRCNT=+$PIECE(LRX,U,2)
+10 IF 'LRCNT
SET LRCNT=1
+11 SET LRCTM=$PIECE(LRDTTM,".",2)
SET LRCDT=$PIECE(LRDTTM,".")
SET (LRUW,LRCWT)=1
+12 IF $DATA(^LAM(LRCC,0))#2
SET LRX=^(0)
SET LRUW=$PIECE(LRX,"^",3)
SET LRCWT=$PIECE(LRX,"^",11)
+13 IF (LRIN="")!(LRCC="")!(LRCDT="")!(LRCTM="")!(LRTS="")
DO DUMP
QUIT
+14 IF '$DATA(ZTQUEUED)
WRITE !,"WKLD CODE "_LRCC
+15 DO ^LRCAPV3
+16 SET $PIECE(^LRD(65,LRREC,99,LRTS,1,LRDTTM,1,LRCC,0),"^",3)=1
End DoDot:3
+17 QUIT
End DoDot:2
KILL ^LRD(65,"AA",LRREC,LRTS,LRDTTM)
End DoDot:1
DONOR ;
+1 IF '$ORDER(^LRE("AA",0))
GOTO FIN
+2 SET LRERR=0
SET LRREC=""
DO FT2
+3 IF LRERR
KILL ^LRE("AA")
DO DUMP
SET ^TMP("LR WL ERRORS",LRX)="BASIC LRE( DATA MISSING"
GOTO FIN
+4 FOR
SET LRREC=$ORDER(^LRE("AA",LRREC))
IF LRREC=""
QUIT
SET LRI=""
SET LRFILE=LRREC_";LRE("
FOR
SET LRI=$ORDER(^LRE("AA",LRREC,LRI))
IF LRI=""
QUIT
SET LRTS=""
FOR
SET LRTS=$ORDER(^LRE("AA",LRREC,LRI,LRTS))
IF LRTS=""
QUIT
Begin DoDot:1
+5 SET LRDTTM=""
FOR LRDTTM=$ORDER(^LRE("AA",LRREC,LRI,LRTS,LRDTTM))
IF LRDTTM=""
QUIT
SET LRACC=^(LRDTTM)
Begin DoDot:2
+6 IF '$DATA(ZTQUEUED)
WRITE !?5,"DONOR "_LRDTTM
+7 SET LRCC=0
FOR
SET LRCC=$ORDER(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC))
IF LRCC<1
QUIT
Begin DoDot:3
+8 ; LRRRL3 is the log in person, LRRRL4 is location type
+9 ;S $P(^LAB(69.9,1,"NITE"),U,4)=LRREC_"5 "_LRI_"99 "_LRTS_","_LRDTTM_","_LRCC
+10 SET LRX=$GET(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,0))
SET LRRRL3=$PIECE(LRX,U,2)
+11 SET LRX=$GET(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC,0))
SET LRCNT=+$PIECE(LRX,U,2)
+12 IF 'LRCNT
SET LRCNT=1
+13 SET LRCTM=$PIECE(LRDTTM,".",2)
SET LRCDT=$PIECE(LRDTTM,".")
SET (LRWU,LRCWT)=1
+14 IF $DATA(^LAM(LRCC,0))#2
SET LRX=^(0)
SET LRUW=$PIECE(LRX,"^",3)
SET LRCWT=$PIECE(LRX,"^",11)
+15 IF (LRIN="")!(LRCC="")!(LRCDT="")!(LRCTM="")!(LRTS="")
DO DUMP
QUIT
+16 DO ^LRCAPV3
+17 SET $PIECE(^LRE(LRREC,5,LRI,99,LRTS,1,LRDTTM,1,LRCC,0),"^",3)=1
End DoDot:3
KILL ^LRE("AA",LRREC,LRI,LRTS,LRDTTM)
+18 QUIT
End DoDot:2
End DoDot:1
FIN SET $PIECE(^LAB(69.9,1,"NITE"),"^",4)=""
LOCK -^LRD(65,"AA")
LOCK -^LRE("AA")
+1 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+2 DO CLEAN
+3 QUIT
FT ;
+1 SET LRX=$GET(^LAB(69.9,1,8.1,+$GET(^LAB(69.9,1,10)),0))
SET LRIN=$PIECE(LRX,U)
SET (LRAA,LRMA)=+$PIECE(LRX,U,2)
SET LRLSS=+$PIECE(LRX,U,3)
IF 'LRLSS
SET LRLSS=LRMA
DO CHK
+2 QUIT
FT2 ;
+1 SET LRX=$GET(^LAB(69.9,1,8.1,+$GET(^LAB(69.9,1,10)),0))
SET LRIN=$PIECE(LRX,U)
SET (LRAA,LRMA)=+$PIECE(LRX,U,4)
SET LRLSS=+$PIECE(LRX,U,5)
IF 'LRLSS
SET LRLSS=LRMA
DO CHK
+2 QUIT
CHK SET LRERR=$SELECT('LRIN:1,'LRMA:1,1:0)
IF LRERR
QUIT
+1 IF '$DATA(^LRO(68,LRMA,0))#2
SET LRERR=1
IF LRERR
QUIT
SET LRX=^(0)
IF '$PIECE(LRX,U,16)
SET LRERR=1
QUIT
+2 IF 'LRLSS
SET LRLSS=LRMA
SET LRWA=LRLSS
+3 SET LRLD=$SELECT($LENGTH($PIECE(LRX,U,19)):$PIECE(LRX,U,19),1:"CP")
+4 QUIT
DUMP ;
+1 SET LRX=$SELECT($DATA(^TMP("LR WL ERRORS",0))#2:$PIECE(^(0),U,3),1:0)+1
SET ^TMP("LR WL ERRORS",0)=U_U_LRX
+2 SET LRESTR="BLOOD BANK RECORD= "_$SELECT($DATA(LRREC):LRREC,1:"")_" TS= "_$SELECT($DATA(LRTS):LRTS,1:"")_" CC= "_$SELECT($DATA(LRCC):LRCC,1:"")_" IN= "_$SELECT($DATA(LRIN):LRIN,1:"")
+3 SET LRESTR=LRESTR_" CDT= "_$SELECT($DATA(LRCDT):LRCDT,1:"")_" CT= "_$SELECT($DATA(LRCTM):LRCTM,1:"")
+4 SET ^TMP("LR WL ERRORS",LRX,$HOROLOG)=LRESTR
+5 QUIT
CLEAN ;
+1 IF $DATA(TEST)
QUIT
KILL LRACC,LRAD,LRCC,LRDTTM,LRCDT,LRCNT,LRCTM,LRFILE,LRIDT,LRIN,LRLSS,LRMA
+2 KILL LROAD,LROL,LRRREC,LRRRL,LRTEC,LRTS,LRUG,LRX,LRZCNT,LRERR,LRQC,LRII
+3 KILL LRNT,LRCWT,LRREC,LRUW,X,LRESTR,LRWA,%,LRLD,LROAD1,LROAD2,LRRRL1
+4 KILL LRRRL2,LRRRL3,LRRRL4,LRI,LRFIRST,LRFNUM,LREND
+5 QUIT
INIT ;
+1 ; These variables are needed by LRCAPV3
SET (LRREC,LRTS,LRACC,LROAD,LROAD1,LROAD2,LRRRL,LRRRL1,LRRRL2,LRRRL3,LROL,LRII,LRIDT,LRTEC,LRFNUM,LRERR)=""
SET LRRRL4="Z"
SET LRUG=50
+2 QUIT
TRAP ;
+1 SET LREND=1
IF $DATA(^LAB(69.9,1,"NITE"))
SET $PIECE(^LAB(69.9,1,"NITE"),U,4)="ERROR"_$PIECE(^("NITE"),"^",4)
DO @^%ZOSF("ERRTN")
+2 QUIT