PSUOP8 ;BIR/DAM - Outpatient AMIS Summary Message;04 MAR 2004
 ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 ;
 ;Reference to file #59  supported by DBIA 2510
 ;
EN ;Entry point for MailMan message
 ;Called from PSUOP0
 ;
 Q:$D(^XTMP("PSU_"_PSUJOB,"PSUFLAG"))  ;Quit if Provider extract only
 D MSG
 D MAIL
 Q
 ;
MSG ;Create the Rx AMIS summary mailman message
 ;Called from PSUOP0
 ;
 S (PSU30,PSU60,PSU90,PSUNADJ,PSUEQ,PSUTCST,PSUNADC,PSUCFIL)=""
 S (PSUNEW,PSUREF,PSUWN,PSUWNCS,PSUML,PSUMLCS,PSUMP,PSULC)=""
 S (PSUSTF,PSUFEE,PSULOCS,PSUSTNM)=""
 ;
 S PSUST=$P($G(^XTMP("PSU_"_PSUJOB,"PSUSITE")),U,1)    ;Facility #
 S PSUSTNM=$P($G(^XTMP("PSU_"_PSUJOB,"PSUSITE")),U,2)  ;Facility name
 ;
 D TCOST      ;Calculate total cost for all Rx fills
 ;
 S Y=PSUSDT X ^DD("DD") S PSUDTS=Y
 S Y=PSUEDT X ^DD("DD") S PSUDTE=Y
 S AMIS(1)="Outpatient AMIS Summary for "_PSUDTS_" through "_PSUDTE_" for "_PSUSTNM
 ;
 S AMIS(2)=""
 ;
 S AMIS(3)="                                                         Unadj     30Day                      Cost/          Cost/"
 ;
 S AMIS(4)="                      30Day        60Day      90Day      Total     Equiv        Total        Unadj          30Day"
 ;
 S AMIS(5)="Division              Fills        Fills      Fills      Fills     Fills        Cost          Fill           Fill"
 ;
 S $P(AMIS(6),"-",132)=""      ;Separator bar
 ;
 S PSULN=7
 ;
 S PSUDVN=0
 F  S PSUDVN=$O(^TMP($J,"FILL",PSUDVN)) Q:PSUDVN=""  D
 .S X=PSUDVN,DIC=59,DIC(0)="XM" D ^DIC     ;Find division name
 .S X=+Y,PSUDIVNM=$$VAL^PSUTL(59,X,.01)
 .I '$G(PSUDIVNM) S X=PSUDVN,DIC=40.8,DIC(0)="X",D="C" D IX^DIC D
 ..S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
 .D VAR
 .D UNADCST
 .D FILL
 .D TOTAL1
 .;
 .;Construct line with spacing
 .S PSULINE=""
 .S $E(PSULINE,1,17)=PSUDIVNM
 .S $E(PSULINE,18,28)=$J(FILL30,11)
 .S $E(PSULINE,29,39)=$J(FILL60,11)
 .S $E(PSULINE,40,50)=$J(FILL90,11)
 .S $E(PSULINE,51,61)=$J(UNAD,11)
 .S $E(PSULINE,62,72)=$J(EQUIV,11)
 .S $E(PSULINE,74,75)="$"
 .S $E(PSULINE,76,88)=$J(TCOST(PSUDVN),13)
 .S $E(PSULINE,90,91)="$"
 .S $E(PSULINE,92,102)=$J(UNADC(PSUDVN),11)
 .S $E(PSULINE,104,105)="$"
 .S $E(PSULINE,106,116)=$J(CFILL(PSUDVN),11)
 .;End line
 .S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
 ;
 S $P(AMIS(PSULN),"-",132)="" S PSULN=PSULN+1      ;Separator bar
 ;
 ;Construct line with spacing
 S PSULINE=""
 S $E(PSULINE,1,17)="Total"
 S $E(PSULINE,18,28)=$J(PSU30,11)
 S $E(PSULINE,29,39)=$J(PSU60,11)
 S $E(PSULINE,40,50)=$J(PSU90,11)
 S $E(PSULINE,51,61)=$J(PSUNADJ,11)
 S $E(PSULINE,62,72)=$J(PSUEQ,11)
 S $E(PSULINE,74,75)="$"
 S $E(PSULINE,76,88)=$J(PSUTCST,13)
 S $E(PSULINE,90,91)="$"
 S $E(PSULINE,92,102)=$J(PSUNADC,11)
 S $E(PSULINE,104,105)="$"
 S $E(PSULINE,106,116)=$J(PSUCFIL,11)
 ;End line construction
 ;
 S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
 ;
 F PSULN=PSULN:1:(PSULN+2) S AMIS(PSULN)=""     ;Blank lines
 S PSULN=PSULN+1
 ;
 S AMIS(PSULN)="Unadjusted             New       Ref          Win           Mail               CMOP         Local           Staff         Fee" S PSULN=PSULN+1
 ;
 S AMIS(PSULN)="Division                Rx        Rx         Rx(CS)        Rx(CS)               Rx          Rx(CS)            Rx           Rx" S PSULN=PSULN+1
 ;
 S $P(AMIS(PSULN),"-",132)="" S PSULN=PSULN+1      ;Separator bar
 ;
 S PSUDVN=0
 F  S PSUDVN=$O(^TMP($J,"NEW",PSUDVN)) Q:PSUDVN=""  D
 .S X=PSUDVN,DIC=59,DIC(0)="XM" D ^DIC     ;Find division name
 .S X=+Y,PSUDIVNM=$$VAL^PSUTL(59,X,.01)
 .I '$G(PSUDIVNM) S X=PSUDVN,DIC=40.8,DIC(0)="X",D="C" D IX^DIC D
 ..S X=+Y S PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
 .D VAR2
 .D TOTAL2
 .;Construct line with spacing
 .S PSULINE=""
 .S $E(PSULINE,1,17)=PSUDIVNM
 .S $E(PSULINE,18,27)=$J(PSUN,10)
 .S $E(PSULINE,28,37)=$J(PSUR,10)
 .S $E(PSULINE,38,47)=$J(PSUW,10)
 .S $E(PSULINE,48,57)="("_PSUWCS_")"
 .S $E(PSULINE,58,67)=$J(PSUM,10)
 .S $E(PSULINE,68,77)="("_PSUMCS_")"
 .S $E(PSULINE,78,87)=$J(PSUMOP,10)
 .S $E(PSULINE,88,97)=$J(PSULOC,10)
 .S $E(PSULINE,98,107)="("_PSULCS_")"
 .S $E(PSULINE,108,117)=$J(PSUTF,10)
 .S $E(PSULINE,118,127)=$J(PSUFE,10)
 .;End construction of line
 .S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
 ;
 S $P(AMIS(PSULN),"-",132)="" S PSULN=PSULN+1      ;Separator bar
 ;
 ;Construct line with spacing
 S PSULINE=""
 S $E(PSULINE,1,15)="Total"
 S $E(PSULINE,18,27)=$J(PSUNEW,10)
 S $E(PSULINE,28,37)=$J(PSUREF,10)
 S $E(PSULINE,38,47)=$J(PSUWN,10)
 S $E(PSULINE,48,57)="("_PSUWNCS_")"
 S $E(PSULINE,58,67)=$J(PSUML,10)
 S $E(PSULINE,68,77)="("_PSUMLCS_")"
 S $E(PSULINE,78,87)=$J(PSUMP,10)
 S $E(PSULINE,88,97)=$J(PSULC,10)
 S $E(PSULINE,98,107)="("_PSULOCS_")"
 S $E(PSULINE,108,117)=$J(PSUSTF,10)
 S $E(PSULINE,118,127)=$J(PSUFEE,10)
 ;End construction of line
 S AMIS(PSULN)=PSULINE S PSULN=PSULN+1
 ;
 Q
 ;
VAR ;Set contents of ^TMP global into VARIABLES
 ;
 S (FILL30,FILL60,FILL90,UNAD,EQUIV)=""
 ;
 S FILL30=^TMP($J,"FILL",PSUDVN,30)      ;30 DAY FILLS
 ;
 S FILL60=^TMP($J,"FILL",PSUDVN,60)      ;60 DAY FILLS
 ;
 S FILL90=^TMP($J,"FILL",PSUDVN,90)      ;90 DAY FILLS
 ;
 S UNAD=^TMP($J,"UNAD",PSUDVN)           ;UNADJUSTED TOTAL FILLS
 ;
 S EQUIV=^TMP($J,"EQUIV",PSUDVN)         ;30 DAY EQUIV FILLS
 ;
 Q
 ;
TCOST ;Calculate total cost for prescription fills 
 ;
 S PSUTC="",PSUTCOST=""
 ;
 S PSUDIVN=0
 F  S PSUDIVN=$O(^TMP($J,"COST",PSUDIVN)) Q:PSUDIVN=""  D
 .S PSURXIEN=0
 .F  S PSURXIEN=$O(^TMP($J,"COST",PSUDIVN,PSURXIEN)) Q:PSURXIEN=""  D
 ..S PSUTCOST=^TMP($J,"COST",PSUDIVN,PSURXIEN)
 ..S TCOST(PSUDIVN)=$G(TCOST(PSUDIVN))+PSUTCOST
 ..I TCOST(PSUDIVN)'["." S TCOST(PSUDIVN)=TCOST(PSUDIVN)_".00" Q
 ..N A,B,C
 ..S A=$F(TCOST(PSUDIVN),".")  ;Find 1st position after decimal
 ..S B=$E(TCOST(PSUDIVN),1,(A-1))   ;Extract dollars and decimal
 ..S C=$E(TCOST(PSUDIVN),A,(A+1))   ;Extract cents after decimal
 ..I $L(C)'=2 S C=$E(C,1)_0
 ..S TCOST(PSUDIVN)=B_C
 ;
 Q
 ;
UNADCST ;Calculate Cost Per Unadjusted Fill
 ;
 N A,B,C
 S UNADC(PSUDVN)=TCOST(PSUDVN)/UNAD
 ;
 I UNADC(PSUDVN)'["." S UNADC(PSUDVN)=UNADC(PSUDVN)_".00" Q
 ;
 S A=$F(UNADC(PSUDVN),".")    ;Find position of 1st # after decimal
 ;
 S B=$E(UNADC(PSUDVN),1,(A-1)) ;Extract "dollars" up to decimal
 ;
 S C=$E(UNADC(PSUDVN),A,(A+1)) ;Extract "cents" after decimal
 ;
 S UNADC(PSUDVN)=B_C
 Q
 ;
FILL ;Calculate Cost Per 30-day Fill
 ;
 N A,B,C
 S CFILL(PSUDVN)=TCOST(PSUDVN)/EQUIV
 ;
 I CFILL(PSUDVN)'["." S CFILL(PSUDVN)=CFILL(PSUDVN)_".00" Q
 ;
 S A=$F(CFILL(PSUDVN),".")    ;Find position of 1st # after decimal
 ;
 S B=$E(CFILL(PSUDVN),1,(A-1)) ;Extract "dollars" up to decimal
 ;
 S C=$E(CFILL(PSUDVN),A,(A+1)) ;Extract "cents" after decimal
 ;
 S CFILL(PSUDVN)=B_C
 ;
 Q
 ;
VAR2 ;Set contents of ^TMP globals into variables
 ;
 S (PSUN,PSUR,PSUW,PSUWCS,PSUM,PSUMCS)=""
 S (PSUMOP,PSULOC,PSULCS,PSUTF,PSUFE)=""
 ;
 S PSUN=^TMP($J,"NEW",PSUDVN)           ;NEW FILLS
 ;
 S PSUR=^TMP($J,"REF",PSUDVN)           ;REFILLS
 ;
 S PSUW=^TMP($J,"WIN",PSUDVN)           ;WINDOW FILLS
 ;
 S PSUWCS=^TMP($J,"WINCS",PSUDVN)       ;WINDOW CS
 ;
 S PSUM=^TMP($J,"MAIL",PSUDVN)          ;MAIL FILLS
 ;
 S PSUMCS=^TMP($J,"MAILCS",PSUDVN)      ;MAIL CS
 ;
 S PSUMOP=^TMP($J,"CMOP",PSUDVN)        ;CMOP FILLS
 ;
 S PSULOC=^TMP($J,"LOC",PSUDVN)         ;LOCAL FILLS
 ;
 S PSULCS=^TMP($J,"LOCS",PSUDVN)        ;LOCAL CS
 ;
 S PSUTF=^TMP($J,"STAFF",PSUDVN)        ;STAFF FILLS
 ;
 S PSUFE=^TMP($J,"FEE",PSUDVN)          ;FEE FILLS
 ;
 Q
 ;
TOTAL1 ;Add each column to get totals for all divisions
 ;
 ;
 S PSU30=$G(PSU30)+FILL30               ;Total 30 day fills
 ;
 S PSU60=$G(PSU60)+FILL60               ;Total 60 day fills
 ;
 S PSU90=$G(PSU90)+FILL90               ;Total 90 day fills
 ;
 S PSUNADJ=$G(PSUNADJ)+UNAD             ;Total unadjusted fills
 ;
 S PSUEQ=$G(PSUEQ)+EQUIV                ;Total 30 day equiv fills
 ;
 S PSUTCST=$G(PSUTCST)+TCOST(PSUDVN)    ;Total of Total Cost
 ;
 ;S PSUNADC=$G(PSUNADC)+UNADC(PSUDVN)    ;Total of Cost/Unadj fill
 I $G(PSUNADJ) S PSUNADC=$G(PSUTCST)/PSUNADJ D
 .I PSUNADC'["." S PSUNADC=PSUNADC_".00" Q
 .N A,B,C
 .S A=$F(PSUNADC,".")  ;Find 1st position after decimal
 .S B=$E(PSUNADC,1,(A-1))   ;Extract dollars and decimal
 .S C=$E(PSUNADC,A,(A+1))   ;Extract cents after decimal
 .I $L(C)'=2 S C=$E(C,1)_0
 .S PSUNADC=B_C
 ;
 ;S PSUCFIL=$G(PSUCFIL)+CFILL(PSUDVN)    ;Total of Cost/30day fill
 I $G(PSUEQ) S PSUCFIL=$G(PSUTCST)/PSUEQ D
 .I PSUCFIL'["." S PSUCFIL=PSUCFIL_".00" Q
 .N A,B,C
 .S A=$F(PSUCFIL,".")  ;Find 1st position after decimal
 .S B=$E(PSUCFIL,1,(A-1))   ;Extract dollars and decimal
 .S C=$E(PSUCFIL,A,(A+1))   ;Extract cents after decimal
 .I $L(C)'=2 S C=$E(C,1)_0
 .S PSUCFIL=B_C
 ;
 Q
 ;
TOTAL2 ;Add each column to get totals for all divisions
 ;
 S PSUNEW=$G(PSUNEW)+^TMP($J,"NEW",PSUDVN)
 ;
 S PSUREF=$G(PSUREF)+^TMP($J,"REF",PSUDVN)
 ;
 S PSUWN=$G(PSUWN)+^TMP($J,"WIN",PSUDVN)
 ;
 S PSUWNCS=$G(PSUWNCS)+^TMP($J,"WINCS",PSUDVN)
 ;
 S PSUML=$G(PSUML)+^TMP($J,"MAIL",PSUDVN)
 ;
 S PSUMLCS=$G(PSUMLCS)+^TMP($J,"MAILCS",PSUDVN)
 ;
 S PSUMP=$G(PSUMP)+^TMP($J,"CMOP",PSUDVN)
 ;
 S PSULC=$G(PSULC)+^TMP($J,"LOC",PSUDVN)
 ;
 S PSULOCS=$G(PSULOCS)+^TMP($J,"LOCS",PSUDVN)
 ;
 S PSUSTF=$G(PSUSTF)+^TMP($J,"STAFF",PSUDVN)
 ;
 S PSUFEE=$G(PSUFEE)+^TMP($J,"FEE",PSUDVN)
 ;
 Q
 ;
MAIL ;Send AMIS summary mailman message
 ;
 ;Do not send report if option selection includes 1,2,3,4,6
 I $D(^XTMP("PSU_"_PSUJOB,"CBAMIS")) D  Q
 .M ^XTMP("PSU_"_PSUJOB,"OPCOMBO")=AMIS
 .S ^XTMP("PSU_"_PSUJOB,"OPCOMBO",1)="OUTPATIENT:"
 ;
 S XMSUB="V. 4.0 PBMOP "_PSUMON_" "_PSUST_" "_PSUSTNM
 S XMTEXT="AMIS("
 M ^XTMP("PSU_"_PSUJOB,"OPAMIS")=AMIS
 S XMCHAN=1
 M XMY=PSUXMYS2
 D ^XMD
 ;
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSUOP8   9812     printed  Sep 23, 2025@20:03:53                                                                                                                                                                                                      Page 2
PSUOP8    ;BIR/DAM - Outpatient AMIS Summary Message;04 MAR 2004
 +1       ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 +2       ;
 +3       ;Reference to file #59  supported by DBIA 2510
 +4       ;
EN        ;Entry point for MailMan message
 +1       ;Called from PSUOP0
 +2       ;
 +3       ;Quit if Provider extract only
           if $DATA(^XTMP("PSU_"_PSUJOB,"PSUFLAG"))
               QUIT 
 +4        DO MSG
 +5        DO MAIL
 +6        QUIT 
 +7       ;
MSG       ;Create the Rx AMIS summary mailman message
 +1       ;Called from PSUOP0
 +2       ;
 +3        SET (PSU30,PSU60,PSU90,PSUNADJ,PSUEQ,PSUTCST,PSUNADC,PSUCFIL)=""
 +4        SET (PSUNEW,PSUREF,PSUWN,PSUWNCS,PSUML,PSUMLCS,PSUMP,PSULC)=""
 +5        SET (PSUSTF,PSUFEE,PSULOCS,PSUSTNM)=""
 +6       ;
 +7       ;Facility #
           SET PSUST=$PIECE($GET(^XTMP("PSU_"_PSUJOB,"PSUSITE")),U,1)
 +8       ;Facility name
           SET PSUSTNM=$PIECE($GET(^XTMP("PSU_"_PSUJOB,"PSUSITE")),U,2)
 +9       ;
 +10      ;Calculate total cost for all Rx fills
           DO TCOST
 +11      ;
 +12       SET Y=PSUSDT
           XECUTE ^DD("DD")
           SET PSUDTS=Y
 +13       SET Y=PSUEDT
           XECUTE ^DD("DD")
           SET PSUDTE=Y
 +14       SET AMIS(1)="Outpatient AMIS Summary for "_PSUDTS_" through "_PSUDTE_" for "_PSUSTNM
 +15      ;
 +16       SET AMIS(2)=""
 +17      ;
 +18       SET AMIS(3)="                                                         Unadj     30Day                      Cost/          Cost/"
 +19      ;
 +20       SET AMIS(4)="                      30Day        60Day      90Day      Total     Equiv        Total        Unadj          30Day"
 +21      ;
 +22       SET AMIS(5)="Division              Fills        Fills      Fills      Fills     Fills        Cost          Fill           Fill"
 +23      ;
 +24      ;Separator bar
           SET $PIECE(AMIS(6),"-",132)=""
 +25      ;
 +26       SET PSULN=7
 +27      ;
 +28       SET PSUDVN=0
 +29       FOR 
               SET PSUDVN=$ORDER(^TMP($JOB,"FILL",PSUDVN))
               if PSUDVN=""
                   QUIT 
               Begin DoDot:1
 +30      ;Find division name
                   SET X=PSUDVN
                   SET DIC=59
                   SET DIC(0)="XM"
                   DO ^DIC
 +31               SET X=+Y
                   SET PSUDIVNM=$$VAL^PSUTL(59,X,.01)
 +32               IF '$GET(PSUDIVNM)
                       SET X=PSUDVN
                       SET DIC=40.8
                       SET DIC(0)="X"
                       SET D="C"
                       DO IX^DIC
                       Begin DoDot:2
 +33                       SET X=+Y
                           SET PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
                       End DoDot:2
 +34               DO VAR
 +35               DO UNADCST
 +36               DO FILL
 +37               DO TOTAL1
 +38      ;
 +39      ;Construct line with spacing
 +40               SET PSULINE=""
 +41               SET $EXTRACT(PSULINE,1,17)=PSUDIVNM
 +42               SET $EXTRACT(PSULINE,18,28)=$JUSTIFY(FILL30,11)
 +43               SET $EXTRACT(PSULINE,29,39)=$JUSTIFY(FILL60,11)
 +44               SET $EXTRACT(PSULINE,40,50)=$JUSTIFY(FILL90,11)
 +45               SET $EXTRACT(PSULINE,51,61)=$JUSTIFY(UNAD,11)
 +46               SET $EXTRACT(PSULINE,62,72)=$JUSTIFY(EQUIV,11)
 +47               SET $EXTRACT(PSULINE,74,75)="$"
 +48               SET $EXTRACT(PSULINE,76,88)=$JUSTIFY(TCOST(PSUDVN),13)
 +49               SET $EXTRACT(PSULINE,90,91)="$"
 +50               SET $EXTRACT(PSULINE,92,102)=$JUSTIFY(UNADC(PSUDVN),11)
 +51               SET $EXTRACT(PSULINE,104,105)="$"
 +52               SET $EXTRACT(PSULINE,106,116)=$JUSTIFY(CFILL(PSUDVN),11)
 +53      ;End line
 +54               SET AMIS(PSULN)=PSULINE
                   SET PSULN=PSULN+1
               End DoDot:1
 +55      ;
 +56      ;Separator bar
           SET $PIECE(AMIS(PSULN),"-",132)=""
           SET PSULN=PSULN+1
 +57      ;
 +58      ;Construct line with spacing
 +59       SET PSULINE=""
 +60       SET $EXTRACT(PSULINE,1,17)="Total"
 +61       SET $EXTRACT(PSULINE,18,28)=$JUSTIFY(PSU30,11)
 +62       SET $EXTRACT(PSULINE,29,39)=$JUSTIFY(PSU60,11)
 +63       SET $EXTRACT(PSULINE,40,50)=$JUSTIFY(PSU90,11)
 +64       SET $EXTRACT(PSULINE,51,61)=$JUSTIFY(PSUNADJ,11)
 +65       SET $EXTRACT(PSULINE,62,72)=$JUSTIFY(PSUEQ,11)
 +66       SET $EXTRACT(PSULINE,74,75)="$"
 +67       SET $EXTRACT(PSULINE,76,88)=$JUSTIFY(PSUTCST,13)
 +68       SET $EXTRACT(PSULINE,90,91)="$"
 +69       SET $EXTRACT(PSULINE,92,102)=$JUSTIFY(PSUNADC,11)
 +70       SET $EXTRACT(PSULINE,104,105)="$"
 +71       SET $EXTRACT(PSULINE,106,116)=$JUSTIFY(PSUCFIL,11)
 +72      ;End line construction
 +73      ;
 +74       SET AMIS(PSULN)=PSULINE
           SET PSULN=PSULN+1
 +75      ;
 +76      ;Blank lines
           FOR PSULN=PSULN:1:(PSULN+2)
               SET AMIS(PSULN)=""
 +77       SET PSULN=PSULN+1
 +78      ;
 +79       SET AMIS(PSULN)="Unadjusted             New       Ref          Win           Mail               CMOP         Local           Staff         Fee"
           SET PSULN=PSULN+1
 +80      ;
 +81       SET AMIS(PSULN)="Division                Rx        Rx         Rx(CS)        Rx(CS)               Rx          Rx(CS)            Rx           Rx"
           SET PSULN=PSULN+1
 +82      ;
 +83      ;Separator bar
           SET $PIECE(AMIS(PSULN),"-",132)=""
           SET PSULN=PSULN+1
 +84      ;
 +85       SET PSUDVN=0
 +86       FOR 
               SET PSUDVN=$ORDER(^TMP($JOB,"NEW",PSUDVN))
               if PSUDVN=""
                   QUIT 
               Begin DoDot:1
 +87      ;Find division name
                   SET X=PSUDVN
                   SET DIC=59
                   SET DIC(0)="XM"
                   DO ^DIC
 +88               SET X=+Y
                   SET PSUDIVNM=$$VAL^PSUTL(59,X,.01)
 +89               IF '$GET(PSUDIVNM)
                       SET X=PSUDVN
                       SET DIC=40.8
                       SET DIC(0)="X"
                       SET D="C"
                       DO IX^DIC
                       Begin DoDot:2
 +90                       SET X=+Y
                           SET PSUDIVNM=$$VAL^PSUTL(40.8,X,.01)
                       End DoDot:2
 +91               DO VAR2
 +92               DO TOTAL2
 +93      ;Construct line with spacing
 +94               SET PSULINE=""
 +95               SET $EXTRACT(PSULINE,1,17)=PSUDIVNM
 +96               SET $EXTRACT(PSULINE,18,27)=$JUSTIFY(PSUN,10)
 +97               SET $EXTRACT(PSULINE,28,37)=$JUSTIFY(PSUR,10)
 +98               SET $EXTRACT(PSULINE,38,47)=$JUSTIFY(PSUW,10)
 +99               SET $EXTRACT(PSULINE,48,57)="("_PSUWCS_")"
 +100              SET $EXTRACT(PSULINE,58,67)=$JUSTIFY(PSUM,10)
 +101              SET $EXTRACT(PSULINE,68,77)="("_PSUMCS_")"
 +102              SET $EXTRACT(PSULINE,78,87)=$JUSTIFY(PSUMOP,10)
 +103              SET $EXTRACT(PSULINE,88,97)=$JUSTIFY(PSULOC,10)
 +104              SET $EXTRACT(PSULINE,98,107)="("_PSULCS_")"
 +105              SET $EXTRACT(PSULINE,108,117)=$JUSTIFY(PSUTF,10)
 +106              SET $EXTRACT(PSULINE,118,127)=$JUSTIFY(PSUFE,10)
 +107     ;End construction of line
 +108              SET AMIS(PSULN)=PSULINE
                   SET PSULN=PSULN+1
               End DoDot:1
 +109     ;
 +110     ;Separator bar
           SET $PIECE(AMIS(PSULN),"-",132)=""
           SET PSULN=PSULN+1
 +111     ;
 +112     ;Construct line with spacing
 +113      SET PSULINE=""
 +114      SET $EXTRACT(PSULINE,1,15)="Total"
 +115      SET $EXTRACT(PSULINE,18,27)=$JUSTIFY(PSUNEW,10)
 +116      SET $EXTRACT(PSULINE,28,37)=$JUSTIFY(PSUREF,10)
 +117      SET $EXTRACT(PSULINE,38,47)=$JUSTIFY(PSUWN,10)
 +118      SET $EXTRACT(PSULINE,48,57)="("_PSUWNCS_")"
 +119      SET $EXTRACT(PSULINE,58,67)=$JUSTIFY(PSUML,10)
 +120      SET $EXTRACT(PSULINE,68,77)="("_PSUMLCS_")"
 +121      SET $EXTRACT(PSULINE,78,87)=$JUSTIFY(PSUMP,10)
 +122      SET $EXTRACT(PSULINE,88,97)=$JUSTIFY(PSULC,10)
 +123      SET $EXTRACT(PSULINE,98,107)="("_PSULOCS_")"
 +124      SET $EXTRACT(PSULINE,108,117)=$JUSTIFY(PSUSTF,10)
 +125      SET $EXTRACT(PSULINE,118,127)=$JUSTIFY(PSUFEE,10)
 +126     ;End construction of line
 +127      SET AMIS(PSULN)=PSULINE
           SET PSULN=PSULN+1
 +128     ;
 +129      QUIT 
 +130     ;
VAR       ;Set contents of ^TMP global into VARIABLES
 +1       ;
 +2        SET (FILL30,FILL60,FILL90,UNAD,EQUIV)=""
 +3       ;
 +4       ;30 DAY FILLS
           SET FILL30=^TMP($JOB,"FILL",PSUDVN,30)
 +5       ;
 +6       ;60 DAY FILLS
           SET FILL60=^TMP($JOB,"FILL",PSUDVN,60)
 +7       ;
 +8       ;90 DAY FILLS
           SET FILL90=^TMP($JOB,"FILL",PSUDVN,90)
 +9       ;
 +10      ;UNADJUSTED TOTAL FILLS
           SET UNAD=^TMP($JOB,"UNAD",PSUDVN)
 +11      ;
 +12      ;30 DAY EQUIV FILLS
           SET EQUIV=^TMP($JOB,"EQUIV",PSUDVN)
 +13      ;
 +14       QUIT 
 +15      ;
TCOST     ;Calculate total cost for prescription fills 
 +1       ;
 +2        SET PSUTC=""
           SET PSUTCOST=""
 +3       ;
 +4        SET PSUDIVN=0
 +5        FOR 
               SET PSUDIVN=$ORDER(^TMP($JOB,"COST",PSUDIVN))
               if PSUDIVN=""
                   QUIT 
               Begin DoDot:1
 +6                SET PSURXIEN=0
 +7                FOR 
                       SET PSURXIEN=$ORDER(^TMP($JOB,"COST",PSUDIVN,PSURXIEN))
                       if PSURXIEN=""
                           QUIT 
                       Begin DoDot:2
 +8                        SET PSUTCOST=^TMP($JOB,"COST",PSUDIVN,PSURXIEN)
 +9                        SET TCOST(PSUDIVN)=$GET(TCOST(PSUDIVN))+PSUTCOST
 +10                       IF TCOST(PSUDIVN)'["."
                               SET TCOST(PSUDIVN)=TCOST(PSUDIVN)_".00"
                               QUIT 
 +11                       NEW A,B,C
 +12      ;Find 1st position after decimal
                           SET A=$FIND(TCOST(PSUDIVN),".")
 +13      ;Extract dollars and decimal
                           SET B=$EXTRACT(TCOST(PSUDIVN),1,(A-1))
 +14      ;Extract cents after decimal
                           SET C=$EXTRACT(TCOST(PSUDIVN),A,(A+1))
 +15                       IF $LENGTH(C)'=2
                               SET C=$EXTRACT(C,1)_0
 +16                       SET TCOST(PSUDIVN)=B_C
                       End DoDot:2
               End DoDot:1
 +17      ;
 +18       QUIT 
 +19      ;
UNADCST   ;Calculate Cost Per Unadjusted Fill
 +1       ;
 +2        NEW A,B,C
 +3        SET UNADC(PSUDVN)=TCOST(PSUDVN)/UNAD
 +4       ;
 +5        IF UNADC(PSUDVN)'["."
               SET UNADC(PSUDVN)=UNADC(PSUDVN)_".00"
               QUIT 
 +6       ;
 +7       ;Find position of 1st # after decimal
           SET A=$FIND(UNADC(PSUDVN),".")
 +8       ;
 +9       ;Extract "dollars" up to decimal
           SET B=$EXTRACT(UNADC(PSUDVN),1,(A-1))
 +10      ;
 +11      ;Extract "cents" after decimal
           SET C=$EXTRACT(UNADC(PSUDVN),A,(A+1))
 +12      ;
 +13       SET UNADC(PSUDVN)=B_C
 +14       QUIT 
 +15      ;
FILL      ;Calculate Cost Per 30-day Fill
 +1       ;
 +2        NEW A,B,C
 +3        SET CFILL(PSUDVN)=TCOST(PSUDVN)/EQUIV
 +4       ;
 +5        IF CFILL(PSUDVN)'["."
               SET CFILL(PSUDVN)=CFILL(PSUDVN)_".00"
               QUIT 
 +6       ;
 +7       ;Find position of 1st # after decimal
           SET A=$FIND(CFILL(PSUDVN),".")
 +8       ;
 +9       ;Extract "dollars" up to decimal
           SET B=$EXTRACT(CFILL(PSUDVN),1,(A-1))
 +10      ;
 +11      ;Extract "cents" after decimal
           SET C=$EXTRACT(CFILL(PSUDVN),A,(A+1))
 +12      ;
 +13       SET CFILL(PSUDVN)=B_C
 +14      ;
 +15       QUIT 
 +16      ;
VAR2      ;Set contents of ^TMP globals into variables
 +1       ;
 +2        SET (PSUN,PSUR,PSUW,PSUWCS,PSUM,PSUMCS)=""
 +3        SET (PSUMOP,PSULOC,PSULCS,PSUTF,PSUFE)=""
 +4       ;
 +5       ;NEW FILLS
           SET PSUN=^TMP($JOB,"NEW",PSUDVN)
 +6       ;
 +7       ;REFILLS
           SET PSUR=^TMP($JOB,"REF",PSUDVN)
 +8       ;
 +9       ;WINDOW FILLS
           SET PSUW=^TMP($JOB,"WIN",PSUDVN)
 +10      ;
 +11      ;WINDOW CS
           SET PSUWCS=^TMP($JOB,"WINCS",PSUDVN)
 +12      ;
 +13      ;MAIL FILLS
           SET PSUM=^TMP($JOB,"MAIL",PSUDVN)
 +14      ;
 +15      ;MAIL CS
           SET PSUMCS=^TMP($JOB,"MAILCS",PSUDVN)
 +16      ;
 +17      ;CMOP FILLS
           SET PSUMOP=^TMP($JOB,"CMOP",PSUDVN)
 +18      ;
 +19      ;LOCAL FILLS
           SET PSULOC=^TMP($JOB,"LOC",PSUDVN)
 +20      ;
 +21      ;LOCAL CS
           SET PSULCS=^TMP($JOB,"LOCS",PSUDVN)
 +22      ;
 +23      ;STAFF FILLS
           SET PSUTF=^TMP($JOB,"STAFF",PSUDVN)
 +24      ;
 +25      ;FEE FILLS
           SET PSUFE=^TMP($JOB,"FEE",PSUDVN)
 +26      ;
 +27       QUIT 
 +28      ;
TOTAL1    ;Add each column to get totals for all divisions
 +1       ;
 +2       ;
 +3       ;Total 30 day fills
           SET PSU30=$GET(PSU30)+FILL30
 +4       ;
 +5       ;Total 60 day fills
           SET PSU60=$GET(PSU60)+FILL60
 +6       ;
 +7       ;Total 90 day fills
           SET PSU90=$GET(PSU90)+FILL90
 +8       ;
 +9       ;Total unadjusted fills
           SET PSUNADJ=$GET(PSUNADJ)+UNAD
 +10      ;
 +11      ;Total 30 day equiv fills
           SET PSUEQ=$GET(PSUEQ)+EQUIV
 +12      ;
 +13      ;Total of Total Cost
           SET PSUTCST=$GET(PSUTCST)+TCOST(PSUDVN)
 +14      ;
 +15      ;S PSUNADC=$G(PSUNADC)+UNADC(PSUDVN)    ;Total of Cost/Unadj fill
 +16       IF $GET(PSUNADJ)
               SET PSUNADC=$GET(PSUTCST)/PSUNADJ
               Begin DoDot:1
 +17               IF PSUNADC'["."
                       SET PSUNADC=PSUNADC_".00"
                       QUIT 
 +18               NEW A,B,C
 +19      ;Find 1st position after decimal
                   SET A=$FIND(PSUNADC,".")
 +20      ;Extract dollars and decimal
                   SET B=$EXTRACT(PSUNADC,1,(A-1))
 +21      ;Extract cents after decimal
                   SET C=$EXTRACT(PSUNADC,A,(A+1))
 +22               IF $LENGTH(C)'=2
                       SET C=$EXTRACT(C,1)_0
 +23               SET PSUNADC=B_C
               End DoDot:1
 +24      ;
 +25      ;S PSUCFIL=$G(PSUCFIL)+CFILL(PSUDVN)    ;Total of Cost/30day fill
 +26       IF $GET(PSUEQ)
               SET PSUCFIL=$GET(PSUTCST)/PSUEQ
               Begin DoDot:1
 +27               IF PSUCFIL'["."
                       SET PSUCFIL=PSUCFIL_".00"
                       QUIT 
 +28               NEW A,B,C
 +29      ;Find 1st position after decimal
                   SET A=$FIND(PSUCFIL,".")
 +30      ;Extract dollars and decimal
                   SET B=$EXTRACT(PSUCFIL,1,(A-1))
 +31      ;Extract cents after decimal
                   SET C=$EXTRACT(PSUCFIL,A,(A+1))
 +32               IF $LENGTH(C)'=2
                       SET C=$EXTRACT(C,1)_0
 +33               SET PSUCFIL=B_C
               End DoDot:1
 +34      ;
 +35       QUIT 
 +36      ;
TOTAL2    ;Add each column to get totals for all divisions
 +1       ;
 +2        SET PSUNEW=$GET(PSUNEW)+^TMP($JOB,"NEW",PSUDVN)
 +3       ;
 +4        SET PSUREF=$GET(PSUREF)+^TMP($JOB,"REF",PSUDVN)
 +5       ;
 +6        SET PSUWN=$GET(PSUWN)+^TMP($JOB,"WIN",PSUDVN)
 +7       ;
 +8        SET PSUWNCS=$GET(PSUWNCS)+^TMP($JOB,"WINCS",PSUDVN)
 +9       ;
 +10       SET PSUML=$GET(PSUML)+^TMP($JOB,"MAIL",PSUDVN)
 +11      ;
 +12       SET PSUMLCS=$GET(PSUMLCS)+^TMP($JOB,"MAILCS",PSUDVN)
 +13      ;
 +14       SET PSUMP=$GET(PSUMP)+^TMP($JOB,"CMOP",PSUDVN)
 +15      ;
 +16       SET PSULC=$GET(PSULC)+^TMP($JOB,"LOC",PSUDVN)
 +17      ;
 +18       SET PSULOCS=$GET(PSULOCS)+^TMP($JOB,"LOCS",PSUDVN)
 +19      ;
 +20       SET PSUSTF=$GET(PSUSTF)+^TMP($JOB,"STAFF",PSUDVN)
 +21      ;
 +22       SET PSUFEE=$GET(PSUFEE)+^TMP($JOB,"FEE",PSUDVN)
 +23      ;
 +24       QUIT 
 +25      ;
MAIL      ;Send AMIS summary mailman message
 +1       ;
 +2       ;Do not send report if option selection includes 1,2,3,4,6
 +3        IF $DATA(^XTMP("PSU_"_PSUJOB,"CBAMIS"))
               Begin DoDot:1
 +4                MERGE ^XTMP("PSU_"_PSUJOB,"OPCOMBO")=AMIS
 +5                SET ^XTMP("PSU_"_PSUJOB,"OPCOMBO",1)="OUTPATIENT:"
               End DoDot:1
               QUIT 
 +6       ;
 +7        SET XMSUB="V. 4.0 PBMOP "_PSUMON_" "_PSUST_" "_PSUSTNM
 +8        SET XMTEXT="AMIS("
 +9        MERGE ^XTMP("PSU_"_PSUJOB,"OPAMIS")=AMIS
 +10       SET XMCHAN=1
 +11       MERGE XMY=PSUXMYS2
 +12       DO ^XMD
 +13      ;
 +14       QUIT