LRVR5 ;DALOI/CJS/DALOI/FHS - LAB ROUTINE DATA VERIFICATION ;JUL 06, 2010 3:14 PM
;;5.2;LAB SERVICE;**1,42,153,263,283,286,1027**;NOV 01, 1997
;
S LRNX=0,LRVRM=11
V40 ;
S LRNX=$O(LRORD(LRNX))
G V44:LRNX<1 D SUBS G V40:'LRTS,V40:'$D(LRVTS(LRSB))
;
; Only allow verifying reference lab results which exist in LAH, no
; entering results "on the fly" - use EM options (^LRVER)
I $G(LRDUZ(2)),LRDUZ(2)'=DUZ(2),'$D(^LAH(LRLL,1,LRSQ,LRSB)) K LRSB(LRSB) G V40
;
I $D(^LR(LRDFN,LRSS,LRIDT,LRSB)),^(LRSB)'["pending" D V25^LRVR4 G:LRVF V40
V42 D V25
S X=$S($D(LRSB(LRSB)):$P(LRSB(LRSB),U),1:""),LREDIT=0
I X="",LRDV'="" S $P(LRSB(LRSB),"^")=LRDV,X=LRDV
S LRTEST=$P(^LAB(60,+LRTS,0),U),LROUT=0 K LRNOVER(LRSB)
Q42 W !,LRTEST," " W:X'="" @LRFP R "//",X:DTIME I X'?.ANP W $C(7)," No Control Characters Allowed." G V42
I X=""&$D(LRSB(LRSB)) S X=$P(LRSB(LRSB),U)
Q43 S LRDL=X G V40:X="",V45:X'["^",V44:X="^",OUT:X="^^"
V43 S X=$P(X,U,2),DIC="^LAB(60,",DIC(0)="EOQZ" D ^DIC G:Y<1 Q42
S LRPLOC=$P(Y(0),U,5),LRSSQ=$P(LRPLOC,";",1),LRSB=$P(LRPLOC,";",2),LRTS=+Y
I LRSSQ="" W !,"Not in this group" G OUT
I LRSS'=LRSSQ!'$D(^TMP("LR",$J,"TMP",LRSB)) W !,"Not in this group" G OUT
F LRNX=0:0 S LRNX=$O(LRORD(LRNX)) Q:LRNX<1 G V42:LRSB=LRORD(LRNX)
V44 D COM^LRVR4
S LRNUF=1
Q
;
;
V45 ;
K LRSKIP
S LRDL=X
I X="@" D G V46
. S X=$S($D(LRM(LRSB)):"pending",1:"")
. S $P(LRSB(LRSB),"^")=X,$P(LRSB(LRSB),"^",2)=""
;
S X7=U_$P(^LAB(60,+LRTS,0),U,12),X6=X7_"0)"
X:'(X="*"!($E(X)="?")!(X="C")!(X="#")!(X="canc")!(X="pending")) $P(@X6,U,5,99)
I '$D(X)#2 D HELP G V42
I $D(X)#2,X["?" D HELP G:'($P(@X6,U,2)["S") V42
I $D(X)#2,$P(@X6,U,2)["S",X'="*",X'="#",X'="canc",X'="pending" D SET G:'$D(X)#2 V42
I $D(X)#2,X="C",$P(@X6,U,2)'["S" D COMP^LRVER5 G V42
;
V46 G V44:'$D(X)#2
S X1=$S($D(^LR(LRDFN,LRSS,LRLDT,LRSB)):$P(^(LRSB),U),1:""),LRFLG=""
S:X="*" X="canc" S:X="#" X="comment"
K LRQ S Y=0
I LRDEL'="" S LRQ=1 X LRDEL K LRQ
D RANGE
G:$D(LRNUF) V44
K LRNUF
G V40:'$D(LRSKIP)
S X=LRSKIP
G Q43:X["^",V40
G RANGE
;
;
RANGE D RANGE^LRVER5
RQ S X=Y
NR ;
S:$P(X,U)="" LRSB(LRSB)="" Q:$D(LRQ)
I $P(X,U)'="" D
. N I,LRX,LRY
. S $P(LRSB(LRSB),U,1,2)=X_U_LRFLG
. S $P(LRSB(LRSB),U,4)=$G(DUZ)
. I $P(LRSB(LRSB),U,9)="" S $P(LRSB(LRSB),U,9)=$S($G(LRDUZ(2)):LRDUZ(2),$G(DUZ(2)):DUZ(2),1:"")
. S LRX=$$TMPSB^LRVER1(LRSB),LRY=$P(LRSB(LRSB),U,3)
. F I=1:1:$L(LRX,"!") I $P(LRY,"!",I)="" S $P(LRY,"!",I)=$P(LRX,"!",I)
. S $P(LRSB(LRSB),U,3)=LRY
. S LRX=LRNGS,LRY=$P(LRSB(LRSB),U,5)
. F I=1:1:$L(LRX,U) I $P(LRY,"!",I)="" S $P(LRY,"!",I)=$P(LRX,U,I)
. S $P(LRSB(LRSB),U,5)=LRY
Q
;
;
SUBS ;
D LRSUBS^LRVER5
Q
;
;
SET ;
D LRSET^LRVER5
Q
;
;
HUH W !,"CHOOSE:" F I=1:1 S LRSUBS=$P(LRSET,";",I) Q:LRSUBS="" W !,$P(LRSUBS,":")," FOR ",$P(LRSUBS,":",2)
K X
Q
;
;
V25 ; From LRVR4
D V25^LRVER5
Q
;
;
OUT S LROUT=1
Q
;
;
HELP ;
W !," ??",$C(7)
S X5=X7_"3)"
W:$D(@X5) " ",@X5
W !,"Enter * to report ""canc"" for canceled."
W !,"Enter # to report ""comment""."
W:'($P(@X6,U,2)["S") !,"Enter C to enter calculate mode."
Q
LRVR5 ;DALOI/CJS/DALOI/FHS - LAB ROUTINE DATA VERIFICATION ;JUL 06, 2010 3:14 PM
+1 ;;5.2;LAB SERVICE;**1,42,153,263,283,286,1027**;NOV 01, 1997
+2 ;
+3 SET LRNX=0
SET LRVRM=11
V40 ;
+1 SET LRNX=$ORDER(LRORD(LRNX))
+2 IF LRNX<1
GOTO V44
DO SUBS
IF 'LRTS
GOTO V40
IF '$DATA(LRVTS(LRSB))
GOTO V40
+3 ;
+4 ; Only allow verifying reference lab results which exist in LAH, no
+5 ; entering results "on the fly" - use EM options (^LRVER)
+6 IF $GET(LRDUZ(2))
IF LRDUZ(2)'=DUZ(2)
IF '$DATA(^LAH(LRLL,1,LRSQ,LRSB))
KILL LRSB(LRSB)
GOTO V40
+7 ;
+8 IF $DATA(^LR(LRDFN,LRSS,LRIDT,LRSB))
IF ^(LRSB)'["pending"
DO V25^LRVR4
IF LRVF
GOTO V40
V42 DO V25
+1 SET X=$SELECT($DATA(LRSB(LRSB)):$PIECE(LRSB(LRSB),U),1:"")
SET LREDIT=0
+2 IF X=""
IF LRDV'=""
SET $PIECE(LRSB(LRSB),"^")=LRDV
SET X=LRDV
+3 SET LRTEST=$PIECE(^LAB(60,+LRTS,0),U)
SET LROUT=0
KILL LRNOVER(LRSB)
Q42 WRITE !,LRTEST," "
IF X'=""
WRITE @LRFP
READ "//",X:DTIME
IF X'?.ANP
WRITE $CHAR(7)," No Control Characters Allowed."
GOTO V42
+1 IF X=""&$DATA(LRSB(LRSB))
SET X=$PIECE(LRSB(LRSB),U)
Q43 SET LRDL=X
IF X=""
GOTO V40
IF X'["^"
GOTO V45
IF X="^"
GOTO V44
IF X="^^"
GOTO OUT
V43 SET X=$PIECE(X,U,2)
SET DIC="^LAB(60,"
SET DIC(0)="EOQZ"
DO ^DIC
IF Y<1
GOTO Q42
+1 SET LRPLOC=$PIECE(Y(0),U,5)
SET LRSSQ=$PIECE(LRPLOC,";",1)
SET LRSB=$PIECE(LRPLOC,";",2)
SET LRTS=+Y
+2 IF LRSSQ=""
WRITE !,"Not in this group"
GOTO OUT
+3 IF LRSS'=LRSSQ!'$DATA(^TMP("LR",$JOB,"TMP",LRSB))
WRITE !,"Not in this group"
GOTO OUT
+4 FOR LRNX=0:0
SET LRNX=$ORDER(LRORD(LRNX))
IF LRNX<1
QUIT
IF LRSB=LRORD(LRNX)
GOTO V42
V44 DO COM^LRVR4
+1 SET LRNUF=1
+2 QUIT
+3 ;
+4 ;
V45 ;
+1 KILL LRSKIP
+2 SET LRDL=X
+3 IF X="@"
Begin DoDot:1
+4 SET X=$SELECT($DATA(LRM(LRSB)):"pending",1:"")
+5 SET $PIECE(LRSB(LRSB),"^")=X
SET $PIECE(LRSB(LRSB),"^",2)=""
End DoDot:1
GOTO V46
+6 ;
+7 SET X7=U_$PIECE(^LAB(60,+LRTS,0),U,12)
SET X6=X7_"0)"
+8 IF '(X="*"!($EXTRACT(X)="?")!(X="C")!(X="#")!(X="canc")!(X="pending"))
XECUTE $PIECE(@X6,U,5,99)
+9 IF '$DATA(X)#2
DO HELP
GOTO V42
+10 IF $DATA(X)#2
IF X["?"
DO HELP
IF '($PIECE(@X6,U,2)["S")
GOTO V42
+11 IF $DATA(X)#2
IF $PIECE(@X6,U,2)["S"
IF X'="*"
IF X'="#"
IF X'="canc"
IF X'="pending"
DO SET
IF '$DATA(X)#2
GOTO V42
+12 IF $DATA(X)#2
IF X="C"
IF $PIECE(@X6,U,2)'["S"
DO COMP^LRVER5
GOTO V42
+13 ;
V46 IF '$DATA(X)#2
GOTO V44
+1 SET X1=$SELECT($DATA(^LR(LRDFN,LRSS,LRLDT,LRSB)):$PIECE(^(LRSB),U),1:"")
SET LRFLG=""
+2 IF X="*"
SET X="canc"
IF X="#"
SET X="comment"
+3 KILL LRQ
SET Y=0
+4 IF LRDEL'=""
SET LRQ=1
XECUTE LRDEL
KILL LRQ
+5 DO RANGE
+6 IF $DATA(LRNUF)
GOTO V44
+7 KILL LRNUF
+8 IF '$DATA(LRSKIP)
GOTO V40
+9 SET X=LRSKIP
+10 IF X["^"
GOTO Q43
GOTO V40
+11 GOTO RANGE
+12 ;
+13 ;
RANGE DO RANGE^LRVER5
RQ SET X=Y
NR ;
+1 IF $PIECE(X,U)=""
SET LRSB(LRSB)=""
IF $DATA(LRQ)
QUIT
+2 IF $PIECE(X,U)'=""
Begin DoDot:1
+3 NEW I,LRX,LRY
+4 SET $PIECE(LRSB(LRSB),U,1,2)=X_U_LRFLG
+5 SET $PIECE(LRSB(LRSB),U,4)=$GET(DUZ)
+6 IF $PIECE(LRSB(LRSB),U,9)=""
SET $PIECE(LRSB(LRSB),U,9)=$SELECT($GET(LRDUZ(2)):LRDUZ(2),$GET(DUZ(2)):DUZ(2),1:"")
+7 SET LRX=$$TMPSB^LRVER1(LRSB)
SET LRY=$PIECE(LRSB(LRSB),U,3)
+8 FOR I=1:1:$LENGTH(LRX,"!")
IF $PIECE(LRY,"!",I)=""
SET $PIECE(LRY,"!",I)=$PIECE(LRX,"!",I)
+9 SET $PIECE(LRSB(LRSB),U,3)=LRY
+10 SET LRX=LRNGS
SET LRY=$PIECE(LRSB(LRSB),U,5)
+11 FOR I=1:1:$LENGTH(LRX,U)
IF $PIECE(LRY,"!",I)=""
SET $PIECE(LRY,"!",I)=$PIECE(LRX,U,I)
+12 SET $PIECE(LRSB(LRSB),U,5)=LRY
End DoDot:1
+13 QUIT
+14 ;
+15 ;
SUBS ;
+1 DO LRSUBS^LRVER5
+2 QUIT
+3 ;
+4 ;
SET ;
+1 DO LRSET^LRVER5
+2 QUIT
+3 ;
+4 ;
HUH WRITE !,"CHOOSE:"
FOR I=1:1
SET LRSUBS=$PIECE(LRSET,";",I)
IF LRSUBS=""
QUIT
WRITE !,$PIECE(LRSUBS,":")," FOR ",$PIECE(LRSUBS,":",2)
+1 KILL X
+2 QUIT
+3 ;
+4 ;
V25 ; From LRVR4
+1 DO V25^LRVER5
+2 QUIT
+3 ;
+4 ;
OUT SET LROUT=1
+1 QUIT
+2 ;
+3 ;
HELP ;
+1 WRITE !," ??",$CHAR(7)
+2 SET X5=X7_"3)"
+3 IF $DATA(@X5)
WRITE " ",@X5
+4 WRITE !,"Enter * to report ""canc"" for canceled."
+5 WRITE !,"Enter # to report ""comment""."
+6 IF '($PIECE(@X6,U,2)["S")
WRITE !,"Enter C to enter calculate mode."
+7 QUIT