PSXRSTAT ;BIR/HTW-Rx Workload Report ; 30 Oct 2000 5:08 PM
;;2.0;CMOP;**31**;11 Apr 97
; External reference to ^PSRX( supported by DBIA #1221
; External reference to ^PS(52.5 supported by DBIA #1222
; External reference to ^PS(59 supported by DBIA #1976
;
D EXIT
BEGDATE S DIR(0)="DO",DIR("A")="ENTER BEGINNING DATE " D ^DIR K DIR
G:$D(DIRUT)!(X']"") END
S PSXB=Y K Y,X
I PSXB>DT W !!,"Future dates are not allowed.",! G BEGDATE
ENDDATE S Y=DT X ^DD("DD") S ZZTODAY=Y K Y
K X,Y
S DIR(0)="DO",DIR("A")="ENTER ENDING DATE ",DIR("B")=ZZTODAY
D ^DIR K DIR
G:$D(DIRUT) END
S PSXE=Y K Y
I PSXE<PSXB W !,"Ending date must follow beginning date!" G ENDDATE
K ZZTODAY
D SEL Q:'$D(DIVDA)
DEVICE W !! S %ZIS="MQ",%ZIS("A")="Select Printer: ",%ZIS("B")=""
D ^%ZIS G:POP END S PSXLAP=ION
I IOST["C-" G START
I '$D(IO("Q")) G ST0
D ^%ZISC K J,C
QUE S ZTSAVE("PSXB")="",ZTSAVE("PSXE")="",ZTSAVE("DIVDA(")="",ZTSAVE("DIVNM(")="",ZTIO=PSXLAP
S ZTRTN="START^PSXRSTAT"
S ZTDESC="CMOP Rx Workload Report"
D ^%ZTLOAD
Q1 W:$D(ZTSK) !!,"Report Queued to Print!!"
K DIR,PSXB,PSXE,Y
Q
ST0 U IO
;Taskman entry point to start the CMOP Workload Report
START S:$D(ZTQUEUED) ZTREQ="@"
S LINE="W ! F I=1:1:80 W ""="""
K TOTAL,TOTALT
S DIVDA=0 F S DIVDA=$O(DIVDA(DIVDA)) Q:'DIVDA D Q:$G(PSXFLAG)=1
.S (PSXAD,PSXOT)=0,PSXE1=PSXE,PSXXE=PSXE,PSXXB=PSXB
.S PSXD=PSXB-.00001
.S LINE="W ! F I=1:1:80 W ""="""
.D DIVISION X LINE S DIV=DIVDA D DIVSUML
.D END
.S PSXE=PSXXE,PSXB=PSXXB K PSXXE,PSXXE
D GRNDTOT
D ^%ZISC
D END
Q
DIVISION ;
D TITLE
F S PSXD=$O(^PSRX("AD",PSXD)) Q:(+PSXD'>0)!(+PSXD>PSXE1) D ONE I $G(PSXD1)'=PSXD D MAIN Q:$G(PSXFLAG)=1
D GTOTAL
Q
END K PSXD,PSXE,PSXF,PSXAD,PSXOT,PSXR,PSXLINE,PSXE1,PSXD1
K DIR,X,Y,%,PSXUNREL,PSXB,POP,PSXLAP,PSXNOW,ZTDESC,ZTIO,ZTRTN,ZTSAVE
K PSXMW,PSXM,PSXW,A,B,C,D,E,PSXCR,PSXCU,PSXSUSDT,ZTSK,PSXMT,PSXWT
K DIRUT,DTOUT,DUOUT,PSXFLAG,ZDATE,ZZTOT,DIROUT,ZFILL,PSXSTAT
Q
ONE F PSXR=0:0 S PSXR=$O(^PSRX("AD",PSXD,PSXR)) Q:'PSXR D TWO Q:$G(PSXFLAG)=1
Q
TWO S PSXF="" F S PSXF=$O(^PSRX("AD",PSXD,PSXR,PSXF)) Q:($G(PSXF)']"") D COUNT K PSX,PSXREL,PSXMW Q:$G(PSXFLAG)=1
Q
COUNT ;
I PSXF=0 S DIV=$P(^PSRX(PSXR,2),U,9) Q:DIV'=DIVDA
I PSXF>0 S DIV=$P(^PSRX(PSXR,1,PSXF,0),U,9) Q:DIV'=DIVDA
S PSXRNM=$P(^PSRX(PSXR,0),U,1)
I PSXF=0 Q:'$D(^PSRX(PSXR,0)) D
.S PSXMW=$P($G(^PSRX(PSXR,0)),"^",11)
.I $G(PSXMW)="M" S PSXMT=$G(PSXMT)+1 Q
.I $G(PSXMW)="W" S PSXWT=$G(PSXWT)+1
.I PSXRNM'=+PSXRNM S PSXWRN=$G(PSXWRN)+1
I PSXF>0 Q:'$D(^PSRX(PSXR,1,PSXF,0)) D
.S PSXMW=$P($G(^PSRX(PSXR,1,PSXF,0)),"^",2)
.I $G(PSXMW)="M" S PSXMT=$G(PSXMT)+1 Q
.I $G(PSXMW)="W" S PSXWT=$G(PSXWT)+1,PSXWRF=$G(PSXWRF)+1
I $G(PSXMW)="M" S TOTAL("MAIL")=$G(TOTAL("MAIL"))+1
I $G(PSXMW)="W" S TOTAL("WINDOW")=$G(TOTAL("WINDOW"))+1
S PSXAD=PSXAD+1
I $D(^PSRX(PSXR,4,0)) F PSX=0:0 S PSX=$O(^PSRX(PSXR,4,PSX)) Q:'PSX D
.S ZFILL=$P($G(^PSRX(PSXR,4,PSX,0)),"^",3)
.I $G(ZFILL)'=PSXF K ZFILL Q
.S PSXSTAT=$P($G(^PSRX(PSXR,4,PSX,0)),"^",4)
.S PSX(ZFILL)=PSXSTAT
I $G(PSX(PSXF))=1 S PSXCR=$G(PSXCR)+1,TOTAL("CMOP RELEASED")=$G(TOTAL("CMOP RELEASED"))+1 Q
I $G(PSX(PSXF))=0!($G(PSX(PSXF))=2) S PSXCU=$G(PSXCU)+1,TOTAL("CMOP UNRELEASED")=$G(TOTAL("CMOP UNRELEASED"))+1 Q
;Check if in suspense...
I $D(^PS(52.5,"B",PSXR)) S PSXST=$O(^(PSXR,"")) I $D(^PS(52.5,PSXST,0)) D
.S PSXST1=$P($G(^PS(52.5,PSXST,0)),"^",7) Q:$G(PSXST1)']""
.S PSXSUSDT=$P(^PS(52.5,PSXST,0),"^",2)
.I PSXF=0 S PSXFDT=$P($G(^PSRX(PSXR,2)),"^",2)
.I PSXF>0 S PSXFDT=$P($G(^PSRX(PSXR,1,PSXF,0)),"^") Q:'$G(PSXFDT)
.I PSXSUSDT=PSXFDT,(PSXST1="L") S PSX(PSXF)=PSXST1,PSXCU=$G(PSXCU)+1,TOTAL("CMOP RELEASED")=$G(TOTAL("CMOP RELEASED"))+1
K PSXSTAT,ZFILL,PSXST,PSXST1,ZZ,PSXSUS,PSXFDT
I $G(PSX(PSXF))="L" Q
OP I PSXF=0 S PSXREL=$P($G(^PSRX(PSXR,2)),"^",13)
I PSXF>0 S PSXREL=$P($G(^PSRX(PSXR,1,PSXF,0)),"^",18)
I $G(PSXREL),($G(PSXMW)="M") S PSXM=$G(PSXM)+1,TOTAL("OP MAIL")=$G(TOTAL("OP MAIL"))+1 Q
I $G(PSXREL),($G(PSXMW)="W") S PSXW=$G(PSXW)+1,TOTAL("OP WINDOW")=$G(TOTAL("OP WINDOW"))+1 D Q
.I PSXRNM'=+PSXRNM,PSXF=0 S PSXRRN=$G(PSXRRN)+1
.I PSXF>0 S PSXRRF=$G(PSXRRF)+1
S PSXUNREL=$G(PSXUNREL)+1,TOTAL("OTHER")=$G(TOTAL("OTHER"))+1
Q
TITLE Q:$G(PSXFLAG)=1
I IOST["C-" W @IOF
S Y=PSXB X ^DD("DD") S PSXB=Y
S Y=PSXE X ^DD("DD") S PSXE=Y
D NOW^%DTC S Y=% X ^DD("DD") S PSXNOW=Y
W !!!,?30,"Rx WORKLOAD BREAKDOWN"_$S($G(ZZTOT)=1:" SUMMARY",1:"")
W !,DIVDA(DIVDA)
W !,"FROM: ",PSXB," TO: ",$P(PSXE,"@")," PRINTED: ",PSXNOW
S PSXLINE=6
X LINE
AHEAD W !,"DATE",?8,"TOTAL",?17,"ENTERED",?35,"OUTPATIENT",?47,"RELEASED",?65,"CMOP",?74,"OTHER"
W !,?8,"MAIL",?17,"WINDOW",?35,"MAIL",?47,"WINDOW",?65,"Released"
W !,?17,"Tot",?23,"Ref",?29,"Rn1",?47,"Tot",?53,"Ref",?59,"Rn1"
X LINE
Q
MAIN I IOST["C-",($G(PSXLINE)>20) D Q:$G(PSXFLAG)=1
.S DIR(0)="E" D ^DIR K DIR I $G(Y)'=1 S PSXFLAG=1 K Y Q
.D TITLE
I IOST'["C-",($G(PSXLINE)>60) W @IOF D TITLE
S PSXUNREL=$G(PSXUNREL)+$G(PSXCU)
S ZDATE=$E(PSXD,4,5)_"/"_$E(PSXD,6,7)
S A=19-($L($G(PSXWT))\2),B=29-($L($G(PSXM))\2),C=40-($L($G(PSXW))\2),D=57-($L($G(PSXCR))\2),E=72-($L($G(PSXUNREL))\2)
;W !,ZDATE,?10,$G(PSXMT),?A,$G(PSXWT),?B,$G(PSXM),?C,$G(PSXW),?D,$G(PSXCR),?E,$G(PSXUNREL)
W !,ZDATE,?8,+$G(PSXMT),?17,+$G(PSXWT),?23,+$G(PSXWRF),?29,+$G(PSXWRN),?35,+$G(PSXM),?47,+$G(PSXW),?53,+$G(PSXRRF),?59,+$G(PSXRRN),?65,+$G(PSXCR),?74,+$G(PSXUNREL)
S PSXD1=PSXD,PSXLINE=$G(PSXLINE)+1
S TOTALT(DIVDA,"WINDOW REFIL")=$G(TOTALT(DIVDA,"WINDOW REFIL"))+$G(PSXWRF)
S TOTALT(DIVDA,"WINDOW RENEW")=$G(TOTALT(DIVDA,"WINDOW RENEW"))+$G(PSXWRN)
S TOTALT(DIVDA,"RELEASE REFIL")=$G(TOTALT(DIVDA,"RELEASE REFIL"))+$G(PSXRRF)
S TOTALT(DIVDA,"RELEASE RENEW")=$G(TOTALT(DIVDA,"RELEASE RENEW"))+$G(PSXRRN)
K PSXMT,PSXWT,PSXCR,PSXCU,PSXM,PSXW,PSXCR,PSXUNREL,PSXWRF,PSXWRN,PSXRRF,PSXRRN
Q
GTOTAL ;
Q:$G(PSXFLAG)=1
F X="MAIL","WINDOW","OP MAIL","OP WINDOW","CMOP RELEASED","CMOP UNRELEASED","OTHER" S TOTALT(DIVDA,X)=$G(TOTAL(X))
K TOTAL
I IOST["C-",($G(PSXLINE)<20) S DIR(0)="E" D ^DIR K DIR Q:(Y="")
Q
GRNDTOT ;EP WRITE /LOOP DIVISIONAL TOTALS & WRITE GRAND TOTALS
Q:$G(PSXFLAG)=1
W @IOF
S DIVDA(0)=" Grand Total Summary",DIVDA=0
D TITLE
S LINE="W ! F I=1:1:80 W ""="""
S DIV=0 F S DIV=$O(DIVDA(DIV)) Q:'DIV D
.D DIVSUM
.F X="MAIL","WINDOW","OP MAIL","OP WINDOW","CMOP RELEASED","CMOP UNRELEASED","OTHER","WINDOW RENEW","WINDOW REFIL","RELEASE REFIL","RELEASE RENEW" S TOTALT(0,X)=$G(TOTALT(0,X))+$G(TOTALT(DIV,X))
X LINE
S DIV=0 D DIVSUML
Q
DIVSUM ;EP DIVISIONAL SUMMARY
Q:$G(PSXFLAG)=1
W !,DIVDA(DIV)
DIVSUML ;
Q:$G(PSXFLAG)=1
W !,?8,+$G(TOTALT(DIV,"MAIL"))
W ?17,+$G(TOTALT(DIV,"WINDOW"))
W ?23,+$G(TOTALT(DIV,"WINDOW REFIL"))
W ?29,+$G(TOTALT(DIV,"WINDOW RENEW"))
W ?35,+$G(TOTALT(DIV,"OP MAIL"))
W ?47,+$G(TOTALT(DIV,"OP WINDOW"))
W ?53,+$G(TOTALT(DIV,"RELEASE REFIL"))
W ?59,+$G(TOTALT(DIV,"RELEASE RENEW"))
W ?65,+$G(TOTALT(DIV,"CMOP RELEASED"))
W ?74,+($G(TOTALT(DIV,"CMOP UNRELEASED"))+$G(TOTALT(DIV,"OTHER")))
I IOST["C-" S DIR(0)="E" D ^DIR K DIR Q:(Y="")
Q
SEL ;Select divisions
; returns arrays
; DIVNM("names of divisions")=selection number
; DIVDA("iens of divisions")=name of division
; for testing
W !!,"SELECTION OF DIVISION(S)",!
S DIV="" K DIVNM,DIVDA,DIVX
F I=1:1 S DIV=$O(^PS(59,"B",DIV)) Q:DIV="" S DIVNM(I)=DIV,DIVNM(DIV)=I,DIVDA=$O(^PS(59,"B",DIV,0)),DIVNM(I,"I")=DIVDA
S I=I-1
K DIR
S DIR(0)="S^A:ALL DIVISIONS;S:SELECT DIVISIONS"
D ^DIR K DIR
G:Y="A" ALL
G:Y="S" SELECT
Q
SELECT ;
F C=1:1:I S DIR("A",C)=C_" "_DIVNM(C)
S DIR(0)="LO^1:"_I,DIR("A")="Select Division(s) "
D ^DIR
I '+Y K DIVNM Q
M DIVX=DIVNM K DIVNM
F I=1:1 S X=$P(Y,",",I) Q:'X M DIVNM(X)=DIVX(X) S DIVNM=DIVX(X),DIVNM(DIVNM)=X
K DIVX,DIR
ALL W !!,"You have selected:",! S DIV=0 F S DIV=$O(DIVNM(DIV)) Q:'DIV W !,DIV,?5,DIVNM(DIV)
S DIR(0)="Y",DIR("A")="Is this corrrect ? ",DIR("B")="YES" D ^DIR
K DIR
I Y D Q
.K DIVDA
.S DIV=0 F S DIV=$O(DIVNM(DIV)) Q:'DIV S DA=DIVNM(DIV,"I"),DIVDA(DA)=DIVNM(DIV) K DIVNM(DIV)
G SEL
;
TOTALT ;
S X="TOTALT" F S X=$Q(@X) Q:X="" W !,X,?30,@X
Q
EXIT D END
K DIVDA,TOTAL,TOTALT,I,LINE,PSXRRF,PSXXB,PSXRNM,DIV
Q
PSXRSTAT ;BIR/HTW-Rx Workload Report ; 30 Oct 2000 5:08 PM
+1 ;;2.0;CMOP;**31**;11 Apr 97
+2 ; External reference to ^PSRX( supported by DBIA #1221
+3 ; External reference to ^PS(52.5 supported by DBIA #1222
+4 ; External reference to ^PS(59 supported by DBIA #1976
+5 ;
+6 DO EXIT
BEGDATE SET DIR(0)="DO"
SET DIR("A")="ENTER BEGINNING DATE "
DO ^DIR
KILL DIR
+1 IF $DATA(DIRUT)!(X']"")
GOTO END
+2 SET PSXB=Y
KILL Y,X
+3 IF PSXB>DT
WRITE !!,"Future dates are not allowed.",!
GOTO BEGDATE
ENDDATE SET Y=DT
XECUTE ^DD("DD")
SET ZZTODAY=Y
KILL Y
+1 KILL X,Y
+2 SET DIR(0)="DO"
SET DIR("A")="ENTER ENDING DATE "
SET DIR("B")=ZZTODAY
+3 DO ^DIR
KILL DIR
+4 IF $DATA(DIRUT)
GOTO END
+5 SET PSXE=Y
KILL Y
+6 IF PSXE<PSXB
WRITE !,"Ending date must follow beginning date!"
GOTO ENDDATE
+7 KILL ZZTODAY
+8 DO SEL
IF '$DATA(DIVDA)
QUIT
DEVICE WRITE !!
SET %ZIS="MQ"
SET %ZIS("A")="Select Printer: "
SET %ZIS("B")=""
+1 DO ^%ZIS
IF POP
GOTO END
SET PSXLAP=ION
+2 IF IOST["C-"
GOTO START
+3 IF '$DATA(IO("Q"))
GOTO ST0
+4 DO ^%ZISC
KILL J,C
QUE SET ZTSAVE("PSXB")=""
SET ZTSAVE("PSXE")=""
SET ZTSAVE("DIVDA(")=""
SET ZTSAVE("DIVNM(")=""
SET ZTIO=PSXLAP
+1 SET ZTRTN="START^PSXRSTAT"
+2 SET ZTDESC="CMOP Rx Workload Report"
+3 DO ^%ZTLOAD
Q1 IF $DATA(ZTSK)
WRITE !!,"Report Queued to Print!!"
+1 KILL DIR,PSXB,PSXE,Y
+2 QUIT
ST0 USE IO
+1 ;Taskman entry point to start the CMOP Workload Report
START IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+1 SET LINE="W ! F I=1:1:80 W ""="""
+2 KILL TOTAL,TOTALT
+3 SET DIVDA=0
FOR
SET DIVDA=$ORDER(DIVDA(DIVDA))
IF 'DIVDA
QUIT
Begin DoDot:1
+4 SET (PSXAD,PSXOT)=0
SET PSXE1=PSXE
SET PSXXE=PSXE
SET PSXXB=PSXB
+5 SET PSXD=PSXB-.00001
+6 SET LINE="W ! F I=1:1:80 W ""="""
+7 DO DIVISION
XECUTE LINE
SET DIV=DIVDA
DO DIVSUML
+8 DO END
+9 SET PSXE=PSXXE
SET PSXB=PSXXB
KILL PSXXE,PSXXE
End DoDot:1
IF $GET(PSXFLAG)=1
QUIT
+10 DO GRNDTOT
+11 DO ^%ZISC
+12 DO END
+13 QUIT
DIVISION ;
+1 DO TITLE
+2 FOR
SET PSXD=$ORDER(^PSRX("AD",PSXD))
IF (+PSXD'>0)!(+PSXD>PSXE1)
QUIT
DO ONE
IF $GET(PSXD1)'=PSXD
DO MAIN
IF $GET(PSXFLAG)=1
QUIT
+3 DO GTOTAL
+4 QUIT
END KILL PSXD,PSXE,PSXF,PSXAD,PSXOT,PSXR,PSXLINE,PSXE1,PSXD1
+1 KILL DIR,X,Y,%,PSXUNREL,PSXB,POP,PSXLAP,PSXNOW,ZTDESC,ZTIO,ZTRTN,ZTSAVE
+2 KILL PSXMW,PSXM,PSXW,A,B,C,D,E,PSXCR,PSXCU,PSXSUSDT,ZTSK,PSXMT,PSXWT
+3 KILL DIRUT,DTOUT,DUOUT,PSXFLAG,ZDATE,ZZTOT,DIROUT,ZFILL,PSXSTAT
+4 QUIT
ONE FOR PSXR=0:0
SET PSXR=$ORDER(^PSRX("AD",PSXD,PSXR))
IF 'PSXR
QUIT
DO TWO
IF $GET(PSXFLAG)=1
QUIT
+1 QUIT
TWO SET PSXF=""
FOR
SET PSXF=$ORDER(^PSRX("AD",PSXD,PSXR,PSXF))
IF ($GET(PSXF)']"")
QUIT
DO COUNT
KILL PSX,PSXREL,PSXMW
IF $GET(PSXFLAG)=1
QUIT
+1 QUIT
COUNT ;
+1 IF PSXF=0
SET DIV=$PIECE(^PSRX(PSXR,2),U,9)
IF DIV'=DIVDA
QUIT
+2 IF PSXF>0
SET DIV=$PIECE(^PSRX(PSXR,1,PSXF,0),U,9)
IF DIV'=DIVDA
QUIT
+3 SET PSXRNM=$PIECE(^PSRX(PSXR,0),U,1)
+4 IF PSXF=0
IF '$DATA(^PSRX(PSXR,0))
QUIT
Begin DoDot:1
+5 SET PSXMW=$PIECE($GET(^PSRX(PSXR,0)),"^",11)
+6 IF $GET(PSXMW)="M"
SET PSXMT=$GET(PSXMT)+1
QUIT
+7 IF $GET(PSXMW)="W"
SET PSXWT=$GET(PSXWT)+1
+8 IF PSXRNM'=+PSXRNM
SET PSXWRN=$GET(PSXWRN)+1
End DoDot:1
+9 IF PSXF>0
IF '$DATA(^PSRX(PSXR,1,PSXF,0))
QUIT
Begin DoDot:1
+10 SET PSXMW=$PIECE($GET(^PSRX(PSXR,1,PSXF,0)),"^",2)
+11 IF $GET(PSXMW)="M"
SET PSXMT=$GET(PSXMT)+1
QUIT
+12 IF $GET(PSXMW)="W"
SET PSXWT=$GET(PSXWT)+1
SET PSXWRF=$GET(PSXWRF)+1
End DoDot:1
+13 IF $GET(PSXMW)="M"
SET TOTAL("MAIL")=$GET(TOTAL("MAIL"))+1
+14 IF $GET(PSXMW)="W"
SET TOTAL("WINDOW")=$GET(TOTAL("WINDOW"))+1
+15 SET PSXAD=PSXAD+1
+16 IF $DATA(^PSRX(PSXR,4,0))
FOR PSX=0:0
SET PSX=$ORDER(^PSRX(PSXR,4,PSX))
IF 'PSX
QUIT
Begin DoDot:1
+17 SET ZFILL=$PIECE($GET(^PSRX(PSXR,4,PSX,0)),"^",3)
+18 IF $GET(ZFILL)'=PSXF
KILL ZFILL
QUIT
+19 SET PSXSTAT=$PIECE($GET(^PSRX(PSXR,4,PSX,0)),"^",4)
+20 SET PSX(ZFILL)=PSXSTAT
End DoDot:1
+21 IF $GET(PSX(PSXF))=1
SET PSXCR=$GET(PSXCR)+1
SET TOTAL("CMOP RELEASED")=$GET(TOTAL("CMOP RELEASED"))+1
QUIT
+22 IF $GET(PSX(PSXF))=0!($GET(PSX(PSXF))=2)
SET PSXCU=$GET(PSXCU)+1
SET TOTAL("CMOP UNRELEASED")=$GET(TOTAL("CMOP UNRELEASED"))+1
QUIT
+23 ;Check if in suspense...
+24 IF $DATA(^PS(52.5,"B",PSXR))
SET PSXST=$ORDER(^(PSXR,""))
IF $DATA(^PS(52.5,PSXST,0))
Begin DoDot:1
+25 SET PSXST1=$PIECE($GET(^PS(52.5,PSXST,0)),"^",7)
IF $GET(PSXST1)']""
QUIT
+26 SET PSXSUSDT=$PIECE(^PS(52.5,PSXST,0),"^",2)
+27 IF PSXF=0
SET PSXFDT=$PIECE($GET(^PSRX(PSXR,2)),"^",2)
+28 IF PSXF>0
SET PSXFDT=$PIECE($GET(^PSRX(PSXR,1,PSXF,0)),"^")
IF '$GET(PSXFDT)
QUIT
+29 IF PSXSUSDT=PSXFDT
IF (PSXST1="L")
SET PSX(PSXF)=PSXST1
SET PSXCU=$GET(PSXCU)+1
SET TOTAL("CMOP RELEASED")=$GET(TOTAL("CMOP RELEASED"))+1
End DoDot:1
+30 KILL PSXSTAT,ZFILL,PSXST,PSXST1,ZZ,PSXSUS,PSXFDT
+31 IF $GET(PSX(PSXF))="L"
QUIT
OP IF PSXF=0
SET PSXREL=$PIECE($GET(^PSRX(PSXR,2)),"^",13)
+1 IF PSXF>0
SET PSXREL=$PIECE($GET(^PSRX(PSXR,1,PSXF,0)),"^",18)
+2 IF $GET(PSXREL)
IF ($GET(PSXMW)="M")
SET PSXM=$GET(PSXM)+1
SET TOTAL("OP MAIL")=$GET(TOTAL("OP MAIL"))+1
QUIT
+3 IF $GET(PSXREL)
IF ($GET(PSXMW)="W")
SET PSXW=$GET(PSXW)+1
SET TOTAL("OP WINDOW")=$GET(TOTAL("OP WINDOW"))+1
Begin DoDot:1
+4 IF PSXRNM'=+PSXRNM
IF PSXF=0
SET PSXRRN=$GET(PSXRRN)+1
+5 IF PSXF>0
SET PSXRRF=$GET(PSXRRF)+1
End DoDot:1
QUIT
+6 SET PSXUNREL=$GET(PSXUNREL)+1
SET TOTAL("OTHER")=$GET(TOTAL("OTHER"))+1
+7 QUIT
TITLE IF $GET(PSXFLAG)=1
QUIT
+1 IF IOST["C-"
WRITE @IOF
+2 SET Y=PSXB
XECUTE ^DD("DD")
SET PSXB=Y
+3 SET Y=PSXE
XECUTE ^DD("DD")
SET PSXE=Y
+4 DO NOW^%DTC
SET Y=%
XECUTE ^DD("DD")
SET PSXNOW=Y
+5 WRITE !!!,?30,"Rx WORKLOAD BREAKDOWN"_$SELECT($GET(ZZTOT)=1:" SUMMARY",1:"")
+6 WRITE !,DIVDA(DIVDA)
+7 WRITE !,"FROM: ",PSXB," TO: ",$PIECE(PSXE,"@")," PRINTED: ",PSXNOW
+8 SET PSXLINE=6
+9 XECUTE LINE
AHEAD WRITE !,"DATE",?8,"TOTAL",?17,"ENTERED",?35,"OUTPATIENT",?47,"RELEASED",?65,"CMOP",?74,"OTHER"
+1 WRITE !,?8,"MAIL",?17,"WINDOW",?35,"MAIL",?47,"WINDOW",?65,"Released"
+2 WRITE !,?17,"Tot",?23,"Ref",?29,"Rn1",?47,"Tot",?53,"Ref",?59,"Rn1"
+3 XECUTE LINE
+4 QUIT
MAIN IF IOST["C-"
IF ($GET(PSXLINE)>20)
Begin DoDot:1
+1 SET DIR(0)="E"
DO ^DIR
KILL DIR
IF $GET(Y)'=1
SET PSXFLAG=1
KILL Y
QUIT
+2 DO TITLE
End DoDot:1
IF $GET(PSXFLAG)=1
QUIT
+3 IF IOST'["C-"
IF ($GET(PSXLINE)>60)
WRITE @IOF
DO TITLE
+4 SET PSXUNREL=$GET(PSXUNREL)+$GET(PSXCU)
+5 SET ZDATE=$EXTRACT(PSXD,4,5)_"/"_$EXTRACT(PSXD,6,7)
+6 SET A=19-($LENGTH($GET(PSXWT))\2)
SET B=29-($LENGTH($GET(PSXM))\2)
SET C=40-($LENGTH($GET(PSXW))\2)
SET D=57-($LENGTH($GET(PSXCR))\2)
SET E=72-($LENGTH($GET(PSXUNREL))\2)
+7 ;W !,ZDATE,?10,$G(PSXMT),?A,$G(PSXWT),?B,$G(PSXM),?C,$G(PSXW),?D,$G(PSXCR),?E,$G(PSXUNREL)
+8 WRITE !,ZDATE,?8,+$GET(PSXMT),?17,+$GET(PSXWT),?23,+$GET(PSXWRF),?29,+$GET(PSXWRN),?35,+$GET(PSXM),?47,+$GET(PSXW),?53,+$GET(PSXRRF),?59,+$GET(PSXRRN),?65,+$GET(PSXCR),?74,+$GET(PSXUNREL)
+9 SET PSXD1=PSXD
SET PSXLINE=$GET(PSXLINE)+1
+10 SET TOTALT(DIVDA,"WINDOW REFIL")=$GET(TOTALT(DIVDA,"WINDOW REFIL"))+$GET(PSXWRF)
+11 SET TOTALT(DIVDA,"WINDOW RENEW")=$GET(TOTALT(DIVDA,"WINDOW RENEW"))+$GET(PSXWRN)
+12 SET TOTALT(DIVDA,"RELEASE REFIL")=$GET(TOTALT(DIVDA,"RELEASE REFIL"))+$GET(PSXRRF)
+13 SET TOTALT(DIVDA,"RELEASE RENEW")=$GET(TOTALT(DIVDA,"RELEASE RENEW"))+$GET(PSXRRN)
+14 KILL PSXMT,PSXWT,PSXCR,PSXCU,PSXM,PSXW,PSXCR,PSXUNREL,PSXWRF,PSXWRN,PSXRRF,PSXRRN
+15 QUIT
GTOTAL ;
+1 IF $GET(PSXFLAG)=1
QUIT
+2 FOR X="MAIL","WINDOW","OP MAIL","OP WINDOW","CMOP RELEASED","CMOP UNRELEASED","OTHER"
SET TOTALT(DIVDA,X)=$GET(TOTAL(X))
+3 KILL TOTAL
+4 IF IOST["C-"
IF ($GET(PSXLINE)<20)
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF (Y="")
QUIT
+5 QUIT
GRNDTOT ;EP WRITE /LOOP DIVISIONAL TOTALS & WRITE GRAND TOTALS
+1 IF $GET(PSXFLAG)=1
QUIT
+2 WRITE @IOF
+3 SET DIVDA(0)=" Grand Total Summary"
SET DIVDA=0
+4 DO TITLE
+5 SET LINE="W ! F I=1:1:80 W ""="""
+6 SET DIV=0
FOR
SET DIV=$ORDER(DIVDA(DIV))
IF 'DIV
QUIT
Begin DoDot:1
+7 DO DIVSUM
+8 FOR X="MAIL","WINDOW","OP MAIL","OP WINDOW","CMOP RELEASED","CMOP UNRELEASED","OTHER","WINDOW RENEW","WINDOW REFIL","RELEASE REFIL","RELEASE RENEW"
SET TOTALT(0,X)=$GET(TOTALT(0,X))+$GET(TOTALT(DIV,X))
End DoDot:1
+9 XECUTE LINE
+10 SET DIV=0
DO DIVSUML
+11 QUIT
DIVSUM ;EP DIVISIONAL SUMMARY
+1 IF $GET(PSXFLAG)=1
QUIT
+2 WRITE !,DIVDA(DIV)
DIVSUML ;
+1 IF $GET(PSXFLAG)=1
QUIT
+2 WRITE !,?8,+$GET(TOTALT(DIV,"MAIL"))
+3 WRITE ?17,+$GET(TOTALT(DIV,"WINDOW"))
+4 WRITE ?23,+$GET(TOTALT(DIV,"WINDOW REFIL"))
+5 WRITE ?29,+$GET(TOTALT(DIV,"WINDOW RENEW"))
+6 WRITE ?35,+$GET(TOTALT(DIV,"OP MAIL"))
+7 WRITE ?47,+$GET(TOTALT(DIV,"OP WINDOW"))
+8 WRITE ?53,+$GET(TOTALT(DIV,"RELEASE REFIL"))
+9 WRITE ?59,+$GET(TOTALT(DIV,"RELEASE RENEW"))
+10 WRITE ?65,+$GET(TOTALT(DIV,"CMOP RELEASED"))
+11 WRITE ?74,+($GET(TOTALT(DIV,"CMOP UNRELEASED"))+$GET(TOTALT(DIV,"OTHER")))
+12 IF IOST["C-"
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF (Y="")
QUIT
+13 QUIT
SEL ;Select divisions
+1 ; returns arrays
+2 ; DIVNM("names of divisions")=selection number
+3 ; DIVDA("iens of divisions")=name of division
+4 ; for testing
+5 WRITE !!,"SELECTION OF DIVISION(S)",!
+6 SET DIV=""
KILL DIVNM,DIVDA,DIVX
+7 FOR I=1:1
SET DIV=$ORDER(^PS(59,"B",DIV))
IF DIV=""
QUIT
SET DIVNM(I)=DIV
SET DIVNM(DIV)=I
SET DIVDA=$ORDER(^PS(59,"B",DIV,0))
SET DIVNM(I,"I")=DIVDA
+8 SET I=I-1
+9 KILL DIR
+10 SET DIR(0)="S^A:ALL DIVISIONS;S:SELECT DIVISIONS"
+11 DO ^DIR
KILL DIR
+12 IF Y="A"
GOTO ALL
+13 IF Y="S"
GOTO SELECT
+14 QUIT
SELECT ;
+1 FOR C=1:1:I
SET DIR("A",C)=C_" "_DIVNM(C)
+2 SET DIR(0)="LO^1:"_I
SET DIR("A")="Select Division(s) "
+3 DO ^DIR
+4 IF '+Y
KILL DIVNM
QUIT
+5 MERGE DIVX=DIVNM
KILL DIVNM
+6 FOR I=1:1
SET X=$PIECE(Y,",",I)
IF 'X
QUIT
MERGE DIVNM(X)=DIVX(X)
SET DIVNM=DIVX(X)
SET DIVNM(DIVNM)=X
+7 KILL DIVX,DIR
ALL WRITE !!,"You have selected:",!
SET DIV=0
FOR
SET DIV=$ORDER(DIVNM(DIV))
IF 'DIV
QUIT
WRITE !,DIV,?5,DIVNM(DIV)
+1 SET DIR(0)="Y"
SET DIR("A")="Is this corrrect ? "
SET DIR("B")="YES"
DO ^DIR
+2 KILL DIR
+3 IF Y
Begin DoDot:1
+4 KILL DIVDA
+5 SET DIV=0
FOR
SET DIV=$ORDER(DIVNM(DIV))
IF 'DIV
QUIT
SET DA=DIVNM(DIV,"I")
SET DIVDA(DA)=DIVNM(DIV)
KILL DIVNM(DIV)
End DoDot:1
QUIT
+6 GOTO SEL
+7 ;
TOTALT ;
+1 SET X="TOTALT"
FOR
SET X=$QUERY(@X)
IF X=""
QUIT
WRITE !,X,?30,@X
+2 QUIT
EXIT DO END
+1 KILL DIVDA,TOTAL,TOTALT,I,LINE,PSXRRF,PSXXB,PSXRNM,DIV
+2 QUIT