| [613] | 1 | PSXRSTAT ;BIR/HTW-Rx Workload Report ; 30 Oct 2000  5:08 PM
 | 
|---|
 | 2 |  ;;2.0;CMOP;**31**;11 Apr 97
 | 
|---|
 | 3 |  ; External reference to ^PSRX( supported by DBIA #1221
 | 
|---|
 | 4 |  ; External reference to ^PS(52.5 supported by DBIA #1222
 | 
|---|
 | 5 |  ; External reference to ^PS(59 supported by DBIA #1976
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  D EXIT
 | 
|---|
 | 8 | BEGDATE S DIR(0)="DO",DIR("A")="ENTER BEGINNING DATE " D ^DIR K DIR
 | 
|---|
 | 9 |  G:$D(DIRUT)!(X']"") END
 | 
|---|
 | 10 |  S PSXB=Y K Y,X
 | 
|---|
 | 11 |  I PSXB>DT W !!,"Future dates are not allowed.",! G BEGDATE
 | 
|---|
 | 12 | ENDDATE S Y=DT X ^DD("DD") S ZZTODAY=Y K Y
 | 
|---|
 | 13 |  K X,Y
 | 
|---|
 | 14 |  S DIR(0)="DO",DIR("A")="ENTER ENDING DATE ",DIR("B")=ZZTODAY
 | 
|---|
 | 15 |  D ^DIR K DIR
 | 
|---|
 | 16 |  G:$D(DIRUT) END
 | 
|---|
 | 17 |  S PSXE=Y K Y
 | 
|---|
 | 18 |  I PSXE<PSXB W !,"Ending date must follow beginning date!" G ENDDATE
 | 
|---|
 | 19 |  K ZZTODAY
 | 
|---|
 | 20 |  D SEL Q:'$D(DIVDA)
 | 
|---|
 | 21 | DEVICE W !! S %ZIS="MQ",%ZIS("A")="Select Printer: ",%ZIS("B")=""
 | 
|---|
 | 22 |  D ^%ZIS G:POP END S PSXLAP=ION
 | 
|---|
 | 23 |  I IOST["C-" G START
 | 
|---|
 | 24 |  I '$D(IO("Q")) G ST0
 | 
|---|
 | 25 |  D ^%ZISC K J,C
 | 
|---|
 | 26 | QUE S ZTSAVE("PSXB")="",ZTSAVE("PSXE")="",ZTSAVE("DIVDA(")="",ZTSAVE("DIVNM(")="",ZTIO=PSXLAP
 | 
|---|
 | 27 |  S ZTRTN="START^PSXRSTAT"
 | 
|---|
 | 28 |  S ZTDESC="CMOP Rx Workload Report"
 | 
|---|
 | 29 |  D ^%ZTLOAD
 | 
|---|
 | 30 | Q1 W:$D(ZTSK) !!,"Report Queued to Print!!"
 | 
|---|
 | 31 |  K DIR,PSXB,PSXE,Y
 | 
|---|
 | 32 |  Q
 | 
|---|
 | 33 | ST0 U IO
 | 
|---|
 | 34 |  ;Taskman entry point to start the CMOP Workload Report
 | 
|---|
 | 35 | START S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
 | 36 |  S LINE="W ! F I=1:1:80 W ""="""
 | 
|---|
 | 37 |  K TOTAL,TOTALT
 | 
|---|
 | 38 |  S DIVDA=0 F  S DIVDA=$O(DIVDA(DIVDA)) Q:'DIVDA  D  Q:$G(PSXFLAG)=1
 | 
|---|
 | 39 |  .S (PSXAD,PSXOT)=0,PSXE1=PSXE,PSXXE=PSXE,PSXXB=PSXB
 | 
|---|
 | 40 |  .S PSXD=PSXB-.00001
 | 
|---|
 | 41 |  .S LINE="W ! F I=1:1:80 W ""="""
 | 
|---|
 | 42 |  .D DIVISION X LINE S DIV=DIVDA D DIVSUML
 | 
|---|
 | 43 |  .D END
 | 
|---|
 | 44 |  .S PSXE=PSXXE,PSXB=PSXXB K PSXXE,PSXXE
 | 
|---|
 | 45 |  D GRNDTOT
 | 
|---|
 | 46 |  D ^%ZISC
 | 
|---|
 | 47 |  D END
 | 
|---|
 | 48 |  Q
 | 
|---|
 | 49 | DIVISION ;
 | 
|---|
 | 50 |  D TITLE
 | 
|---|
 | 51 |  F  S PSXD=$O(^PSRX("AD",PSXD)) Q:(+PSXD'>0)!(+PSXD>PSXE1)  D ONE I $G(PSXD1)'=PSXD D MAIN Q:$G(PSXFLAG)=1
 | 
|---|
 | 52 |  D GTOTAL
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 | END K PSXD,PSXE,PSXF,PSXAD,PSXOT,PSXR,PSXLINE,PSXE1,PSXD1
 | 
|---|
 | 55 |  K DIR,X,Y,%,PSXUNREL,PSXB,POP,PSXLAP,PSXNOW,ZTDESC,ZTIO,ZTRTN,ZTSAVE
 | 
|---|
 | 56 |  K PSXMW,PSXM,PSXW,A,B,C,D,E,PSXCR,PSXCU,PSXSUSDT,ZTSK,PSXMT,PSXWT
 | 
|---|
 | 57 |  K DIRUT,DTOUT,DUOUT,PSXFLAG,ZDATE,ZZTOT,DIROUT,ZFILL,PSXSTAT
 | 
|---|
 | 58 |  Q
 | 
|---|
 | 59 | ONE F PSXR=0:0 S PSXR=$O(^PSRX("AD",PSXD,PSXR)) Q:'PSXR  D TWO Q:$G(PSXFLAG)=1
 | 
|---|
 | 60 |  Q
 | 
|---|
 | 61 | 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
 | 
|---|
 | 62 |  Q
 | 
|---|
 | 63 | COUNT ;
 | 
|---|
 | 64 |  I PSXF=0 S DIV=$P(^PSRX(PSXR,2),U,9) Q:DIV'=DIVDA
 | 
|---|
 | 65 |  I PSXF>0 S DIV=$P(^PSRX(PSXR,1,PSXF,0),U,9) Q:DIV'=DIVDA 
 | 
|---|
 | 66 |  S PSXRNM=$P(^PSRX(PSXR,0),U,1)
 | 
|---|
 | 67 |  I PSXF=0 Q:'$D(^PSRX(PSXR,0))  D
 | 
|---|
 | 68 |  .S PSXMW=$P($G(^PSRX(PSXR,0)),"^",11)
 | 
|---|
 | 69 |  .I $G(PSXMW)="M" S PSXMT=$G(PSXMT)+1 Q
 | 
|---|
 | 70 |  .I $G(PSXMW)="W" S PSXWT=$G(PSXWT)+1
 | 
|---|
 | 71 |  .I PSXRNM'=+PSXRNM S PSXWRN=$G(PSXWRN)+1
 | 
|---|
 | 72 |  I PSXF>0 Q:'$D(^PSRX(PSXR,1,PSXF,0))  D
 | 
|---|
 | 73 |  .S PSXMW=$P($G(^PSRX(PSXR,1,PSXF,0)),"^",2)
 | 
|---|
 | 74 |  .I $G(PSXMW)="M" S PSXMT=$G(PSXMT)+1 Q
 | 
|---|
 | 75 |  .I $G(PSXMW)="W" S PSXWT=$G(PSXWT)+1,PSXWRF=$G(PSXWRF)+1
 | 
|---|
 | 76 |  I $G(PSXMW)="M" S TOTAL("MAIL")=$G(TOTAL("MAIL"))+1
 | 
|---|
 | 77 |  I $G(PSXMW)="W" S TOTAL("WINDOW")=$G(TOTAL("WINDOW"))+1
 | 
|---|
 | 78 |  S PSXAD=PSXAD+1
 | 
|---|
 | 79 |  I $D(^PSRX(PSXR,4,0)) F PSX=0:0 S PSX=$O(^PSRX(PSXR,4,PSX)) Q:'PSX  D
 | 
|---|
 | 80 |  .S ZFILL=$P($G(^PSRX(PSXR,4,PSX,0)),"^",3)
 | 
|---|
 | 81 |  .I $G(ZFILL)'=PSXF K ZFILL Q
 | 
|---|
 | 82 |  .S PSXSTAT=$P($G(^PSRX(PSXR,4,PSX,0)),"^",4)
 | 
|---|
 | 83 |  .S PSX(ZFILL)=PSXSTAT
 | 
|---|
 | 84 |  I $G(PSX(PSXF))=1 S PSXCR=$G(PSXCR)+1,TOTAL("CMOP RELEASED")=$G(TOTAL("CMOP RELEASED"))+1 Q
 | 
|---|
 | 85 |  I $G(PSX(PSXF))=0!($G(PSX(PSXF))=2) S PSXCU=$G(PSXCU)+1,TOTAL("CMOP UNRELEASED")=$G(TOTAL("CMOP UNRELEASED"))+1 Q
 | 
|---|
 | 86 |  ;Check if in suspense...
 | 
|---|
 | 87 |  I $D(^PS(52.5,"B",PSXR)) S PSXST=$O(^(PSXR,"")) I $D(^PS(52.5,PSXST,0)) D
 | 
|---|
 | 88 |  .S PSXST1=$P($G(^PS(52.5,PSXST,0)),"^",7) Q:$G(PSXST1)']""
 | 
|---|
 | 89 |  .S PSXSUSDT=$P(^PS(52.5,PSXST,0),"^",2)
 | 
|---|
 | 90 |  .I PSXF=0 S PSXFDT=$P($G(^PSRX(PSXR,2)),"^",2)
 | 
|---|
 | 91 |  .I PSXF>0 S PSXFDT=$P($G(^PSRX(PSXR,1,PSXF,0)),"^") Q:'$G(PSXFDT)
 | 
|---|
 | 92 |  .I PSXSUSDT=PSXFDT,(PSXST1="L") S PSX(PSXF)=PSXST1,PSXCU=$G(PSXCU)+1,TOTAL("CMOP RELEASED")=$G(TOTAL("CMOP RELEASED"))+1
 | 
|---|
 | 93 |  K PSXSTAT,ZFILL,PSXST,PSXST1,ZZ,PSXSUS,PSXFDT
 | 
|---|
 | 94 |  I $G(PSX(PSXF))="L" Q
 | 
|---|
 | 95 | OP I PSXF=0 S PSXREL=$P($G(^PSRX(PSXR,2)),"^",13)
 | 
|---|
 | 96 |  I PSXF>0 S PSXREL=$P($G(^PSRX(PSXR,1,PSXF,0)),"^",18)
 | 
|---|
 | 97 |  I $G(PSXREL),($G(PSXMW)="M") S PSXM=$G(PSXM)+1,TOTAL("OP MAIL")=$G(TOTAL("OP MAIL"))+1 Q
 | 
|---|
 | 98 |  I $G(PSXREL),($G(PSXMW)="W") S PSXW=$G(PSXW)+1,TOTAL("OP WINDOW")=$G(TOTAL("OP WINDOW"))+1 D  Q
 | 
|---|
 | 99 |  .I PSXRNM'=+PSXRNM,PSXF=0 S PSXRRN=$G(PSXRRN)+1
 | 
|---|
 | 100 |  .I PSXF>0 S PSXRRF=$G(PSXRRF)+1
 | 
|---|
 | 101 |  S PSXUNREL=$G(PSXUNREL)+1,TOTAL("OTHER")=$G(TOTAL("OTHER"))+1
 | 
|---|
 | 102 |  Q
 | 
|---|
 | 103 | TITLE Q:$G(PSXFLAG)=1
 | 
|---|
 | 104 |  I IOST["C-" W @IOF
 | 
|---|
 | 105 |  S Y=PSXB X ^DD("DD") S PSXB=Y
 | 
|---|
 | 106 |  S Y=PSXE X ^DD("DD") S PSXE=Y
 | 
|---|
 | 107 |  D NOW^%DTC S Y=% X ^DD("DD") S PSXNOW=Y
 | 
|---|
 | 108 |  W !!!,?30,"Rx WORKLOAD BREAKDOWN"_$S($G(ZZTOT)=1:" SUMMARY",1:"")
 | 
|---|
 | 109 |  W !,DIVDA(DIVDA)
 | 
|---|
 | 110 |  W !,"FROM: ",PSXB,"  TO: ",$P(PSXE,"@"),"  PRINTED: ",PSXNOW
 | 
|---|
 | 111 |  S PSXLINE=6
 | 
|---|
 | 112 |  X LINE
 | 
|---|
 | 113 | AHEAD W !,"DATE",?8,"TOTAL",?17,"ENTERED",?35,"OUTPATIENT",?47,"RELEASED",?65,"CMOP",?74,"OTHER"
 | 
|---|
 | 114 |  W !,?8,"MAIL",?17,"WINDOW",?35,"MAIL",?47,"WINDOW",?65,"Released"
 | 
|---|
 | 115 |  W !,?17,"Tot",?23,"Ref",?29,"Rn1",?47,"Tot",?53,"Ref",?59,"Rn1"
 | 
|---|
 | 116 |  X LINE
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 | MAIN I IOST["C-",($G(PSXLINE)>20) D  Q:$G(PSXFLAG)=1
 | 
|---|
 | 119 |  .S DIR(0)="E" D ^DIR K DIR I $G(Y)'=1 S PSXFLAG=1 K Y Q
 | 
|---|
 | 120 |  .D TITLE
 | 
|---|
 | 121 |  I IOST'["C-",($G(PSXLINE)>60) W @IOF D TITLE
 | 
|---|
 | 122 |  S PSXUNREL=$G(PSXUNREL)+$G(PSXCU)
 | 
|---|
 | 123 |  S ZDATE=$E(PSXD,4,5)_"/"_$E(PSXD,6,7)
 | 
|---|
 | 124 |  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)
 | 
|---|
 | 125 |  ;W !,ZDATE,?10,$G(PSXMT),?A,$G(PSXWT),?B,$G(PSXM),?C,$G(PSXW),?D,$G(PSXCR),?E,$G(PSXUNREL)
 | 
|---|
 | 126 |  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)
 | 
|---|
 | 127 |  S PSXD1=PSXD,PSXLINE=$G(PSXLINE)+1
 | 
|---|
 | 128 |  S TOTALT(DIVDA,"WINDOW REFIL")=$G(TOTALT(DIVDA,"WINDOW REFIL"))+$G(PSXWRF)
 | 
|---|
 | 129 |  S TOTALT(DIVDA,"WINDOW RENEW")=$G(TOTALT(DIVDA,"WINDOW RENEW"))+$G(PSXWRN)
 | 
|---|
 | 130 |  S TOTALT(DIVDA,"RELEASE REFIL")=$G(TOTALT(DIVDA,"RELEASE REFIL"))+$G(PSXRRF)
 | 
|---|
 | 131 |  S TOTALT(DIVDA,"RELEASE RENEW")=$G(TOTALT(DIVDA,"RELEASE RENEW"))+$G(PSXRRN)
 | 
|---|
 | 132 |  K PSXMT,PSXWT,PSXCR,PSXCU,PSXM,PSXW,PSXCR,PSXUNREL,PSXWRF,PSXWRN,PSXRRF,PSXRRN
 | 
|---|
 | 133 |  Q
 | 
|---|
 | 134 | GTOTAL ;
 | 
|---|
 | 135 |  Q:$G(PSXFLAG)=1
 | 
|---|
 | 136 |  F X="MAIL","WINDOW","OP MAIL","OP WINDOW","CMOP RELEASED","CMOP UNRELEASED","OTHER" S TOTALT(DIVDA,X)=$G(TOTAL(X))
 | 
|---|
 | 137 |  K TOTAL
 | 
|---|
 | 138 |  I IOST["C-",($G(PSXLINE)<20) S DIR(0)="E" D ^DIR K DIR Q:(Y="")
 | 
|---|
 | 139 |  Q
 | 
|---|
 | 140 | GRNDTOT ;EP WRITE /LOOP DIVISIONAL TOTALS & WRITE GRAND TOTALS
 | 
|---|
 | 141 |  Q:$G(PSXFLAG)=1
 | 
|---|
 | 142 |  W @IOF
 | 
|---|
 | 143 |  S DIVDA(0)="                              Grand Total Summary",DIVDA=0
 | 
|---|
 | 144 |  D TITLE
 | 
|---|
 | 145 |  S LINE="W ! F I=1:1:80 W ""="""
 | 
|---|
 | 146 |  S DIV=0 F  S DIV=$O(DIVDA(DIV)) Q:'DIV  D
 | 
|---|
 | 147 |  .D DIVSUM
 | 
|---|
 | 148 |  .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))
 | 
|---|
 | 149 |  X LINE
 | 
|---|
 | 150 |  S DIV=0 D DIVSUML
 | 
|---|
 | 151 |  Q
 | 
|---|
 | 152 | DIVSUM ;EP DIVISIONAL SUMMARY
 | 
|---|
 | 153 |  Q:$G(PSXFLAG)=1
 | 
|---|
 | 154 |  W !,DIVDA(DIV)
 | 
|---|
 | 155 | DIVSUML ;
 | 
|---|
 | 156 |  Q:$G(PSXFLAG)=1
 | 
|---|
 | 157 |  W !,?8,+$G(TOTALT(DIV,"MAIL"))
 | 
|---|
 | 158 |  W ?17,+$G(TOTALT(DIV,"WINDOW"))
 | 
|---|
 | 159 |  W ?23,+$G(TOTALT(DIV,"WINDOW REFIL"))
 | 
|---|
 | 160 |  W ?29,+$G(TOTALT(DIV,"WINDOW RENEW"))
 | 
|---|
 | 161 |  W ?35,+$G(TOTALT(DIV,"OP MAIL"))
 | 
|---|
 | 162 |  W ?47,+$G(TOTALT(DIV,"OP WINDOW"))
 | 
|---|
 | 163 |  W ?53,+$G(TOTALT(DIV,"RELEASE REFIL"))
 | 
|---|
 | 164 |  W ?59,+$G(TOTALT(DIV,"RELEASE RENEW"))
 | 
|---|
 | 165 |  W ?65,+$G(TOTALT(DIV,"CMOP RELEASED"))
 | 
|---|
 | 166 |  W ?74,+($G(TOTALT(DIV,"CMOP UNRELEASED"))+$G(TOTALT(DIV,"OTHER")))
 | 
|---|
 | 167 |  I IOST["C-" S DIR(0)="E" D ^DIR K DIR Q:(Y="")
 | 
|---|
 | 168 |  Q
 | 
|---|
 | 169 | SEL ;Select divisions
 | 
|---|
 | 170 |  ; returns arrays
 | 
|---|
 | 171 |  ; DIVNM("names of divisions")=selection number
 | 
|---|
 | 172 |  ; DIVDA("iens of divisions")=name of division
 | 
|---|
 | 173 |  ; for testing
 | 
|---|
 | 174 |  W !!,"SELECTION OF DIVISION(S)",!
 | 
|---|
 | 175 |  S DIV="" K DIVNM,DIVDA,DIVX
 | 
|---|
 | 176 |  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
 | 
|---|
 | 177 |  S I=I-1
 | 
|---|
 | 178 |  K DIR
 | 
|---|
 | 179 |  S DIR(0)="S^A:ALL DIVISIONS;S:SELECT DIVISIONS"
 | 
|---|
 | 180 |  D ^DIR K DIR
 | 
|---|
 | 181 |  G:Y="A" ALL
 | 
|---|
 | 182 |  G:Y="S" SELECT
 | 
|---|
 | 183 |  Q
 | 
|---|
 | 184 | SELECT ;
 | 
|---|
 | 185 |  F C=1:1:I S DIR("A",C)=C_"    "_DIVNM(C)
 | 
|---|
 | 186 |  S DIR(0)="LO^1:"_I,DIR("A")="Select Division(s) "
 | 
|---|
 | 187 |  D ^DIR
 | 
|---|
 | 188 |  I '+Y K DIVNM Q
 | 
|---|
 | 189 |  M DIVX=DIVNM K DIVNM
 | 
|---|
 | 190 |  F I=1:1 S X=$P(Y,",",I) Q:'X  M DIVNM(X)=DIVX(X) S DIVNM=DIVX(X),DIVNM(DIVNM)=X
 | 
|---|
 | 191 |  K DIVX,DIR
 | 
|---|
 | 192 | ALL W !!,"You have selected:",! S DIV=0 F  S DIV=$O(DIVNM(DIV)) Q:'DIV  W !,DIV,?5,DIVNM(DIV)
 | 
|---|
 | 193 |  S DIR(0)="Y",DIR("A")="Is this corrrect ? ",DIR("B")="YES" D ^DIR
 | 
|---|
 | 194 |  K DIR
 | 
|---|
 | 195 |  I Y D  Q
 | 
|---|
 | 196 |  .K DIVDA
 | 
|---|
 | 197 |  .S DIV=0 F  S DIV=$O(DIVNM(DIV)) Q:'DIV  S DA=DIVNM(DIV,"I"),DIVDA(DA)=DIVNM(DIV) K DIVNM(DIV)
 | 
|---|
 | 198 |  G SEL
 | 
|---|
 | 199 |  ;
 | 
|---|
 | 200 | TOTALT ;
 | 
|---|
 | 201 |  S X="TOTALT" F  S X=$Q(@X) Q:X=""  W !,X,?30,@X
 | 
|---|
 | 202 |  Q
 | 
|---|
 | 203 | EXIT D END
 | 
|---|
 | 204 |  K DIVDA,TOTAL,TOTALT,I,LINE,PSXRRF,PSXXB,PSXRNM,DIV
 | 
|---|
 | 205 |  Q
 | 
|---|