| 1 | PSUPR2 ;BIR/PDW - Procurement extract from file 58.811 ; 4/1/08 4:09pm
 | 
|---|
| 2 |  ;;4.0;PHARMACY BENEFITS MANAGEMENT;**13**;MARCH, 2005;Build 3
 | 
|---|
| 3 |  ;DBIAs
 | 
|---|
| 4 |  ; Reference to file #58.811 supported by DBIA 2521
 | 
|---|
| 5 |  ; Reference to file #51.5   supported by DBIA 1931
 | 
|---|
| 6 |  ; Reference to file #50     supported by DBIA 221
 | 
|---|
| 7 |  ; Reference to file #58.8   supported by DBIA 2519
 | 
|---|
| 8 |  ; Reference to file #42     supported by DBIA 2440
 | 
|---|
| 9 |  ; Reference to file #40.8   supported by DBIA 2438
 | 
|---|
| 10 |  ; Reference to file #59.5   supported by DBIA 2499
 | 
|---|
| 11 |  ; Reference to file #59     supported by DBIA 2510
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | EN ;
 | 
|---|
| 14 |  S PSUEND=PSUEDT
 | 
|---|
| 15 |  S PSUEDT=PSUEDT\1+.24
 | 
|---|
| 16 |  S:'$D(PSUPRJOB) PSUPRJOB=$J
 | 
|---|
| 17 |  S:'$D(PSUPRSUB) PSUPRSUB="PSUPR_"_$J
 | 
|---|
| 18 |  I '$D(^XTMP(PSUPRSUB)) D
 | 
|---|
| 19 |  . S ^XTMP(PSUPRSUB,"RECORDS",0)=""
 | 
|---|
| 20 |  . S X1=DT,X2=6 D C^%DTC
 | 
|---|
| 21 |  . S ^XTMP(PSUPRSUB,0)=X_"^"_DT_"^ PBMS Procurement Extraction"
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  S PSUARJOB=PSUPRJOB,PSUARSUB="PSUAR_"_PSUARJOB
 | 
|---|
| 24 |  D MAP
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;   check for Drug Accountability
 | 
|---|
| 27 |  S X=$$VERSION^XPDUTL("DRUG ACCOUNTABILITY")
 | 
|---|
| 28 |  I 'X Q  ; not installed
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  S X1=PSUSDT,X2=-45 ;backup by 45 days per revision
 | 
|---|
| 31 |  D C^%DTC
 | 
|---|
| 32 |  S PSUDT=X
 | 
|---|
| 33 |  ;    loop thru invoice date field xref
 | 
|---|
| 34 |  F  S PSUDT=$O(^PSD(58.811,"ADATE",PSUDT)) Q:PSUDT>PSUEDT  Q:PSUDT'>0  D
 | 
|---|
| 35 |  .  S PSUORDA=0 F  S PSUORDA=$O(^PSD(58.811,"ADATE",PSUDT,PSUORDA)) Q:PSUORDA'>0  D
 | 
|---|
| 36 |  .. S PSUINVDA=0 F  S PSUINVDA=$O(^PSD(58.811,"ADATE",PSUDT,PSUORDA,PSUINVDA)) Q:PSUINVDA'>0  D INVOICE
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | INVOICE ;EP process an invoice within an order
 | 
|---|
| 40 |  N PSUSTAT
 | 
|---|
| 41 |  S PSUSTAT=$$VALI^PSUTL(58.8112,"PSUORDA,PSUINVDA",2)
 | 
|---|
| 42 |  I PSUSTAT'="C" Q  ;     3.2.6.1
 | 
|---|
| 43 |  N PSUORD
 | 
|---|
| 44 |  D GETS^PSUTL(58.811,PSUORDA,".01;1","PSUORD")
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  S PSUINV=""
 | 
|---|
| 47 |  N PSURDT,PSUIVNUM
 | 
|---|
| 48 |  D GETS^PSUTL(58.8112,"PSUORDA,PSUINVDA",".01;1;2;3;4;7;8;13","PSUINV","I")
 | 
|---|
| 49 |  D MOVEI^PSUTL("PSUINV")
 | 
|---|
| 50 |  S PSURDT=PSUINV(8)
 | 
|---|
| 51 |  S PSUIVNUM=PSUINV(.01)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  I $G(PSUINV(4)) D DIV
 | 
|---|
| 54 |  I $L(PSUDIV) S PSUDIVI=""
 | 
|---|
| 55 |  E  S PSUDIV=PSUSNDR,PSUDIVI="H"
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  K ^TMP($J,"PSUMIT") ;   array for multiple items
 | 
|---|
| 59 |  D GETM^PSUTL(58.8112,"PSUORDA,PSUINVDA","5*^1;2;3;4;7;13;14;15","^TMP($J,""PSUMIT"")","I")
 | 
|---|
| 60 |  I '$D(^TMP($J,"PSUMIT")) Q  ;
 | 
|---|
| 61 |  D MOVEMI^PSUTL("^TMP($J,""PSUMIT"")")
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  S PSUITDA=0 F  S PSUITDA=$O(^TMP($J,"PSUMIT",PSUITDA)) Q:PSUITDA'>0  D ITEM
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 | ITEM ;EP  process one item within the invoice
 | 
|---|
| 66 |  N PSUIT ;  array for one item
 | 
|---|
| 67 |  M PSUIT=^TMP($J,"PSUMIT",PSUITDA)
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  I (PSUIT(7)<PSUSDT) Q
 | 
|---|
| 70 |  I (PSUIT(7)>PSUEDT) Q
 | 
|---|
| 71 |  ;     pull adjustments   3.2.6.2.8
 | 
|---|
| 72 |  N PSUMADJ
 | 
|---|
| 73 |  D GETM^PSUTL(58.81125,"PSUORDA,PSUINVDA,PSUITDA","9*^.01;5","PSUMADJ","I")
 | 
|---|
| 74 |  I $D(PSUMADJ) D MOVEMI^PSUTL("PSUMADJ")
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  ;      Review/Process Adjustments
 | 
|---|
| 78 |  I $D(PSUMADJ) S PSUADJDA=0 F  S PSUADJDA=$O(PSUMADJ(PSUADJDA)) Q:PSUADJDA'>0  D
 | 
|---|
| 79 |  . N PSUADJ
 | 
|---|
| 80 |  . M PSUADJ=PSUMADJ(PSUADJDA)
 | 
|---|
| 81 |  . ;
 | 
|---|
| 82 |  . I PSUADJ(.01)="D" S PSUIT(1)=PSUADJ(5)  ; 3.2.6.2.8    Drug or Supply 
 | 
|---|
| 83 |  . I PSUADJ(.01)="O" S PSUIT(3)=PSUADJ(5)  ; 3.2.6.2.11   OrderUnits
 | 
|---|
| 84 |  . I PSUADJ(.01)="P" S PSUIT(4)=PSUADJ(5)  ; 3.2.6.2.12   Price
 | 
|---|
| 85 |  . I PSUADJ(.01)="Q" S PSUIT(2)=PSUIT(2)+PSUADJ(5) ; 3.2.6.2.10 Quantity
 | 
|---|
| 86 |  . Q
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  I 'PSUIT(2) Q  ; per Lina 10/7/98  if qty = 0 don't send record
 | 
|---|
| 89 |  ;    work on the order unit PSUIT(3)
 | 
|---|
| 90 |  I '$D(PSUADJ),+PSUIT(3)=0 S PSUIT(3)="" ; per Lina
 | 
|---|
| 91 |  I PSUIT(3) S PSUIT(3)=$$VAL^PSUTL(51.5,PSUIT(3),.01) ; 3.2.6.2.11
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ;    further process item fields  3.2.6.2.9 +
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ;    look for/ construct Dispense Units per Order Unit
 | 
|---|
| 96 |  ;    Store in PSUIT(9999)  3.2.6.2.13
 | 
|---|
| 97 |  ;  Get Related Drug Fields 3.2.6.2.9
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  N PSUDRUG
 | 
|---|
| 100 |  S PSUDRDA=0
 | 
|---|
| 101 |  ;  if PSUIT(1) is a supply item the following will not be computed
 | 
|---|
| 102 |  I PSUIT(1)=+PSUIT(1) D
 | 
|---|
| 103 |  . S PSUDRDA=PSUIT(1)
 | 
|---|
| 104 |  . ;S PSUARJOB=PSUPRJOB,PSUARSUB="PSUAR_"_PSUARJOB
 | 
|---|
| 105 |  . D GETS^PSUTL(50,PSUDRDA,".01;2;13;25;14.5;21;31","PSUDRUG","I")
 | 
|---|
| 106 |  . D MOVEI^PSUTL("PSUDRUG")
 | 
|---|
| 107 |  . S PSUIT(1)=PSUDRUG(.01)                          ; Generic Name
 | 
|---|
| 108 |  . S:PSUDRUG(21)="" PSUDRUG(21)="Unknown VA Product Name"
 | 
|---|
| 109 |  . S:PSUDRUG(31)="" PSUDRUG(31)="No NDC"
 | 
|---|
| 110 |  ;   further process fields
 | 
|---|
| 111 |  ;   fill in drug fields for supply items
 | 
|---|
| 112 |  I 'PSUDRDA D
 | 
|---|
| 113 |  . S PSUDRUG(.01)="Unknown Generic Name"
 | 
|---|
| 114 |  . S PSUDRUG(21)="Unknown VA Product Name"
 | 
|---|
| 115 |  . S PSUDRUG(31)="No NDC"
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ; NDC
 | 
|---|
| 118 |  I PSUIT(13)="" S PSUIT(13)=$G(PSUDRUG(31)) S:PSUIT(13)="" PSUIT(13)="No NDC"
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  ;      dispense units per order unit 3.2.6.2.13
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  S PSUIT(9999)=0
 | 
|---|
| 123 |  I $L(PSUIT(13)),$G(PSUDRDA) D
 | 
|---|
| 124 |  . S X=$O(^PSDRUG("C",PSUIT(13),PSUDRDA,""))
 | 
|---|
| 125 |  . I X S PSUIT(9999)=$$VALI^PSUTL(50.1,"PSUDRDA,X","403")
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  I '$D(PSUADJ),'PSUIT(9999) S PSUIT(9999)="" ; per Lina
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  ;PSU*4*13 Comment out To prevent XINDEX from complaining about
 | 
|---|
| 130 |  ; ^PSUPR7 (CoreFLS remnance)
 | 
|---|
| 131 |  ;Create "RECORDS" global for CoreFLS data
 | 
|---|
| 132 |  ;I $D(PSUFLSFG) S PSUA="" D
 | 
|---|
| 133 |  ;.F  S PSUA=$O(^XTMP(PSUPRSUB,"PSUFLS",PSUA)) Q:PSUA=""  D SIMPL^PSUPR7
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  ;   Construct record and store into ^XTMP(PSUPRSUB,"RECORDS",PSUDIV,LC)
 | 
|---|
| 136 |  S PSUR=$$RECORD()
 | 
|---|
| 137 |  ;   Store Records by Division
 | 
|---|
| 138 |  S PSULC=+$O(^XTMP(PSUPRSUB,"RECORDS",PSUDIV,""),-1)
 | 
|---|
| 139 |  S PSULC=PSULC+1
 | 
|---|
| 140 |  S ^XTMP(PSUPRSUB,"RECORDS",PSUDIV,PSULC)=PSUR
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 | RECORD() ;EP Assemble record
 | 
|---|
| 144 |  N PSUR
 | 
|---|
| 145 |  S PSUR(2)=$G(PSUDIV)
 | 
|---|
| 146 |  S PSUR(3)=$G(PSUDIVI)
 | 
|---|
| 147 |  S PSUR(4)=PSUIT(7)\1      ; 3.2.6.2.2
 | 
|---|
| 148 |  S PSUR(5)=$G(PSUDRUG(21)) ; 3.2.6.2.9
 | 
|---|
| 149 |  S PSUR(6)=$G(PSUDRUG(2))  ;  ""
 | 
|---|
| 150 |  S PSUR(7)=PSUIT(1)     ; 3.2.6.2.8
 | 
|---|
| 151 |  S PSUR(9)=PSUIT(13)    ; 3.2.6.2.9
 | 
|---|
| 152 |  S PSUR(10)=PSUIT(14)    ;    ""
 | 
|---|
| 153 |  S PSUR(11)=PSUIT(15)    ;    ""
 | 
|---|
| 154 |  S PSUR(12)=$G(PSUDRUG(14.5)) ; ""
 | 
|---|
| 155 |  S PSUR(13)=PSUIT(3)     ; 3.2.6.2.11
 | 
|---|
| 156 |  S PSUR(16)=PSUIT(9999)  ; 3.2.6.2.13
 | 
|---|
| 157 |  S PSUR(17)=PSUIT(2)     ; 3.2.6.2.10
 | 
|---|
| 158 |  S PSUR(18)=PSUIT(4)     ; 3.2.6.2.12
 | 
|---|
| 159 |  S PSUR(19)=PSUR(17)*PSUR(18) ; 3.2.6.2.14
 | 
|---|
| 160 |  S PSUR(20)=PSUORD(1)    ; 3.2.6.2.5
 | 
|---|
| 161 |  S PSUR(21)=PSUINV(.01)  ; 3.2.6.2.6
 | 
|---|
| 162 |  S PSUR(22)=""
 | 
|---|
| 163 |  S PSUR=""
 | 
|---|
| 164 |  S I=0 F  S I=$O(PSUR(I)) Q:I'>0  S PSUR(I)=$TR(PSUR(I),"^","'")
 | 
|---|
| 165 |  S I=0 F  S I=$O(PSUR(I)) Q:I'>0  S $P(PSUR,U,I)=PSUR(I)
 | 
|---|
| 166 |  S PSUR=PSUR_U
 | 
|---|
| 167 |  Q PSUR
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | DIV ;Find division or outpatient site
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 |  S PSUDIV=""
 | 
|---|
| 172 |  N MAPLOCI
 | 
|---|
| 173 |  D GETM^PSUTL(59.7,1,"90.03*^.01;.02;.03","MAPLOCI","I")
 | 
|---|
| 174 |  D MOVEMI^PSUTL("MAPLOCI")
 | 
|---|
| 175 |  ;
 | 
|---|
| 176 |  I $G(MAPLOCI(PSUINV(4),.01)) D
 | 
|---|
| 177 |  .S X=$G(MAPLOCI(PSUINV(4),.02)) I X S PSUDIV=$$VALI^PSUTL(40.8,X,1)
 | 
|---|
| 178 |  .S X=$G(MAPLOCI(PSUINV(4),.03)) I X S PSUDIV=$$VALI^PSUTL(59,X,.06)
 | 
|---|
| 179 |  I '$G(MAPLOCI(PSUINV(4),.01)) D
 | 
|---|
| 180 |  .S PSUDIV=PSUSNDR
 | 
|---|
| 181 |  .S PSUDIVI="H"
 | 
|---|
| 182 |  Q
 | 
|---|
| 183 |  ;
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 | MAP ;Find out whether a Narcotics Area of Use (NAOU) or a DA Pharmacy
 | 
|---|
| 186 |  ;Location is mapped to a division or outpatient site.  If it is not
 | 
|---|
| 187 |  ;mapped, store the NAME and INACTIVATION DAT (if applicable) in a
 | 
|---|
| 188 |  ;global to be mailed to the user.
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  K NAOU,DAPH
 | 
|---|
| 191 |  K MAPLOCI,MAPLOC
 | 
|---|
| 192 |  S PSUNAM=0            ;This is the name of the NAOU or DA PHARMACY
 | 
|---|
| 193 |  ;
 | 
|---|
| 194 |  F  S PSUNAM=$O(^PSD(58.8,"B",PSUNAM)) Q:PSUNAM=""  D
 | 
|---|
| 195 |  .S IEN=0
 | 
|---|
| 196 |  .F  S IEN=$O(^PSD(58.8,"B",PSUNAM,IEN)) Q:IEN=""  D
 | 
|---|
| 197 |  ..D GETS^PSUTL(58.8,IEN,".01;1;4","NAOU(IEN)")
 | 
|---|
| 198 |  ..I NAOU(IEN,1)="PRIMARY" M DAPH(IEN)=NAOU(IEN) K NAOU(IEN)
 | 
|---|
| 199 |  ..D MAP1
 | 
|---|
| 200 |  ;
 | 
|---|
| 201 |  Q
 | 
|---|
| 202 |  ;
 | 
|---|
| 203 | MAP1 ;MAP continued. This subroutine takes the IEN from file 58.8 and looks
 | 
|---|
| 204 |  ;to see if it is in file 59.7, field 90.02 or 90.03.
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 |  ;If it is in 90.02, and field 4 from 58.8 is NOT "P", and there is
 | 
|---|
| 207 |  ;no value in subfield .02 or .03, then an NAOU has not been mapped.
 | 
|---|
| 208 |  ;
 | 
|---|
| 209 |  ;If it is in 90.03, and field 4 from 58.8 IS a "P", and there is
 | 
|---|
| 210 |  ;no value in subfield .02 or .03, then a DA PHARMACY location has not
 | 
|---|
| 211 |  ;been mapped.
 | 
|---|
| 212 |  ;
 | 
|---|
| 213 |  ;Keep only the entries that are NOT mapped
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 |  N PSUDA
 | 
|---|
| 216 |  ;
 | 
|---|
| 217 |  ;Look for unmapped NAOU's
 | 
|---|
| 218 |  ;I $G(NAOU(IEN),1) D
 | 
|---|
| 219 |  I $G(^PS(59.7,1,90.02,IEN,0)) D
 | 
|---|
| 220 |  .D GETM^PSUTL(59.7,1,"90.02*^.01;.02;.03","MAPLOCI")
 | 
|---|
| 221 |  .S PSUDA=0
 | 
|---|
| 222 |  .F  S PSUDA=$O(MAPLOCI(PSUDA)) Q:PSUDA=""  D
 | 
|---|
| 223 |  ..I MAPLOCI(PSUDA,.02)'="" K NAOU(PSUDA)
 | 
|---|
| 224 |  ..I MAPLOCI(PSUDA,.03)'="" K NAOU(PSUDA)
 | 
|---|
| 225 |  M ^XTMP(PSUARSUB,"NAOU")=NAOU          ;only unmapped NAOU locations.
 | 
|---|
| 226 |  ;
 | 
|---|
| 227 |  ;
 | 
|---|
| 228 |  ;Look for unmapped DA PHARM
 | 
|---|
| 229 |  I $G(^PS(59.7,1,90.03,IEN,0)) D
 | 
|---|
| 230 |  .D GETM^PSUTL(59.7,1,"90.03*^.01;.02;.03","MAPLOC")
 | 
|---|
| 231 |  .S PSUDA=0
 | 
|---|
| 232 |  .F  S PSUDA=$O(MAPLOC(PSUDA)) Q:PSUDA=""  D
 | 
|---|
| 233 |  ..;PSU*4*13 Correct Problm DA Pharm Report
 | 
|---|
| 234 |  ..I $G(MAPLOC(PSUDA,.02))'="" K DAPH(PSUDA)
 | 
|---|
| 235 |  ..I $G(MAPLOC(PSUDA,.03))'="" K DAPH(PSUDA)
 | 
|---|
| 236 |  M ^XTMP(PSUARSUB,"DAPH")=DAPH      ;only unmapped DA PHARM locations.
 | 
|---|
| 237 |  Q
 | 
|---|
| 238 |  ;
 | 
|---|
| 239 | WRD() ;EP    Process for ward;
 | 
|---|
| 240 |  N PSUWD,PSUWDDA,PSUDIV
 | 
|---|
| 241 |  S PSUDIV=""
 | 
|---|
| 242 |  D GETM^PSUTL(58.8,PSULOC,"21*^.01","PSUWD","I")
 | 
|---|
| 243 |  D MOVEMI^PSUTL("PSUWD")
 | 
|---|
| 244 |  ; loop ward pointers
 | 
|---|
| 245 |  S PSUWDDA=0
 | 
|---|
| 246 |  F  S PSUWDDA=$O(PSUWD(PSUWDDA)) Q:PSUWDDA'>0  D  Q:$L(PSUDIV)
 | 
|---|
| 247 |  . S X=$$VALI^PSUTL(42,PSUWDDA,.015)
 | 
|---|
| 248 |  . Q:'X
 | 
|---|
| 249 |  . S X=$$VALI^PSUTL(40.8,X,1)
 | 
|---|
| 250 |  . I $L(X) S PSUDIV=X
 | 
|---|
| 251 |  ; return value of PSUDIV "" or = facility number
 | 
|---|
| 252 |  Q PSUDIV
 | 
|---|
| 253 |  ;
 | 
|---|
| 254 | INP() ;EP  Process for Inpatient
 | 
|---|
| 255 |  ; within package call to AR/WS that pulls/builds Inpatient AOU Site
 | 
|---|
| 256 |  ; uses IEN Value to AOU STATs file 58.5
 | 
|---|
| 257 |  N PSUARSUB,PSUARJOB
 | 
|---|
| 258 |  S PSULOCA=$$VALI^PSUTL(58.8,PSULOC,2)
 | 
|---|
| 259 |  N PSULOC
 | 
|---|
| 260 |  S PSUARSUB=PSUPRSUB,PSUARJOB=PSUPRJOB
 | 
|---|
| 261 |  S X=$$DIV^PSUAR1(PSULOCA,PSUDT) ;returns "NULL" if none found
 | 
|---|
| 262 |  S:X="NULL" X=""
 | 
|---|
| 263 |  Q X
 | 
|---|
| 264 |  ;
 | 
|---|
| 265 | IV() ;EP  Process,PSUIVDA for IV
 | 
|---|
| 266 |  ; PSULOC IEN  pharmacy location in file 58.8 (DRUG ACCOUNTABILITY)
 | 
|---|
| 267 |  N PSUIV,PSUDIV
 | 
|---|
| 268 |  S PSUDIV=""
 | 
|---|
| 269 |  D GETM^PSUTL(58.8,PSULOC,"31*^.01","PSUIV","I")
 | 
|---|
| 270 |  D MOVEMI^PSUTL("PSUIV")
 | 
|---|
| 271 |  S PSUIVDA=0
 | 
|---|
| 272 |  F  S PSUIVDA=$O(PSUIV(PSUIVDA)) Q:PSUIVDA'>0  D  Q:$L(PSUDIV)
 | 
|---|
| 273 |  . S X=$$VALI^PSUTL(59.5,PSUIVDA,.02)
 | 
|---|
| 274 |  . I X S X=$$VALI^PSUTL(40.8,X,1)
 | 
|---|
| 275 |  . I $L(X) S PSUDIV=X
 | 
|---|
| 276 |  ;
 | 
|---|
| 277 |  Q PSUDIV
 | 
|---|
| 278 |  ;
 | 
|---|
| 279 | OUT() ;EP  Process for Outpatient
 | 
|---|
| 280 |  S X=$$VALI^PSUTL(58.8,PSULOC,20)
 | 
|---|
| 281 |  I X S X=$$VALI^PSUTL(59,X,.06)
 | 
|---|
| 282 |  Q X
 | 
|---|
| 283 |  ;
 | 
|---|