| 1 | PSUPR5 ;BIR/PDW - PROCUREMENT EXTRACT SUMMARY MESSAGE GENERATOR ;10 JUL 1999 | 
|---|
| 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 generate Total & Cost summary | 
|---|
| 7 | ; | 
|---|
| 8 | EN1 N PSUITT,PSUREC,PSUTC | 
|---|
| 9 | ;PSUITT - TOTAL ITEMS | 
|---|
| 10 | ;PSUTC - TOTAL COST | 
|---|
| 11 | S:'$D(PSUPRJOB) PSUPRJOB=PSUJOB | 
|---|
| 12 | S:'$D(PSUPRSUB) PSUPRSUB="PSUPR_"_PSUPRJOB | 
|---|
| 13 | ; | 
|---|
| 14 | I '$D(^XTMP(PSUPRSUB,"RECORDS")) G NODATA | 
|---|
| 15 | DIV ;EP Loop by Division | 
|---|
| 16 | S PSUDIV="" F  S PSUDIV=$O(^XTMP(PSUPRSUB,"RECORDS",PSUDIV)) Q:PSUDIV=""  D MESSAGE | 
|---|
| 17 | Q | 
|---|
| 18 | ; | 
|---|
| 19 | MESSAGE ;EP Generate Summary Messages for a Division | 
|---|
| 20 | ; | 
|---|
| 21 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1 | 
|---|
| 22 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01) | 
|---|
| 23 | MSG1 ;  Generate 1st summary message | 
|---|
| 24 | ; | 
|---|
| 25 | S PSUITT=0,PSUTC=0 | 
|---|
| 26 | ; | 
|---|
| 27 | ;   loop to get totals from records stored | 
|---|
| 28 | S PSUREC=0 | 
|---|
| 29 | K ^TMP($J,"PSUITNM") ; | 
|---|
| 30 | F  S PSUREC=$O(^XTMP(PSUPRSUB,"RECORDS",PSUDIV,PSUREC)) Q:PSUREC'>0  S X=^(PSUREC),PSUTC=PSUTC+$P(X,U,19) S PSUIT=$P(X,U,8) S:PSUIT="" PSUIT=$P(X,U,7) S:PSUIT'="" ^TMP($J,"PSUITNM",PSUIT)="" | 
|---|
| 31 | ;  get number of unique items stored in PSUITNM | 
|---|
| 32 | S X="" F PSUITT=0:1 S X=$O(^TMP($J,"PSUITNM",X)) Q:X="" | 
|---|
| 33 | K ^TMP($J,"PSUITNM") | 
|---|
| 34 | S XMDUZ=DUZ | 
|---|
| 35 | M XMY=PSUXMYS1 | 
|---|
| 36 | ; | 
|---|
| 37 | S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ;    start date | 
|---|
| 38 | S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ;    end date | 
|---|
| 39 | N PSUMSG | 
|---|
| 40 | S PSUMSG(1)="               Procurement Statistical Summary" | 
|---|
| 41 | S PSUMSG(2)="               "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM | 
|---|
| 42 | S PSUMSG(3)="      " | 
|---|
| 43 | S PSUMSG(4)="Total of Drug/Supply Items:   "_PSUITT | 
|---|
| 44 | S PSUMSG(5)="Total Cost:                 $ "_PSUTC | 
|---|
| 45 | S PSUMSG(6)="     " | 
|---|
| 46 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1 | 
|---|
| 47 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01) | 
|---|
| 48 | S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_"  "_PSUDIV_" "_PSUDIVNM | 
|---|
| 49 | Q:PSUDIV=0   ;Eliminate empty CoreFLS messages | 
|---|
| 50 | S XMTEXT="PSUMSG(" | 
|---|
| 51 | S XMCHAN=1 | 
|---|
| 52 | M ^XTMP(PSUPRSUB,"REPORT1",PSUDIV)=PSUMSG | 
|---|
| 53 | D ^XMD | 
|---|
| 54 | K PSUMSG | 
|---|
| 55 | ; | 
|---|
| 56 | MSG2 ; SUMMARY BY DRUG | 
|---|
| 57 | ;  loop records stored | 
|---|
| 58 | ;  psunm - name, psudisp - disp unit, psutq - total quantity, psutc - total cost | 
|---|
| 59 | S PSUREC=0,PSUDRNM="" | 
|---|
| 60 | K ^XTMP(PSUPRSUB,"DRUG") | 
|---|
| 61 | F  S PSUREC=$O(^XTMP(PSUPRSUB,"RECORDS",PSUDIV,PSUREC)) Q:PSUREC'>0  S X=^(PSUREC) D | 
|---|
| 62 | . S PSUNM=$P(X,U,8),PSUTQ=$P(X,U,17),PSUTC=$P(X,U,19),PSUDISP=$P(X,U,12) | 
|---|
| 63 | . S:PSUNM="" PSUNM=$P(X,U,7) | 
|---|
| 64 | . S PSUNM=$E(PSUNM,1,30) | 
|---|
| 65 | . I '$L(PSUNM) Q | 
|---|
| 66 | . S ^XTMP(PSUPRSUB,"DRUG",PSUNM)="" | 
|---|
| 67 | . S ^XTMP(PSUPRSUB,"DRUG",PSUNM,"TQ")=$G(^XTMP(PSUPRSUB,"DRUG",PSUNM,"TQ"))+PSUTQ | 
|---|
| 68 | . S ^XTMP(PSUPRSUB,"DRUG",PSUNM,"TC")=$G(^XTMP(PSUPRSUB,"DRUG",PSUNM,"TC"))+PSUTC | 
|---|
| 69 | . S ^XTMP(PSUPRSUB,"DRUG",PSUNM,"DISP")=PSUDISP | 
|---|
| 70 | ; | 
|---|
| 71 | ; | 
|---|
| 72 | S PSUG="^XTMP(PSUPRSUB,""REPORT2"",PSUDIV)" | 
|---|
| 73 | K @PSUG | 
|---|
| 74 | S @PSUG@(1)="               Procurement Data Summary" | 
|---|
| 75 | S @PSUG@(2)="               "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM | 
|---|
| 76 | S @PSUG@(3)=" " | 
|---|
| 77 | S X="",X=$$SETSTR^VALM1("Dispense",X,53,8),X=$$SETSTR^VALM1("Total",X,63,5),X=$$SETSTR^VALM1("Total",X,73,5) | 
|---|
| 78 | S @PSUG@(4)=X | 
|---|
| 79 | S X="Drug/Supply Name",X=$$SETSTR^VALM1("Unit",X,53,4),X=$$SETSTR^VALM1("Qty",X,63,3),X=$$SETSTR^VALM1("Cost",X,73,4) | 
|---|
| 80 | S @PSUG@(5)=X | 
|---|
| 81 | S X="",$P(X,"-",79)="" | 
|---|
| 82 | S @PSUG@(6)=X | 
|---|
| 83 | S PSULC=6 | 
|---|
| 84 | N PSUNM,PSUDISP,PSUTQ,PSUTC,PSUTQT,PSUTCT | 
|---|
| 85 | S (PSUTQT,PSUDISP,PSUTQ,PSUTC,PSUTCT)=0 | 
|---|
| 86 | ;    loop drug names | 
|---|
| 87 | S PSUNM="" | 
|---|
| 88 | F  S PSUNM=$O(^XTMP(PSUPRSUB,"DRUG",PSUNM)) Q:PSUNM=""  S PSUTQ=^XTMP(PSUPRSUB,"DRUG",PSUNM,"TQ"),PSUTC=^("TC"),PSUDISP=^("DISP") D | 
|---|
| 89 | . S PSULC=PSULC+1 | 
|---|
| 90 | . S PSUTQT=$G(PSUTQT)+PSUTQ,PSUTCT=$G(PSUTCT)+PSUTC | 
|---|
| 91 | . S X=$E(PSUNM,1,50) | 
|---|
| 92 | . S X=$$SETSTR^VALM1(PSUDISP,X,53,$L(PSUDISP)) | 
|---|
| 93 | . S X=$$SETSTR^VALM1($J(PSUTQ,6,0),X,62,6) | 
|---|
| 94 | . S X=$$SETSTR^VALM1($J(PSUTC,8,2),X,70,8) | 
|---|
| 95 | . S @PSUG@(PSULC)=X | 
|---|
| 96 | ; | 
|---|
| 97 | S X="",$P(X,"-",79)="" | 
|---|
| 98 | S PSULC=PSULC+1 | 
|---|
| 99 | S @PSUG@(PSULC)=X | 
|---|
| 100 | S X="Total",X=$$SETSTR^VALM1($J(PSUTQT,6,0),X,62,6),X=$$SETSTR^VALM1($J(PSUTCT,8,2),X,70,8) | 
|---|
| 101 | S PSULC=PSULC+1 | 
|---|
| 102 | S @PSUG@(PSULC)=X | 
|---|
| 103 | S @PSUG@(PSULC+1)="    " | 
|---|
| 104 | S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_"  "_PSUDIV_" "_PSUDIVNM | 
|---|
| 105 | S XMTEXT="^XTMP(PSUPRSUB,""REPORT2"",PSUDIV," | 
|---|
| 106 | S XMCHAN=1 | 
|---|
| 107 | M XMY=PSUXMYS2 | 
|---|
| 108 | I '$G(PSUSMRY) D ^XMD | 
|---|
| 109 | Q | 
|---|
| 110 | NODATA ;EP SEND NO DATA MESSAGE | 
|---|
| 111 | S XMDUZ=DUZ | 
|---|
| 112 | M XMY=PSUXMYS1 | 
|---|
| 113 | ; | 
|---|
| 114 | S PSUDIV=PSUSNDR | 
|---|
| 115 | S X=PSUDIV,DIC=40.8,DIC(0)="X",D="C" D IX^DIC ;**1 | 
|---|
| 116 | S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01) | 
|---|
| 117 | S Y=PSUSDT X ^DD("DD") S PSUDTS=Y ;    start date | 
|---|
| 118 | S Y=PSUEDT X ^DD("DD") S PSUDTE=Y ;    end date | 
|---|
| 119 | S XMSUB="V. 4.0 PBMPR "_$G(PSUMON)_"  "_PSUDIV_" "_PSUDIVNM | 
|---|
| 120 | S XMTEXT="^XTMP(PSUPRSUB,""REPORT2"",PSUDIV," | 
|---|
| 121 | S XMCHAN=1 | 
|---|
| 122 | K X | 
|---|
| 123 | S X(1)="            Procurement Statistical Summary" | 
|---|
| 124 | S X(2)="            "_PSUDTS_" through "_PSUDTE_" for "_PSUDIVNM | 
|---|
| 125 | S X(3)="   " | 
|---|
| 126 | S X(4)="No data to report" | 
|---|
| 127 | S X(5)="   " | 
|---|
| 128 | M ^XTMP(PSUPRSUB,"REPORT1",PSUDIV)=X | 
|---|
| 129 | S XMTEXT="X(" | 
|---|
| 130 | S:$G(PSUDUZ) XMY(PSUDUZ)="" | 
|---|
| 131 | D ^XMD | 
|---|
| 132 | S X(1)="            Procurement Data Summary" | 
|---|
| 133 | M ^XTMP(PSUPRSUB,"REPORT2",PSUDIV)=X ;store for print cycle | 
|---|
| 134 | Q | 
|---|