| 1 | PSUCSR1 ;BIR/DJM - Drug breakdown ;25 AUG 1998 | 
|---|
| 2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005 | 
|---|
| 3 | ; DBIA(s) | 
|---|
| 4 | ; Reference to file #40.8 supported by DBIA 2438 | 
|---|
| 5 | ; | 
|---|
| 6 | EN ;EP -- DRUG BREAKDOWN REPORT | 
|---|
| 7 | ; | 
|---|
| 8 | S RC="^XTMP(PSUCSJB,""RECORDS"",PSUDIV,PSUTIEN,PSURC)" | 
|---|
| 9 | I $G(@RC@(0))'=2 Q | 
|---|
| 10 | S PSUGNM=$G(@RC@(9)) | 
|---|
| 11 | S PSUBU=$G(@RC@(14)) | 
|---|
| 12 | S PSUBU=$S(PSUBU="":"N/A",1:PSUBU) | 
|---|
| 13 | S PSUPSZ=$G(@RC@(15)) | 
|---|
| 14 | S PSUPSZ=$S(PSUPSZ="":"N/A",1:PSUPSZ) | 
|---|
| 15 | S PSUNFI=$G(@RC@(10)) | 
|---|
| 16 | S PSUVFI=$G(@RC@(11)) | 
|---|
| 17 | S PSUCST=$G(@RC@(16)) | 
|---|
| 18 | S PSUQTY=$G(@RC@(17)) | 
|---|
| 19 | S PSUCST=PSUCST*PSUQTY | 
|---|
| 20 | S PSUTCST=$G(PSUTCST)+PSUCST | 
|---|
| 21 | ; pull previous counters | 
|---|
| 22 | ; PSUGNM-drug name; PSUBU-break down unit/dispense unit | 
|---|
| 23 | ; PSUPSZ-package size | 
|---|
| 24 | S PSUX=$G(^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUGNM,PSUBU,PSUPSZ)) | 
|---|
| 25 | S PSUOQTY=$P(PSUX,U,3) | 
|---|
| 26 | S PSUOCST=$P(PSUX,U,4) | 
|---|
| 27 | S PSUOCNT=$P(PSUX,U,5) | 
|---|
| 28 | ; update/store counters | 
|---|
| 29 | S PSUTCST=PSUOCST+PSUCST | 
|---|
| 30 | S PSUTQTY=PSUOQTY+PSUQTY | 
|---|
| 31 | S PSUTCNT=PSUOCNT+1 | 
|---|
| 32 | S PSUX=PSUNFI_U_PSUVFI_U_PSUTQTY_U_PSUTCST_U_PSUTCNT | 
|---|
| 33 | S ^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUGNM,PSUBU,PSUPSZ)=PSUX | 
|---|
| 34 | Q | 
|---|
| 35 | ; | 
|---|
| 36 | ; | 
|---|
| 37 | GENREP(PSUMSG) ;EP - Generate the report based on the collected information | 
|---|
| 38 | ; | 
|---|
| 39 | S PSUPGS("PG")=1 | 
|---|
| 40 | D PGHDR1 | 
|---|
| 41 | S PSUL=3 | 
|---|
| 42 | F  S PSUL=$O(^XTMP("PSU_"_PSUJOB,"CSAMIS",PSUL)) Q:PSUL=""  D | 
|---|
| 43 | .I LNCNT+4>IOSL D PGHDR1 | 
|---|
| 44 | .W !,^XTMP("PSU_"_PSUJOB,"CSAMIS",PSUL) | 
|---|
| 45 | .S LNCNT=LNCNT+1 | 
|---|
| 46 | Q | 
|---|
| 47 | COMBO(PSUMSG) ;EP - Generate the report based on the collected information | 
|---|
| 48 | ; | 
|---|
| 49 | S PSUPGS("PG")=1 | 
|---|
| 50 | D PGHDR2 | 
|---|
| 51 | S PSUL=3 | 
|---|
| 52 | F  S PSUL=$O(^XTMP("PSU_"_PSUJOB,"COMBOAMIS",PSUL)) Q:PSUL=""  D | 
|---|
| 53 | .I LNCNT+4>IOSL D PGHDR2 | 
|---|
| 54 | .W !,^XTMP("PSU_"_PSUJOB,"COMBOAMIS",PSUL) | 
|---|
| 55 | .S LNCNT=LNCNT+1 | 
|---|
| 56 | Q | 
|---|
| 57 | ; | 
|---|
| 58 | PGHDR1 ;AMIS PAGE HEADER | 
|---|
| 59 | U IO | 
|---|
| 60 | W @IOF | 
|---|
| 61 | W !,^XTMP("PSU_"_PSUJOB,"CSAMIS",1) | 
|---|
| 62 | W !!,?68,"Page: ",PSUPGS("PG") | 
|---|
| 63 | W !,$G(^XTMP("PSU_"_PSUJOB,"IVAMIS",2)) | 
|---|
| 64 | S LNCNT=3 | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | PGHDR2 ;COMBO AMIS PAGE HEADER | 
|---|
| 68 | U IO | 
|---|
| 69 | W @IOF | 
|---|
| 70 | W !,^XTMP("PSU_"_PSUJOB,"COMBOAMIS",1) | 
|---|
| 71 | W !!,?68,"Page: ",PSUPGS("PG") | 
|---|
| 72 | W !,$G(^XTMP("PSU_"_PSUJOB,"COMBOAMIS",2)) | 
|---|
| 73 | S LNCNT=3 | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | PG ;EP  Page controller | 
|---|
| 77 | S PSUQUIT=0 | 
|---|
| 78 | I $Y<(IOSL-4) Q | 
|---|
| 79 | S:'$D(PSUPG("PG")) PSUPG("PG")=0 | 
|---|
| 80 | S PSUPG("PG")=PSUPG("PG")+1 | 
|---|
| 81 | I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR | 
|---|
| 82 | I $G(DIROUT)!$G(DUOUT)!$G(DTOUT)!$G(DIRUT) S PSUQUIT=1 | 
|---|
| 83 | U IO W @IOF | 
|---|
| 84 | Q:$G(PSUQUIT) | 
|---|
| 85 | ; | 
|---|
| 86 | PGHDR ;EP write header & page number | 
|---|
| 87 | F I=1,2 W !,^XTMP(PSUCSJB,"MAIL",PSUMC,I) | 
|---|
| 88 | W !,?60,"PAGE: ",PSUPG("PG") | 
|---|
| 89 | F I=4,5,6 I $D(^XTMP(PSUCSJB,"MAIL",PSUMC,I)) W !,^(I) | 
|---|
| 90 | Q | 
|---|
| 91 | ; | 
|---|
| 92 | SUMMRY(PSUMSG,PSUMFL) ; Mail the drug summary report (by division) | 
|---|
| 93 | K PSUTCSO,PSUTCST | 
|---|
| 94 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1 | 
|---|
| 95 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01) | 
|---|
| 96 | S PSUMFL=$G(PSUMFL,1) | 
|---|
| 97 | S PSUOMC=PSUMC,PSUMLC=0 | 
|---|
| 98 | S PSUMC=PSUMC+1,PSULC=0,PSUTLC=0 | 
|---|
| 99 | S PSUDRG="",PSUQDTL=0,PSUTCSO=0,PSUTCST=0 | 
|---|
| 100 | S PSUDSHL=$$PAD("","-",76) | 
|---|
| 101 | S PSULC=PSULC+1 | 
|---|
| 102 | S ML="^XTMP(PSUCSJB,""MAIL"",PSUMC)" | 
|---|
| 103 | S @ML@(1)=$$CTR("Controlled Substance Statistical Data"," ",75) | 
|---|
| 104 | S @ML@(2)="                   "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM | 
|---|
| 105 | S @ML@(3)=" " | 
|---|
| 106 | S X=$$PAD(" "," ",45)_$$CTR("Breakdown"," ",10)_$$CTR("Package"," ",10)_"Quantity" | 
|---|
| 107 | S @ML@(4)=X | 
|---|
| 108 | S X=$$PAD("Drug Name"," ",45)_$$PAD("Unit"," ",10)_$$CTR("Size"," ",10)_"Dispensed" | 
|---|
| 109 | S @ML@(5)=X | 
|---|
| 110 | S @ML@(6)=PSUDSHL,PSULC=6 | 
|---|
| 111 | ; | 
|---|
| 112 | F  S PSUDRG=$O(^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUDRG)) Q:PSUDRG=""  D | 
|---|
| 113 | . S PSUBU="" | 
|---|
| 114 | . F  S PSUBU=$O(^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUDRG,PSUBU)) Q:PSUBU=""  D | 
|---|
| 115 | .. S PSUSZ="" | 
|---|
| 116 | .. F  S PSUSZ=$O(^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUDRG,PSUBU,PSUSZ)) Q:PSUSZ=""  D | 
|---|
| 117 | ... S X=$G(^XTMP(PSUCSJB,"CSFR-37",PSUDIV,PSUDRG,PSUBU,PSUSZ),"^^0") | 
|---|
| 118 | ... S PSUNFI=$P(X,U,1) | 
|---|
| 119 | ... S PSUVFI=$P(X,U,2) | 
|---|
| 120 | ... S PSUQTY=$P(X,U,3) | 
|---|
| 121 | ... S PSUCST=$P(X,U,4) | 
|---|
| 122 | ... S PSUTCST=PSUTCST+PSUCST | 
|---|
| 123 | ... S PSUCNT=$P(X,U,5),PSUTCSO=PSUTCSO+PSUCNT | 
|---|
| 124 | ... S X=PSUDRG_" "_$S(PSUVFI=0:"#",1:"")_$S(PSUNFI'="":"*",1:"") | 
|---|
| 125 | ... S X=$$PAD(X," ",45) | 
|---|
| 126 | ... S X=X_$$PAD(PSUBU," ",10) | 
|---|
| 127 | ... S X=X_$$PAD($J(PSUSZ,7)," ",12) | 
|---|
| 128 | ... S X=X_$$PAD($J(PSUQTY,7)," ",10) | 
|---|
| 129 | ... S PSUQDTL=PSUQDTL+PSUQTY ; Sum up the total quantity dispensed | 
|---|
| 130 | ... S PSULC=PSULC+1,PSUTLC=PSUTLC+1 | 
|---|
| 131 | ... S @ML@(PSULC)=X | 
|---|
| 132 | S ^XTMP(PSUCSJB,"REPORT",PSUMC)="" ; trigger print report | 
|---|
| 133 | S ^XTMP(PSUCSJB,"SUMMARY 2",PSUMC)="" ;trigger mail & XMY group | 
|---|
| 134 | I $G(PSUTCSO)=0 D  ; No mail summary to send | 
|---|
| 135 | . K ^XTMP(PSUCSJB,"MAIL",PSUMC) | 
|---|
| 136 | . S ^XTMP(PSUCSJB,"MAIL",PSUMC)=PSUDIV | 
|---|
| 137 | . S ^XTMP(PSUCSJB,"REPORT",PSUMC)="" | 
|---|
| 138 | . S @ML@(1)=$$CTR("Controlled Substance Statistical Data"," ",75) | 
|---|
| 139 | . S @ML@(2)="                   "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM | 
|---|
| 140 | . S @ML@(3)="  " | 
|---|
| 141 | . S @ML@(4)="No data to report" | 
|---|
| 142 | . S @ML@(5)=" " | 
|---|
| 143 | I $G(PSUSMRY,0) D | 
|---|
| 144 | . K ^XTMP(PSUCSJB,"MAIL",PSUMC),^XTMP(PSUCSJB,"REPORT",PSUMC) | 
|---|
| 145 | I '$G(PSUSMRY,0),PSUTLC D | 
|---|
| 146 | . S PSUTLC=PSUTLC+6 ; Adjust for the header | 
|---|
| 147 | . ; Set total line | 
|---|
| 148 | . S ^XTMP(PSUCSJB,"MAIL",PSUMC)=PSUDIV | 
|---|
| 149 | . S PSULC=PSULC+1,PSUTLC=PSUTLC+1 | 
|---|
| 150 | . S @ML@(PSULC)=PSUDSHL ; dashes line | 
|---|
| 151 | . S PSULC=PSULC+1,PSUTLC=PSUTLC+1 | 
|---|
| 152 | . S @ML@(PSULC)=$$PAD("Totals:"," ",64)_$J(PSUQDTL,10) | 
|---|
| 153 | . S PSULC=PSULC+1 | 
|---|
| 154 | . S @ML@(PSULC)="   " | 
|---|
| 155 | . S PSULC=PSULC+1 | 
|---|
| 156 | . S @ML@(PSULC)=" * Non-Formulary" | 
|---|
| 157 | . S PSULC=PSULC+1 | 
|---|
| 158 | . S @ML@(PSULC)=" # Not on National Formulary" | 
|---|
| 159 | ; | 
|---|
| 160 | Q | 
|---|
| 161 | ; | 
|---|
| 162 | EXIT1 S PSUMLC=0 | 
|---|
| 163 | Q | 
|---|
| 164 | PAD(S,P,L) ; Pad string S with P to length L | 
|---|
| 165 | S $P(P,P,L)="" | 
|---|
| 166 | Q $E(S_P,1,L) | 
|---|
| 167 | CTR(S,P,L) ; Center string S left and right P in size L | 
|---|
| 168 | Q $$PAD($$PAD(P,P,L-$L(S)\2)_S,P,L) | 
|---|