PSOBGMG3 ;BHAM ISC/LC - BINGO BOARD MANAGER (CONT'D) ;03/02/15 18:05
;;7.0;OUTPATIENT PHARMACY;**11,77,441**;DEC 1997;Build 208
;External reference to PS(50.7 is supported by DBIA 2223
;External reference to PSDRUG( is supported by DBIA 221
;
STATUS ;
STATUS1 N DA,DIC,DIK,NDA,NDA1,PAS,PAS1,RX,RX1,RXNUM,XX,Y
S (EXT,DTME,RX,OLDT)="",(CNT,CNT1,RXNUM)=0
W ! K DIC,DLAYGO S DIC=2,DIC(0)="AEMQZ",DIC("S")="I $D(^PS(52.11,""B"",+Y))!($D(^PS(52.41,""AOR"",+Y)))",DIC("A")="Enter Patient Name: " D ^DIC K DIC G:+Y'>0!($G(DTOUT))!($G(DUOUT)) EX S NAM=Y(0,0),NNUM=+Y
BING ;do not remove this entry point SAB
S NNAM="" F S NNAM=$O(^PS(52.11,"BA",NNAM)) Q:NNAM="" I NAM=NNAM D
.F NDA=0:0 S NDA=$O(^PS(52.11,"BA",NNAM,NDA)) Q:'NDA I +$G(^PS(52.11,NDA,0))=$G(NNUM) S CNT=CNT+1,NDA(CNT)=NDA
PEND F NNAM=0:0 S NNAM=$O(^PS(52.41,"AOR",NNAM)) Q:'NNAM I NNAM=$G(NNUM),NAM=$P($G(^DPT(NNAM,0)),"^") D
.F NDAINS=0:0 S NDAINS=$O(^PS(52.41,"AOR",NNAM,NDAINS)) Q:'NDAINS F NDA=0:0 S NDA=$O(^PS(52.41,"AOR",NNAM,NDAINS,NDA)) Q:'NDA S CNT1=CNT1+1,NDA1(CNT1)=NDA
F LP=0:0 S LP=$O(NDA(LP)) Q:('LP)!$G(EXT) S DA=NDA(LP) D OLDT,PRSE
F LP=0:0 S LP=$O(NDA1(LP)) Q:('LP)!$G(EXT) S DA=NDA1(LP) D:$G(^PS(52.41,DA,0)) PRSE1
K CNT,CNT1,LP,NDA,NDA1,NAM,NNAM,OI,OLDT,PAS,PAS1,NDAINS
G:'$G(PSOHA) STATUS1
EX K CNT,CNT1,DG,EXT,LP,NDA,NDA1,NAM,NNAM,NNUM,OI,OLDT,PAS,PAS1,DA,DIC,DIK,DTME,DIS,DIV,PKP,TIN,TOUT,XX,Y,PN,ODTP,EBY,PROV,DRG,LOGDT,MW
Q
;
OLDT ;
S OLDT="" I $P($P($G(^PS(52.11,DA,0)),"^",5),".")'=DT S Y=$P($P($G(^PS(52.11,DA,0)),"^",5),".") D DD^%DT S OLDT="***Entered on "_Y_"***"
Q
;
PRSE ;
S RX="",RX1="",RXNUM=0
F XX=0:0 S XX=$O(^PS(52.11,DA,2,"B",XX)) Q:'XX S XX1=$S($G(^PSRX(XX,0)):$P(^(0),"^"),1:XX) D
.S:$L(RX_XX1)>200 RX1=RX1_XX1_", " S:$L(RX_XX1)<200 RX=RX_XX1_", ",RXNUM=RXNUM+1
S DTME=$P(^PS(52.11,DA,0),"^",5),DIS=$S($P(^(0),"^",7)'="":1,1:0),DIV=$P(^(0),"^",4),DG=$P(^(0),"^",3),TIN=$P(^(0),"^",6),TOUT=$P(^(0),"^",7)
S PKP=$S($D(^PS(52.11,"AD",DG,DA)):1,1:0),PKPD=$S($D(^PS(52.11,"ANAMK",DA,DG,NNUM)):1,1:0)
S TIN=+$E(TIN,1,2)_":"_$E(TIN,3,4),TOUT=+$E(TOUT,1,2)_":"_$E(TOUT,3,4) S Y=DTME X ^DD("DD") S DTME=Y
W:'$G(PAS) @IOF,!,?8,NAM_" has the following orders for "_+$E(DT,4,5)_"/"_+$E(DT,6,7)_"/"_$E(DT,2,3)
I '$G(DIS) W !!,"Being Processed: "_OLDT,!,?3,"Division: "_$P(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: ",!,?3,"Rx #: "_RX W:$G(RX1) !,?3,RX1
I $Y+6>IOSL D ENPG Q:$G(EXT)
I $G(DIS),$G(PKP),'$G(PKPD) W !!,"Ready For Pickup: ",!,?3,"Division: "_$P(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: "_TOUT,!,?3,"Rx #: "_RX W:$G(RX1) !,?3,RX1
I $Y+6>IOSL D ENPG Q:$G(EXT)
;*****Picked Up status is dependent on wait time stored in ^PSRX*****
I $G(DIS),$G(PKPD) W !!,"Picked Up: ",!,?3,"Division: "_$P(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: "_TOUT,!,?3,"Rx #: "_RX W:$G(RX1) !,?3,RX1
I $Y+6>IOSL D ENPG Q:$G(EXT)
S PAS=1
STEX K DA,DIC,DG,DIK,DTME,DIS,DIV,PKP,PKPD,TIN,TOUT,XX,XX1,Y
Q
PRSE1 ;PENDING
Q:$P(^PS(52.41,DA,0),"^",3)="RF"
S PN=$P(^PS(52.41,DA,0),"^"),ODTP=$P(^(0),"^",3),EBY=$P(^(0),"^",4),PROV=$P(^(0),"^",5),DRG=$P(^(0),"^",9),LOGDT=$P(^(0),"^",12),MW=$P(^(0),"^",17),OI=$P(^(0),"^",8)
S Y=LOGDT,LOGDT=+$E(Y,4,5)_"/"_+$E(Y,6,7)_"/"_$E(Y,2,3)_"@"_$E($P(Y,".",2),1,2)_":"_$E($P(Y,".",2),3,4)
;format text for screen
W:'$G(PAS)&('$G(PAS1)) @IOF,!,?8,NAM_" has the following orders for "_+$E(DT,4,5)_"/"_+$E(DT,6,7)_"/"_$E(DT,2,3)
;
W !!,"Pending: ",!,?3,"Orderable Item: "_$P(^PS(50.7,OI,0),"^"),?52,"Provider: "_$P(^VA(200,PROV,0),"^")
W !,?3,"Entered By: "_$P(^VA(200,EBY,0),"^"),?52,"Time In: "_LOGDT
W !,?3,"Drug: "_$S($G(DRG):$P(^PSDRUG(DRG,0),"^"),1:""),?52,"Routing: "_$S($G(MW)="M":"MAIL",$G(MW)="P":"PARK",1:"WINDOW") ;441 PAPI
I $Y+6>IOSL D ENPG Q:$G(EXT)
STEX1 K DA,DIC,DIK,PN,ODTP,EBY,PROV,DRG,LOGDT,MW,XX,XX1,Y
S PAS1=1
Q
ENPG K DIR,DUOUT,DTOUT,DIRUT S DIR(0)="E"
D ^DIR S:'Y EXT=1
K DIR,DTOUT,DIRUT,DUOUT W @IOF
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOBGMG3 3977 printed Oct 16, 2024@18:25:25 Page 2
PSOBGMG3 ;BHAM ISC/LC - BINGO BOARD MANAGER (CONT'D) ;03/02/15 18:05
+1 ;;7.0;OUTPATIENT PHARMACY;**11,77,441**;DEC 1997;Build 208
+2 ;External reference to PS(50.7 is supported by DBIA 2223
+3 ;External reference to PSDRUG( is supported by DBIA 221
+4 ;
STATUS ;
STATUS1 NEW DA,DIC,DIK,NDA,NDA1,PAS,PAS1,RX,RX1,RXNUM,XX,Y
+1 SET (EXT,DTME,RX,OLDT)=""
SET (CNT,CNT1,RXNUM)=0
+2 WRITE !
KILL DIC,DLAYGO
SET DIC=2
SET DIC(0)="AEMQZ"
SET DIC("S")="I $D(^PS(52.11,""B"",+Y))!($D(^PS(52.41,""AOR"",+Y)))"
SET DIC("A")="Enter Patient Name: "
DO ^DIC
KILL DIC
if +Y'>0!($GET(DTOUT))!($GET(DUOUT))
GOTO EX
SET NAM=Y(0,0)
SET NNUM=+Y
BING ;do not remove this entry point SAB
+1 SET NNAM=""
FOR
SET NNAM=$ORDER(^PS(52.11,"BA",NNAM))
if NNAM=""
QUIT
IF NAM=NNAM
Begin DoDot:1
+2 FOR NDA=0:0
SET NDA=$ORDER(^PS(52.11,"BA",NNAM,NDA))
if 'NDA
QUIT
IF +$GET(^PS(52.11,NDA,0))=$GET(NNUM)
SET CNT=CNT+1
SET NDA(CNT)=NDA
End DoDot:1
PEND FOR NNAM=0:0
SET NNAM=$ORDER(^PS(52.41,"AOR",NNAM))
if 'NNAM
QUIT
IF NNAM=$GET(NNUM)
IF NAM=$PIECE($GET(^DPT(NNAM,0)),"^")
Begin DoDot:1
+1 FOR NDAINS=0:0
SET NDAINS=$ORDER(^PS(52.41,"AOR",NNAM,NDAINS))
if 'NDAINS
QUIT
FOR NDA=0:0
SET NDA=$ORDER(^PS(52.41,"AOR",NNAM,NDAINS,NDA))
if 'NDA
QUIT
SET CNT1=CNT1+1
SET NDA1(CNT1)=NDA
End DoDot:1
+2 FOR LP=0:0
SET LP=$ORDER(NDA(LP))
if ('LP)!$GET(EXT)
QUIT
SET DA=NDA(LP)
DO OLDT
DO PRSE
+3 FOR LP=0:0
SET LP=$ORDER(NDA1(LP))
if ('LP)!$GET(EXT)
QUIT
SET DA=NDA1(LP)
if $GET(^PS(52.41,DA,0))
DO PRSE1
+4 KILL CNT,CNT1,LP,NDA,NDA1,NAM,NNAM,OI,OLDT,PAS,PAS1,NDAINS
+5 if '$GET(PSOHA)
GOTO STATUS1
EX KILL CNT,CNT1,DG,EXT,LP,NDA,NDA1,NAM,NNAM,NNUM,OI,OLDT,PAS,PAS1,DA,DIC,DIK,DTME,DIS,DIV,PKP,TIN,TOUT,XX,Y,PN,ODTP,EBY,PROV,DRG,LOGDT,MW
+1 QUIT
+2 ;
OLDT ;
+1 SET OLDT=""
IF $PIECE($PIECE($GET(^PS(52.11,DA,0)),"^",5),".")'=DT
SET Y=$PIECE($PIECE($GET(^PS(52.11,DA,0)),"^",5),".")
DO DD^%DT
SET OLDT="***Entered on "_Y_"***"
+2 QUIT
+3 ;
PRSE ;
+1 SET RX=""
SET RX1=""
SET RXNUM=0
+2 FOR XX=0:0
SET XX=$ORDER(^PS(52.11,DA,2,"B",XX))
if 'XX
QUIT
SET XX1=$SELECT($GET(^PSRX(XX,0)):$PIECE(^(0),"^"),1:XX)
Begin DoDot:1
+3 if $LENGTH(RX_XX1)>200
SET RX1=RX1_XX1_", "
if $LENGTH(RX_XX1)<200
SET RX=RX_XX1_", "
SET RXNUM=RXNUM+1
End DoDot:1
+4 SET DTME=$PIECE(^PS(52.11,DA,0),"^",5)
SET DIS=$SELECT($PIECE(^(0),"^",7)'="":1,1:0)
SET DIV=$PIECE(^(0),"^",4)
SET DG=$PIECE(^(0),"^",3)
SET TIN=$PIECE(^(0),"^",6)
SET TOUT=$PIECE(^(0),"^",7)
+5 SET PKP=$SELECT($DATA(^PS(52.11,"AD",DG,DA)):1,1:0)
SET PKPD=$SELECT($DATA(^PS(52.11,"ANAMK",DA,DG,NNUM)):1,1:0)
+6 SET TIN=+$EXTRACT(TIN,1,2)_":"_$EXTRACT(TIN,3,4)
SET TOUT=+$EXTRACT(TOUT,1,2)_":"_$EXTRACT(TOUT,3,4)
SET Y=DTME
XECUTE ^DD("DD")
SET DTME=Y
+7 if '$GET(PAS)
WRITE @IOF,!,?8,NAM_" has the following orders for "_+$EXTRACT(DT,4,5)_"/"_+$EXTRACT(DT,6,7)_"/"_$EXTRACT(DT,2,3)
+8 IF '$GET(DIS)
WRITE !!,"Being Processed: "_OLDT,!,?3,"Division: "_$PIECE(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: ",!,?3,"Rx #: "_RX
if $GET(RX1)
WRITE !,?3,RX1
+9 IF $Y+6>IOSL
DO ENPG
if $GET(EXT)
QUIT
+10 IF $GET(DIS)
IF $GET(PKP)
IF '$GET(PKPD)
WRITE !!,"Ready For Pickup: ",!,?3,"Division: "_$PIECE(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: "_TOUT,!,?3,"Rx #: "_RX
if $GET(RX1)
WRITE !,?3,RX1
+11 IF $Y+6>IOSL
DO ENPG
if $GET(EXT)
QUIT
+12 ;*****Picked Up status is dependent on wait time stored in ^PSRX*****
+13 IF $GET(DIS)
IF $GET(PKPD)
WRITE !!,"Picked Up: ",!,?3,"Division: "_$PIECE(^PS(59,DIV,0),"^"),?42,"Time In: "_TIN,?60,"Time Out: "_TOUT,!,?3,"Rx #: "_RX
if $GET(RX1)
WRITE !,?3,RX1
+14 IF $Y+6>IOSL
DO ENPG
if $GET(EXT)
QUIT
+15 SET PAS=1
STEX KILL DA,DIC,DG,DIK,DTME,DIS,DIV,PKP,PKPD,TIN,TOUT,XX,XX1,Y
+1 QUIT
PRSE1 ;PENDING
+1 if $PIECE(^PS(52.41,DA,0),"^",3)="RF"
QUIT
+2 SET PN=$PIECE(^PS(52.41,DA,0),"^")
SET ODTP=$PIECE(^(0),"^",3)
SET EBY=$PIECE(^(0),"^",4)
SET PROV=$PIECE(^(0),"^",5)
SET DRG=$PIECE(^(0),"^",9)
SET LOGDT=$PIECE(^(0),"^",12)
SET MW=$PIECE(^(0),"^",17)
SET OI=$PIECE(^(0),"^",8)
+3 SET Y=LOGDT
SET LOGDT=+$EXTRACT(Y,4,5)_"/"_+$EXTRACT(Y,6,7)_"/"_$EXTRACT(Y,2,3)_"@"_$EXTRACT($PIECE(Y,".",2),1,2)_":"_$EXTRACT($PIECE(Y,".",2),3,4)
+4 ;format text for screen
+5 if '$GET(PAS)&('$GET(PAS1))
WRITE @IOF,!,?8,NAM_" has the following orders for "_+$EXTRACT(DT,4,5)_"/"_+$EXTRACT(DT,6,7)_"/"_$EXTRACT(DT,2,3)
+6 ;
+7 WRITE !!,"Pending: ",!,?3,"Orderable Item: "_$PIECE(^PS(50.7,OI,0),"^"),?52,"Provider: "_$PIECE(^VA(200,PROV,0),"^")
+8 WRITE !,?3,"Entered By: "_$PIECE(^VA(200,EBY,0),"^"),?52,"Time In: "_LOGDT
+9 ;441 PAPI
WRITE !,?3,"Drug: "_$SELECT($GET(DRG):$PIECE(^PSDRUG(DRG,0),"^"),1:""),?52,"Routing: "_$SELECT($GET(MW)="M":"MAIL",$GET(MW)="P":"PARK",1:"WINDOW")
+10 IF $Y+6>IOSL
DO ENPG
if $GET(EXT)
QUIT
STEX1 KILL DA,DIC,DIK,PN,ODTP,EBY,PROV,DRG,LOGDT,MW,XX,XX1,Y
+1 SET PAS1=1
+2 QUIT
ENPG KILL DIR,DUOUT,DTOUT,DIRUT
SET DIR(0)="E"
+1 DO ^DIR
if 'Y
SET EXT=1
+2 KILL DIR,DTOUT,DIRUT,DUOUT
WRITE @IOF
+3 QUIT