BPSSCRLG ;BHAM ISC/SS - ECME LOGINFO ;05-APR-05 ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45 ;;Per VHA Directive 2004-038, this routine should not be modified. ; Q ; EN ; -- main entry point for BPS LSTMN LOG D EN^VALM("BPS LSTMN LOG") Q ; HDR ; -- header code S VALMHDR(1)="Claim Log information" S VALMHDR(2)="" Q ; INIT ; -- init variables and list array N BPSELCLM,LINE S BPSELCLM=$G(@VALMAR@("SELLN")) ; piece 2: patient ien #2 ; piece 3: insurance ien #36 ; piece 4: ptr to #9002313.59 S LINE=1 S VALMCNT=$$PREPINFO(.LINE,$P(BPSELCLM,U,2),$P(BPSELCLM,U,3),$P(BPSELCLM,U,4)) S:VALMCNT>1 VALMCNT=VALMCNT-1 Q ; HELP ; -- help code S X="?" D DISP^XQORM1 W !! K X Q ; EXIT ; -- exit code Q ; EXPND ; -- expand code Q ; ; LOG ;entry point for LOG menu option of the main User Screen N BPRET,BPSEL I '$D(@(VALMAR)) Q D FULL^VALM1 W !,"Enter the line number for which you wish to print claim logs." S BPSEL=$$ASKLINE^BPSSCRU4("Select item","C","Please select SINGLE Rx Line.") I BPSEL<1 S VALMBCK="R" Q D SAVESEL(BPSEL,VALMAR) D EN S VALMBCK="R" Q ; ;save selection in order to use inside enclosed ListManager copy ;BPSEL - selected line ;BPVALMR - parent VALMAR SAVESEL(BPSEL,BPVALMR) ; D CLEANIT S ^TMP("BPSLOG",$J,"VALM","SELLN")=BPSEL S ^TMP("BPSLOG",$J,"VALM","PARENT")=BPVALMR M ^TMP("BPSLOG",$J,"VALM","VIEWPARAMS")=@BPVALMR@("VIEWPARAMS") Q ; CLEANIT ; K ^TMP("BPSLOG",$J,"VALM") Q ;input: ; BPDFN: patient ien #2 ; BP36: insurance ien #36 ; BP59: ptr to #9002313.59 ; returns number of lines PREPINFO(BPLN,BPDFN,BP36,BP59) ; I '$G(BP59) Q 0 I '$G(BP36) Q 0 I '$G(BPDFN) Q 0 N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17) N BPX,BPRXIEN,BPREF,BP1,BPLSTCLM,BPLSTRSP,BPDAT59,BPUSR,BPSTRT,BPHIST,BPQ N BPDT,BPLN0,BPCNT S BP1=$$RXREF^BPSSCRU2(BP59) S BPRXIEN=$P(BP1,U,1) S BPREF=$P(BP1,U,2) S BPDAT59(0)=$G(^BPST(BP59,0)) ;create a history D MKHIST^BPSSCRU5(BP59,.BPHIST) ; S BPLN0=BPLN D SETLINE(.BPLN,"Pharmacy ECME Log") D SETLINE(.BPLN,"") S BPX=$$RJ^BPSSCR02("VA Rx #: ",19)_$$LJ^BPSSCR02($$RXNUM^BPSSCRU2(+BPRXIEN),13) S BPX=BPX_$$RJ^BPSSCR02("Fill #: ",10)_$$LJ^BPSSCR02(BPREF,4) S BPX=BPX_$$RJ^BPSSCR02("ECME Claim Rx #: ",18)_$$LJ^BPSSCR02(BP59,20) D SETLINE(.BPLN,BPX) S BPX=$$RJ^BPSSCR02("Patient Name: ",19) S BPX=BPX_$$LJ^BPSSCR02($$PATNAME^BPSSCRU2(BPDFN)_" "_$$SSN4^BPSSCRU2(BPDFN),30) D SETLINE(.BPLN,BPX) S BPX=$$RJ^BPSSCR02("Last Submitted: ",19) S BPSTRT=$P(BPDAT59(0),U,11) ;@# need to check with analyst if this is a START DATE I BPSTRT]"" S BPX=BPX_$$DATETIME^BPSSCRU5(BPSTRT) D SETLINE(.BPLN,BPX) S BPX=$$RJ^BPSSCR02("Last Submitted By: ",19) S BPUSR=$P(BPDAT59(0),U,10) I BPUSR]"" S BPX=BPX_$$GETUSRNM^BPSSCRU1(BPUSR) D SETLINE(.BPLN,BPX) ; ;find the latest claim S BP1=+$O(BPHIST("C",99999999),-1) I BP1=0 D SETLINE(.BPLN,""),SETLINE(.BPLN,"------ No electronic claims ------") Q BPLN S BP1=+$O(BPHIST("C",BP1,0)) S BPX=$$RJ^BPSSCR02("Last VA Claim #: ",19)_$P($G(^BPSC(+BP1,0)),U,1) D SETLINE(.BPLN,BPX) F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"") ;process history N BPTYPE,BPIEN,BPIENRS S BPDT=99999999 F S BPDT=$O(BPHIST("C",BPDT),-1) Q:+BPDT=0 D . S BPIEN=+$O(BPHIST("C",BPDT,0)) Q:BPIEN="" . D DISPCLM(.BPLN,BP59,BPIEN,+BPHIST("C",BPDT,BPIEN),$P(BPHIST("C",BPDT,BPIEN),U,2),BPDT) . S BPIENRS=0 . F S BPIENRS=$O(BPHIST("C",BPDT,BPIEN,"R",BPIENRS)) Q:+BPIENRS=0 D . . D DISPRSP(.BPLN,BP59,BPIENRS,+BPHIST("C",BPDT,BPIEN,"R",BPIENRS),$P(BPHIST("C",BPDT,BPIEN,"R",BPIENRS),U,2),BPDT) Q BPLN ;calls SET^VALM10, ;increments BPLINE SETLINE(BPLINE,BPSTR) ; D SET^VALM10(BPLINE,BPSTR) S BPLINE=BPLINE+1 Q ;display claim record DISPCLM(BPLN,BP59,BPIEN02,BP57,BPSTYPE,BPSDTALT) ; N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17) N BPX,BPLN0,BPCNT,BPSTR1,BPSTYP2 S BPLN0=BPLN S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"") S BPSTR1="Transmission Information ("_BPSTYP2_")(#"_BPIEN02_")" D SETLINE(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-")) D SETLINE(.BPLN,"") D SETLINE(.BPLN,"Created on: "_$$CREATEDT(BPIEN02,BPSDTALT)) D SETLINE(.BPLN,"VA Claim ID: "_$P($G(^BPSC(+BPIEN02,0)),U,1)) D SETLINE(.BPLN,"Transaction Type: "_$$TRTYPE^BPSSCRU5($$TRCODE(BPIEN02))) D SETLINE(.BPLN,"Date of Service: "_$$DOSCLM(BPIEN02)) D SETLINE(.BPLN,"NDC: "_$$LNDC^BPSSCRU5(BPIEN02)) D SETLINE(.BPLN,"ECME Pharmacy: "_$$DIVNAME^BPSSCRDS($$LDIV(BP57))) D SETLINE(.BPLN,"Days Supply: "_$$DAYSSUPL(BPIEN02)) S BPX="Qty: "_$$QTY(BP57) S BPX=BPX_" Unit Price: "_$$UNTPRICE(BP57) S BPX=BPX_" Total Price: "_$$TOTPRICE(BP57) D SETLINE(.BPLN,BPX) D SETLINE(.BPLN,"") D SETLINE(.BPLN,"Insurance Name: "_$$INSUR57(BP57)) D SETLINE(.BPLN,"BIN: "_$$BIN(BPIEN02)) D SETLINE(.BPLN,"PCN: "_$$PCN(BPIEN02)) D SETLINE(.BPLN,"Group ID: "_$$GRPID(BPIEN02)) D SETLINE(.BPLN,"Cardholder ID: "_$$CRDHLDID(BPIEN02)) D SETLINE(.BPLN,"Patient Relationship Code: "_$$PATRELSH(BPIEN02,BP57)) D SETLINE(.BPLN,"Cardholder First Name: "_$$CRDHLDFN(BPIEN02,BP57)) D SETLINE(.BPLN,"Cardholder Last Name: "_$$CRDHLDLN(BPIEN02,BP57)) F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"") S BPLN0=BPLN D SETLINE(.BPLN,"Plan ID: "_$$PLANID(BP57)) D SETLINE(.BPLN,"Payer Sheet IEN: "_$$PYRIEN^BPSSCRU5(BPIEN02)) D SETLINE(.BPLN,"B2 Payer Sheet IEN: "_$$B2PYRIEN^BPSSCRU5(BPIEN02,BP57)) D SETLINE(.BPLN,"B3 Rebill Payer Sheet: "_$$B3PYRIEN^BPSSCRU5(BPIEN02,BP59,BP57)) D SETLINE(.BPLN,"Certify Mode: "_$$CERTMOD(BP57)) D SETLINE(.BPLN,"Cert IEN: "_$$CERTIEN(BP57)) F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"") Q ;Date os service date in BPS CLAIM file DOSCLM(BPIEN02) ; N BPDT S BPDT=$P($G(^BPSC(BPIEN02,400,1,400)),U,1)\1 Q $E(BPDT,5,6)_"/"_$E(BPDT,7,8)_"/"_$E(BPDT,1,4) ;record created on CREATEDT(BPIEN02,BPSDTALT) ; N BPSDT S BPSDT=+$P($G(^BPSC(BPIEN02,0)),U,6) Q $$DATETIME^BPSSCRU5($S(BPSDT>0:BPSDT,1:BPSDTALT)) Q ;Plan ID from #9002313.57 PLANID(BP57) ; Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,1) ; CERTMOD(BP57) ; Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,5) ;Software Vendor/Cert ID CERTIEN(BP57) ; Q $P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),0)),U,6) ;group ID GRPID(BPIEN02) ; Q $E($P($G(^BPSC(BPIEN02,300)),U,1),3,99) ; ;Cardholder ID CRDHLDID(BPIEN02) ; Q $E($P($G(^BPSC(BPIEN02,300)),U,2),3,99) ;Cardholder First name CRDHLDFN(BPIEN02,BP57) ; N Y S Y=$P($G(^BPSC(BPIEN02,300)),U,12) I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,6) Q Y ;Cardholder Last Name CRDHLDLN(BPIEN02,BP57) ; N Y S Y=$P($G(^BPSC(BPIEN02,300)),U,13) I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,7) Q Y ;Patient Relationship Code PATRELSH(BPIEN02,BP57) ; N Y S Y=$P($G(^BPSC(BPIEN02,300)),U,6) I $L(Y)=0 S Y=$P($G(^BPSTL(BP57,10,+$G(^BPSTL(BP57,9)),1)),U,5) Q $S(Y=1:"CARDHOLDER",Y=2:"SPOUSE",Y=3:"CHILD",1:Y) ; PCN(BPIEN02) ; Q $P($G(^BPSC(BPIEN02,100)),U,4) ; BIN(BPIEN02) ; Q $P($G(^BPSC(BPIEN02,100)),U,1) ;insurance name by 9002313.57 pointer INSUR57(BPIEN57) ; N BPINSN S BPINSN=+$G(^BPSTL(BPIEN57,9)) Q $P($G(^BPSTL(BPIEN57,10,BPINSN,0)),U,7) ; QTY(BPIEN57) ; Q +$P($G(^BPSTL(BPIEN57,5)),U,1) UNTPRICE(BPIEN57) ; Q +$P($G(^BPSTL(BPIEN57,5)),U,2) TOTPRICE(BPIEN57) ; Q +$P($G(^BPSTL(BPIEN57,5)),U,5) ;get ECME pharmacy division ptr for LOG LDIV(BPIEN57) ; Q +$P($G(^BPSTL(BPIEN57,1)),U,7) ;transaction code TRCODE(BPIEN02) ; Q $P($G(^BPSC(BPIEN02,100)),U,3) ;days supply DAYSSUPL(BPIEN02) ; ;format D5NNN -> NNN Q +$E($P($G(^BPSC(BPIEN02,400,1,400)),U,5),3,99) ; ;display response record DISPRSP(BPLN,BP59,BPIEN03,BP57,BPSTYPE,BPSDTALT) ; N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17) N BPX,BPLN0,BPCNT,BPRJCDS,BPRJ,BPSTR1,BPSTYP2 S BPLN0=BPLN S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"") S BPSTR1="Response Information ("_BPSTYP2_")(#"_BPIEN03_")" D SETLINE(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-")) D SETLINE(.BPLN,"") D SETLINE(.BPLN,"Response Received: "_$$RESPREC(BPIEN03,BPSDTALT)) D SETLINE(.BPLN,"Date of Service: "_$$DOSRSP(BPIEN03)) D SETLINE(.BPLN,"Transaction Response Status: "_$$RESPSTAT^BPSSCRU5(BPIEN03)) D SETLINE(.BPLN,"Total Amount Paid: $"_+$$TOTAMNT(BPIEN03,BP59,BP57)) D SETLINE(.BPLN,"Reject code(s): ") D REJCODES^BPSSCRU5(BPIEN03,.BPRJCDS) S BPRJ="" F S BPRJ=$O(BPRJCDS(BPRJ)) Q:BPRJ="" D . D SETLINE(.BPLN," "_$$GETRJNAM^BPSSCRU3(BPRJ)) D WRAPLN^BPSSCRU5(.BPLN,$$MESSAGE(BPIEN03),76,"Message: ",5) D WRAPLN^BPSSCRU5(.BPLN,$$ADDMESS(BPIEN03),76,"Additional Message: ",5) ;D WRAPLN^BPSSCRU5(.BPLN,$$DUR(BPIEN03),60,"DUR Information: ",5) D WRAPLN^BPSSCRU5(.BPLN,$$DURRESP(BPIEN03),76,"DUR Response Info: ",5) F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE(.BPLN,"") Q ; RESPREC(BPIEN03,BPSDTALT) ; N BPSDT S BPSDT=+$P($G(^BPSR(BPIEN03,0)),U,2) Q $$DATETIME^BPSSCRU5($S(BPSDT>0:BPSDT,1:BPSDTALT)) ; DOSRSP(BPIEN03) ; N BPDT S BPDT=$P($G(^BPSR(BPIEN03,400)),U,1)\1 Q $E(BPDT,5,6)_"/"_$E(BPDT,7,8)_"/"_$E(BPDT,1,4) ; TOTAMNT(BPIEN03,BP59,BP57) ; Q $$DFF2EXT^BPSECFM($P($G(^BPSR(BPIEN03,1000,1,500)),U,9)) ; MESSAGE(BPIEN03) ; Q $P($G(^BPSR(BPIEN03,504)),U) ; ADDMESS(BPIEN03) ; Q $P($G(^BPSR(BPIEN03,1000,1,526)),U) ; DUR(BPIEN03) ; Q "???" ; DURRESP(BPIEN03) ; Q $P($G(^BPSR(BPIEN03,1000,1,525)),U)