| 1 | PSXSUDCN ;BIR/HTW-Routine to Provide Report of Rx's Suspended for CMOP ; 31 Oct 2000  1:20 PM | 
|---|
| 2 | ;;2.0;CMOP;**31**;11 Apr 97 | 
|---|
| 3 | ; External reference to ^PS(52.5 supported by DBIA #1222 | 
|---|
| 4 | ; External reference to ^PS(59 supported by DBIA #1976 | 
|---|
| 5 | ; | 
|---|
| 6 | BEGDATE ;GET BEGIN DATE | 
|---|
| 7 | K DIR | 
|---|
| 8 | W !,"Rx's Suspended for CMOP",! | 
|---|
| 9 | S DIR(0)="DO",DIR("A")="ENTER BEGINNING DATE " D ^DIR K DIR | 
|---|
| 10 | G:($G(Y)="")!($D(DIRUT)) END1 | 
|---|
| 11 | S PSXB=Y | 
|---|
| 12 | ENDDATE ;GET ENDING DATE | 
|---|
| 13 | K DIR,X,Y | 
|---|
| 14 | S Y=DT X ^DD("DD") S DIR("B")=Y | 
|---|
| 15 | S DIR(0)="DO",DIR("A")="ENTER ENDING DATE" D ^DIR K DIR | 
|---|
| 16 | I $G(Y)="" G BEGDATE | 
|---|
| 17 | Q:$D(DTOUT)  I $D(DUOUT) G BEGDATE | 
|---|
| 18 | S PSXE=Y | 
|---|
| 19 | I PSXE<PSXB W !,"Ending date must follow beginning date!" G ENDDATE | 
|---|
| 20 | ; select division(s) | 
|---|
| 21 | D SEL | 
|---|
| 22 | I '$D(DIVNM) D END1,EXIT Q | 
|---|
| 23 | ; | 
|---|
| 24 | DEVICE W !! S %ZIS="MQ",%ZIS("A")="Select Printer: ",%ZIS("B")="" | 
|---|
| 25 | D ^%ZIS G:POP END1 S PSXLAP=ION | 
|---|
| 26 | I IOST["C-" G EN1 | 
|---|
| 27 | I '$D(IO("Q")) G EN0 | 
|---|
| 28 | QUE S ZTSAVE("PSXB")="",ZTSAVE("PSXE")="",ZTSAVE("DIVDA(")="",ZTSAVE("DIVNM(")="",ZTIO=PSXLAP | 
|---|
| 29 | S ZTRTN="EN1^PSXSUDCN" | 
|---|
| 30 | S ZTDESC="CMOP Count of Suspended CMOP Rx's by Day" | 
|---|
| 31 | D ^%ZTLOAD | 
|---|
| 32 | Q1 W:$D(ZTSK) !!,"Report Queued to Print!! ",ZTSK,! | 
|---|
| 33 | K DIR,PSXB,PSXE,Y D ^%ZISC | 
|---|
| 34 | D EXIT | 
|---|
| 35 | Q | 
|---|
| 36 | EN0 U IO | 
|---|
| 37 | ;Called by Taskman to run CMOP Rx's by day report | 
|---|
| 38 | EN1 ; | 
|---|
| 39 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 40 | DIVISION ; | 
|---|
| 41 | S DIV=0 F  Q:$G(PSXFLAG)=1  S DIV=$O(DIVDA(DIV)) Q:DIV'>0  D ONEDIV | 
|---|
| 42 | D GRNDSUM | 
|---|
| 43 | G EXIT | 
|---|
| 44 | ; | 
|---|
| 45 | ONEDIV ; | 
|---|
| 46 | S LINE="W ! F I=1:1:80 W ""=""",CT=0 | 
|---|
| 47 | S Y=PSXB X ^DD("DD") S PSXBE=Y | 
|---|
| 48 | S Y=PSXE X ^DD("DD") S PSXEE=Y | 
|---|
| 49 | S (PSXQ,PSXL,PSXAX,PSXP,PSXTOT)=0 | 
|---|
| 50 | S PSXD=PSXB-.00001,PSXTE=PSXE+.99999 | 
|---|
| 51 | D HEADER S CT=8 | 
|---|
| 52 | F  Q:$G(PSXFLAG)=1  S PSXD=$O(^PS(52.5,"C",PSXD)) Q:'PSXD!(PSXD>PSXTE)  D 525,BODY Q:$G(ANS)="^" | 
|---|
| 53 | G END | 
|---|
| 54 | 525 Q:$G(PSXFLAG)=1 | 
|---|
| 55 | F PSX525=0:0 Q:$G(PSXFLAG)=1  S PSX525=$O(^PS(52.5,"C",PSXD,PSX525)) Q:'PSX525  I $D(^PS(52.5,PSX525,0)) D | 
|---|
| 56 | .S DIVRX=$P(^PS(52.5,PSX525,0),U,6) Q:DIVRX'=DIV | 
|---|
| 57 | .S N=$P($G(^PS(52.5,PSX525,0)),"^",7) I N]"" D | 
|---|
| 58 | ..S:N="Q" PSXQ=PSXQ+1 | 
|---|
| 59 | ..I N="L"!(N="X")!(N="R") S PSXAX=PSXAX+1 | 
|---|
| 60 | ..S:N="P" PSXP=PSXP+1 | 
|---|
| 61 | ..S PSXTOT=PSXTOT+1 | 
|---|
| 62 | Q | 
|---|
| 63 | HEADER D NOW^%DTC S Y=% X ^DD("DD") S PSXNOW=Y | 
|---|
| 64 | HDR1 I IOST["C-" W @IOF | 
|---|
| 65 | W !,?20,"COUNT OF SUSPENDED CMOP RX's BY DAY" | 
|---|
| 66 | W !,DIVDA(DIV) | 
|---|
| 67 | W !,"FROM: "_PSXBE,"  TO: "_$P(PSXEE,"@"),"   PRINTED: ",PSXNOW | 
|---|
| 68 | X LINE | 
|---|
| 69 | H1 W !,"DATE",?14,"QUEUED",?29,"TRANSMITTED",?47,"PRINTED",?62,"TOTAL" | 
|---|
| 70 | S A=15-($L($G(PSXQ))\2),B=35-($L($G(PSXAX))\2),C=49-($L($G(PSXP))\2),D=62-($L($G(PSXTOT))\2) | 
|---|
| 71 | X LINE | 
|---|
| 72 | Q | 
|---|
| 73 | BODY ; | 
|---|
| 74 | Q:$G(PSXFLAG)=1 | 
|---|
| 75 | I IOST["C-",(CT>20) D PAGE Q:$G(ANS)="^"  W @IOF S CT=0 D HDR1 G B1 | 
|---|
| 76 | I $G(CT)>56 S CT=0 W @IOF D HEADER | 
|---|
| 77 | B1 S Y=PSXD X ^DD("DD") S XDATE=$P(Y,","),CT=CT+1 | 
|---|
| 78 | W !,XDATE,?A,$J($G(PSXQ),5),?B,$J($G(PSXAX),5),?C,$J($G(PSXP),5),?D,$J($G(PSXTOT),5) | 
|---|
| 79 | S PSXQGD=$G(PSXQGD)+PSXQ,PSXAXGD=$G(PSXAXGD)+PSXAX,PSXPGD=$G(PSXPGD)+PSXP,PSXTOTGD=$G(PSXTOTGD)+PSXTOT | 
|---|
| 80 | S (PSXQ,PSXAX,PSXP,PSXTOT)=0 K XDATE | 
|---|
| 81 | Q | 
|---|
| 82 | PAGE Q:$G(PSXFLAG)=1 | 
|---|
| 83 | K DIR S DIR(0)="FO",DIR("A")="Press RETURN to continue or ""^"" to exit" D ^DIR S:$D(DTOUT)!($D(DUOUT)) (ANS)="^",PSXFLAG=1 | 
|---|
| 84 | Q | 
|---|
| 85 | END Q:$G(PSXFLAG)=1 | 
|---|
| 86 | X LINE W !,"Division Total",?A,$J($G(PSXQGD),5),?B,$J($G(PSXAXGD),5),?C,$J($G(PSXPGD),5),?D,$J($G(PSXTOTGD),5) | 
|---|
| 87 | F X="PSXQGD","PSXAXGD","PSXPGD","PSXTOTGD" S DIVTOT(DIV,X)=$G(@X) | 
|---|
| 88 | I IOST["C-" D PAGE | 
|---|
| 89 | I IOST'["C-" W @IOF | 
|---|
| 90 | END1 K DIR,X,Y,%,PSXD,PSXF,PSXQ,PSXL,PSXP,PSXAX,PSXTOT,PSXUNREL | 
|---|
| 91 | K PSXAD,PSXOT,PSXR,I,PSXZ,FILL,STAT,NODE,POP,PSXGO | 
|---|
| 92 | K PSXLAP,PSXNOW,PSXYES,ZTDESC,ZTIO,ZTRTN,ZTSAVE,PSXMW,PSXM,PSXW | 
|---|
| 93 | K A,B,D,E,PSXCR,PSXCU,PSXFILL,PSXSUSDT,PSXX,ZTSK | 
|---|
| 94 | K N,PSX525,PSXMT,PSXWT,C,CT,DIRUT,DIROUT,DTOUT,DUOUT,J,ANS,PSXQGD,PSXAXGD,PSXPGD,PSXTOTGD | 
|---|
| 95 | Q | 
|---|
| 96 | EXIT ; | 
|---|
| 97 | D ^%ZISC | 
|---|
| 98 | K PSXB,PSXE,LINE,PSXBE,PSXEE,PSXTE,DIVNM,DIVDA,DIV,DIVRX,DIVTOT,PSXFLAG         D END1 | 
|---|
| 99 | Q | 
|---|
| 100 | SEL ;Select divisions | 
|---|
| 101 | ; returns arrays | 
|---|
| 102 | ; DIVNM("names of divisions")=selection number | 
|---|
| 103 | ; DIVDA("iens of divisions")=name of division | 
|---|
| 104 | ; for testing | 
|---|
| 105 | W !!,"SELECTION OF DIVISION(S)",! | 
|---|
| 106 | S DIV="" K DIVNM,DIVDA,DIVX | 
|---|
| 107 | 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 | 
|---|
| 108 | S I=I-1 | 
|---|
| 109 | K DIR S DIR(0)="S^A:ALL DIVISIONS;S:SELECT DIVISIONS" | 
|---|
| 110 | D ^DIR K DIR | 
|---|
| 111 | G:Y="A" ALL | 
|---|
| 112 | G:Y="S" SELECT | 
|---|
| 113 | Q | 
|---|
| 114 | SELECT ; | 
|---|
| 115 | F C=1:1:I S DIR("A",C)=C_"    "_DIVNM(C) | 
|---|
| 116 | S DIR(0)="LO^1:"_I,DIR("A")="Select Division(s) " | 
|---|
| 117 | D ^DIR | 
|---|
| 118 | I '+Y K DIVNM Q | 
|---|
| 119 | M DIVX=DIVNM K DIVNM | 
|---|
| 120 | F I=1:1 S X=$P(Y,",",I) Q:'X  M DIVNM(X)=DIVX(X) S DIVNM=DIVX(X),DIVNM(DIVNM)=X | 
|---|
| 121 | K DIVX,DIR | 
|---|
| 122 | ALL W !!,"You have selected:",! S DIV=0 F  S DIV=$O(DIVNM(DIV)) Q:'DIV  W !,DIV,?5,DIVNM(DIV) | 
|---|
| 123 | S DIR(0)="Y",DIR("A")="Is this corrrect ? ",DIR("B")="YES" D ^DIR | 
|---|
| 124 | K DIR | 
|---|
| 125 | I Y D  Q | 
|---|
| 126 | .K DIVDA | 
|---|
| 127 | .S DIV=0 F  S DIV=$O(DIVNM(DIV)) Q:'DIV  S DA=DIVNM(DIV,"I"),DIVDA(DA)=DIVNM(DIV) K DIVNM(DIV) | 
|---|
| 128 | G SEL | 
|---|
| 129 | ; | 
|---|
| 130 | GRNDSUM ; | 
|---|
| 131 | Q:$G(PSXFLAG)=1 | 
|---|
| 132 | S DIV=0,DIVDA(0)="                            GRAND TOTAL SUMMARY" | 
|---|
| 133 | D HEADER | 
|---|
| 134 | K DIVTOT(0) | 
|---|
| 135 | F  S DIV=$O(DIVDA(DIV)) Q:DIV'>0  D | 
|---|
| 136 | . W !,DIVDA(DIV) | 
|---|
| 137 | . F X="PSXQGD","PSXAXGD","PSXPGD","PSXTOTGD" S @X=DIVTOT(DIV,X),DIVTOT(0,X)=$G(DIVTOT(0,X))+@X | 
|---|
| 138 | . W !,?A,$J($G(PSXQGD),5),?B,$J($G(PSXAXGD),5),?C,$J($G(PSXPGD),5),?D,$J($G(PSXTOTGD),5) | 
|---|
| 139 | F X="PSXQGD","PSXAXGD","PSXPGD","PSXTOTGD" S @X=DIVTOT(0,X) | 
|---|
| 140 | X LINE | 
|---|
| 141 | W !,"Grand Total",?A,$J($G(PSXQGD),5),?B,$J($G(PSXAXGD),5),?C,$J($G(PSXPGD),5),?D,$J($G(PSXTOTGD),5) | 
|---|
| 142 | Q | 
|---|