[613] | 1 | BPSSCRLG ;BHAM ISC/SS - ECME LOGINFO ;05-APR-05
|
---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q
|
---|
| 6 | ;
|
---|
| 7 | EN ; -- main entry point for BPS LSTMN LOG
|
---|
| 8 | D EN^VALM("BPS LSTMN LOG")
|
---|
| 9 | Q
|
---|
| 10 | ;
|
---|
| 11 | HDR ; -- header code
|
---|
| 12 | S VALMHDR(1)="Claim Log information"
|
---|
| 13 | S VALMHDR(2)=""
|
---|
| 14 | Q
|
---|
| 15 | ;
|
---|
| 16 | INIT ; -- init variables and list array
|
---|
| 17 | N BPSELCLM,LINE
|
---|
| 18 | S BPSELCLM=$G(@VALMAR@("SELLN"))
|
---|
| 19 | ; piece 2: patient ien #2
|
---|
| 20 | ; piece 3: insurance ien #36
|
---|
| 21 | ; piece 4: ptr to #9002313.59
|
---|
| 22 | S LINE=1
|
---|
| 23 | S VALMCNT=$$PREPINFO(.LINE,$P(BPSELCLM,U,2),$P(BPSELCLM,U,3),$P(BPSELCLM,U,4))
|
---|
| 24 | S:VALMCNT>1 VALMCNT=VALMCNT-1
|
---|
| 25 | Q
|
---|
| 26 | ;
|
---|
| 27 | HELP ; -- help code
|
---|
| 28 | S X="?" D DISP^XQORM1 W !!
|
---|
| 29 | K X
|
---|
| 30 | Q
|
---|
| 31 | ;
|
---|
| 32 | EXIT ; -- exit code
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | EXPND ; -- expand code
|
---|
| 36 | Q
|
---|
| 37 | ;
|
---|
| 38 | ;
|
---|
| 39 | LOG ;entry point for LOG menu option of the main User Screen
|
---|
| 40 | N BPRET,BPSEL
|
---|
| 41 | I '$D(@(VALMAR)) Q
|
---|
| 42 | D FULL^VALM1
|
---|
| 43 | W !,"Enter the line number for which you wish to print claim logs."
|
---|
| 44 | S BPSEL=$$ASKLINE^BPSSCRU4("Select item","C","Please select SINGLE Rx Line.")
|
---|
| 45 | I BPSEL<1 S VALMBCK="R" Q
|
---|
| 46 | D SAVESEL(BPSEL,VALMAR)
|
---|
| 47 | D EN
|
---|
| 48 | S VALMBCK="R"
|
---|
| 49 | Q
|
---|
| 50 | ;
|
---|
| 51 | ;save selection in order to use inside enclosed ListManager copy
|
---|
| 52 | ;BPSEL - selected line
|
---|
| 53 | ;BPVALMR - parent VALMAR
|
---|
| 54 | SAVESEL(BPSEL,BPVALMR) ;
|
---|
| 55 | D CLEANIT
|
---|
| 56 | S ^TMP("BPSLOG",$J,"VALM","SELLN")=BPSEL
|
---|
| 57 | S ^TMP("BPSLOG",$J,"VALM","PARENT")=BPVALMR
|
---|
| 58 | M ^TMP("BPSLOG",$J,"VALM","VIEWPARAMS")=@BPVALMR@("VIEWPARAMS")
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | CLEANIT ;
|
---|
| 62 | K ^TMP("BPSLOG",$J,"VALM")
|
---|
| 63 | Q
|
---|
| 64 | ;input:
|
---|
| 65 | ; BPDFN: patient ien #2
|
---|
| 66 | ; BP36: insurance ien #36
|
---|
| 67 | ; BP59: ptr to #9002313.59
|
---|
| 68 | ; returns number of lines
|
---|
| 69 | PREPINFO(BPLN,BPDFN,BP36,BP59) ;
|
---|
| 70 | I '$G(BP59) Q 0
|
---|
| 71 | I '$G(BP36) Q 0
|
---|
| 72 | I '$G(BPDFN) Q 0
|
---|
| 73 | N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
|
---|
| 74 | N BPX,BPRXIEN,BPREF,BP1,BPLSTCLM,BPLSTRSP,BPDAT59,BPUSR,BPSTRT,BPHIST,BPQ
|
---|
| 75 | N BPDT,BPLN0,BPCNT
|
---|
| 76 | S BP1=$$RXREF^BPSSCRU2(BP59)
|
---|
| 77 | S BPRXIEN=$P(BP1,U,1)
|
---|
| 78 | S BPREF=$P(BP1,U,2)
|
---|
| 79 | S BPDAT59(0)=$G(^BPST(BP59,0))
|
---|
| 80 | ;create a history
|
---|
| 81 | D MKHIST^BPSSCRU5(BP59,.BPHIST)
|
---|
| 82 | ;
|
---|
| 83 | S BPLN0=BPLN
|
---|
| 84 | D SETLINE(.BPLN,"Pharmacy ECME Log")
|
---|
| 85 | D SETLINE(.BPLN,"")
|
---|
| 86 | S BPX=$$RJ^BPSSCR02("VA Rx #: ",19)_$$LJ^BPSSCR02($$RXNUM^BPSSCRU2(+BPRXIEN),13)
|
---|
| 87 | S BPX=BPX_$$RJ^BPSSCR02("Fill #: ",10)_$$LJ^BPSSCR02(BPREF,4)
|
---|
| 88 | S BPX=BPX_$$RJ^BPSSCR02("ECME Claim Rx #: ",18)_$$LJ^BPSSCR02(BP59,20)
|
---|
| 89 | D SETLINE(.BPLN,BPX)
|
---|
| 90 | S BPX=$$RJ^BPSSCR02("Patient Name: ",19)
|
---|
| 91 | S BPX=BPX_$$LJ^BPSSCR02($$PATNAME^BPSSCRU2(BPDFN)_" "_$$SSN4^BPSSCRU2(BPDFN),30)
|
---|
| 92 | D SETLINE(.BPLN,BPX)
|
---|
| 93 | S BPX=$$RJ^BPSSCR02("Last Submitted: ",19)
|
---|
| 94 | S BPSTRT=$P(BPDAT59(0),U,11) ;@# need to check with analyst if this is a START DATE
|
---|
| 95 | I BPSTRT]"" S BPX=BPX_$$DATETIME^BPSSCRU5(BPSTRT)
|
---|
| 96 | D SETLINE(.BPLN,BPX)
|
---|
| 97 | S BPX=$$RJ^BPSSCR02("Last Submitted By: ",19)
|
---|
| 98 | S BPUSR=$P(BPDAT59(0),U,10)
|
---|
| 99 | I BPUSR]"" S BPX=BPX_$$GETUSRNM^BPSSCRU1(BPUSR)
|
---|
| 100 | D SETLINE(.BPLN,BPX)
|
---|
| 101 | ;
|
---|
| 102 | ;find the latest claim
|
---|
| 103 | S BP1=+$O(BPHIST("C",99999999),-1)
|
---|
| 104 | I BP1=0 D SETLINE(.BPLN,""),SETLINE(.BPLN,"------ No electronic claims ------") Q BPLN
|
---|
| 105 | S BP1=+$O(BPHIST("C",BP1,0))
|
---|
| 106 | S BPX=$$RJ^BPSSCR02("Last VA Claim #: ",19)_$P($G(^BPSC(+BP1,0)),U,1)
|
---|
| 107 | D SETLINE(.BPLN,BPX)
|
---|
| 108 | F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"")
|
---|
| 109 | ;process history
|
---|
| 110 | N BPTYPE,BPIEN,BPIENRS
|
---|
| 111 | S BPDT=99999999
|
---|
| 112 | F S BPDT=$O(BPHIST("C",BPDT),-1) Q:+BPDT=0 D
|
---|
| 113 | . S BPIEN=+$O(BPHIST("C",BPDT,0)) Q:BPIEN=""
|
---|
| 114 | . D DISPCLM(.BPLN,BP59,BPIEN,+BPHIST("C",BPDT,BPIEN),$P(BPHIST("C",BPDT,BPIEN),U,2),BPDT)
|
---|
| 115 | . S BPIENRS=0
|
---|
| 116 | . F S BPIENRS=$O(BPHIST("C",BPDT,BPIEN,"R",BPIENRS)) Q:+BPIENRS=0 D
|
---|
| 117 | . . D DISPRSP(.BPLN,BP59,BPIENRS,+BPHIST("C",BPDT,BPIEN,"R",BPIENRS),$P(BPHIST("C",BPDT,BPIEN,"R",BPIENRS),U,2),BPDT)
|
---|
| 118 | Q BPLN
|
---|
| 119 | ;calls SET^VALM10,
|
---|
| 120 | ;increments BPLINE
|
---|
| 121 | SETLINE(BPLINE,BPSTR) ;
|
---|
| 122 | D SET^VALM10(BPLINE,BPSTR)
|
---|
| 123 | S BPLINE=BPLINE+1
|
---|
| 124 | Q
|
---|
| 125 | ;display claim record
|
---|
| 126 | DISPCLM(BPLN,BP59,BPIEN02,BP57,BPSTYPE,BPSDTALT) ;
|
---|
| 127 | N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
|
---|
| 128 | N BPX,BPLN0,BPCNT,BPSTR1,BPSTYP2
|
---|
| 129 | S BPLN0=BPLN
|
---|
| 130 | S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"")
|
---|
| 131 | S BPSTR1="Transmission Information ("_BPSTYP2_")(#"_BPIEN02_")"
|
---|
| 132 | D SETLINE(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-"))
|
---|
| 133 | D SETLINE(.BPLN,"")
|
---|
| 134 | D SETLINE(.BPLN,"Created on: "_$$CREATEDT(BPIEN02,BPSDTALT))
|
---|
| 135 | D SETLINE(.BPLN,"VA Claim ID: "_$P($G(^BPSC(+BPIEN02,0)),U,1))
|
---|
| 136 | D SETLINE(.BPLN,"Transaction Type: "_$$TRTYPE^BPSSCRU5($$TRCODE(BPIEN02)))
|
---|
| 137 | D SETLINE(.BPLN,"Date of Service: "_$$DOSCLM(BPIEN02))
|
---|
| 138 | D SETLINE(.BPLN,"NDC: "_$$LNDC^BPSSCRU5(BPIEN02))
|
---|
| 139 | D SETLINE(.BPLN,"ECME Pharmacy: "_$$DIVNAME^BPSSCRDS($$LDIV(BP57)))
|
---|
| 140 | D SETLINE(.BPLN,"Days Supply: "_$$DAYSSUPL(BPIEN02))
|
---|
| 141 | S BPX="Qty: "_$$QTY(BP57)
|
---|
| 142 | S BPX=BPX_" Unit Price: "_$$UNTPRICE(BP57)
|
---|
| 143 | S BPX=BPX_" Total Price: "_$$TOTPRICE(BP57)
|
---|
| 144 | D SETLINE(.BPLN,BPX)
|
---|
| 145 | D SETLINE(.BPLN,"")
|
---|
| 146 | D SETLINE(.BPLN,"Insurance Name: "_$$INSUR57(BP57))
|
---|
| 147 | D SETLINE(.BPLN,"BIN: "_$$BIN(BPIEN02))
|
---|
| 148 | D SETLINE(.BPLN,"PCN: "_$$PCN(BPIEN02))
|
---|
| 149 | D SETLINE(.BPLN,"Group ID: "_$$GRPID(BPIEN02))
|
---|
| 150 | D SETLINE(.BPLN,"Cardholder ID: "_$$CRDHLDID(BPIEN02))
|
---|
| 151 | D SETLINE(.BPLN,"Patient Relationship Code: "_$$PATRELSH(BPIEN02,BP57))
|
---|
| 152 | D SETLINE(.BPLN,"Cardholder First Name: "_$$CRDHLDFN(BPIEN02,BP57))
|
---|
| 153 | D SETLINE(.BPLN,"Cardholder Last Name: "_$$CRDHLDLN(BPIEN02,BP57))
|
---|
| 154 | F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"")
|
---|
| 155 | S BPLN0=BPLN
|
---|
| 156 | D SETLINE(.BPLN,"Plan ID: "_$$PLANID(BP57))
|
---|
| 157 | D SETLINE(.BPLN,"Payer Sheet IEN: "_$$PYRIEN^BPSSCRU5(BPIEN02))
|
---|
| 158 | D SETLINE(.BPLN,"B2 Payer Sheet IEN: "_$$B2PYRIEN^BPSSCRU5(BPIEN02,BP57))
|
---|
| 159 | D SETLINE(.BPLN,"B3 Rebill Payer Sheet: "_$$B3PYRIEN^BPSSCRU5(BPIEN02,BP59,BP57))
|
---|
| 160 | D SETLINE(.BPLN,"Certify Mode: "_$$CERTMOD(BP57))
|
---|
| 161 | D SETLINE(.BPLN,"Cert IEN: "_$$CERTIEN(BP57))
|
---|
| 162 | F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"")
|
---|
| 163 | Q
|
---|
| 164 | ;Date os service date in BPS CLAIM file
|
---|
| 165 | DOSCLM(BPIEN02) ;
|
---|
| 166 | N BPDT
|
---|
| 167 | S BPDT=$P($G(^BPSC(BPIEN02,400,1,400)),U,1)\1
|
---|
| 168 | Q $E(BPDT,5,6)_"/"_$E(BPDT,7,8)_"/"_$E(BPDT,1,4)
|
---|
| 169 | ;record created on
|
---|
| 170 | CREATEDT(BPIEN02,BPSDTALT) ;
|
---|
| 171 | N BPSDT
|
---|
| 172 | S BPSDT=+$P($G(^BPSC(BPIEN02,0)),U,6)
|
---|
| 173 | Q $$DATETIME^BPSSCRU5($S(BPSDT>0:BPSDT,1:BPSDTALT))
|
---|
| 174 | Q
|
---|
| 175 | ;Plan ID from #9002313.57
|
---|
| 176 | PLANID(BP57) ;
|
---|
| 177 | Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,1)
|
---|
| 178 | ;
|
---|
| 179 | CERTMOD(BP57) ;
|
---|
| 180 | Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,5)
|
---|
| 181 | ;Software Vendor/Cert ID
|
---|
| 182 | CERTIEN(BP57) ;
|
---|
| 183 | Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,6)
|
---|
| 184 | ;group ID
|
---|
| 185 | GRPID(BPIEN02) ;
|
---|
| 186 | Q $E($P($G(^BPSC(BPIEN02,300)),U,1),3,99)
|
---|
| 187 | ;
|
---|
| 188 | ;Cardholder ID
|
---|
| 189 | CRDHLDID(BPIEN02) ;
|
---|
| 190 | Q $E($P($G(^BPSC(BPIEN02,300)),U,2),3,99)
|
---|
| 191 | ;Cardholder First name
|
---|
| 192 | CRDHLDFN(BPIEN02,BP57) ;
|
---|
| 193 | N Y
|
---|
| 194 | S Y=$P($G(^BPSC(BPIEN02,300)),U,12)
|
---|
| 195 | I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,6)
|
---|
| 196 | Q Y
|
---|
| 197 | ;Cardholder Last Name
|
---|
| 198 | CRDHLDLN(BPIEN02,BP57) ;
|
---|
| 199 | N Y
|
---|
| 200 | S Y=$P($G(^BPSC(BPIEN02,300)),U,13)
|
---|
| 201 | I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,7)
|
---|
| 202 | Q Y
|
---|
| 203 | ;Patient Relationship Code
|
---|
| 204 | PATRELSH(BPIEN02,BP57) ;
|
---|
| 205 | N Y
|
---|
| 206 | S Y=$P($G(^BPSC(BPIEN02,300)),U,6)
|
---|
| 207 | I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,5)
|
---|
| 208 | Q $S(Y=1:"CARDHOLDER",Y=2:"SPOUSE",Y=3:"CHILD",1:Y)
|
---|
| 209 | ;
|
---|
| 210 | PCN(BPIEN02) ;
|
---|
| 211 | Q $P($G(^BPSC(BPIEN02,100)),U,4)
|
---|
| 212 | ;
|
---|
| 213 | BIN(BPIEN02) ;
|
---|
| 214 | Q $P($G(^BPSC(BPIEN02,100)),U,1)
|
---|
| 215 | ;insurance name by 9002313.57 pointer
|
---|
| 216 | INSUR57(BPIEN57) ;
|
---|
| 217 | N BPINSN
|
---|
| 218 | S BPINSN=+$G(^BPSTL(BPIEN57,9))
|
---|
| 219 | Q $P($G(^BPSTL(BPIEN57,10,BPINSN,0)),U,7)
|
---|
| 220 | ;
|
---|
| 221 | QTY(BPIEN57) ;
|
---|
| 222 | Q +$P($G(^BPSTL(BPIEN57,5)),U,1)
|
---|
| 223 | UNTPRICE(BPIEN57) ;
|
---|
| 224 | Q +$P($G(^BPSTL(BPIEN57,5)),U,2)
|
---|
| 225 | TOTPRICE(BPIEN57) ;
|
---|
| 226 | Q +$P($G(^BPSTL(BPIEN57,5)),U,5)
|
---|
| 227 | ;get ECME pharmacy division ptr for LOG
|
---|
| 228 | LDIV(BPIEN57) ;
|
---|
| 229 | Q +$P($G(^BPSTL(BPIEN57,1)),U,7)
|
---|
| 230 | ;transaction code
|
---|
| 231 | TRCODE(BPIEN02) ;
|
---|
| 232 | Q $P($G(^BPSC(BPIEN02,100)),U,3)
|
---|
| 233 | ;days supply
|
---|
| 234 | DAYSSUPL(BPIEN02) ;
|
---|
| 235 | ;format D5NNN -> NNN
|
---|
| 236 | Q +$E($P($G(^BPSC(BPIEN02,400,1,400)),U,5),3,99)
|
---|
| 237 | ;
|
---|
| 238 | ;display response record
|
---|
| 239 | DISPRSP(BPLN,BP59,BPIEN03,BP57,BPSTYPE,BPSDTALT) ;
|
---|
| 240 | N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
|
---|
| 241 | N BPX,BPLN0,BPCNT,BPRJCDS,BPRJ,BPSTR1,BPSTYP2
|
---|
| 242 | S BPLN0=BPLN
|
---|
| 243 | S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"")
|
---|
| 244 | S BPSTR1="Response Information ("_BPSTYP2_")(#"_BPIEN03_")"
|
---|
| 245 | D SETLINE(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-"))
|
---|
| 246 | D SETLINE(.BPLN,"")
|
---|
| 247 | D SETLINE(.BPLN,"Response Received: "_$$RESPREC(BPIEN03,BPSDTALT))
|
---|
| 248 | D SETLINE(.BPLN,"Date of Service: "_$$DOSRSP(BPIEN03))
|
---|
| 249 | D SETLINE(.BPLN,"Transaction Response Status: "_$$RESPSTAT^BPSSCRU5(BPIEN03))
|
---|
| 250 | D SETLINE(.BPLN,"Total Amount Paid: $"_+$$TOTAMNT(BPIEN03,BP59,BP57))
|
---|
| 251 | D SETLINE(.BPLN,"Reject code(s): ")
|
---|
| 252 | D REJCODES^BPSSCRU5(BPIEN03,.BPRJCDS)
|
---|
| 253 | S BPRJ=""
|
---|
| 254 | F S BPRJ=$O(BPRJCDS(BPRJ)) Q:BPRJ="" D
|
---|
| 255 | . D SETLINE(.BPLN," "_$$GETRJNAM^BPSSCRU3(BPRJ))
|
---|
| 256 | D WRAPLN^BPSSCRU5(.BPLN,$$MESSAGE(BPIEN03),76,"Message: ",5)
|
---|
| 257 | D WRAPLN^BPSSCRU5(.BPLN,$$ADDMESS(BPIEN03),76,"Additional Message: ",5)
|
---|
| 258 | ;D WRAPLN^BPSSCRU5(.BPLN,$$DUR(BPIEN03),60,"DUR Information: ",5)
|
---|
| 259 | D WRAPLN^BPSSCRU5(.BPLN,$$DURRESP(BPIEN03),76,"DUR Response Info: ",5)
|
---|
| 260 | F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"")
|
---|
| 261 | Q
|
---|
| 262 | ;
|
---|
| 263 | RESPREC(BPIEN03,BPSDTALT) ;
|
---|
| 264 | N BPSDT
|
---|
| 265 | S BPSDT=+$P($G(^BPSR(BPIEN03,0)),U,2)
|
---|
| 266 | Q $$DATETIME^BPSSCRU5($S(BPSDT>0:BPSDT,1:BPSDTALT))
|
---|
| 267 | ;
|
---|
| 268 | DOSRSP(BPIEN03) ;
|
---|
| 269 | N BPDT
|
---|
| 270 | S BPDT=$P($G(^BPSR(BPIEN03,400)),U,1)\1
|
---|
| 271 | Q $E(BPDT,5,6)_"/"_$E(BPDT,7,8)_"/"_$E(BPDT,1,4)
|
---|
| 272 | ;
|
---|
| 273 | TOTAMNT(BPIEN03,BP59,BP57) ;
|
---|
| 274 | Q $$DFF2EXT^BPSECFM($P($G(^BPSR(BPIEN03,1000,1,500)),U,9))
|
---|
| 275 | ;
|
---|
| 276 | MESSAGE(BPIEN03) ;
|
---|
| 277 | Q $P($G(^BPSR(BPIEN03,504)),U)
|
---|
| 278 | ;
|
---|
| 279 | ADDMESS(BPIEN03) ;
|
---|
| 280 | Q $P($G(^BPSR(BPIEN03,1000,1,526)),U)
|
---|
| 281 | ;
|
---|
| 282 | DUR(BPIEN03) ;
|
---|
| 283 | Q "???"
|
---|
| 284 | ;
|
---|
| 285 | DURRESP(BPIEN03) ;
|
---|
| 286 | Q $P($G(^BPSR(BPIEN03,1000,1,525)),U)
|
---|