| 1 | PSUAR6 ;BIR/DAM - AR/WS AMIS Summary Data;11 March 2004
 | 
|---|
| 2 |  ;;4.0;PHARMACY BENEFITS MANAGEMENT;**6**;MARCH, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;This routine gathers AR/WS DOSES AMIS Summary data
 | 
|---|
| 5 |  ;No DBIA's needed
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | EN ;Entry point to gather AMIS data.  Called from PSUAR0
 | 
|---|
| 8 |  K PSUAR  ;Arrays to hold temporary data
 | 
|---|
| 9 |  N TRUNC,TOT,NET
 | 
|---|
| 10 |  S PSUDV=0
 | 
|---|
| 11 |  F  S PSUDV=$O(^XTMP(PSUARSUB,"RECORDS",PSUDV)) Q:PSUDV=""  D
 | 
|---|
| 12 |  .S PSUCT=0
 | 
|---|
| 13 |  .F  S PSUCT=$O(^XTMP(PSUARSUB,"RECORDS",PSUDV,PSUCT)) Q:PSUCT=""  D
 | 
|---|
| 14 |  ..K PSUAMIS
 | 
|---|
| 15 |  ..M PSUAMIS(PSUDV,PSUCT)=^XTMP(PSUARSUB,"RECORDS",PSUDV,PSUCT)
 | 
|---|
| 16 |  ..S PSUCAT=""
 | 
|---|
| 17 |  ..S PSUCAT=$P($G(PSUAMIS(PSUDV,PSUCT)),U,14)   ;AMIS Category
 | 
|---|
| 18 |  ..D DSP
 | 
|---|
| 19 |  ..D RET
 | 
|---|
| 20 |  ..D NET
 | 
|---|
| 21 |  ..D TCOST
 | 
|---|
| 22 |  .D AVE
 | 
|---|
| 23 |  D TOTAL
 | 
|---|
| 24 |  D EN^PSUAR7  ;Compose and send MailMan message
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 | DSP ;Calculate AR/WS  dispensed data
 | 
|---|
| 27 |  N DSP,DUNT,DFLD,DBLD
 | 
|---|
| 28 |  I PSUCAT="03 or 04" D     ;Doses Data
 | 
|---|
| 29 |  .S DSP=$P($G(PSUAMIS(PSUDV,PSUCT)),U,19)
 | 
|---|
| 30 |  .I DSP="" S DSP=0
 | 
|---|
| 31 |  .S $P(PSUAR("DSP",PSUDV),U,1)=$P($G(PSUAR("DSP",PSUDV)),U,1)+DSP
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  I PSUCAT="06 or 07" D     ;Units Data
 | 
|---|
| 34 |  .S DUNT=$P($G(PSUAMIS(PSUDV,PSUCT)),U,19)
 | 
|---|
| 35 |  .S:DUNT="" DUNT=0
 | 
|---|
| 36 |  .S $P(PSUAR("UNIT",PSUDV),U,1)=$P($G(PSUAR("UNIT",PSUDV)),U,1)+DUNT
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  I PSUCAT=17 D          ;Fluids/sets data
 | 
|---|
| 39 |  .S DFLD=$P($G(PSUAMIS(PSUDV,PSUCT)),U,19)
 | 
|---|
| 40 |  .S:DFLD="" DFLD=0
 | 
|---|
| 41 |  .S $P(PSUAR("FLD",PSUDV),U,1)=$P($G(PSUAR("FLD",PSUDV)),U,1)+DFLD
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  I PSUCAT=22 D          ;Blood products data
 | 
|---|
| 44 |  .S DBLD=$P($G(PSUAMIS(PSUDV,PSUCT)),U,19)
 | 
|---|
| 45 |  .S:DBLD="" DBLD=0
 | 
|---|
| 46 |  .S $P(PSUAR("BLD",PSUDV),U,1)=$P($G(PSUAR("BLD",PSUDV)),U,1)+DBLD
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | RET ;Calculate AR/WS returned data
 | 
|---|
| 49 |  N RET,RUNT,RFLD,RBLD
 | 
|---|
| 50 |  I PSUCAT="03 or 04" D   ;Doses data
 | 
|---|
| 51 |  .S RET=$P($G(PSUAMIS(PSUDV,PSUCT)),U,20)
 | 
|---|
| 52 |  .I RET="" S RET=0
 | 
|---|
| 53 |  .S $P(PSUAR("DSP",PSUDV),U,2)=$P($G(PSUAR("DSP",PSUDV)),U,2)+RET
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I PSUCAT="06 or 07" D    ;Unit data
 | 
|---|
| 56 |  .S RUNT=$P($G(PSUAMIS(PSUDV,PSUCT)),U,20)
 | 
|---|
| 57 |  .I RUNT="" S RUNT=0
 | 
|---|
| 58 |  .S $P(PSUAR("UNIT",PSUDV),U,2)=$P($G(PSUAR("UNIT",PSUDV)),U,2)+RUNT
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  I PSUCAT=17 D          ;Fluids/sets data
 | 
|---|
| 61 |  .S RFLD=$P($G(PSUAMIS(PSUDV,PSUCT)),U,20)
 | 
|---|
| 62 |  .I RFLD="" S RFLD=0
 | 
|---|
| 63 |  .S $P(PSUAR("FLD",PSUDV),U,2)=$P($G(PSUAR("FLD",PSUDV)),U,2)+RFLD
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  I PSUCAT=22 D          ;Blood products data
 | 
|---|
| 66 |  .S RBLD=$P($G(PSUAMIS(PSUDV,PSUCT)),U,20)
 | 
|---|
| 67 |  .I RBLD="" S RBLD=0
 | 
|---|
| 68 |  .S $P(PSUAR("BLD",PSUDV),U,2)=$P($G(PSUAR("BLD",PSUDV)),U,2)+RBLD
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | NET ;Calculate Net dispensed data
 | 
|---|
| 71 |  I PSUCAT="03 or 04" D    ;Doses data
 | 
|---|
| 72 |  .S $P(PSUAR("DSP",PSUDV),U,3)=$P(PSUAR("DSP",PSUDV),U,1)-$P(PSUAR("DSP",PSUDV),U,2)
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  I PSUCAT="06 or 07" D    ;Unit data
 | 
|---|
| 75 |  .S $P(PSUAR("UNIT",PSUDV),U,3)=$P(PSUAR("UNIT",PSUDV),U,1)-$P(PSUAR("UNIT",PSUDV),U,2)
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  I PSUCAT=17 D            ;Fluids/sets data
 | 
|---|
| 78 |  .S $P(PSUAR("FLD",PSUDV),U,3)=$P(PSUAR("FLD",PSUDV),U,1)-$P(PSUAR("FLD",PSUDV),U,2)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  I PSUCAT=22 D            ;Blood products data
 | 
|---|
| 81 |  .S $P(PSUAR("BLD",PSUDV),U,3)=$P(PSUAR("BLD",PSUDV),U,1)-$P(PSUAR("BLD",PSUDV),U,2)
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | TCOST ;Calculate total cost
 | 
|---|
| 84 |  N T1,T2
 | 
|---|
| 85 |  S PSUCA=0
 | 
|---|
| 86 |  F  S PSUCA=$O(^XTMP("PSUTCST",PSUDV,PSUCA)) Q:PSUCA=""  D
 | 
|---|
| 87 |  .I (PSUCA="03")!(PSUCA="04") D
 | 
|---|
| 88 |  ..S T1=$G(^XTMP("PSUTCST",PSUDV,"03"))
 | 
|---|
| 89 |  ..S T2=$G(^XTMP("PSUTCST",PSUDV,"04"))
 | 
|---|
| 90 |  ..S $P(PSUAR("DSP",PSUDV),U,4)=T1+T2
 | 
|---|
| 91 |  ..K T1,T2
 | 
|---|
| 92 |  .I (PSUCA="06")!(PSUCA="07") D
 | 
|---|
| 93 |  ..S T1=$G(^XTMP("PSUTCST",PSUDV,"06"))
 | 
|---|
| 94 |  ..S T2=$G(^XTMP("PSUTCST",PSUDV,"07"))
 | 
|---|
| 95 |  ..S $P(PSUAR("UNIT",PSUDV),U,4)=T1+T2
 | 
|---|
| 96 |  ..K T1,T2
 | 
|---|
| 97 |  .I PSUCA=17 D
 | 
|---|
| 98 |  ..S $P(PSUAR("FLD",PSUDV),U,4)=^XTMP("PSUTCST",PSUDV,PSUCA)
 | 
|---|
| 99 |  .I PSUCA=22 D
 | 
|---|
| 100 |  ..Q:$P($G(PSUAR("BLD",PSUDV)),U,1)=""
 | 
|---|
| 101 |  ..S $P(PSUAR("BLD",PSUDV),U,4)=^XTMP("PSUTCST",PSUDV,PSUCA)
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 | AVE ;Calculate Average cost per dose
 | 
|---|
| 104 |  N NET,TOT
 | 
|---|
| 105 |  S NET=$P($G(PSUAR("DSP",PSUDV)),U,3)
 | 
|---|
| 106 |  I $G(NET)'>0 S NET=1
 | 
|---|
| 107 |  S TOT=$P($G(PSUAR("DSP",PSUDV)),U,4)
 | 
|---|
| 108 |  S $P(PSUAR("DSP",PSUDV),U,5)=TOT/NET D
 | 
|---|
| 109 |  .S TRUNC=PSUAR("DSP",PSUDV)  ;transfer node to variable
 | 
|---|
| 110 |  .D TRUNC
 | 
|---|
| 111 |  .S PSUAR("DSP",PSUDV)=TRUNC  ;transfer node back to array
 | 
|---|
| 112 |  .K TRUNC
 | 
|---|
| 113 |  .K TOT,NET
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  I $D(PSUAR("UNIT",PSUDV)) D
 | 
|---|
| 116 |  .S NET=$P(PSUAR("UNIT",PSUDV),U,3)
 | 
|---|
| 117 |  .I $G(NET)'>0 S NET=1
 | 
|---|
| 118 |  .S TOT=$P($G(PSUAR("UNIT",PSUDV)),U,4)
 | 
|---|
| 119 |  .S $P(PSUAR("UNIT",PSUDV),U,5)=TOT/NET D
 | 
|---|
| 120 |  ..S TRUNC=PSUAR("UNIT",PSUDV)  ;transfer node to variable
 | 
|---|
| 121 |  ..D TRUNC
 | 
|---|
| 122 |  ..S PSUAR("UNIT",PSUDV)=TRUNC  ;transfer node back to array
 | 
|---|
| 123 |  ..K TRUNC
 | 
|---|
| 124 |  ..K TOT,NET
 | 
|---|
| 125 |  I '$D(PSUAR("UNIT",PSUDV)) D
 | 
|---|
| 126 |  .S PSUAR("UNIT",PSUDV)="0.00"_U_"0.00"_U_"0.00"_U_"0.00"_U_"0.00"
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  I $D(PSUAR("FLD",PSUDV)) D
 | 
|---|
| 129 |  .S NET=$P($G(PSUAR("FLD",PSUDV)),U,3)
 | 
|---|
| 130 |  .I $G(NET)'>0 S NET=1
 | 
|---|
| 131 |  .S TOT=$P($G(PSUAR("FLD",PSUDV)),U,4)
 | 
|---|
| 132 |  .S $P(PSUAR("FLD",PSUDV),U,5)=TOT/NET D
 | 
|---|
| 133 |  ..S TRUNC=PSUAR("FLD",PSUDV)  ;transfer node to variable
 | 
|---|
| 134 |  ..D TRUNC
 | 
|---|
| 135 |  ..S PSUAR("FLD",PSUDV)=TRUNC  ;transfer node back to array
 | 
|---|
| 136 |  ..K TRUNC
 | 
|---|
| 137 |  ..K TOT,NET
 | 
|---|
| 138 |  I '$D(PSUAR("FLD",PSUDV)) D
 | 
|---|
| 139 |  .S PSUAR("FLD",PSUDV)="0.00"_U_"0.00"_U_"0.00"_U_"0.00"_U_"0.00"
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  I $D(PSUAR("BLD",PSUDV)),$G(PSUDIV) D
 | 
|---|
| 142 |  .S NET=$P(PSUAR("BLD",PSUDV),U,3)
 | 
|---|
| 143 |  .I $G(NET)'>0 S NET=1
 | 
|---|
| 144 |  .S TOT=$P($G(PSUAR("BLD",PSUDV)),U,4)
 | 
|---|
| 145 |  .S $P(PSUAR("BLD",PSUDV),U,5)=TOT/NET D
 | 
|---|
| 146 |  ..S TRUNC=PSUAR("BLD",PSUDV)  ;transfer node to variable
 | 
|---|
| 147 |  ..D TRUNC
 | 
|---|
| 148 |  ..S PSUAR("BLD",PSUDV)=TRUNC  ;transfer node back to array
 | 
|---|
| 149 |  ..K TRUNC
 | 
|---|
| 150 |  ..K TOT,NET
 | 
|---|
| 151 |  I '$D(PSUAR("BLD",PSUDV)) D
 | 
|---|
| 152 |  .S PSUAR("BLD",PSUDV)="0.00"_U_"0.00"_U_"0.00"_U_"0.00"_U_"0.00"
 | 
|---|
| 153 |  Q
 | 
|---|
| 154 | TRUNC ;Truncate pieces with dollar values to 2 decimal places
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 |  F I=1:1:5 D
 | 
|---|
| 157 |  .N A,B,C
 | 
|---|
| 158 |  .I $P(TRUNC,U,I)'["." D  Q
 | 
|---|
| 159 |  ..S $P(TRUNC,U,I)=$P(TRUNC,U,I)_".00"
 | 
|---|
| 160 |  .S A=$F($P(TRUNC,U,I),".")  ;Find first position after decimal
 | 
|---|
| 161 |  .S B=$E($P(TRUNC,U,I),1,(A-1))  ;Extract dollars and decimal
 | 
|---|
| 162 |  .S C=$E($P(TRUNC,U,I),A,(A+1))  ;Extract cents after decimal
 | 
|---|
| 163 |  .I $L(C)'=2 S C=$E(C,1)_0
 | 
|---|
| 164 |  .S $P(TRUNC,U,I)=B_C
 | 
|---|
| 165 |  Q
 | 
|---|
| 166 | TOTAL ;Calculate column totals for each division
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 |  I $D(PSUAR("DSP")) D
 | 
|---|
| 169 |  .N TDSP,TRET,TNET,TCST,TAVE
 | 
|---|
| 170 |  .S PSUDIV=0                                    ;Doses data
 | 
|---|
| 171 |  .F  S PSUDIV=$O(PSUAR("DSP",PSUDIV)) Q:PSUDIV=""  D
 | 
|---|
| 172 |  ..S TDSP=$G(TDSP)+$P(PSUAR("DSP",PSUDIV),U,1)  ;Total dispensed
 | 
|---|
| 173 |  ..S TRET=$G(TRET)+$P(PSUAR("DSP",PSUDIV),U,2)  ;Total returned
 | 
|---|
| 174 |  ..S TNET=$G(TNET)+$P(PSUAR("DSP",PSUDIV),U,3)  ;Total of Net
 | 
|---|
| 175 |  ..S TCST=$G(TCST)+$P(PSUAR("DSP",PSUDIV),U,4)  ;Total of total costs
 | 
|---|
| 176 |  ..I $G(TNET) S TAVE=$G(TCST)/TNET D
 | 
|---|
| 177 |  ...I TAVE'["." S TAVE=TAVE_".00" Q
 | 
|---|
| 178 |  ...N A,B,C
 | 
|---|
| 179 |  ...S A=$F(TAVE,".")  ;Find 1st position after decimal
 | 
|---|
| 180 |  ...S B=$E(TAVE,1,(A-1))   ;Extract dollars and decimal
 | 
|---|
| 181 |  ...S C=$E(TAVE,A,(A+1))   ;Extract cents after decimal
 | 
|---|
| 182 |  ...I $L(C)'=2 S C=$E(C,1)_0
 | 
|---|
| 183 |  ...S TAVE=B_C
 | 
|---|
| 184 |  ..I '$D(TAVE) S TAVE="0.00"
 | 
|---|
| 185 |  .;
 | 
|---|
| 186 |  .S TOTAL("DSP")=TDSP_U_TRET_U_TNET_U_TCST_U_TAVE D
 | 
|---|
| 187 |  ..S TRUNC=TOTAL("DSP")                         ;Transfer to variable
 | 
|---|
| 188 |  ..D TRUNC
 | 
|---|
| 189 |  ..S TOTAL("DSP")=TRUNC                         ;Transfer back to array
 | 
|---|
| 190 |  ..K TRUNC
 | 
|---|
| 191 |  ;
 | 
|---|
| 192 |  I $D(PSUAR("UNIT")) D
 | 
|---|
| 193 |  .N TDSP,TRET,TNET,TCST,TAVE
 | 
|---|
| 194 |  .S PSUDIV=0                                    ;Unit data
 | 
|---|
| 195 |  .F  S PSUDIV=$O(PSUAR("UNIT",PSUDIV)) Q:PSUDIV=""  D
 | 
|---|
| 196 |  ..S TDSP=$G(TDSP)+$P(PSUAR("UNIT",PSUDIV),U,1)  ;Total dispensed
 | 
|---|
| 197 |  ..S TRET=$G(TRET)+$P(PSUAR("UNIT",PSUDIV),U,2)  ;Total returned
 | 
|---|
| 198 |  ..S TNET=$G(TNET)+$P(PSUAR("UNIT",PSUDIV),U,3)  ;Total of Net
 | 
|---|
| 199 |  ..S TCST=$G(TCST)+$P(PSUAR("UNIT",PSUDIV),U,4)  ;Total of total costs
 | 
|---|
| 200 |  ..I $G(TNET) S TAVE=$G(TCST)/TNET D
 | 
|---|
| 201 |  ...I TAVE'["." S TAVE=TAVE_".00" Q
 | 
|---|
| 202 |  ...N A,B,C
 | 
|---|
| 203 |  ...S A=$F(TAVE,".")  ;Find 1st position after decimal
 | 
|---|
| 204 |  ...S B=$E(TAVE,1,(A-1))   ;Extract dollars and decimal
 | 
|---|
| 205 |  ...S C=$E(TAVE,A,(A+1))   ;Extract cents after decimal
 | 
|---|
| 206 |  ...I $L(C)'=2 S C=$E(C,1)_0
 | 
|---|
| 207 |  ...S TAVE=B_C
 | 
|---|
| 208 |  ..I '$D(TAVE) S TAVE="0.00"
 | 
|---|
| 209 |  .S TOTAL("UNIT")=TDSP_U_TRET_U_TNET_U_TCST_U_TAVE D
 | 
|---|
| 210 |  ..S TRUNC=TOTAL("UNIT")                         ;Transfer to variable
 | 
|---|
| 211 |  ..D TRUNC
 | 
|---|
| 212 |  ..S TOTAL("UNIT")=TRUNC                         ;Transfer back to array
 | 
|---|
| 213 |  ..K TRUNC
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 |  I $D(PSUAR("FLD")) D
 | 
|---|
| 216 |  .N TDSP,TRET,TNET,TCST,TAVE
 | 
|---|
| 217 |  .S PSUDIV=0                                    ;Fluid/sets data
 | 
|---|
| 218 |  .F  S PSUDIV=$O(PSUAR("FLD",PSUDIV)) Q:PSUDIV=""  D
 | 
|---|
| 219 |  ..S TDSP=$G(TDSP)+$P(PSUAR("FLD",PSUDIV),U,1)  ;Total dispensed
 | 
|---|
| 220 |  ..S TRET=$G(TRET)+$P(PSUAR("FLD",PSUDIV),U,2)  ;Total returned
 | 
|---|
| 221 |  ..S TNET=$G(TNET)+$P(PSUAR("FLD",PSUDIV),U,3)  ;Total of Net
 | 
|---|
| 222 |  ..S TCST=$G(TCST)+$P(PSUAR("FLD",PSUDIV),U,4)  ;Total of total costs
 | 
|---|
| 223 |  ..I $G(TNET) S TAVE=$G(TCST)/TNET D
 | 
|---|
| 224 |  ...I TAVE'["." S TAVE=TAVE_".00" Q
 | 
|---|
| 225 |  ...N A,B,C
 | 
|---|
| 226 |  ...S A=$F(TAVE,".")  ;Find 1st position after decimal
 | 
|---|
| 227 |  ...S B=$E(TAVE,1,(A-1))   ;Extract dollars and decimal
 | 
|---|
| 228 |  ...S C=$E(TAVE,A,(A+1))   ;Extract cents after decimal
 | 
|---|
| 229 |  ...I $L(C)'=2 S C=$E(C,1)_0
 | 
|---|
| 230 |  ...S TAVE=B_C
 | 
|---|
| 231 |  ..I '$D(TAVE) S TAVE="0.00"
 | 
|---|
| 232 |  .S TOTAL("FLD")=TDSP_U_TRET_U_TNET_U_TCST_U_TAVE D
 | 
|---|
| 233 |  ..S TRUNC=TOTAL("FLD")                         ;Transfer to variable
 | 
|---|
| 234 |  ..D TRUNC
 | 
|---|
| 235 |  ..S TOTAL("FLD")=TRUNC                         ;Transfer back to array
 | 
|---|
| 236 |  ..K TRUNC
 | 
|---|
| 237 |  I '$D(PSUAR("FLD")) D
 | 
|---|
| 238 |  .S TOTAL("FLD")="0.00"_U_"0.00"_U_"0.00"_U_"0.00"_U_"0.00"
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 |  ;
 | 
|---|
| 241 |  I $D(PSUAR("BLD")) D
 | 
|---|
| 242 |  .N TDSP,TRET,TNET,TCST,TAVE
 | 
|---|
| 243 |  .S PSUDIV=0                                    ;Blood data
 | 
|---|
| 244 |  .F  S PSUDIV=$O(PSUAR("BLD",PSUDIV)) Q:PSUDIV=""  D
 | 
|---|
| 245 |  ..S TDSP=$G(TDSP)+$P(PSUAR("BLD",PSUDIV),U,1)  ;Total dispensed
 | 
|---|
| 246 |  ..S TRET=$G(TRET)+$P(PSUAR("BLD",PSUDIV),U,2)  ;Total returned
 | 
|---|
| 247 |  ..S TNET=$G(TNET)+$P(PSUAR("BLD",PSUDIV),U,3)  ;Total of Net
 | 
|---|
| 248 |  ..S TCST=$G(TCST)+$P(PSUAR("BLD",PSUDIV),U,4)  ;Total of total costs
 | 
|---|
| 249 |  ..I $G(TNET) S TAVE=$G(TCST)/TNET D
 | 
|---|
| 250 |  ...I TAVE'["." S TAVE=TAVE_".00" Q
 | 
|---|
| 251 |  ...N A,B,C
 | 
|---|
| 252 |  ...S A=$F(TAVE,".")  ;Find 1st position after decimal
 | 
|---|
| 253 |  ...S B=$E(TAVE,1,(A-1))   ;Extract dollars and decimal
 | 
|---|
| 254 |  ...S C=$E(TAVE,A,(A+1))   ;Extract cents after decimal
 | 
|---|
| 255 |  ...I $L(C)'=2 S C=$E(C,1)_0
 | 
|---|
| 256 |  ...S TAVE=B_C
 | 
|---|
| 257 |  ..I '$D(TAVE) S TAVE="0.00"
 | 
|---|
| 258 |  .S TOTAL("BLD")=TDSP_U_TRET_U_TNET_U_TCST_U_TAVE D
 | 
|---|
| 259 |  ..S TRUNC=TOTAL("BLD")                         ;Transfer to variable
 | 
|---|
| 260 |  ..D TRUNC
 | 
|---|
| 261 |  ..S TOTAL("BLD")=TRUNC                         ;Transfer back to array
 | 
|---|
| 262 |  ..K TRUNC
 | 
|---|
| 263 |  I '$D(PSUAR("BLD")) D
 | 
|---|
| 264 |  .S TOTAL("BLD")="0.00"_U_"0.00"_U_"0.00"_U_"0.00"_U_"0.00"
 | 
|---|
| 265 |  Q
 | 
|---|