PSDOPTS ;BIR/LT L- Review OP Transactions for a Drug (cont.) ; 29 Aug 94
;;3.0; CONTROLLED SUBSTANCES ;**18,26,55**;13 Feb 97
;
;References to ^PSD(58.8, covered by DBIA2711
;References to DD(58.81 and ^PSD(58.81 are covered by DBIA2808
;References to ^PSDRUG( are covered by DBIA221
;References to ^PSRX( are covered by DBIA986
S CNT=0 W !!,"You may select one, several, or ^ALL drugs."
CHKD F S DIC="^PSD(58.8,+PSDLOC,1,",DIC(0)="AEQ",DIC("A")="Please Select "_PSDLOCN_"'s Drug: ",DIC("S")="I $S($G(^(""I"")):$G(^(""I""))>DT,1:1)" W ! D ^DIC K DIC G:X'="^ALL"&(Y<1)&('CNT) END Q:Y<0 D
.I '$O(^PSD(58.81,"F",+Y,0)) W !!,"There have been no transactions for this drug.",!! Q
.S PSD=$P($G(^PSDRUG(+Y,0)),U),CNT=CNT+1
.S PSD=$S(PSD]"":PSD,1:"UNKNOWN DRUG #"_+Y)
.S ^TMP("PSD",$J,PSD,+Y)="" K PSD
I X="^ALL" F S PSDU=$O(^PSD(58.8,+PSDLOC,1,PSDU)) Q:'PSDU D
.Q:'$O(^PSD(58.81,"F",PSDU,0))
.S PSD=$P($G(^PSDRUG(PSDU,0)),U)
.S PSD=$S(PSD]"":PSD,1:"UNKNOWN DRUG #"_PSDU)
.S ^TMP("PSD",$J,PSD,PSDU)="" K PSD
S DIR(0)="S^1:Sort by Rx #;2:Sort by Date Posted;3:Sort by Date Filled (Not Posted)"
S DIR("A")="Within Drug, Sort by",DIR("B")=1
S DIR("?")="For each drug, do you want the transactions listed in the order they were posted, by Rx #, or by fill date (not posted)?"
D ^DIR K DIR G:$D(DIRUT) END G:Y=1 ^PSDOPTX G:Y=3 ^PSDOPTN
S DIR(0)="DA^2910501:NOW:AEPT"
S DIR("A")="Beginning date@time posted: ",DIR("?")="I will list Outpatient transactions for your selected drug(s) within your selected date@time range. Please don't enter a date@time in the future" W ! D ^DIR G:Y<1 END
S (PSDT,PSDTB)=Y,PSDTB(2)=Y(0)
S DIR(0)="DA^"_PSDT_":NOW:AET"
S DIR("A")="Ending date@time posted: "
S DIR("?")=$G(DIR("?"))_" or before "_$G(PSDTB(2))
W ! D ^DIR K DIR G:Y<1 END S PSDTB(1)=Y,PSDTB(3)=Y(0)
S:'$P(PSDTB(1),".",2) PSDTB(1)=PSDTB(1)+.999999
S Y=$P($G(^PSD(58.8,+PSDLOC,2)),"^",9),C=$P(^DD(58.8,24,0),"^",2) D Y^DIQ S PSDEV=Y
DEV ;device
K IO("Q") N %ZIS,IOP,POP S %ZIS="Q",%ZIS("B")=PSDEV W ! D ^%ZIS I POP W !,"NO DEVICE SELECTED OR OUTPUT PRINTED!" Q
I $D(IO("Q")) N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK S ZTRTN="START^PSDOPTS",ZTDESC="Drug OP transaction review" D SAVE D ^%ZTLOAD,HOME^%ZIS S PSDOUT=1 G END
START ;compiles
U IO N PSDR,PG S (PG,PSDOUT)=0 K LN D HEADER S PSDU=0
F S PSDU=$O(^TMP("PSD",$J,PSDU)) Q:PSDU']"" S PSDU(1)=$O(^TMP("PSD",$J,PSDU,0)) D G:PSDOUT END S PSDT=PSDTB,PSDT(1)=0
.;DAVE B (PSD*3*26 16MAY00)
LOOP .F S PSDT=$O(^PSD(58.81,"ACT",PSDT)) W:$E(IOST)="C" "." Q:'PSDT!(PSDT>PSDTB(1)) S L=0 F S L=$O(^PSD(58.81,"ACT",PSDT,L)) Q:L="" D:L=PSDLOC&($O(^PSD(58.81,"ACT",PSDT,L,0))=PSDU(1))&($O(^PSD(58.81,"ACT",PSDT,L,+PSDU(1),6,0))) Q:PSDOUT
..S PSDR(3)=+$O(^PSD(58.81,"ACT",PSDT,PSDLOC,+PSDU(1),6,0))
..S PSDR(2)=$G(^PSD(58.81,PSDR(3),0))
..S PSDR(4)=$G(^PSD(58.81,PSDR(3),6))
..D:$Y+6>IOSL HEADER Q:PSDOUT
..S PSDT(1)=$G(PSDT(1))+1 W:PSDT(1)=1 !,PSDU
..W:$P(PSDR(4),U,6)&($P(PSDR(2),U,7)'=$P(PSDR(4),U,6)) ?54,"RPH=> ",$E($P($G(^VA(200,+$P(PSDR(4),U,6),0)),U),1,20)
..S Y=$E($P(PSDR(2),U,4),1,12) X ^DD("DD") W !!,Y,?19
..S DFN=$P($G(^PSRX(+$P(PSDR(4),U),0)),U,2)
..N C S Y=DFN,C=$P(^DD(58.81,73,0),U,2) D Y^DIQ
..W $P(PSDR(4),U,5),?28,Y
..D PID^VADPT6 W " ("_VA("BID")_")",?60
..I $P(PSDR(4),U,2) S Y=$P($G(^PSRX(+$P(PSDR(4),U),1,+$P(PSDR(4),U,2),0)),U,18) X ^DD("DD") W Y
..I $P(PSDR(4),U,4) S Y=$P($G(^PSRX(+$P(PSDR(4),U),"P",+$P(PSDR(4),U,4),0)),U,19) X ^DD("DD") W Y
..I '$P(PSDR(4),U,2)&('$P(PSDR(4),U,4)) S Y=$P($G(^PSRX(+$P(PSDR(4),U),2)),U,13) X ^DD("DD") W Y
..W !,"Qty: ",$P(PSDR(2),U,6)," Bal: ",$P(PSDR(2),U,10)-$P(PSDR(2),U,6),?22,"RPH=> ",$P($G(^VA(200,+$P(PSDR(2),U,7),0)),U),?60
..W $S($P(PSDR(4),U,2):"Refill #"_$P(PSDR(4),U,2),$P(PSDR(4),U,4):"Partial #"_$P(PSDR(4),U,4),1:"Original")
..W !,LN,!
END W:$E(IOST)'="C" @IOF
I $E(IOST)="C",'PSDOUT S DIR(0)="EA",DIR("A")="END OF REPORT! Press <RET> to return to the menu." D ^DIR
D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
D KVAR^VADPT K IO("Q"),VA("PID"),VA("BID"),^TMP("PSD",$J)
Q
I $$S^%ZTLOAD W !!,"Task #",$G(ZTSK),", ",$G(ZTDESC)," was stopped by ",$P($G(^VA(200,+$G(DUZ),0)),U),"." S PSDOUT=1
W:$Y @IOF S $P(LN,"-",81)="",PG=PG+1 W !,"Outpatient Activity from ",PSDTB(2)," to ",PSDTB(3),?70,"PAGE: ",PG,!,LN,!,"Date Posted",?19,"Rx#",?28,"Patient",?60,"Date Released",!,LN W:$G(PSDT(1)) !,PSDU," (continued)",!
Q
SAVE ;
S ZTSAVE("^TMP(""PSD"",$J,")=""
S (ZTSAVE("PSDT"),ZTSAVE("PSDLOC"),ZTSAVE("PSDTB"),ZTSAVE("PSDTB("))=""
Q
PSDOPTS ;BIR/LT L- Review OP Transactions for a Drug (cont.) ; 29 Aug 94
+1 ;;3.0; CONTROLLED SUBSTANCES ;**18,26,55**;13 Feb 97
+2 ;
+3 ;References to ^PSD(58.8, covered by DBIA2711
+4 ;References to DD(58.81 and ^PSD(58.81 are covered by DBIA2808
+5 ;References to ^PSDRUG( are covered by DBIA221
+6 ;References to ^PSRX( are covered by DBIA986
+7 SET CNT=0
WRITE !!,"You may select one, several, or ^ALL drugs."
CHKD FOR
SET DIC="^PSD(58.8,+PSDLOC,1,"
SET DIC(0)="AEQ"
SET DIC("A")="Please Select "_PSDLOCN_"'s Drug: "
SET DIC("S")="I $S($G(^(""I"")):$G(^(""I""))>DT,1:1)"
WRITE !
DO ^DIC
KILL DIC
IF X'="^ALL"&(Y<1)&('CNT)
GOTO END
IF Y<0
QUIT
Begin DoDot:1
+1 IF '$ORDER(^PSD(58.81,"F",+Y,0))
WRITE !!,"There have been no transactions for this drug.",!!
QUIT
+2 SET PSD=$PIECE($GET(^PSDRUG(+Y,0)),U)
SET CNT=CNT+1
+3 SET PSD=$SELECT(PSD]"":PSD,1:"UNKNOWN DRUG #"_+Y)
+4 SET ^TMP("PSD",$JOB,PSD,+Y)=""
KILL PSD
End DoDot:1
+5 IF X="^ALL"
FOR
SET PSDU=$ORDER(^PSD(58.8,+PSDLOC,1,PSDU))
IF 'PSDU
QUIT
Begin DoDot:1
+6 IF '$ORDER(^PSD(58.81,"F",PSDU,0))
QUIT
+7 SET PSD=$PIECE($GET(^PSDRUG(PSDU,0)),U)
+8 SET PSD=$SELECT(PSD]"":PSD,1:"UNKNOWN DRUG #"_PSDU)
+9 SET ^TMP("PSD",$JOB,PSD,PSDU)=""
KILL PSD
End DoDot:1
+10 SET DIR(0)="S^1:Sort by Rx #;2:Sort by Date Posted;3:Sort by Date Filled (Not Posted)"
+11 SET DIR("A")="Within Drug, Sort by"
SET DIR("B")=1
+12 SET DIR("?")="For each drug, do you want the transactions listed in the order they were posted, by Rx #, or by fill date (not posted)?"
+13 DO ^DIR
KILL DIR
IF $DATA(DIRUT)
GOTO END
IF Y=1
GOTO ^PSDOPTX
IF Y=3
GOTO ^PSDOPTN
+14 SET DIR(0)="DA^2910501:NOW:AEPT"
+15 SET DIR("A")="Beginning date@time posted: "
SET DIR("?")="I will list Outpatient transactions for your selected drug(s) within your selected date@time range. Please don't enter a date@time in the future"
WRITE !
DO ^DIR
IF Y<1
GOTO END
+16 SET (PSDT,PSDTB)=Y
SET PSDTB(2)=Y(0)
+17 SET DIR(0)="DA^"_PSDT_":NOW:AET"
+18 SET DIR("A")="Ending date@time posted: "
+19 SET DIR("?")=$GET(DIR("?"))_" or before "_$GET(PSDTB(2))
+20 WRITE !
DO ^DIR
KILL DIR
IF Y<1
GOTO END
SET PSDTB(1)=Y
SET PSDTB(3)=Y(0)
+21 IF '$PIECE(PSDTB(1),".",2)
SET PSDTB(1)=PSDTB(1)+.999999
+22 SET Y=$PIECE($GET(^PSD(58.8,+PSDLOC,2)),"^",9)
SET C=$PIECE(^DD(58.8,24,0),"^",2)
DO Y^DIQ
SET PSDEV=Y
DEV ;device
+1 KILL IO("Q")
NEW %ZIS,IOP,POP
SET %ZIS="Q"
SET %ZIS("B")=PSDEV
WRITE !
DO ^%ZIS
IF POP
WRITE !,"NO DEVICE SELECTED OR OUTPUT PRINTED!"
QUIT
+2 IF $DATA(IO("Q"))
NEW ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK
SET ZTRTN="START^PSDOPTS"
SET ZTDESC="Drug OP transaction review"
DO SAVE
DO ^%ZTLOAD
DO HOME^%ZIS
SET PSDOUT=1
GOTO END
START ;compiles
+1 USE IO
NEW PSDR,PG
SET (PG,PSDOUT)=0
KILL LN
DO HEADER
SET PSDU=0
+2 FOR
SET PSDU=$ORDER(^TMP("PSD",$JOB,PSDU))
IF PSDU']""
QUIT
SET PSDU(1)=$ORDER(^TMP("PSD",$JOB,PSDU,0))
Begin DoDot:1
+3 ;DAVE B (PSD*3*26 16MAY00)
LOOP FOR
SET PSDT=$ORDER(^PSD(58.81,"ACT",PSDT))
IF $EXTRACT(IOST)="C"
WRITE "."
IF 'PSDT!(PSDT>PSDTB(1))
QUIT
SET L=0
FOR
SET L=$ORDER(^PSD(58.81,"ACT",PSDT,L))
IF L=""
QUIT
IF L=PSDLOC&($ORDER(^PSD(58.81,"ACT",PSDT,L,0))=PSDU(1))&($ORDER(^PSD(58.81,"ACT",PSDT,L,+PSDU(1),6,0)))
Begin DoDot:2
+1 SET PSDR(3)=+$ORDER(^PSD(58.81,"ACT",PSDT,PSDLOC,+PSDU(1),6,0))
+2 SET PSDR(2)=$GET(^PSD(58.81,PSDR(3),0))
+3 SET PSDR(4)=$GET(^PSD(58.81,PSDR(3),6))
+4 IF $Y+6>IOSL
DO HEADER
IF PSDOUT
QUIT
+5 SET PSDT(1)=$GET(PSDT(1))+1
IF PSDT(1)=1
WRITE !,PSDU
+6 IF $PIECE(PSDR(4),U,6)&($PIECE(PSDR(2),U,7)'=$PIECE(PSDR(4),U,6))
WRITE ?54,"RPH=> ",$EXTRACT($PIECE($GET(^VA(200,+$PIECE(PSDR(4),U,6),0)),U),1,20)
+7 SET Y=$EXTRACT($PIECE(PSDR(2),U,4),1,12)
XECUTE ^DD("DD")
WRITE !!,Y,?19
+8 SET DFN=$PIECE($GET(^PSRX(+$PIECE(PSDR(4),U),0)),U,2)
+9 NEW C
SET Y=DFN
SET C=$PIECE(^DD(58.81,73,0),U,2)
DO Y^DIQ
+10 WRITE $PIECE(PSDR(4),U,5),?28,Y
+11 DO PID^VADPT6
WRITE " ("_VA("BID")_")",?60
+12 IF $PIECE(PSDR(4),U,2)
SET Y=$PIECE($GET(^PSRX(+$PIECE(PSDR(4),U),1,+$PIECE(PSDR(4),U,2),0)),U,18)
XECUTE ^DD("DD")
WRITE Y
+13 IF $PIECE(PSDR(4),U,4)
SET Y=$PIECE($GET(^PSRX(+$PIECE(PSDR(4),U),"P",+$PIECE(PSDR(4),U,4),0)),U,19)
XECUTE ^DD("DD")
WRITE Y
+14 IF '$PIECE(PSDR(4),U,2)&('$PIECE(PSDR(4),U,4))
SET Y=$PIECE($GET(^PSRX(+$PIECE(PSDR(4),U),2)),U,13)
XECUTE ^DD("DD")
WRITE Y
+15 WRITE !,"Qty: ",$PIECE(PSDR(2),U,6)," Bal: ",$PIECE(PSDR(2),U,10)-$PIECE(PSDR(2),U,6),?22,"RPH=> ",$PIECE($GET(^VA(200,+$PIECE(PSDR(2),U,7),0)),U),?60
+16 WRITE $SELECT($PIECE(PSDR(4),U,2):"Refill #"_$PIECE(PSDR(4),U,2),$PIECE(PSDR(4),U,4):"Partial #"_$PIECE(PSDR(4),U,4),1:"Original")
+17 WRITE !,LN,!
End DoDot:2
IF PSDOUT
QUIT
End DoDot:1
IF PSDOUT
GOTO END
SET PSDT=PSDTB
SET PSDT(1)=0
END IF $EXTRACT(IOST)'="C"
WRITE @IOF
+1 IF $EXTRACT(IOST)="C"
IF 'PSDOUT
SET DIR(0)="EA"
SET DIR("A")="END OF REPORT! Press <RET> to return to the menu."
DO ^DIR
+2 DO ^%ZISC
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+3 DO KVAR^VADPT
KILL IO("Q"),VA("PID"),VA("BID"),^TMP("PSD",$JOB)
+4 QUIT
IF PG
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF 'Y
SET PSDOUT=1
QUIT
+1 IF $$S^%ZTLOAD
WRITE !!,"Task #",$GET(ZTSK),", ",$GET(ZTDESC)," was stopped by ",$PIECE($GET(^VA(200,+$GET(DUZ),0)),U),"."
SET PSDOUT=1
+2 IF $Y
WRITE @IOF
SET $PIECE(LN,"-",81)=""
SET PG=PG+1
WRITE !,"Outpatient Activity from ",PSDTB(2)," to ",PSDTB(3),?70,"PAGE: ",PG,!,LN,!,"Date Posted",?19,"Rx#",?28,"Patient",?60,"Date Released",!,LN
IF $GET(PSDT(1))
WRITE !,PSDU," (continued)",!
+3 QUIT
SAVE ;
+1 SET ZTSAVE("^TMP(""PSD"",$J,")=""
+2 SET (ZTSAVE("PSDT"),ZTSAVE("PSDLOC"),ZTSAVE("PSDTB"),ZTSAVE("PSDTB("))=""
+3 QUIT