LRBEBA3 ;DALOI/JAH/FHS - ORDERING AND RESULTING OUTPATIENT ;10/04/11
;;5.2;LAB SERVICE;**291,359,352,350**;Sep 27, 1994;Build 230
;
BLDAR(LRBEDFN,LRODT,LRSN,LRBEAR,LRBEY,LRBETEST,LRBEPAN,LRBEDEL) ; Build LRBEAR array with
; CIDC information
N LRBEODT,LRBEIEN,LRBETST,LRBETS,LRJ,N,NX,P,X,XX,REQX,OK
S LRBEAR(LRBEDFN,"DSS ID")=LROOS
S LRBEAR(LRBEDFN,"ORDGX")="O"
S LRBEAR(LRBEDFN,"DOS")=LRBECDT
S LRBEAR(LRBEDFN,"PAT")=$G(LRBEDFN)
S LRBEAR(LRBEDFN,"POS")=LROOS
S LRBEAR(LRBEDFN,"DEL")=LRBEDEL
S LRBEAR(LRBEDFN,"USR")=DUZ
S LRBEIEN=LRSN_","_LRODT_","
S LRBEAR(LRBEDFN,"ORDPRO")=$$GET1^DIQ(69.01,LRBEIEN,7,"I")
S:'+$G(LRSAMP) LRSAMP=$$GET1^DIQ(69.01,LRBEIEN,3,"I")
;reset LRBETEST, LRBEY for panel tests
S LRBETS="" F S LRBETS=$O(^LRO(69,LRODT,1,LRSN,2,"B",LRBETS)) Q:'LRBETS D
.S LRJ=$O(^LRO(69,LRODT,1,LRSN,2,"B",LRBETS,0))
.Q:($P(^LRO(69,LRODT,1,LRSN,2,LRJ,0),U,9)="CA")
.I $G(ORIEN),$P(^LRO(69,LRODT,1,LRSN,2,LRJ,0),U,7)'=ORIEN Q
.I ($G(^LAB(60,LRBETS,12))),($D(^LAB(60,LRBETS,0))#2),'$L($P($G(^LAB(60,LRBETS,0)),U,5)) S LRBEPAN(LRBETS)=""
.S OK=0,N=0 F S N=$O(LRBETEST(N)) Q:'N I LRBETS=+LRBETEST(N) S OK=1
.I 'OK S N=$O(LRBETEST(""),-1),N=N+1,LRBETEST(N)=LRBETS_U_^LAB(60,LRBETS,0),LRBETEST(N,"P")=LRBETS_U_$$NLT^LRVER1(LRBETS)
.S NX=0 F S NX=$O(^LAB(60,LRBETS,2,NX)) Q:'NX D
..S X=+^LAB(60,LRBETS,2,NX,0)
..S XX=$P($P(^LAB(60,X,0),U,5),";",2),REQX=$P(^(0),U,17)
..I XX,$D(LRBESB(XX)) S P(LRBETS,XX,X)=""
..I XX,$D(LRBEPAN(LRBETS)),REQX S P(LRBETS,XX,X)="R"
..;if XX null, then possibly another panel
..I 'XX D PARRAY(X,LRBETS,.P)
.;reset LRBEY array;
.;1st subscript is panel test; 2nd subscript is data identifier of atomic test
.I $D(P(LRBETS)) D
..;retain original LRBEY array node if atomic test exists as a separate accession
..I '$D(^LRO(68,$G(LRAA),1,$G(LRAD),1,$G(LRAN),4,LRBETS,0)) K LRBEY(LRBETS)
..S XX=0 F S XX=$O(P(LRBETS,XX)) Q:'XX D
...S LRBEY(LRBETS,XX)=""
...S X=$O(P(LRBETS,XX,0))
...I P(LRBETS,XX,X)="R" S LRBEY(LRBETS,XX,"R")=X
;continue
S LRBETS="" F S LRBETS=$O(LRBETEST(LRBETS)) Q:LRBETS="" D
.S LRBETST=$P(LRBETEST(LRBETS),U,1)
.D BLDAR^LRBEBA2(LRBEDFN,LRODT,LRSN,LRBETS,LRSAMP,LRSPEC,LRBETST,.LRBEAR)
Q
;
PARRAY(XTEST,PTEST,P) ;
N NX,X,XX,REQX
S NX=0 F S NX=$O(^LAB(60,XTEST,2,NX)) Q:'NX D
.S X=+^LAB(60,XTEST,2,NX,0)
.S XX=$P($P(^LAB(60,X,0),U,5),";",2),REQX=$P(^(0),U,17)
.I XX,$D(LRBESB(XX)) S P(PTEST,XX,X)=""
.I XX,$D(LRBEPAN(PTEST)),REQX S P(PTEST,XX,X)="R"
Q
;
QRYADD(LRODT,LRSN,LRTS,LRBEDFN,LRBESMP,LRBESPC,LRBETS,LRBEX,LRBEXD) ; Query #69 for
; default LRBEDGX and SC/EI
N LRBEA,LRDGX,LRDX,LRDGXD
S LRDGX=0
F S LRDGX=$O(^LRO(69,LRODT,1,LRSN,2,LRTS,2,LRDGX)) Q:LRDGX<1 D
.S LRDGXD=2
.S LRBEPTDT=$G(^LRO(69,LRODT,1,LRSN,2,LRTS,2,LRDGX,0)) Q:'LRBEPTDT
.S LRBEA=$P(LRBEPTDT,U,1)_"^^^"_$P(LRBEPTDT,U,4)_U_$P(LRBEPTDT,U,5)
.S LRBEA=LRBEA_U_$P(LRBEPTDT,U,2)_U_$P(LRBEPTDT,U,6)_U_$P(LRBEPTDT,U,8)
.S LRBEA=LRBEA_U_$P(LRBEPTDT,U,7)_U_$P(LRBEPTDT,U,3)_U_$P(LRBEPTDT,U,10)
.I $P(LRBEPTDT,U,9)=1 S LRBEA=LRBEA_U_$P(LRBEPTDT,U,9),LRDGXD=1
.S LRBEX(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETS,$P(LRBEA,U))=LRBEA
.S LRBEXD(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETS,LRDGXD,$P(LRBEA,U))=LRBEA
Q
;
ELIG(DFN) ; Display eligibility and disabilities
D ELIG^VADPT W !," Eligibility: "_$P(VAEL(1),"^",2)_$S(+VAEL(3):" SC%: "_$P(VAEL(3),"^",2),1:"")
W !," Disabilities: " F I=0:0 S I=$O(^DPT(DFN,.372,I)) Q:'I S I1=$S($D(^DPT(DFN,.372,I,0)):^(0),1:"") D:+I1
.S LRDIS=$S($P($G(^DIC(31,+I1,0)),"^")]""&($P($G(^(0)),"^",4)']""):$P(^(0),"^"),$P($G(^DIC(31,+I1,0)),"^",4)]"":$P(^(0),"^",4),1:""),LRCNT=$P(I1,"^",2)
.S LRDIS=$E(LRDIS,1,55)
.I LRDIS]"" W ?15,LRDIS_" - "_LRCNT_"%("_$S($P(I1,"^",3):"SC",1:"NSC")_")",!
K LRDIS,LRCNT,I,I1,VAEL
Q
;
BALROW(LRODT,LRSN,LRTEST) ; CIDC LROW
N LRBEA,LRBEB,LRBEAT,LRBET,LRBESN,LRBETS,LRBETST,LRBEQT,LRBEOT,LRBEVAL
S LRBEVAL=$D(^XUSEC("PROVIDER",DUZ)) Q:'LRBEVAL
S LRBEVAL=$$CIDC^IBBAPI(DFN) Q:'LRBEVAL
I '$D(DFN) S LRBEDFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
S:$G(LRSN)="" LRSN=1
D SLROT^LRBEBA3(.LRXST,.LRTEST,.LRBEOT) S:$G(LRSS)="" LRSS="CH"
S LRBEAT=1,LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LRBEOT)
Q
;
AQ1 ; Ask question from LRORD1
N LRBEVAL
S LRBEVAL=$D(^XUSEC("PROVIDER",DUZ)) Q:'LRBEVAL
S LRBEVAL=$$CIDC^IBBAPI(DFN) Q:'LRBEVAL
K LRBEODT D DT^LRX S LRBEODT=%
S:$G(LRSS)="" LRSS="CH"
S LRBEAT=1,LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LROT)
Q
;
AQ2 ; from LROW2A
N LRBEVAL
S LRBEVAL=$$CIDC^IBBAPI(DFN) Q:'LRBEVAL
D SACC^LRBEBA2(LRODT,LRSN,LRTN,LRSSP,LRSPEC,$P(LRTEST(LRI),U,1),.LRBEX)
Q
;
SVST(ENUM,ETYP,LRODT,LRSN) ; Set the Encounter # in #69
S ^LRO(69,LRODT,1,LRSN,ETYP)=ENUM
Q
;
BALROR(LRORD) ; CIDC LRORD
N LRBEA,LRBEAT,LRBEB,LRBET,LRBESN,LRBETS,LRBETST,LRBEQT,LRBEODT
N LRBEOT,LRBEVAL,LRBEZ,LRBETN
S LRBEVAL=$D(^XUSEC("PROVIDER",DUZ)) Q:'LRBEVAL
S LRBEVAL=$$CIDC^IBBAPI(DFN) Q:'LRBEVAL
I '$D(DFN) S LRBEDFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
S LRBEAT=1,LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LROT)
Q
;
SLROT(LRXST,LRTEST,LRBEOT) ;LROT array
N LRBEA,LRBESMP,LRBESPC
S LRBESMP="" F S LRBESMP=$O(LRXST(LRBESMP)) Q:LRBESMP="" D
.S LRBEA="" F S LRBEA=$O(LRXST(LRBESMP,LRBEA)) Q:LRBEA="" D
..S LRBESPC=$P(LRXST(LRBESMP,LRBEA),U,1)
..S LRBEOT(LRBESMP,LRBESPC,LRBEA)=$P(LRTEST(LRBEA),U,1)
Q
;
MICRO1(LRODT,LRSN,LRTST,LRCNT) ;get CIDC data for microbiology
;called from LRCAPPH1
N LRBETM
N AA,DX,DXCNT,FINAL,GOPRO,GEPRO,MOD,ORD,N,X
S FINAL=$$FINAL^LRBEBA3(LRODT,LRSN,LRTST)
I $P(FINAL,U)=0 K ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT) Q
;continue if micro test completed
S DXCNT=+$O(^TMP("LRBEDX",$J,999),-1)
S LRBETM=$P($G(^LRO(69,LRODT,1,LRSN,3)),U) I 'LRBETM S LRBETM=LRODT
S LRBETM=$$PCETM^LRBEBAO(LRBETM)
S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"EVENT D/T")=LRBETM
S AA=$P($P(FINAL,";",2),U,4)
S GOPRO=$$GOPRO^LRBEBA4(LRODT,LRSN)
S GEPRO=$$GEPRO^LRBEBA4(AA)
S ^TMP("LRPXAPI",$J,"PROVIDER",1,"NAME")=GOPRO
S ^TMP("LRPXAPI",$J,"PROVIDER",1,"PRIMARY")=1
S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"ORD PROVIDER")=GOPRO
S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"ENC PROVIDER")=GEPRO
S ORD=$P($P(FINAL,";",2),U,7)
S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"ORD REFERENCE")=ORD
S ^TMP("LRBEDX",$J,"ID")=LRODT_U_LRSN
S N=0 F S N=$O(^LRO(69,LRODT,1,LRSN,2,LRTST,2,N)) Q:'N Q:N>4 D
.S X=^LRO(69,LRODT,1,LRSN,2,LRTST,2,N,0)
.S DXCNT=DXCNT+1,^TMP("LRBEDX",$J,DXCNT)=X
.I N=1 S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"DIAGNOSIS")=$P(X,U,1)
.I N>1 S ^TMP("LRPXAPI",$J,"PROCEDURE",LRCNT,"DIAGNOSIS "_N)=$P(X,U,1)
Q
;
MICRO2(LRODT,LRSN) ;setup more CIDC data for microbiology
;called from LRCAPPH1
N DXCNT,EI,EIX,X
S X=$G(^TMP("LRBEDX",$J,"ID"))
I ($P(X,U)'=LRODT)!($P(X,U,2)'=LRSN) Q
S DXCNT=+$O(^TMP("LRBEDX",$J,999),-1)
Q:'DXCNT
S DXCNT=0 F S DXCNT=$O(^TMP("LRBEDX",$J,DXCNT)) Q:'DXCNT D
.S X=^TMP("LRBEDX",$J,DXCNT)
.S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"DIAGNOSIS")=$P(X,U,1)
.I $P(X,U,2)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL SC")=$P(X,U,2),EIX("SC")=$G(EIX("SC"))+$P(X,U,2)
.I $P(X,U,3)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL CV")=$P(X,U,3),EIX("CV")=$G(EIX("CV"))+$P(X,U,3)
.I $P(X,U,4)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL AO")=$P(X,U,4),EIX("AO")=$G(EIX("AO"))+$P(X,U,4)
.I $P(X,U,5)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL IR")=$P(X,U,5),EIX("IR")=$G(EIX("IR"))+$P(X,U,5)
.I $P(X,U,6)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL EC")=$P(X,U,6),EIX("EC")=$G(EIX("EC"))+$P(X,U,6)
.I $P(X,U,7)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL MST")=$P(X,U,7),EIX("MST")=$G(EIX("MST"))+$P(X,U,7)
.I $P(X,U,8)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL HNC")=$P(X,U,8),EIX("HNC")=$G(EIX("HNC"))+$P(X,U,8)
.I $P(X,U,10)'="" S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PL SHAD")=$P(X,U,10),EIX("SHAD")=$G(EIX("SHAD"))+$P(X,U,10)
.I $P(X,U,9) S ^TMP("LRPXAPI",$J,"DX/PL",DXCNT,"PRIMARY")=$P(X,U,9)
F EI="SC","CV","AO","IR","EC","MST","HNC","SHAD" D
.I $G(EIX(EI))>1 S EIX(EI)=1
.I $G(EIX(EI))'="" S ^TMP("LRPXAPI",$J,"ENCOUNTER",1,EI)=EIX(EI)
Q
;
FINAL(LRODT,LRSN,LRTST) ;is microbiology test complete/final?
;called from MICRO1 only
;returns 1_";"_<0-node of order>, if test completed
; otherwise returns 0
N AA,AI,AY,NODEO,NODEA,NOKILL,RETURN,TST,TT,X,LRCEX,LROA
S LRCEX=$P($G(^LRO(69,LRODT,1,LRSN,.1)),U)
S LROA=LRODT_"|"_LRSN
S RETURN=0,NODEA=""
S NODEO=$G(^LRO(69,LRODT,1,LRSN,2,LRTST,0))
S TST=$P(NODEO,U),AY=$P(NODEO,U,3),AA=$P(NODEO,U,4),AI=$P(NODEO,U,5)
I TST,AA,AI,AY S NODEA=$G(^LRO(68,AA,1,AY,1,AI,4,TST,0))
;does complete date exist?
I $P(NODEA,U,5) S RETURN=1_";"_NODEO
I RETURN'=0 D
.S $P(^LRO(69,LRODT,1,LRSN,2,LRTST,0),U,12)=1
.S NOKILL=0
.S TT=0 F S TT=$O(^LRO(69,LRODT,1,LRSN,2,TT)) Q:'TT D
..S NODEO=^LRO(69,LRODT,1,LRSN,2,TT,0),AA=$P(NODEO,U,4)
..I AA,$P(NODEO,U,12)'=1,$P($G(^LRO(68,AA,0)),U,2)="MI" S NOKILL=1
.I NOKILL=0 S ^LRO(69,"AA",LRCEX,LROA)=""
Q RETURN
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRBEBA3 9016 printed Nov 22, 2024@17:20:04 Page 2
LRBEBA3 ;DALOI/JAH/FHS - ORDERING AND RESULTING OUTPATIENT ;10/04/11
+1 ;;5.2;LAB SERVICE;**291,359,352,350**;Sep 27, 1994;Build 230
+2 ;
BLDAR(LRBEDFN,LRODT,LRSN,LRBEAR,LRBEY,LRBETEST,LRBEPAN,LRBEDEL) ; Build LRBEAR array with
+1 ; CIDC information
+2 NEW LRBEODT,LRBEIEN,LRBETST,LRBETS,LRJ,N,NX,P,X,XX,REQX,OK
+3 SET LRBEAR(LRBEDFN,"DSS ID")=LROOS
+4 SET LRBEAR(LRBEDFN,"ORDGX")="O"
+5 SET LRBEAR(LRBEDFN,"DOS")=LRBECDT
+6 SET LRBEAR(LRBEDFN,"PAT")=$GET(LRBEDFN)
+7 SET LRBEAR(LRBEDFN,"POS")=LROOS
+8 SET LRBEAR(LRBEDFN,"DEL")=LRBEDEL
+9 SET LRBEAR(LRBEDFN,"USR")=DUZ
+10 SET LRBEIEN=LRSN_","_LRODT_","
+11 SET LRBEAR(LRBEDFN,"ORDPRO")=$$GET1^DIQ(69.01,LRBEIEN,7,"I")
+12 if '+$GET(LRSAMP)
SET LRSAMP=$$GET1^DIQ(69.01,LRBEIEN,3,"I")
+13 ;reset LRBETEST, LRBEY for panel tests
+14 SET LRBETS=""
FOR
SET LRBETS=$ORDER(^LRO(69,LRODT,1,LRSN,2,"B",LRBETS))
if 'LRBETS
QUIT
Begin DoDot:1
+15 SET LRJ=$ORDER(^LRO(69,LRODT,1,LRSN,2,"B",LRBETS,0))
+16 if ($PIECE(^LRO(69,LRODT,1,LRSN,2,LRJ,0),U,9)="CA")
QUIT
+17 IF $GET(ORIEN)
IF $PIECE(^LRO(69,LRODT,1,LRSN,2,LRJ,0),U,7)'=ORIEN
QUIT
+18 IF ($GET(^LAB(60,LRBETS,12)))
IF ($DATA(^LAB(60,LRBETS,0))#2)
IF '$LENGTH($PIECE($GET(^LAB(60,LRBETS,0)),U,5))
SET LRBEPAN(LRBETS)=""
+19 SET OK=0
SET N=0
FOR
SET N=$ORDER(LRBETEST(N))
if 'N
QUIT
IF LRBETS=+LRBETEST(N)
SET OK=1
+20 IF 'OK
SET N=$ORDER(LRBETEST(""),-1)
SET N=N+1
SET LRBETEST(N)=LRBETS_U_^LAB(60,LRBETS,0)
SET LRBETEST(N,"P")=LRBETS_U_$$NLT^LRVER1(LRBETS)
+21 SET NX=0
FOR
SET NX=$ORDER(^LAB(60,LRBETS,2,NX))
if 'NX
QUIT
Begin DoDot:2
+22 SET X=+^LAB(60,LRBETS,2,NX,0)
+23 SET XX=$PIECE($PIECE(^LAB(60,X,0),U,5),";",2)
SET REQX=$PIECE(^(0),U,17)
+24 IF XX
IF $DATA(LRBESB(XX))
SET P(LRBETS,XX,X)=""
+25 IF XX
IF $DATA(LRBEPAN(LRBETS))
IF REQX
SET P(LRBETS,XX,X)="R"
+26 ;if XX null, then possibly another panel
+27 IF 'XX
DO PARRAY(X,LRBETS,.P)
End DoDot:2
+28 ;reset LRBEY array;
+29 ;1st subscript is panel test; 2nd subscript is data identifier of atomic test
+30 IF $DATA(P(LRBETS))
Begin DoDot:2
+31 ;retain original LRBEY array node if atomic test exists as a separate accession
+32 IF '$DATA(^LRO(68,$GET(LRAA),1,$GET(LRAD),1,$GET(LRAN),4,LRBETS,0))
KILL LRBEY(LRBETS)
+33 SET XX=0
FOR
SET XX=$ORDER(P(LRBETS,XX))
if 'XX
QUIT
Begin DoDot:3
+34 SET LRBEY(LRBETS,XX)=""
+35 SET X=$ORDER(P(LRBETS,XX,0))
+36 IF P(LRBETS,XX,X)="R"
SET LRBEY(LRBETS,XX,"R")=X
End DoDot:3
End DoDot:2
End DoDot:1
+37 ;continue
+38 SET LRBETS=""
FOR
SET LRBETS=$ORDER(LRBETEST(LRBETS))
if LRBETS=""
QUIT
Begin DoDot:1
+39 SET LRBETST=$PIECE(LRBETEST(LRBETS),U,1)
+40 DO BLDAR^LRBEBA2(LRBEDFN,LRODT,LRSN,LRBETS,LRSAMP,LRSPEC,LRBETST,.LRBEAR)
End DoDot:1
+41 QUIT
+42 ;
PARRAY(XTEST,PTEST,P) ;
+1 NEW NX,X,XX,REQX
+2 SET NX=0
FOR
SET NX=$ORDER(^LAB(60,XTEST,2,NX))
if 'NX
QUIT
Begin DoDot:1
+3 SET X=+^LAB(60,XTEST,2,NX,0)
+4 SET XX=$PIECE($PIECE(^LAB(60,X,0),U,5),";",2)
SET REQX=$PIECE(^(0),U,17)
+5 IF XX
IF $DATA(LRBESB(XX))
SET P(PTEST,XX,X)=""
+6 IF XX
IF $DATA(LRBEPAN(PTEST))
IF REQX
SET P(PTEST,XX,X)="R"
End DoDot:1
+7 QUIT
+8 ;
QRYADD(LRODT,LRSN,LRTS,LRBEDFN,LRBESMP,LRBESPC,LRBETS,LRBEX,LRBEXD) ; Query #69 for
+1 ; default LRBEDGX and SC/EI
+2 NEW LRBEA,LRDGX,LRDX,LRDGXD
+3 SET LRDGX=0
+4 FOR
SET LRDGX=$ORDER(^LRO(69,LRODT,1,LRSN,2,LRTS,2,LRDGX))
if LRDGX<1
QUIT
Begin DoDot:1
+5 SET LRDGXD=2
+6 SET LRBEPTDT=$GET(^LRO(69,LRODT,1,LRSN,2,LRTS,2,LRDGX,0))
if 'LRBEPTDT
QUIT
+7 SET LRBEA=$PIECE(LRBEPTDT,U,1)_"^^^"_$PIECE(LRBEPTDT,U,4)_U_$PIECE(LRBEPTDT,U,5)
+8 SET LRBEA=LRBEA_U_$PIECE(LRBEPTDT,U,2)_U_$PIECE(LRBEPTDT,U,6)_U_$PIECE(LRBEPTDT,U,8)
+9 SET LRBEA=LRBEA_U_$PIECE(LRBEPTDT,U,7)_U_$PIECE(LRBEPTDT,U,3)_U_$PIECE(LRBEPTDT,U,10)
+10 IF $PIECE(LRBEPTDT,U,9)=1
SET LRBEA=LRBEA_U_$PIECE(LRBEPTDT,U,9)
SET LRDGXD=1
+11 SET LRBEX(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETS,$PIECE(LRBEA,U))=LRBEA
+12 SET LRBEXD(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETS,LRDGXD,$PIECE(LRBEA,U))=LRBEA
End DoDot:1
+13 QUIT
+14 ;
ELIG(DFN) ; Display eligibility and disabilities
+1 DO ELIG^VADPT
WRITE !," Eligibility: "_$PIECE(VAEL(1),"^",2)_$SELECT(+VAEL(3):" SC%: "_$PIECE(VAEL(3),"^",2),1:"")
+2 WRITE !," Disabilities: "
FOR I=0:0
SET I=$ORDER(^DPT(DFN,.372,I))
if 'I
QUIT
SET I1=$SELECT($DATA(^DPT(DFN,.372,I,0)):^(0),1:"")
if +I1
Begin DoDot:1
+3 SET LRDIS=$SELECT($PIECE($GET(^DIC(31,+I1,0)),"^")]""&($PIECE($GET(^(0)),"^",4)']""):$PIECE(^(0),"^"),$PIECE($GET(^DIC(31,+I1,0)),"^",4)]"":$PIECE(^(0),"^",4),1:"")
SET LRCNT=$PIECE(I1,"^",2)
+4 SET LRDIS=$EXTRACT(LRDIS,1,55)
+5 IF LRDIS]""
WRITE ?15,LRDIS_" - "_LRCNT_"%("_$SELECT($PIECE(I1,"^",3):"SC",1:"NSC")_")",!
End DoDot:1
+6 KILL LRDIS,LRCNT,I,I1,VAEL
+7 QUIT
+8 ;
BALROW(LRODT,LRSN,LRTEST) ; CIDC LROW
+1 NEW LRBEA,LRBEB,LRBEAT,LRBET,LRBESN,LRBETS,LRBETST,LRBEQT,LRBEOT,LRBEVAL
+2 SET LRBEVAL=$DATA(^XUSEC("PROVIDER",DUZ))
if 'LRBEVAL
QUIT
+3 SET LRBEVAL=$$CIDC^IBBAPI(DFN)
if 'LRBEVAL
QUIT
+4 IF '$DATA(DFN)
SET LRBEDFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
+5 if $GET(LRSN)=""
SET LRSN=1
+6 DO SLROT^LRBEBA3(.LRXST,.LRTEST,.LRBEOT)
if $GET(LRSS)=""
SET LRSS="CH"
+7 SET LRBEAT=1
SET LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LRBEOT)
+8 QUIT
+9 ;
AQ1 ; Ask question from LRORD1
+1 NEW LRBEVAL
+2 SET LRBEVAL=$DATA(^XUSEC("PROVIDER",DUZ))
if 'LRBEVAL
QUIT
+3 SET LRBEVAL=$$CIDC^IBBAPI(DFN)
if 'LRBEVAL
QUIT
+4 KILL LRBEODT
DO DT^LRX
SET LRBEODT=%
+5 if $GET(LRSS)=""
SET LRSS="CH"
+6 SET LRBEAT=1
SET LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LROT)
+7 QUIT
+8 ;
AQ2 ; from LROW2A
+1 NEW LRBEVAL
+2 SET LRBEVAL=$$CIDC^IBBAPI(DFN)
if 'LRBEVAL
QUIT
+3 DO SACC^LRBEBA2(LRODT,LRSN,LRTN,LRSSP,LRSPEC,$PIECE(LRTEST(LRI),U,1),.LRBEX)
+4 QUIT
+5 ;
SVST(ENUM,ETYP,LRODT,LRSN) ; Set the Encounter # in #69
+1 SET ^LRO(69,LRODT,1,LRSN,ETYP)=ENUM
+2 QUIT
+3 ;
BALROR(LRORD) ; CIDC LRORD
+1 NEW LRBEA,LRBEAT,LRBEB,LRBET,LRBESN,LRBETS,LRBETST,LRBEQT,LRBEODT
+2 NEW LRBEOT,LRBEVAL,LRBEZ,LRBETN
+3 SET LRBEVAL=$DATA(^XUSEC("PROVIDER",DUZ))
if 'LRBEVAL
QUIT
+4 SET LRBEVAL=$$CIDC^IBBAPI(DFN)
if 'LRBEVAL
QUIT
+5 IF '$DATA(DFN)
SET LRBEDFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
+6 SET LRBEAT=1
SET LRBEY=$$SBA^LRBEBA31(LRDFN,.LRBEX,.LRBEQT,.LROT)
+7 QUIT
+8 ;
SLROT(LRXST,LRTEST,LRBEOT) ;LROT array
+1 NEW LRBEA,LRBESMP,LRBESPC
+2 SET LRBESMP=""
FOR
SET LRBESMP=$ORDER(LRXST(LRBESMP))
if LRBESMP=""
QUIT
Begin DoDot:1
+3 SET LRBEA=""
FOR
SET LRBEA=$ORDER(LRXST(LRBESMP,LRBEA))
if LRBEA=""
QUIT
Begin DoDot:2
+4 SET LRBESPC=$PIECE(LRXST(LRBESMP,LRBEA),U,1)
+5 SET LRBEOT(LRBESMP,LRBESPC,LRBEA)=$PIECE(LRTEST(LRBEA),U,1)
End DoDot:2
End DoDot:1
+6 QUIT
+7 ;
MICRO1(LRODT,LRSN,LRTST,LRCNT) ;get CIDC data for microbiology
+1 ;called from LRCAPPH1
+2 NEW LRBETM
+3 NEW AA,DX,DXCNT,FINAL,GOPRO,GEPRO,MOD,ORD,N,X
+4 SET FINAL=$$FINAL^LRBEBA3(LRODT,LRSN,LRTST)
+5 IF $PIECE(FINAL,U)=0
KILL ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT)
QUIT
+6 ;continue if micro test completed
+7 SET DXCNT=+$ORDER(^TMP("LRBEDX",$JOB,999),-1)
+8 SET LRBETM=$PIECE($GET(^LRO(69,LRODT,1,LRSN,3)),U)
IF 'LRBETM
SET LRBETM=LRODT
+9 SET LRBETM=$$PCETM^LRBEBAO(LRBETM)
+10 SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"EVENT D/T")=LRBETM
+11 SET AA=$PIECE($PIECE(FINAL,";",2),U,4)
+12 SET GOPRO=$$GOPRO^LRBEBA4(LRODT,LRSN)
+13 SET GEPRO=$$GEPRO^LRBEBA4(AA)
+14 SET ^TMP("LRPXAPI",$JOB,"PROVIDER",1,"NAME")=GOPRO
+15 SET ^TMP("LRPXAPI",$JOB,"PROVIDER",1,"PRIMARY")=1
+16 SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"ORD PROVIDER")=GOPRO
+17 SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"ENC PROVIDER")=GEPRO
+18 SET ORD=$PIECE($PIECE(FINAL,";",2),U,7)
+19 SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"ORD REFERENCE")=ORD
+20 SET ^TMP("LRBEDX",$JOB,"ID")=LRODT_U_LRSN
+21 SET N=0
FOR
SET N=$ORDER(^LRO(69,LRODT,1,LRSN,2,LRTST,2,N))
if 'N
QUIT
if N>4
QUIT
Begin DoDot:1
+22 SET X=^LRO(69,LRODT,1,LRSN,2,LRTST,2,N,0)
+23 SET DXCNT=DXCNT+1
SET ^TMP("LRBEDX",$JOB,DXCNT)=X
+24 IF N=1
SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"DIAGNOSIS")=$PIECE(X,U,1)
+25 IF N>1
SET ^TMP("LRPXAPI",$JOB,"PROCEDURE",LRCNT,"DIAGNOSIS "_N)=$PIECE(X,U,1)
End DoDot:1
+26 QUIT
+27 ;
MICRO2(LRODT,LRSN) ;setup more CIDC data for microbiology
+1 ;called from LRCAPPH1
+2 NEW DXCNT,EI,EIX,X
+3 SET X=$GET(^TMP("LRBEDX",$JOB,"ID"))
+4 IF ($PIECE(X,U)'=LRODT)!($PIECE(X,U,2)'=LRSN)
QUIT
+5 SET DXCNT=+$ORDER(^TMP("LRBEDX",$JOB,999),-1)
+6 if 'DXCNT
QUIT
+7 SET DXCNT=0
FOR
SET DXCNT=$ORDER(^TMP("LRBEDX",$JOB,DXCNT))
if 'DXCNT
QUIT
Begin DoDot:1
+8 SET X=^TMP("LRBEDX",$JOB,DXCNT)
+9 SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"DIAGNOSIS")=$PIECE(X,U,1)
+10 IF $PIECE(X,U,2)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL SC")=$PIECE(X,U,2)
SET EIX("SC")=$GET(EIX("SC"))+$PIECE(X,U,2)
+11 IF $PIECE(X,U,3)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL CV")=$PIECE(X,U,3)
SET EIX("CV")=$GET(EIX("CV"))+$PIECE(X,U,3)
+12 IF $PIECE(X,U,4)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL AO")=$PIECE(X,U,4)
SET EIX("AO")=$GET(EIX("AO"))+$PIECE(X,U,4)
+13 IF $PIECE(X,U,5)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL IR")=$PIECE(X,U,5)
SET EIX("IR")=$GET(EIX("IR"))+$PIECE(X,U,5)
+14 IF $PIECE(X,U,6)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL EC")=$PIECE(X,U,6)
SET EIX("EC")=$GET(EIX("EC"))+$PIECE(X,U,6)
+15 IF $PIECE(X,U,7)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL MST")=$PIECE(X,U,7)
SET EIX("MST")=$GET(EIX("MST"))+$PIECE(X,U,7)
+16 IF $PIECE(X,U,8)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL HNC")=$PIECE(X,U,8)
SET EIX("HNC")=$GET(EIX("HNC"))+$PIECE(X,U,8)
+17 IF $PIECE(X,U,10)'=""
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PL SHAD")=$PIECE(X,U,10)
SET EIX("SHAD")=$GET(EIX("SHAD"))+$PIECE(X,U,10)
+18 IF $PIECE(X,U,9)
SET ^TMP("LRPXAPI",$JOB,"DX/PL",DXCNT,"PRIMARY")=$PIECE(X,U,9)
End DoDot:1
+19 FOR EI="SC","CV","AO","IR","EC","MST","HNC","SHAD"
Begin DoDot:1
+20 IF $GET(EIX(EI))>1
SET EIX(EI)=1
+21 IF $GET(EIX(EI))'=""
SET ^TMP("LRPXAPI",$JOB,"ENCOUNTER",1,EI)=EIX(EI)
End DoDot:1
+22 QUIT
+23 ;
FINAL(LRODT,LRSN,LRTST) ;is microbiology test complete/final?
+1 ;called from MICRO1 only
+2 ;returns 1_";"_<0-node of order>, if test completed
+3 ; otherwise returns 0
+4 NEW AA,AI,AY,NODEO,NODEA,NOKILL,RETURN,TST,TT,X,LRCEX,LROA
+5 SET LRCEX=$PIECE($GET(^LRO(69,LRODT,1,LRSN,.1)),U)
+6 SET LROA=LRODT_"|"_LRSN
+7 SET RETURN=0
SET NODEA=""
+8 SET NODEO=$GET(^LRO(69,LRODT,1,LRSN,2,LRTST,0))
+9 SET TST=$PIECE(NODEO,U)
SET AY=$PIECE(NODEO,U,3)
SET AA=$PIECE(NODEO,U,4)
SET AI=$PIECE(NODEO,U,5)
+10 IF TST
IF AA
IF AI
IF AY
SET NODEA=$GET(^LRO(68,AA,1,AY,1,AI,4,TST,0))
+11 ;does complete date exist?
+12 IF $PIECE(NODEA,U,5)
SET RETURN=1_";"_NODEO
+13 IF RETURN'=0
Begin DoDot:1
+14 SET $PIECE(^LRO(69,LRODT,1,LRSN,2,LRTST,0),U,12)=1
+15 SET NOKILL=0
+16 SET TT=0
FOR
SET TT=$ORDER(^LRO(69,LRODT,1,LRSN,2,TT))
if 'TT
QUIT
Begin DoDot:2
+17 SET NODEO=^LRO(69,LRODT,1,LRSN,2,TT,0)
SET AA=$PIECE(NODEO,U,4)
+18 IF AA
IF $PIECE(NODEO,U,12)'=1
IF $PIECE($GET(^LRO(68,AA,0)),U,2)="MI"
SET NOKILL=1
End DoDot:2
+19 IF NOKILL=0
SET ^LRO(69,"AA",LRCEX,LROA)=""
End DoDot:1
+20 QUIT RETURN