| 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)
 | 
|---|