| 1 | PSUOP3 ;BIR/CFL,TJH,PDW-PSU PBM Outpatient Pharmacy shared variables ;08/25/2003
 | 
|---|
| 2 |  ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to file #7 supported by DBIA 2495
 | 
|---|
| 5 |  ; Reference to file #50 supported by DBIA 221
 | 
|---|
| 6 |  ; Reference to file #59 supported by DBIA 2510
 | 
|---|
| 7 |  ; Reference to file #200 supported by DBIA 10060
 | 
|---|
| 8 |  ; Reference to file #49  supported by DBIA 10093
 | 
|---|
| 9 |  ; Reference to file #52  supported by DBIA 2512
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | PROVDR ;Get provider data, site number and AMIS category
 | 
|---|
| 12 |  S PSUSITE=$S(PSUDIVP="":PSUSNDR,1:$$VALI^PSUTL(59,PSUDIVP,.06))
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;Create storage global of division numbers and names for lab msgs.
 | 
|---|
| 15 |  S X=PSUSITE,DIC=59,DIC(0)="XM" D ^DIC
 | 
|---|
| 16 |  S X=+Y,PSUDIVNM=$$VAL^PSUTL(59,X,.01)
 | 
|---|
| 17 |  ;VMP OIFO BAY PINES;ELR;PSU*3.0*31
 | 
|---|
| 18 |  I '$L(PSUDIVNM) S X=PSUSITE D DIVNM^PSUOP6
 | 
|---|
| 19 |  S ^XTMP("PSU_"_PSUJOB,"DIV",PSUSITE)=PSUDIVNM
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | GETVAR ;Get shared variables
 | 
|---|
| 22 |  ;Get AMIS workload category
 | 
|---|
| 23 |  S PSUPST=$$VALI^PSUTL(53,PSURXP,6)
 | 
|---|
| 24 |  S PSUSC=$S(PSUPST=1:"SC",PSUPST=2:"AA",PSUPST=3:"OT",PSUPST=4:"IP",1:"")
 | 
|---|
| 25 |  S:$$GET1^DIQ(52,PSURXIEN,201)="YES" PSUSC="NVA"
 | 
|---|
| 26 |  K PSUPROV
 | 
|---|
| 27 |  D GETS^PSUTL(200,PSUPRID,"9;29;53.5;53.6","PSUPROV","I")
 | 
|---|
| 28 |  I '$D(PSUPROV) D NOPROV Q
 | 
|---|
| 29 |  D MOVEI^PSUTL("PSUPROV")
 | 
|---|
| 30 |  S PSUPRSSN=PSUPROV(9)
 | 
|---|
| 31 |  I PSUPRSSN="" S PSUPRSSN=999999999
 | 
|---|
| 32 |  S ^XTMP("PSU_"_PSUJOB,"PSUPDR",PSUPRSSN,PSUPRID)=""
 | 
|---|
| 33 |  S PSUDOC(9)=PSUPRSSN
 | 
|---|
| 34 |  S PSUPTYP=$S(PSUPROV(53.6)=4:"F",1:"S")
 | 
|---|
| 35 |  S:$$GET1^DIQ(52,PSURXIEN,201)="YES" PSUPTYP="NVA"
 | 
|---|
| 36 |  S PSUPCLS="" I PSUPROV(53.5)'="" D
 | 
|---|
| 37 |  .S PSUPCLS=$$VALI^PSUTL(7,PSUPROV(53.5),1)
 | 
|---|
| 38 |  .I PSUPCLS="" S PSUPCLS=$$VALI^PSUTL(7,PSUPROV(53.5),.01)
 | 
|---|
| 39 |  S PSUPSV=$S($L(PSUPROV(29)):$$VAL^PSUTL(49,PSUPROV(29),.01),1:"")
 | 
|---|
| 40 |  S PSUPSV=$$UPPER^PSUTL(PSUPSV),PSUPSERV=""
 | 
|---|
| 41 |  I $L(PSUPSV),$D(PSECT(PSUPSV)) S PSUPSERV=PSECT(PSUPSV)
 | 
|---|
| 42 |  S PSUSPTY=$$GET^XUA4A72(PSUPRID,PSUFDT)
 | 
|---|
| 43 |  S PSUSP1=$P(PSUSPTY,U,3),PSUSP2=$P(PSUSPTY,U,4)
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | NOPROV ; set up PSUPROV array when provider isn't found in ^VA(200
 | 
|---|
| 48 |  F I=9,29,53.5,53.6 S PSUPROV(I)=""
 | 
|---|
| 49 |  S (PSUPRSSN,PSUPTYP,PSUPCLS,PSUPSERV,PSUSP1,PSUSP2)=""
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 | GETDRUG ;Get drug data
 | 
|---|
| 52 |  K PSUDRUG
 | 
|---|
| 53 |  D GETS^PSUTL(50,PSUDR,".01;2;3;14.5;20;21;22;25;27;31;51;52","PSUDRUG","I")
 | 
|---|
| 54 |  D MOVEI^PSUTL("PSUDRUG")
 | 
|---|
| 55 |  I '$D(PSUDRUG) F I=.01,2,3,14.5,20,21,22,25,31,51,52 S PSUDRUG(I)=""
 | 
|---|
| 56 |  S PSUGNM=PSUDRUG(.01)
 | 
|---|
| 57 |  I PSUGNM="" S PSUGNM="Unknown Generic Name"
 | 
|---|
| 58 |  S PSUVANM=PSUDRUG(21)
 | 
|---|
| 59 |  I PSUVANM="" S PSUVANM="Unknown VA Product Name"
 | 
|---|
| 60 |  S PSUDEA=PSUDRUG(3)
 | 
|---|
| 61 |  S PSUNFI=$S(PSUDRUG(51)=1:"N/F",1:"")
 | 
|---|
| 62 |  S PSUDUN=PSUDRUG(14.5)
 | 
|---|
| 63 |  S PSUVACLS=PSUDRUG(2)
 | 
|---|
| 64 |  S PSUNDCL=PSUDRUG(22)
 | 
|---|
| 65 |  S PSUNAF=$S(PSUDRUG(52):"N/F",1:"")
 | 
|---|
| 66 |  S PSUNADR=PSUDRUG(20)
 | 
|---|
| 67 |  S PSUCMID=PSUDRUG(27)
 | 
|---|
| 68 |  ;Get the National Formulary Indicator and Restriction
 | 
|---|
| 69 |  S (PSOPNFI,PSOPNFR)=""
 | 
|---|
| 70 |  I $$VERSION^XPDUTL("PSN")'<4 D
 | 
|---|
| 71 |  .S PSOPNFI=$$FORMI^PSNAPIS(PSUNADR,PSUNDCL)
 | 
|---|
| 72 |  .S PSOPNFR=$$FORMR^PSNAPIS(PSUNADR,PSUNDCL)
 | 
|---|
| 73 | GETDRUGQ Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | SETREC ;Set the record into the ^XTMP global
 | 
|---|
| 76 |  S:PSUDIVP="" PSUDIVP=PSUSNDR
 | 
|---|
| 77 |  S REC1="^",REC2="*",PSU2U="^",REC3="*",REC4="*",REC5="*",REC6="*"
 | 
|---|
| 78 |  S REC1=REC1_$TR(PSUSITE,"^","'")_PSU2U_$TR(PSUFD,"^","'")_PSU2U
 | 
|---|
| 79 |  S REC1=REC1_$TR(PSURELDT,"^","'")_PSU2U_$TR(PSURXN,"^","'")_PSU2U
 | 
|---|
| 80 |  S REC1=REC1_$TR(PSUSC,"^","'")_PSU2U_PSUSSN_PSU2U_$TR(PSUVANM,"^","'")_PSU2U
 | 
|---|
| 81 |  S REC1=REC1_$TR(PSUVACLS,"^","'")_PSU2U_$TR(PSUGNM,"^","'")_PSU2U
 | 
|---|
| 82 |  S REC1=REC1_$TR(PSUNDC,"^","'")_PSU2U_$TR(PSUNFI,"^","'")_PSU2U
 | 
|---|
| 83 |  S REC1=REC1_$TR(PSOPNFI,"^","'")_PSU2U_$TR(PSOPNFR,"^","'")_PSU2U
 | 
|---|
| 84 |  S REC1=REC1_$TR(PSUDEA,"^","'")_PSU2U_$TR(PSUTYP,"^","'")_PSU2U
 | 
|---|
| 85 |  S REC1=REC1_$TR(PSUCMOP,"^","'")_PSU2U_$TR(PSUMW,"^","'")_PSU2U
 | 
|---|
| 86 |  S REC1=REC1_$TR(PSUPRSSN,"^","'")_PSU2U_$TR(PSUPTYP,"^","'")_PSU2U
 | 
|---|
| 87 |  S REC1=REC1_PSU2U_$TR(PSUWPC,"^","'")_PSU2U
 | 
|---|
| 88 |  S REC1=REC1_$TR(PSUDUN,"^","'")_PSU2U_$TR(PSUDRCT,"^","'")_PSU2U
 | 
|---|
| 89 |  S REC1=REC1_$TR(PSUDS,"^","'")_PSU2U_$TR(PSUQTY,"^","'")_PSU2U_PSUNAF_U
 | 
|---|
| 90 |  D ICN^PSUV2 S PSUPICN=$G(^XTMP("PSU_"_PSUJOB,"PSUPICN"))
 | 
|---|
| 91 |  S REC1=REC1_$G(PSUPICN)_PSU2U_PSUPRID_PSU2U_$G(PSUCAN)_"^"
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ;**Add AMIS data
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  S REC2=REC2_$G(PSUCLN)_PSU2U             ;Clinic
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  S REC2=REC2_$G(PSUCMID)_PSU2U            ;CMOP ID
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  I $G(PSUFP) D
 | 
|---|
| 101 |  .S REC2=REC2_PSUSITE_$G(PSUFP)_PSU2U      ;Finishing person
 | 
|---|
| 102 |  I '$G(PSUFP) D
 | 
|---|
| 103 |  .S REC2=REC2_PSU2U
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ;Login dates for new orders, refills, and partials
 | 
|---|
| 106 |  I PSUTYP="N" S REC2=REC2_$G(PSUORDT)_PSU2U       ;New fills
 | 
|---|
| 107 |  I PSUTYP="R" S REC2=REC2_$G(PSUREDT)_PSU2U       ;Refills
 | 
|---|
| 108 |  I PSUTYP="P" S REC2=REC2_$G(PSUPDT)_PSU2U        ;Partials
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  S REC2=REC2_$G(PSUCOPAY)_PSU2U           ;Copay status
 | 
|---|
| 111 |  S REC2=REC2_$E($G(PSUPI),1,80)_PSU2U     ;Expanded Instructions
 | 
|---|
| 112 |  S REC2=REC2_$G(PSUMDFLG)_PSU2U           ;Multidose Flag
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ;**Single dose date and first dose of multidose data
 | 
|---|
| 115 |  ;are in the following records**
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  S REC2=REC2_$G(PSUDSG)_PSU2U             ;Dosage Ordered
 | 
|---|
| 118 |  S REC2=REC2_$G(PSUDISPU)_PSU2U           ;Dispense units
 | 
|---|
| 119 |  S REC2=REC2_$G(PSUNITS)_PSU2U            ;Units
 | 
|---|
| 120 |  S REC2=REC2_$G(PSUNOUN)_PSU2U            ;Noun
 | 
|---|
| 121 |  S REC2=REC2_$G(PSUDUR)_PSU2U             ;Duration
 | 
|---|
| 122 |  S REC2=REC2_$G(PSUCONJ)_PSU2U            ;Conjunction
 | 
|---|
| 123 |  S REC2=REC2_$G(PSUROUT)_PSU2U            ;Route
 | 
|---|
| 124 |  S REC2=REC2_$G(PSUSCHED)_PSU2U           ;Schedule
 | 
|---|
| 125 |  S REC2=REC2_$G(PSUVERB)_PSU2U            ;Verb
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ;**End of Single dose/First multidose data
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  ;**The following are single dose globals for MailMan
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  S PSURCT=1+$P($G(^XTMP(PSUOPSUB,"DATA",PSUSITE,PSURXIEN,0)),U,1)
 | 
|---|
| 132 |  S ^XTMP(PSUOPSUB,"DATA",PSUSITE,PSURXIEN,PSURCT,1)=REC1
 | 
|---|
| 133 |  S ^XTMP(PSUOPSUB,"DATA",PSUSITE,PSURXIEN,PSURCT,2)=REC2
 | 
|---|
| 134 |  S $P(^XTMP(PSUOPSUB,"DATA",PSUSITE,PSURXIEN,0),U,1)=PSURCT
 | 
|---|
| 135 |  I (($E(PSUOPVER)=6)&(PSUTYP="P"))!($E(PSUOPVER)>6) S ^XTMP(PSUOPSUB,"RXIEN",PSURXIEN)=""
 | 
|---|
| 136 |  ;**End of single dose globals for MailMan
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 |  ;**Multidose records
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 |  I $D(PSUMDFLG) D
 | 
|---|
| 141 |  .S PSUD1=1
 | 
|---|
| 142 |  .F  S PSUD1=$O(^TMP("PSOR",$J,PSURXIEN,"MI",PSUD1)) Q:PSUD1=""  D
 | 
|---|
| 143 |  ..S PSUAMMD=^TMP("PSOR",$J,PSURXIEN,"MI",PSUD1,0)
 | 
|---|
| 144 |  ..D MULTI^PSUOPAM                          ;Set multidose variables
 | 
|---|
| 145 |  ..I $L(REC3)>180 D REC4 Q
 | 
|---|
| 146 |  ..S REC3=REC3_$G(PSUDSGMD)_PSU2U           ;Dosage Ordered
 | 
|---|
| 147 |  ..S REC3=REC3_$G(PSUDSPMD)_PSU2U           ;Dispense units
 | 
|---|
| 148 |  ..S REC3=REC3_$G(PSUNITMD)_PSU2U           ;Units
 | 
|---|
| 149 |  ..S REC3=REC3_$G(PSUNMD)_PSU2U             ;Noun
 | 
|---|
| 150 |  ..S REC3=REC3_$G(PSUDURMD)_PSU2U           ;Duration
 | 
|---|
| 151 |  ..S REC3=REC3_$G(PSUCONMD)_PSU2U           ;Conjunction
 | 
|---|
| 152 |  ..S REC3=REC3_$G(PSURTMD)_PSU2U            ;Route
 | 
|---|
| 153 |  ..S REC3=REC3_$G(PSUSCHMD)_PSU2U           ;Schedule
 | 
|---|
| 154 |  ..S REC3=REC3_$G(PSUVRBMD)_PSU2U           ;Verb
 | 
|---|
| 155 |  ..;
 | 
|---|
| 156 |  ..;**End of Multidose data
 | 
|---|
| 157 |  ..;**End AMIS data
 | 
|---|
| 158 |  ..;
 | 
|---|
| 159 |  ..;
 | 
|---|
| 160 |  ..;global for multidose records for MailMan
 | 
|---|
| 161 |  I $D(PSUMDFLG) D
 | 
|---|
| 162 |  .S PSURCT=1+$P($G(^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,0)),U,1)
 | 
|---|
| 163 |  .S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,1)=REC1
 | 
|---|
| 164 |  .S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,2)=REC2
 | 
|---|
| 165 |  .S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,3)=REC3
 | 
|---|
| 166 |  .I $L(REC4)>1 S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,4)=REC4
 | 
|---|
| 167 |  .I $L(REC5)>1 S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,5)=REC5
 | 
|---|
| 168 |  .I $L(REC6)>1 S ^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,PSURCT,6)=REC6
 | 
|---|
| 169 |  .;
 | 
|---|
| 170 |  .S $P(^XTMP(PSUOPSUB,"DATAMD",PSUSITE,PSURXIEN,0),U,1)=PSURCT
 | 
|---|
| 171 |  ;
 | 
|---|
| 172 |  I '$D(^XTMP("PSU_"_PSUJOB,"PSUOPFLG")) D
 | 
|---|
| 173 |  .D LAB^PSULR0("OP",PSUSITE,PSURXIEN,DFN,PSUGNM,PSUVACLS)
 | 
|---|
| 174 | SUMDRUG ; total drug info for summary report
 | 
|---|
| 175 |  S PSUVARS="PSUTPART,PSUTFIL,PSUTRFIL,PSUTCST,PSUTQTY"
 | 
|---|
| 176 |  S PSUREC=$G(^XTMP(PSUOPSUB,"DRUG",PSUSITE,PSUGNM,PSUCMOP))
 | 
|---|
| 177 |  F I=1:1:5 S @$P(PSUVARS,",",I)=+$P(PSUREC,U,I)
 | 
|---|
| 178 |  I PSUTYP="P" S PSUTPART=PSUTPART+1
 | 
|---|
| 179 |  I PSUTYP="N" S PSUTFIL=PSUTFIL+1
 | 
|---|
| 180 |  I PSUTYP="R" S PSUTRFIL=PSUTRFIL+1
 | 
|---|
| 181 |  S PSUTQTY=PSUQTY+PSUTQTY
 | 
|---|
| 182 |  S PSUTCST=(PSUDRCT*PSUQTY)+PSUTCST
 | 
|---|
| 183 |  S REC=PSUTPART_U_PSUTFIL_U_PSUTRFIL_U_$J(PSUTCST,0,2)_U_$J(PSUTQTY,0,2)
 | 
|---|
| 184 |  S $P(REC,U,6)=$S(PSUNFI="N/F":"*",1:"")
 | 
|---|
| 185 |  S $P(REC,U,7)=$S(PSOPNFI="0":"#",1:"")
 | 
|---|
| 186 |  S ^XTMP(PSUOPSUB,"DRUG",PSUSITE,PSUGNM,PSUCMOP)=REC
 | 
|---|
| 187 |  Q
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 | REC4 ;Multidose records greater than 200 characters in length
 | 
|---|
| 190 |  ;
 | 
|---|
| 191 |  I $L(REC4)>180 D REC5 Q
 | 
|---|
| 192 |  S REC4=REC4_$G(PSUDSGMD)_PSU2U           ;Dosage Ordered
 | 
|---|
| 193 |  S REC4=REC4_$G(PSUDSPMD)_PSU2U           ;Dispense units
 | 
|---|
| 194 |  S REC4=REC4_$G(PSUNITMD)_PSU2U           ;Units
 | 
|---|
| 195 |  S REC4=REC4_$G(PSUNMD)_PSU2U             ;Noun
 | 
|---|
| 196 |  S REC4=REC4_$G(PSUDURMD)_PSU2U           ;Duration
 | 
|---|
| 197 |  S REC4=REC4_$G(PSUCONMD)_PSU2U           ;Conjunction
 | 
|---|
| 198 |  S REC4=REC4_$G(PSURTMD)_PSU2U            ;Route
 | 
|---|
| 199 |  S REC4=REC4_$G(PSUSCHMD)_PSU2U           ;Schedule
 | 
|---|
| 200 |  S REC4=REC4_$G(PSUVRBMD)_PSU2U           ;Verb
 | 
|---|
| 201 |  Q
 | 
|---|
| 202 | REC5 ;
 | 
|---|
| 203 |  I $L(REC5)>180 D REC6 Q
 | 
|---|
| 204 |  S REC5=REC5_$G(PSUDSGMD)_PSU2U           ;Dosage Ordered
 | 
|---|
| 205 |  S REC5=REC5_$G(PSUDSPMD)_PSU2U           ;Dispense units
 | 
|---|
| 206 |  S REC5=REC5_$G(PSUNITMD)_PSU2U           ;Units
 | 
|---|
| 207 |  S REC5=REC5_$G(PSUNMD)_PSU2U             ;Noun
 | 
|---|
| 208 |  S REC5=REC5_$G(PSUDURMD)_PSU2U           ;Duration
 | 
|---|
| 209 |  S REC5=REC5_$G(PSUCONMD)_PSU2U           ;Conjunction
 | 
|---|
| 210 |  S REC5=REC5_$G(PSURTMD)_PSU2U            ;Route
 | 
|---|
| 211 |  S REC5=REC5_$G(PSUSCHMD)_PSU2U           ;Schedule
 | 
|---|
| 212 |  S REC5=REC5_$G(PSUVRBMD)_PSU2U           ;Verb
 | 
|---|
| 213 |  Q
 | 
|---|
| 214 | REC6 ;
 | 
|---|
| 215 |  S REC6=REC6_$G(PSUDSGMD)_PSU2U           ;Dosage Ordered
 | 
|---|
| 216 |  S REC6=REC6_$G(PSUDSPMD)_PSU2U           ;Dispense units
 | 
|---|
| 217 |  S REC6=REC6_$G(PSUNITMD)_PSU2U           ;Units
 | 
|---|
| 218 |  S REC6=REC6_$G(PSUNMD)_PSU2U             ;Noun
 | 
|---|
| 219 |  S REC6=REC6_$G(PSUDURMD)_PSU2U           ;Duration
 | 
|---|
| 220 |  S REC6=REC6_$G(PSUCONMD)_PSU2U           ;Conjunction
 | 
|---|
| 221 |  S REC6=REC6_$G(PSURTMD)_PSU2U            ;Route
 | 
|---|
| 222 |  S REC6=REC6_$G(PSUSCHMD)_PSU2U           ;Schedule
 | 
|---|
| 223 |  S REC6=REC6_$G(PSUVRBMD)_PSU2U           ;Verb
 | 
|---|
| 224 |  Q
 | 
|---|