- 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 Mar 13, 2025@21:32:43 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