- IBCECOB2 ;ALB/CXW - IB COB MANAGEMENT SCREEN ;16-JUN-1999
- ;;2.0;INTEGRATED BILLING;**137,155,433,432,447,488,516,592,641,727**;21-MAR-1994;Build 34
- ;;Per VA Directive 6402, this routine should not be modified.
- ;
- EDI ;history detail display
- N IBIFN,IBDA
- D SEL(.IBDA,1)
- S IBDA=+$O(IBDA(0)),IBIFN=+$G(IBDA(IBDA))
- D EDI1(IBIFN)
- S VALMBCK="R"
- Q
- ;
- EDI1(IBIFN) ;
- N DFN
- Q:'IBIFN
- S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2)
- D EN^VALM("IBJT EDI STATUS")
- K:$D(IBFASTXT) IBFASTXT
- Q
- ;
- EDI2(IBIFN) ;
- N DFN
- Q:'IBIFN
- S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2)
- D EN^VALM("IBJT EDI STATUS ALONE")
- K:$D(IBFASTXT) IBFASTXT
- Q
- ;
- CSA ;claims status awaiting resolution
- N IBDAX
- D EN^IBCECSA
- I $D(IBFASTXT) K IBFASTXT
- S VALMBCK="R"
- Q
- ;
- RVEOB ;Review EOB
- D FULL^VALM1 W !
- N IBDA,IBIFN,IBCMT,IBSEL
- D SEL(.IBDA,1)
- S IBSEL=+$O(IBDA(0))
- S IBDA=$G(IBDA(IBSEL))
- S IBIFN=$P(IBDA,U),IBDA=$P(IBDA,U,3)
- I 'IBIFN G VEOBQ
- S IBCMT=$G(^TMP("IBCECOB1",$J,IBSEL))
- I IBCMT'="" D EN^VALM("IBCEM MRA REVIEW")
- VEOBQ K ^TMP("IBCECOC",$J)
- S VALMBCK="R"
- Q
- ;
- TPJI ;Third Party joint Inquiry
- N IBDA,IBIFN
- D SEL(.IBDA,1)
- S IBDA=+$O(IBDA(0)),IBIFN=+$G(IBDA(IBDA))
- I IBDA="" G TPJIQ
- D TPJI1(IBIFN)
- TPJIQ S VALMBCK="R"
- Q
- ;
- TPJI1(IBIFN) ;
- N DFN,IBNOTPJI
- Q:'IBIFN
- S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2),IBNOTPJI=1
- D EN^VALM("IBJT CLAIM INFO")
- K:$D(IBFASTXT) IBFASTXT
- Q
- ;
- PBILL ;Print bill
- N IBIFN,IBDA,IBRESUB
- D SEL(.IBDA,1)
- S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA))
- I IBDA="" G PBOUT
- S IBRESUB=$$RESUB^IBCECSA4(IBIFN,1,"P")
- I IBRESUB'>0 W !,*7,"This is not a transmittable bill or review not needed" D PAUSE^VALM1 G PBOUT
- I IBRESUB=2 D G PBOUT
- . N IB364
- . S IB364=+$P($G(IBDA(IBDA)),U,2)
- . D PRINT1^IBCEM03(IBIFN,.IBDA,IB364)
- D PBILL1(IBIFN,.IBRESULT) ;WCJ;US3380MODIFIED THIS LINE BUT WHY???
- PBOUT S VALMBCK="R"
- Q
- ;
- PMRA ;Print MRA
- N IBIFN,IBDA,IBDAX
- D SEL(.IBDA,1)
- ;IB*2.0*592 JRA Fix <UNDEFINED> error occurring when IBDA(+IBDA) does not exist. Also, ensure that IBDAX'=""
- ; since it's used as a subscript to ^IBM.
- ;S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)),IBDAX=$P(IBDA(+IBDA),U,3) ;IB*2.0*592 JRA ';'
- S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)),IBDAX=+$P($G(IBDA(+IBDA)),U,3) ;IB*2.0*592 JRA Add $G to SET of IBDAX and +$P
- G:'IBIFN PRMQ
- I '$G(IBMRANOT),$D(^IBM(361.1,IBDAX,"ERR")),'$$WARNMSE G PRMQ ; Claim contains Message Storage Errors
- D MRA^IBCEMRAA(.IBIFN)
- PRMQ S VALMBCK="R"
- Q
- PBILL1(IBIFN,IBRESULT) ;WCJ;IB641;US3380;added IBRESULT parameter
- N IBAC1,IBAC,DFN
- S IBRESULT=0 ;WCJ;IB641;US3380;default IBRESULT to 0 (not yet successful)
- Q:'IBIFN
- S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2)
- S IBAC=4,IBAC1=1
- ;D 4^IBCB1
- D ALT4^IBCB1(.IBRESULT) ; WCJ;IB641;US3380;added parameter to show whether it actually got printed
- D FULL^VALM1,PAUSE^VALM1
- Q
- ;
- CANCEL ;Cancel bill
- ; IBDA(IBDA)=IBIFN^IB364^ien of 361.1^user selection seq^user name~duz#
- ;
- N IBIFN,IBDA,IB364,IBEOBIFN,X,IBDENCT
- ;
- ; Check for security key
- I '$$KCHK^XUSRB("IB AUTHORIZE") D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!?5,"You don't hold the proper security key to access this function."
- . W !?5,"The necessary key is IB AUTHORIZE. Please see your manager."
- . D PAUSE^VALM1
- . Q
- ;
- D SEL(.IBDA,1)
- S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)),IB364=$P($G(IBDA(+IBDA)),U,2)
- S IBEOBIFN=$P($G(IBDA(+IBDA)),U,3)
- ;
- ; IB*2.0*432 - if not mra, only allow cancel of denied claims. If no EOB, check AR status instead
- I 'IBEOBIFN,$G(IBMRANOT)=1,$P($$ARSTATA^IBJTU4(IBIFN),U)="COLLECTED/CLOSED" D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!,*7,"You can only cancel denied claims. This claim is in a COLLECTED/CLOSED status"
- . W !,"Use Remove Action to remove claim from this worklist."
- . D PAUSE^VALM1
- . Q
- ;
- ; IB*2.0*432 - if not mra, only allow cancel of claims with multiple EOBS if none have processed.
- I $G(IBMRANOT)=1,'$$DENCHK(IBIFN,.IBDENCT),$G(IBDENCT)>1 D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!,*7,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- . W !,"Use Remove Action to remove claim from this worklist."
- . D PAUSE^VALM1
- . Q
- ;
- ; IB*2.0*432 - if not mra, only allow cancel of denied claims
- I IBEOBIFN,$G(IBMRANOT)=1,$P($G(^IBM(361.1,IBEOBIFN,0)),U,13)'=2 D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!?5,*7,"You can only cancel denied claims."
- . D PAUSE^VALM1
- . Q
- ;
- ;WCJ;IB727;check to see if all lines are covered in the MRA
- N IBRETSPLT
- I '$G(IBMRANOT),$$SPLIT^IBCEMU1(IBEOBIFN),$$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2)) D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!?5,"All claim lines must be adjudicated before cancelling a split claim."
- . D PAUSE^VALM1
- ;
- I IBDA D
- . I '$$LOCK^IBCEU0(361.1,IBEOBIFN) Q
- . D CANCEL^IBCEM3(.IBDA,IBIFN,IB364)
- . D UNLOCK^IBCEU0(361.1,IBEOBIFN)
- S VALMBCK="R"
- ;
- ; for non-MRA claims cancelled from worklist, set field 38
- I $G(IBMRANOT)=1,$P($G(^DGCR(399,IBIFN,0)),U,13)=7 S X=$$WLRMVF^IBCECOB1($S($G(IBIFN)'="":IBIFN,1:+$G(IBDA(IBDA))),"CA")
- I $G(IBDA)'="" D BLD^IBCECOB1
- CANCELQ Q
- ;
- CRD ; Correct Rejected/Denied claim protocol action
- N IBCNCRD
- S IBCNCRD=1
- CLONE ; 'Copy/cancel bill' protocol action
- ;N IBDA,IBQ,IBEOBIFN,IBKEY,X,IBDENCT
- N IBDA,IBQ,IBEOBIFN,IBKEY,X,IBDENCT,IBIFN ;WCJ;IB727
- ;
- ; Check for security key
- ;IB*2.0*516/TAZ - Remove check for IB CLON
- ;I '$$KCHK^XUSRB("IB AUTHORIZE") D G CLONEQ
- ;S IBKEY=$S($G(IBCNCRD)=1:"IB AUTHORIZE",1:"IB CLON")
- S IBKEY="IB AUTHORIZE"
- I '$$KCHK^XUSRB(IBKEY) D G CLONEQ
- . D FULL^VALM1 S VALMBCK="R"
- . ;W !!?5,"You don't hold the proper security key to access this function."
- . ;W !?5,"The necessary key is IB AUTHORIZE. Please see your manager."
- . W !!?5,"You must hold the "_IBKEY_" security key to access this function."
- . W !?5,"Please see your manager."
- . D PAUSE^VALM1
- . Q
- ;
- D SEL(.IBDA,1)
- ;S IBDA=$O(IBDA(""))
- S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)) ; IB727
- I IBDA="" G CLONEQ
- ;
- ; IB*2.0*432 - if not mra, only allow cancel of claims with multiple EOBS if none have processed.
- I $G(IBMRANOT)=1,'$$DENCHK(+IBDA(IBDA),.IBDENCT),$G(IBDENCT)>1 D G CANCELQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!,*7,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- . W !,"Use Remove Action to remove claim from this worklist."
- . D PAUSE^VALM1
- . Q
- ;
- ;WCJ;IB727;check to see if all lines are covered in the MRA
- N IBEOBIFN,IBRETSPLT
- S IBEOBIFN=$P($G(IBDA(+IBDA)),U,3)
- I '$G(IBMRANOT),$$SPLIT^IBCEMU1(IBEOBIFN),$$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2)) D G CLONEQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!?5,"All claim lines must be adjudicated before "_$S($G(IBCNCRD):"crd'ing",1:" cloning")_" a split claim."
- . D PAUSE^VALM1
- ;
- S IBEOBIFN=$P($G(IBDA(+IBDA)),U,3)
- I '$$LOCK^IBCEU0(361.1,IBEOBIFN) G CLONEQ
- D COPYCLON(+$G(IBDA(IBDA)),$P($G(IBDA(+IBDA)),U,2),.IBQ)
- D UNLOCK^IBCEU0(361.1,IBEOBIFN)
- ;
- ; for non-MRA claims cloned or corrected from worklist, set field 38
- I $G(IBMRANOT)=1,$G(IBQ)'="" S X=$$WLRMVF^IBCECOB1(+$G(IBDA(IBDA)),$S($G(IBCNCRD)=1:"CR",1:"CL"))
- ;
- CLONEQ ;
- S VALMBCK="R"
- D:$G(IBQ)'="" BLD^IBCECOB1
- Q
- ;
- COPYCLON(IBIFN,IB364,IBQ) ; Generic entry point for clone a bill from EDI processing
- ; IBIFN = original bill ien
- ; IB364 = the ien of the transmission bill entry in file 364
- ; IBQ = If bill is not cancelled, this is returned as null
- ; - pass by reference -
- ;
- N IBQUIT,IBCCCC,IBHV,Y,IBCAN,IBCE,IBDA,IBCNCOPY
- ;I '$$CANCKS^IBCEM3("CC",IBIFN) S IBQ="" G CCQ
- I $G(IBCNCRD)'=1,'$$CANCKS^IBCEM3("CC",IBIFN) S IBQ="" G CCQ
- ;
- ;S IBCAN=2,IBCE("EDI")=1,Y=IBIFN,IBCCCC=0,IBHV("IBIFN")=IBIFN,IBHV("IBIFN1")="",IBCNCOPY=1
- S IBCAN=2,IBCE("EDI")=1,Y=IBIFN,IBCCCC=0,IBHV("IBIFN")=IBIFN,IBHV("IBIFN1")=""
- I $G(IBCNCRD)'=1 S IBCNCOPY=1 D ^IBCCC
- I $G(IBCNCRD)=1 D CRD^IBCCC
- ;D ^IBCCC
- S IBIFN=IBHV("IBIFN")
- K IBCE("EDI") S IBQ=1
- I $P($G(^DGCR(399,IBIFN,0)),U,13)'=7 S IBQ=""
- I IBHV("IBIFN1") D
- . N IBU
- . S IBU="R"
- . S IBNIEN=+IBHV("IBIFN1")
- . I "23"'[$P($G(^DGCR(399,+IBHV("IBIFN1"),0)),U,13) D
- .. W:'$G(IBCEAUTO) !,*7,"Please note: the new bill was not AUTHORIZED.",!,"It can only be accessed now via the normal, non-EDI functions.",!,"Status of new bill is ",$$EXPAND^IBTRE(399,.13,$P(^DGCR(399,IBHV("IBIFN1"),0),U,13)) S IBU="C"
- . D UPDEDI^IBCEM(IB364,IBU)
- ;
- I '$G(IBCEAUTO) D PAUSE^VALM1
- CCQ Q
- ;
- PRO ; Copy for secondary/tertiary bill
- N VALMY,IBDA,Z,IBIFN,IBIFNH,IB364,IBCE,IBNCN
- ;I '$P($G(^IBE(350.9,1,8)),U,12) D G PROQ
- I '$P($G(^IBE(350.9,1,8)),U,12),$G(IBMRANOT)'=1 D G PROQ
- . D FULL^VALM1
- . W !!?5,"MRA's may not be processed at this time."
- . W !?5,"The IB site parameter ""Allow MRA Processing?"" is set to NO."
- . D PAUSE^VALM1
- . Q
- D SEL(.IBDA,1)
- S Z=$O(IBDA(0)),Z=$G(IBDA(+Z)) G:'Z PROQ
- S IBIFN=$P(Z,U),IB364=$P(Z,U,2),IBDA=$P(Z,U,3),IBIFNH=IBIFN
- N IBEOBIFN ;WCJ;IB727 v17
- S IBEOBIFN=IBDA ;WCJ;IB727 v17
- I 'IBIFN G PROQ
- I '$G(IBMRANOT),$D(^IBM(361.1,IBDA,"ERR")),'$$WARNMSE G PROQ ; Claim contains Message Storage Errors
- ;
- ;I $G(IBMRANOT),($$GET1^DIQ(399,IBIFN_",",36,"","","")="IB803"),'$$WARNIBMRANOT G PROQ ;TPF;EBILL-2436;IB*2.0*727
- I $G(IBMRANOT),$$FILERR^IBCAPP2(IBIFN),'$$WARNIBMRANOT G PROQ ;TPF;EBILL-3061;IB*2.0*727 v15
- ;
- ;WCJ;IB727;check to see if all lines are covered in the MRA
- N IBRETSPLT ;N IBEOBIFN,IBRETSPLT ;WCJ;IB727 v17
- ;S IBEOBIFN=$P($G(IBDA(+IBDA)),U,3) ;WCJ;IB727 v17
- I '$G(IBMRANOT),$$SPLIT^IBCEMU1(IBEOBIFN),$$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2)) D G PROQ
- . D FULL^VALM1 S VALMBCK="R"
- . W !!?5,"All claim lines must be adjudicated before processing a split claim to subsequent payer."
- . D PAUSE^VALM1
- ;
- I '$$LOCK^IBCEU0(361.1,IBDA) G PROQ
- D COBCOPY(IBIFN,IB364,2,IBDA,"BLD^IBCECOB1",.IBNCN)
- D UNLOCK^IBCEU0(361.1,IBDA)
- ;
- ; for non-MRA claims copied from work list, set field 38
- I $G(IBMRANOT)=1,$G(IBNCN)'="",($G(IBNCN)'=$G(IBIFN)) D
- .S X=$$WLRMVF^IBCECOB1($G(IBIFN),"PC")
- .;I $P($G(^DGCR(399,+IBNCN,"S")),U,9)'=1 D
- .;.W:'$G(IBCEAUTO) !,*7,"Please note: the new bill was not AUTHORIZED.",!,"It can only be accessed now via the normal, non-EDI functions.",!,"Status of new bill is ",$$EXPAND^IBTRE(399,.13,$P(^DGCR(399,IBNCN,0),U,13))
- .;.D PAUSE^VALM1
- .D:$G(IBMRANOT)=1 BLD^IBCECOB1
- .Q
- ;
- PROQ S VALMBCK="R"
- Q
- ;
- COBCOPY(IBIFN,IB364,IBFROM,IBIEN,IBBLD,IBNCN) ; Generic entry point for EDI COB copy
- ; IBIFN = original bill ien
- ; IB364 = the ien of the transmission bill entry in file 364
- ; IBFROM = 1 if called from CSA, 2 if called from COB/EOB processing
- ; IBIEN = entry in 361 (IBFROM=1) or 361.1 (IBFROM=2) being processed
- ; IBBLD = the name of the entrypoint that will rebuild the display
- ; IBNCN = by reference, returns the new claim ien if user completed the Copy process
- ;
- N IBCBASK,IBCBCOPY,IBCAN,IBIFNH,IBNSTAT,IBOSTAT,IBPRCOB,IBSECHK,IBLMVAR,IBAC,IBMRAIEN,IBDA,IBAUTO
- N IBCOB,IBCOBIL,IBCOBN,IBINS,IBINSN,IBINSOLD,IBMRAIO,IBMRAO,IBNMOLD,IBQUIT
- S (IBCBASK,IBCBCOPY,IBCAN,IBAUTO)=1,(IBPRCOB,IBSECHK)=0,(IBMRAIEN,IBDA)=IBIEN
- I $G(IBMRANOT)'=1,'IB364!'IBIFN W !,"Transmission record is missing for this bill" D PAUSE^VALM1 G COBCOPX
- ;
- S IBIFNH=IBIFN
- I IBFROM=2 S IBPRCOB=1
- ; IB*2.0*447 Check PR to include excess and percentages where applicable
- ;I $S($G(IBMRANOT)=1:$$TOT(IBIFN)'>0,1:$$PREOBTOT^IBCEU0(IBIFN,$G(IBMRANOT))'>0) D G COBCOPX
- I $$TOT(IBIFN,$G(IBMRANOT))'>0 D G COBCOPX
- . D FULL^VALM1
- . W !!?5,"There is no "_$S($G(IBMRANOT)=1:"balance remaining",1:"patient responsibility and/or excess charges")_" for this claim."
- . W !?5,"This claim may not be processed."
- . D PAUSE^VALM1
- . Q
- ;
- I $G(IBDA)'="",$P($G(^IBM(361.1,IBDA,0)),U,16)="1.5" D G COBCOPX
- . W !!,"This claim has already been processed as a sec/tert claim."
- . W !,"You will need to complete the authorization process for this claim."
- . D PAUSE^VALM1
- . D AUTH
- . Q
- ;
- ; If multiple EOBs and one is processed, make sure collected closed.
- I $G(IBMRANOT),$$CCCHK(IBIFN)<0 D G COBCOPX
- . W !,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- . W !,"Claim cannot be sent to next payer until AR status is Collected/Closed."
- . D PAUSE^VALM1
- . Q
- ;
- ; Get out if no next payer
- I '$P($G(^DGCR(399,IBIFN,"I"_($$COBN^IBCEF(IBIFN)+1))),U,1) D G COBCOPX
- . W !,"There is no next payer for this bill"
- . D PAUSE^VALM1
- . Q
- ;
- D DSPRB^IBCCCB0(IBIFN) ; display related bills
- S IBCE("EDI")=1
- D CHKB^IBCCCB ; process COB, create secondary bill
- S IBNCN=$G(IBCE("EDI","NEW")) ; get new claim ien
- S IBIFN=IBIFNH
- I IBSECHK G COBCOPX
- ;
- ; if user came from CBW, no need to view and authorize a 2nd time (already happens in IBCCCB)
- Q:$G(IBMRANOT)=1
- S IBV=1 D VIEW^IBCB2 ; display billing screens
- D AUTH ; authorize bill
- COBCOPX ;
- Q
- ;
- AUTH ; procedure to authorize the claim and refresh the screen
- K ^UTILITY($J) S IBAC=1,IBQUIT=0 D 3^IBCB1
- I '$D(IOUON)!'$D(IORVON) D ENS^%ZISS
- I $P($G(^IBM(361.1,IBMRAIEN,0)),U,16)=3 D UPDEDI^IBCEM(IB364,"Z")
- I $G(IBBLD)'="" D @IBBLD
- D PAUSE^VALM1
- AUTHX ;
- Q
- ;
- RES ;Resubmit bill by print
- N IBDA,IBIFN,IB364
- D SEL(.IBDA,1)
- S IBDA=+$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)),IB364=+$P($G(IBDA(IBDA)),U,2)
- I 'IBIFN G RESQ
- D PRINT1^IBCEM03(IBIFN,.IBDA,IB364)
- D PAUSE^VALM1
- I $G(IBDA)'="" D BLD^IBCECOB1
- RESQ S VALMBCK="R"
- Q
- ;
- EBI ;View an unauthorized transmitted bill
- N IBFLG,IBDA,IBIFN,IB364,DFN
- K ^TMP($J,"IBBILL")
- D FULL^VALM1
- ;
- D SEL(.IBDA,1)
- S IBDA=+$O(IBDA(""))
- S IBIFN=+$G(IBDA(IBDA)),IB364=+$P($G(IBDA(IBDA)),U,2),DFN=$P($G(^DGCR(399,IBIFN,0)),U,2)
- G:'IBIFN EDITQ
- S IBV=1 D VIEW^IBCB2
- I '$D(IOUON)!'$D(IORVON) D ENS^%ZISS
- D BLD^IBCECOB1
- EDITQ S VALMBCK="R"
- Q
- ;
- SEL(IBDA,ONE) ; Select entry(s) from list
- ; IBDA = array returned if selections made
- ; IBDA(n)=ien of bill selected (file 399)
- ; ONE = if set to 1, only one selection can be made at a time
- N IB
- K IBDA
- D FULL^VALM1
- D EN^VALM2($G(XQORNOD(0)),$S('$G(ONE):"",1:"S"))
- S IBDA=0 F S IBDA=$O(VALMY(IBDA)) Q:'IBDA S IBDA(IBDA)=$P($G(^TMP("IBCECOB",$J,+IBDA)),U,2,6)
- Q
- ;
- EXIT ; Exit out of COB
- D FASTEXIT^IBCEFG4
- I $G(IBFASTXT)=1 S IBFASTXT=5
- Q
- ;
- TOT(IBIFN,IBMRANOT) ; calculate if any balance remaining on non-MRA claim
- ; IBIFN = claim ien
- ; IBMRANOT = MRW/CBW flag (1=user came from CBW) added with IB*2.0*447
- N IBPRTOT,IBBLD,IBCBN,IBU2
- I $G(IBMRANOT)'=1 Q $S($$MSEDT^IBCEMU4(IBIFN)'="":$$MSPRE^IBCEMU4(IBIFN),1:$$PREOBTOT^IBCEU0(IBIFN))
- ; total up the payer paid amounts, if this is a 2ndary claim, be sure to account for what the primary paid also
- S IBU2=$G(^DGCR(399,IBIFN,"U2")),IBCBN=$$COBN^IBCEF(IBIFN),IBPRTOT=$$EOBTOT^IBCEU1(IBIFN,IBCBN)
- S:IBPRTOT<0 IBPRTOT=0 ; don't allow negative prior payment or offset
- S:IBCBN=2 IBPRTOT=IBPRTOT+$P(IBU2,U,4)
- S:IBCBN=3 IBPRTOT=IBPRTOT+$P(IBU2,U,4)+$P(IBU2,U,5)
- S:IBPRTOT<0 IBPRTOT=0 ; don't allow negative prior payment or offset
- ; Subtract payer paid amount from Total Charges from BILLS/CLAIMS (#399) file, don't allow neg
- S IBBLD=$P($G(^DGCR(399,IBIFN,"U1")),U,1)-IBPRTOT
- S:IBBLD<0 IBBLD=0
- Q IBBLD
- ;
- CCCHK(IBIFN) ; If there are multiple EOBS on file for this claim, then one of them must be processed and AR status must be collected closed to process.
- ; returns 1 if true
- ; 0 if there are not multiple EOBs or mulitple EOBs and none are processed (all denials)
- ; -1 if false
- N IBDA,IBCT,IBPROC,IBARSTAT,IBEOBNDX,IBEOB
- S IBCT=0,IBPROC=0
- F IBEOBNDX="B","C" D
- .S IBDA=0 F S IBDA=$O(^IBM(361.1,IBEOBNDX,IBIFN,IBDA)) Q:'+IBDA D
- ..Q:$D(IBEOB(IBDA))
- ..Q:$P($G(^IBM(361.1,IBDA,0)),U,4)=1 ; only count EOBs
- ..S IBEOB(IBDA)="",IBCT=IBCT+1
- ..I $P($G(^IBM(361.1,IBDA,0)),U,13)=1 S IBPROC=1
- I IBCT<2 Q 0 ; less than 2 EOBs
- I 'IBPROC Q 0 ; no EOBs with status processed
- S IBARSTAT=$$ARSTATA^IBJTU4(IBIFN) ; get status of AR
- I $P(IBARSTAT,U)="COLLECTED/CLOSED" Q 1
- Q -1
- ;
- DENCHK(IBIFN,IBCT) ; Make sure all EOBs from this claim are denied.
- ; Input: IBIFN - IEN to 399
- ; IBCT - by reference. Return count of EOBs.
- ; Output: returns 1 if there is at least one EOB and that none of the EOBS are processed.
- ; otherwise 0
- ;
- N IBDA,IBPROC,IBEOBNDX,IBEOB
- S IBCT=0,IBPROC=0
- F IBEOBNDX="B","C" D
- .S IBDA=0 F S IBDA=$O(^IBM(361.1,IBEOBNDX,IBIFN,IBDA)) Q:'+IBDA D
- ..Q:$D(IBEOB(IBDA))
- ..Q:$P($G(^IBM(361.1,IBDA,0)),U,4)=1 ; only count EOBs
- ..S IBEOB(IBDA)="",IBCT=IBCT+1
- ..I $P($G(^IBM(361.1,IBDA,0)),U,13)=1 S IBPROC=1
- I IBCT,'IBPROC Q 1 ; there is at least one EOB and none of the EOBS are processed.
- Q 0 ;
- ;
- WARNMSE() ; Display MSE Warning and check if we should continue.
- D FULL^VALM1
- N DIR,X,Y
- S DIR("A",1)="WARNING : The MRA for this claim caused a Data Mismatch/Message Storage Error."
- S DIR("A",2)="If you continue, the secondary claim may not contain the correct data."
- S DIR("A")="Do you wish to continue? ",DIR("B")="NO",DIR(0)="YA" D ^DIR
- I Y>0 Q 1 ; Okay to continue.
- Q 0 ;
- ;
- WARNIBMRANOT() ;TPF;EBILL-2436;IB*2.0*727;WCJ-lessened to warning
- D FULL^VALM1
- N DIR,X,Y
- S DIR("A",1)="WARNING: An EOB/MRA for this claim caused a Data Mismatch/Message Storage Error."
- S DIR("A",2)="If you continue, the subsequent claim may not contain the correct data."
- S DIR("A")="Do you wish to continue? ",DIR("B")="NO",DIR(0)="YA" D ^DIR
- I Y>0 Q 1 ; Okay to continue.
- Q 0 ;
- ;
- D FULL^VALM1
- W !!,"WARNING: An EOB for this Claim has an MSE error and cannot be processed."
- N DIR
- S DIR(0)="E"
- D ^DIR
- Q 0
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCECOB2 17983 printed Feb 18, 2025@23:36:04 Page 2
- IBCECOB2 ;ALB/CXW - IB COB MANAGEMENT SCREEN ;16-JUN-1999
- +1 ;;2.0;INTEGRATED BILLING;**137,155,433,432,447,488,516,592,641,727**;21-MAR-1994;Build 34
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- EDI ;history detail display
- +1 NEW IBIFN,IBDA
- +2 DO SEL(.IBDA,1)
- +3 SET IBDA=+$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(IBDA))
- +4 DO EDI1(IBIFN)
- +5 SET VALMBCK="R"
- +6 QUIT
- +7 ;
- EDI1(IBIFN) ;
- +1 NEW DFN
- +2 if 'IBIFN
- QUIT
- +3 SET DFN=$PIECE($GET(^DGCR(399,IBIFN,0)),U,2)
- +4 DO EN^VALM("IBJT EDI STATUS")
- +5 if $DATA(IBFASTXT)
- KILL IBFASTXT
- +6 QUIT
- +7 ;
- EDI2(IBIFN) ;
- +1 NEW DFN
- +2 if 'IBIFN
- QUIT
- +3 SET DFN=$PIECE($GET(^DGCR(399,IBIFN,0)),U,2)
- +4 DO EN^VALM("IBJT EDI STATUS ALONE")
- +5 if $DATA(IBFASTXT)
- KILL IBFASTXT
- +6 QUIT
- +7 ;
- CSA ;claims status awaiting resolution
- +1 NEW IBDAX
- +2 DO EN^IBCECSA
- +3 IF $DATA(IBFASTXT)
- KILL IBFASTXT
- +4 SET VALMBCK="R"
- +5 QUIT
- +6 ;
- RVEOB ;Review EOB
- +1 DO FULL^VALM1
- WRITE !
- +2 NEW IBDA,IBIFN,IBCMT,IBSEL
- +3 DO SEL(.IBDA,1)
- +4 SET IBSEL=+$ORDER(IBDA(0))
- +5 SET IBDA=$GET(IBDA(IBSEL))
- +6 SET IBIFN=$PIECE(IBDA,U)
- SET IBDA=$PIECE(IBDA,U,3)
- +7 IF 'IBIFN
- GOTO VEOBQ
- +8 SET IBCMT=$GET(^TMP("IBCECOB1",$JOB,IBSEL))
- +9 IF IBCMT'=""
- DO EN^VALM("IBCEM MRA REVIEW")
- VEOBQ KILL ^TMP("IBCECOC",$JOB)
- +1 SET VALMBCK="R"
- +2 QUIT
- +3 ;
- TPJI ;Third Party joint Inquiry
- +1 NEW IBDA,IBIFN
- +2 DO SEL(.IBDA,1)
- +3 SET IBDA=+$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(IBDA))
- +4 IF IBDA=""
- GOTO TPJIQ
- +5 DO TPJI1(IBIFN)
- TPJIQ SET VALMBCK="R"
- +1 QUIT
- +2 ;
- TPJI1(IBIFN) ;
- +1 NEW DFN,IBNOTPJI
- +2 if 'IBIFN
- QUIT
- +3 SET DFN=$PIECE($GET(^DGCR(399,IBIFN,0)),U,2)
- SET IBNOTPJI=1
- +4 DO EN^VALM("IBJT CLAIM INFO")
- +5 if $DATA(IBFASTXT)
- KILL IBFASTXT
- +6 QUIT
- +7 ;
- PBILL ;Print bill
- +1 NEW IBIFN,IBDA,IBRESUB
- +2 DO SEL(.IBDA,1)
- +3 SET IBDA=$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(+IBDA))
- +4 IF IBDA=""
- GOTO PBOUT
- +5 SET IBRESUB=$$RESUB^IBCECSA4(IBIFN,1,"P")
- +6 IF IBRESUB'>0
- WRITE !,*7,"This is not a transmittable bill or review not needed"
- DO PAUSE^VALM1
- GOTO PBOUT
- +7 IF IBRESUB=2
- Begin DoDot:1
- +8 NEW IB364
- +9 SET IB364=+$PIECE($GET(IBDA(IBDA)),U,2)
- +10 DO PRINT1^IBCEM03(IBIFN,.IBDA,IB364)
- End DoDot:1
- GOTO PBOUT
- +11 ;WCJ;US3380MODIFIED THIS LINE BUT WHY???
- DO PBILL1(IBIFN,.IBRESULT)
- PBOUT SET VALMBCK="R"
- +1 QUIT
- +2 ;
- PMRA ;Print MRA
- +1 NEW IBIFN,IBDA,IBDAX
- +2 DO SEL(.IBDA,1)
- +3 ;IB*2.0*592 JRA Fix <UNDEFINED> error occurring when IBDA(+IBDA) does not exist. Also, ensure that IBDAX'=""
- +4 ; since it's used as a subscript to ^IBM.
- +5 ;S IBDA=$O(IBDA(0)),IBIFN=+$G(IBDA(+IBDA)),IBDAX=$P(IBDA(+IBDA),U,3) ;IB*2.0*592 JRA ';'
- +6 ;IB*2.0*592 JRA Add $G to SET of IBDAX and +$P
- SET IBDA=$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(+IBDA))
- SET IBDAX=+$PIECE($GET(IBDA(+IBDA)),U,3)
- +7 if 'IBIFN
- GOTO PRMQ
- +8 ; Claim contains Message Storage Errors
- IF '$GET(IBMRANOT)
- IF $DATA(^IBM(361.1,IBDAX,"ERR"))
- IF '$$WARNMSE
- GOTO PRMQ
- +9 DO MRA^IBCEMRAA(.IBIFN)
- PRMQ SET VALMBCK="R"
- +1 QUIT
- PBILL1(IBIFN,IBRESULT) ;WCJ;IB641;US3380;added IBRESULT parameter
- +1 NEW IBAC1,IBAC,DFN
- +2 ;WCJ;IB641;US3380;default IBRESULT to 0 (not yet successful)
- SET IBRESULT=0
- +3 if 'IBIFN
- QUIT
- +4 SET DFN=$PIECE($GET(^DGCR(399,IBIFN,0)),U,2)
- +5 SET IBAC=4
- SET IBAC1=1
- +6 ;D 4^IBCB1
- +7 ; WCJ;IB641;US3380;added parameter to show whether it actually got printed
- DO ALT4^IBCB1(.IBRESULT)
- +8 DO FULL^VALM1
- DO PAUSE^VALM1
- +9 QUIT
- +10 ;
- CANCEL ;Cancel bill
- +1 ; IBDA(IBDA)=IBIFN^IB364^ien of 361.1^user selection seq^user name~duz#
- +2 ;
- +3 NEW IBIFN,IBDA,IB364,IBEOBIFN,X,IBDENCT
- +4 ;
- +5 ; Check for security key
- +6 IF '$$KCHK^XUSRB("IB AUTHORIZE")
- Begin DoDot:1
- +7 DO FULL^VALM1
- SET VALMBCK="R"
- +8 WRITE !!?5,"You don't hold the proper security key to access this function."
- +9 WRITE !?5,"The necessary key is IB AUTHORIZE. Please see your manager."
- +10 DO PAUSE^VALM1
- +11 QUIT
- End DoDot:1
- GOTO CANCELQ
- +12 ;
- +13 DO SEL(.IBDA,1)
- +14 SET IBDA=$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(+IBDA))
- SET IB364=$PIECE($GET(IBDA(+IBDA)),U,2)
- +15 SET IBEOBIFN=$PIECE($GET(IBDA(+IBDA)),U,3)
- +16 ;
- +17 ; IB*2.0*432 - if not mra, only allow cancel of denied claims. If no EOB, check AR status instead
- +18 IF 'IBEOBIFN
- IF $GET(IBMRANOT)=1
- IF $PIECE($$ARSTATA^IBJTU4(IBIFN),U)="COLLECTED/CLOSED"
- Begin DoDot:1
- +19 DO FULL^VALM1
- SET VALMBCK="R"
- +20 WRITE !!,*7,"You can only cancel denied claims. This claim is in a COLLECTED/CLOSED status"
- +21 WRITE !,"Use Remove Action to remove claim from this worklist."
- +22 DO PAUSE^VALM1
- +23 QUIT
- End DoDot:1
- GOTO CANCELQ
- +24 ;
- +25 ; IB*2.0*432 - if not mra, only allow cancel of claims with multiple EOBS if none have processed.
- +26 IF $GET(IBMRANOT)=1
- IF '$$DENCHK(IBIFN,.IBDENCT)
- IF $GET(IBDENCT)>1
- Begin DoDot:1
- +27 DO FULL^VALM1
- SET VALMBCK="R"
- +28 WRITE !!,*7,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- +29 WRITE !,"Use Remove Action to remove claim from this worklist."
- +30 DO PAUSE^VALM1
- +31 QUIT
- End DoDot:1
- GOTO CANCELQ
- +32 ;
- +33 ; IB*2.0*432 - if not mra, only allow cancel of denied claims
- +34 IF IBEOBIFN
- IF $GET(IBMRANOT)=1
- IF $PIECE($GET(^IBM(361.1,IBEOBIFN,0)),U,13)'=2
- Begin DoDot:1
- +35 DO FULL^VALM1
- SET VALMBCK="R"
- +36 WRITE !!?5,*7,"You can only cancel denied claims."
- +37 DO PAUSE^VALM1
- +38 QUIT
- End DoDot:1
- GOTO CANCELQ
- +39 ;
- +40 ;WCJ;IB727;check to see if all lines are covered in the MRA
- +41 NEW IBRETSPLT
- +42 IF '$GET(IBMRANOT)
- IF $$SPLIT^IBCEMU1(IBEOBIFN)
- IF $$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2))
- Begin DoDot:1
- +43 DO FULL^VALM1
- SET VALMBCK="R"
- +44 WRITE !!?5,"All claim lines must be adjudicated before cancelling a split claim."
- +45 DO PAUSE^VALM1
- End DoDot:1
- GOTO CANCELQ
- +46 ;
- +47 IF IBDA
- Begin DoDot:1
- +48 IF '$$LOCK^IBCEU0(361.1,IBEOBIFN)
- QUIT
- +49 DO CANCEL^IBCEM3(.IBDA,IBIFN,IB364)
- +50 DO UNLOCK^IBCEU0(361.1,IBEOBIFN)
- End DoDot:1
- +51 SET VALMBCK="R"
- +52 ;
- +53 ; for non-MRA claims cancelled from worklist, set field 38
- +54 IF $GET(IBMRANOT)=1
- IF $PIECE($GET(^DGCR(399,IBIFN,0)),U,13)=7
- SET X=$$WLRMVF^IBCECOB1($SELECT($GET(IBIFN)'="":IBIFN,1:+$GET(IBDA(IBDA))),"CA")
- +55 IF $GET(IBDA)'=""
- DO BLD^IBCECOB1
- CANCELQ QUIT
- +1 ;
- CRD ; Correct Rejected/Denied claim protocol action
- +1 NEW IBCNCRD
- +2 SET IBCNCRD=1
- CLONE ; 'Copy/cancel bill' protocol action
- +1 ;N IBDA,IBQ,IBEOBIFN,IBKEY,X,IBDENCT
- +2 ;WCJ;IB727
- NEW IBDA,IBQ,IBEOBIFN,IBKEY,X,IBDENCT,IBIFN
- +3 ;
- +4 ; Check for security key
- +5 ;IB*2.0*516/TAZ - Remove check for IB CLON
- +6 ;I '$$KCHK^XUSRB("IB AUTHORIZE") D G CLONEQ
- +7 ;S IBKEY=$S($G(IBCNCRD)=1:"IB AUTHORIZE",1:"IB CLON")
- +8 SET IBKEY="IB AUTHORIZE"
- +9 IF '$$KCHK^XUSRB(IBKEY)
- Begin DoDot:1
- +10 DO FULL^VALM1
- SET VALMBCK="R"
- +11 ;W !!?5,"You don't hold the proper security key to access this function."
- +12 ;W !?5,"The necessary key is IB AUTHORIZE. Please see your manager."
- +13 WRITE !!?5,"You must hold the "_IBKEY_" security key to access this function."
- +14 WRITE !?5,"Please see your manager."
- +15 DO PAUSE^VALM1
- +16 QUIT
- End DoDot:1
- GOTO CLONEQ
- +17 ;
- +18 DO SEL(.IBDA,1)
- +19 ;S IBDA=$O(IBDA(""))
- +20 ; IB727
- SET IBDA=$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(+IBDA))
- +21 IF IBDA=""
- GOTO CLONEQ
- +22 ;
- +23 ; IB*2.0*432 - if not mra, only allow cancel of claims with multiple EOBS if none have processed.
- +24 IF $GET(IBMRANOT)=1
- IF '$$DENCHK(+IBDA(IBDA),.IBDENCT)
- IF $GET(IBDENCT)>1
- Begin DoDot:1
- +25 DO FULL^VALM1
- SET VALMBCK="R"
- +26 WRITE !!,*7,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- +27 WRITE !,"Use Remove Action to remove claim from this worklist."
- +28 DO PAUSE^VALM1
- +29 QUIT
- End DoDot:1
- GOTO CANCELQ
- +30 ;
- +31 ;WCJ;IB727;check to see if all lines are covered in the MRA
- +32 NEW IBEOBIFN,IBRETSPLT
- +33 SET IBEOBIFN=$PIECE($GET(IBDA(+IBDA)),U,3)
- +34 IF '$GET(IBMRANOT)
- IF $$SPLIT^IBCEMU1(IBEOBIFN)
- IF $$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2))
- Begin DoDot:1
- +35 DO FULL^VALM1
- SET VALMBCK="R"
- +36 WRITE !!?5,"All claim lines must be adjudicated before "_$SELECT($GET(IBCNCRD):"crd'ing",1:" cloning")_" a split claim."
- +37 DO PAUSE^VALM1
- End DoDot:1
- GOTO CLONEQ
- +38 ;
- +39 SET IBEOBIFN=$PIECE($GET(IBDA(+IBDA)),U,3)
- +40 IF '$$LOCK^IBCEU0(361.1,IBEOBIFN)
- GOTO CLONEQ
- +41 DO COPYCLON(+$GET(IBDA(IBDA)),$PIECE($GET(IBDA(+IBDA)),U,2),.IBQ)
- +42 DO UNLOCK^IBCEU0(361.1,IBEOBIFN)
- +43 ;
- +44 ; for non-MRA claims cloned or corrected from worklist, set field 38
- +45 IF $GET(IBMRANOT)=1
- IF $GET(IBQ)'=""
- SET X=$$WLRMVF^IBCECOB1(+$GET(IBDA(IBDA)),$SELECT($GET(IBCNCRD)=1:"CR",1:"CL"))
- +46 ;
- CLONEQ ;
- +1 SET VALMBCK="R"
- +2 if $GET(IBQ)'=""
- DO BLD^IBCECOB1
- +3 QUIT
- +4 ;
- COPYCLON(IBIFN,IB364,IBQ) ; Generic entry point for clone a bill from EDI processing
- +1 ; IBIFN = original bill ien
- +2 ; IB364 = the ien of the transmission bill entry in file 364
- +3 ; IBQ = If bill is not cancelled, this is returned as null
- +4 ; - pass by reference -
- +5 ;
- +6 NEW IBQUIT,IBCCCC,IBHV,Y,IBCAN,IBCE,IBDA,IBCNCOPY
- +7 ;I '$$CANCKS^IBCEM3("CC",IBIFN) S IBQ="" G CCQ
- +8 IF $GET(IBCNCRD)'=1
- IF '$$CANCKS^IBCEM3("CC",IBIFN)
- SET IBQ=""
- GOTO CCQ
- +9 ;
- +10 ;S IBCAN=2,IBCE("EDI")=1,Y=IBIFN,IBCCCC=0,IBHV("IBIFN")=IBIFN,IBHV("IBIFN1")="",IBCNCOPY=1
- +11 SET IBCAN=2
- SET IBCE("EDI")=1
- SET Y=IBIFN
- SET IBCCCC=0
- SET IBHV("IBIFN")=IBIFN
- SET IBHV("IBIFN1")=""
- +12 IF $GET(IBCNCRD)'=1
- SET IBCNCOPY=1
- DO ^IBCCC
- +13 IF $GET(IBCNCRD)=1
- DO CRD^IBCCC
- +14 ;D ^IBCCC
- +15 SET IBIFN=IBHV("IBIFN")
- +16 KILL IBCE("EDI")
- SET IBQ=1
- +17 IF $PIECE($GET(^DGCR(399,IBIFN,0)),U,13)'=7
- SET IBQ=""
- +18 IF IBHV("IBIFN1")
- Begin DoDot:1
- +19 NEW IBU
- +20 SET IBU="R"
- +21 SET IBNIEN=+IBHV("IBIFN1")
- +22 IF "23"'[$PIECE($GET(^DGCR(399,+IBHV("IBIFN1"),0)),U,13)
- Begin DoDot:2
- +23 if '$GET(IBCEAUTO)
- WRITE !,*7,"Please note: the new bill was not AUTHORIZED.",!,"It can only be accessed now via the normal, non-EDI functions.",!,"Status of new bill is ",$$EXPAND^IBTRE(399,.13,$PIECE(^DGCR(399,IBHV("IBIFN1"),0),U,13))
- SET IBU="C"
- End DoDot:2
- +24 DO UPDEDI^IBCEM(IB364,IBU)
- End DoDot:1
- +25 ;
- +26 IF '$GET(IBCEAUTO)
- DO PAUSE^VALM1
- CCQ QUIT
- +1 ;
- PRO ; Copy for secondary/tertiary bill
- +1 NEW VALMY,IBDA,Z,IBIFN,IBIFNH,IB364,IBCE,IBNCN
- +2 ;I '$P($G(^IBE(350.9,1,8)),U,12) D G PROQ
- +3 IF '$PIECE($GET(^IBE(350.9,1,8)),U,12)
- IF $GET(IBMRANOT)'=1
- Begin DoDot:1
- +4 DO FULL^VALM1
- +5 WRITE !!?5,"MRA's may not be processed at this time."
- +6 WRITE !?5,"The IB site parameter ""Allow MRA Processing?"" is set to NO."
- +7 DO PAUSE^VALM1
- +8 QUIT
- End DoDot:1
- GOTO PROQ
- +9 DO SEL(.IBDA,1)
- +10 SET Z=$ORDER(IBDA(0))
- SET Z=$GET(IBDA(+Z))
- if 'Z
- GOTO PROQ
- +11 SET IBIFN=$PIECE(Z,U)
- SET IB364=$PIECE(Z,U,2)
- SET IBDA=$PIECE(Z,U,3)
- SET IBIFNH=IBIFN
- +12 ;WCJ;IB727 v17
- NEW IBEOBIFN
- +13 ;WCJ;IB727 v17
- SET IBEOBIFN=IBDA
- +14 IF 'IBIFN
- GOTO PROQ
- +15 ; Claim contains Message Storage Errors
- IF '$GET(IBMRANOT)
- IF $DATA(^IBM(361.1,IBDA,"ERR"))
- IF '$$WARNMSE
- GOTO PROQ
- +16 ;
- +17 ;I $G(IBMRANOT),($$GET1^DIQ(399,IBIFN_",",36,"","","")="IB803"),'$$WARNIBMRANOT G PROQ ;TPF;EBILL-2436;IB*2.0*727
- +18 ;TPF;EBILL-3061;IB*2.0*727 v15
- IF $GET(IBMRANOT)
- IF $$FILERR^IBCAPP2(IBIFN)
- IF '$$WARNIBMRANOT
- GOTO PROQ
- +19 ;
- +20 ;WCJ;IB727;check to see if all lines are covered in the MRA
- +21 ;N IBEOBIFN,IBRETSPLT ;WCJ;IB727 v17
- NEW IBRETSPLT
- +22 ;S IBEOBIFN=$P($G(IBDA(+IBDA)),U,3) ;WCJ;IB727 v17
- +23 IF '$GET(IBMRANOT)
- IF $$SPLIT^IBCEMU1(IBEOBIFN)
- IF $$SPLIT2^IBCEMU1(IBEOBIFN)=0!($$SPLIT2^IBCEMU1(IBEOBIFN)=-1&($$SPLTMRA^IBCEMU1(IBIFN,.IBRETSPLT)<2))
- Begin DoDot:1
- +24 DO FULL^VALM1
- SET VALMBCK="R"
- +25 WRITE !!?5,"All claim lines must be adjudicated before processing a split claim to subsequent payer."
- +26 DO PAUSE^VALM1
- End DoDot:1
- GOTO PROQ
- +27 ;
- +28 IF '$$LOCK^IBCEU0(361.1,IBDA)
- GOTO PROQ
- +29 DO COBCOPY(IBIFN,IB364,2,IBDA,"BLD^IBCECOB1",.IBNCN)
- +30 DO UNLOCK^IBCEU0(361.1,IBDA)
- +31 ;
- +32 ; for non-MRA claims copied from work list, set field 38
- +33 IF $GET(IBMRANOT)=1
- IF $GET(IBNCN)'=""
- IF ($GET(IBNCN)'=$GET(IBIFN))
- Begin DoDot:1
- +34 SET X=$$WLRMVF^IBCECOB1($GET(IBIFN),"PC")
- +35 ;I $P($G(^DGCR(399,+IBNCN,"S")),U,9)'=1 D
- +36 ;.W:'$G(IBCEAUTO) !,*7,"Please note: the new bill was not AUTHORIZED.",!,"It can only be accessed now via the normal, non-EDI functions.",!,"Status of new bill is ",$$EXPAND^IBTRE(399,.13,$P(^DGCR(399,IBNCN,0),U,13))
- +37 ;.D PAUSE^VALM1
- +38 if $GET(IBMRANOT)=1
- DO BLD^IBCECOB1
- +39 QUIT
- End DoDot:1
- +40 ;
- PROQ SET VALMBCK="R"
- +1 QUIT
- +2 ;
- COBCOPY(IBIFN,IB364,IBFROM,IBIEN,IBBLD,IBNCN) ; Generic entry point for EDI COB copy
- +1 ; IBIFN = original bill ien
- +2 ; IB364 = the ien of the transmission bill entry in file 364
- +3 ; IBFROM = 1 if called from CSA, 2 if called from COB/EOB processing
- +4 ; IBIEN = entry in 361 (IBFROM=1) or 361.1 (IBFROM=2) being processed
- +5 ; IBBLD = the name of the entrypoint that will rebuild the display
- +6 ; IBNCN = by reference, returns the new claim ien if user completed the Copy process
- +7 ;
- +8 NEW IBCBASK,IBCBCOPY,IBCAN,IBIFNH,IBNSTAT,IBOSTAT,IBPRCOB,IBSECHK,IBLMVAR,IBAC,IBMRAIEN,IBDA,IBAUTO
- +9 NEW IBCOB,IBCOBIL,IBCOBN,IBINS,IBINSN,IBINSOLD,IBMRAIO,IBMRAO,IBNMOLD,IBQUIT
- +10 SET (IBCBASK,IBCBCOPY,IBCAN,IBAUTO)=1
- SET (IBPRCOB,IBSECHK)=0
- SET (IBMRAIEN,IBDA)=IBIEN
- +11 IF $GET(IBMRANOT)'=1
- IF 'IB364!'IBIFN
- WRITE !,"Transmission record is missing for this bill"
- DO PAUSE^VALM1
- GOTO COBCOPX
- +12 ;
- +13 SET IBIFNH=IBIFN
- +14 IF IBFROM=2
- SET IBPRCOB=1
- +15 ; IB*2.0*447 Check PR to include excess and percentages where applicable
- +16 ;I $S($G(IBMRANOT)=1:$$TOT(IBIFN)'>0,1:$$PREOBTOT^IBCEU0(IBIFN,$G(IBMRANOT))'>0) D G COBCOPX
- +17 IF $$TOT(IBIFN,$GET(IBMRANOT))'>0
- Begin DoDot:1
- +18 DO FULL^VALM1
- +19 WRITE !!?5,"There is no "_$SELECT($GET(IBMRANOT)=1:"balance remaining",1:"patient responsibility and/or excess charges")_" for this claim."
- +20 WRITE !?5,"This claim may not be processed."
- +21 DO PAUSE^VALM1
- +22 QUIT
- End DoDot:1
- GOTO COBCOPX
- +23 ;
- +24 IF $GET(IBDA)'=""
- IF $PIECE($GET(^IBM(361.1,IBDA,0)),U,16)="1.5"
- Begin DoDot:1
- +25 WRITE !!,"This claim has already been processed as a sec/tert claim."
- +26 WRITE !,"You will need to complete the authorization process for this claim."
- +27 DO PAUSE^VALM1
- +28 DO AUTH
- +29 QUIT
- End DoDot:1
- GOTO COBCOPX
- +30 ;
- +31 ; If multiple EOBs and one is processed, make sure collected closed.
- +32 IF $GET(IBMRANOT)
- IF $$CCCHK(IBIFN)<0
- Begin DoDot:1
- +33 WRITE !,"Multiple EOBs exist for this claim and at least one has EOB status of PROCESSED."
- +34 WRITE !,"Claim cannot be sent to next payer until AR status is Collected/Closed."
- +35 DO PAUSE^VALM1
- +36 QUIT
- End DoDot:1
- GOTO COBCOPX
- +37 ;
- +38 ; Get out if no next payer
- +39 IF '$PIECE($GET(^DGCR(399,IBIFN,"I"_($$COBN^IBCEF(IBIFN)+1))),U,1)
- Begin DoDot:1
- +40 WRITE !,"There is no next payer for this bill"
- +41 DO PAUSE^VALM1
- +42 QUIT
- End DoDot:1
- GOTO COBCOPX
- +43 ;
- +44 ; display related bills
- DO DSPRB^IBCCCB0(IBIFN)
- +45 SET IBCE("EDI")=1
- +46 ; process COB, create secondary bill
- DO CHKB^IBCCCB
- +47 ; get new claim ien
- SET IBNCN=$GET(IBCE("EDI","NEW"))
- +48 SET IBIFN=IBIFNH
- +49 IF IBSECHK
- GOTO COBCOPX
- +50 ;
- +51 ; if user came from CBW, no need to view and authorize a 2nd time (already happens in IBCCCB)
- +52 if $GET(IBMRANOT)=1
- QUIT
- +53 ; display billing screens
- SET IBV=1
- DO VIEW^IBCB2
- +54 ; authorize bill
- DO AUTH
- COBCOPX ;
- +1 QUIT
- +2 ;
- AUTH ; procedure to authorize the claim and refresh the screen
- +1 KILL ^UTILITY($JOB)
- SET IBAC=1
- SET IBQUIT=0
- DO 3^IBCB1
- +2 IF '$DATA(IOUON)!'$DATA(IORVON)
- DO ENS^%ZISS
- +3 IF $PIECE($GET(^IBM(361.1,IBMRAIEN,0)),U,16)=3
- DO UPDEDI^IBCEM(IB364,"Z")
- +4 IF $GET(IBBLD)'=""
- DO @IBBLD
- +5 DO PAUSE^VALM1
- AUTHX ;
- +1 QUIT
- +2 ;
- RES ;Resubmit bill by print
- +1 NEW IBDA,IBIFN,IB364
- +2 DO SEL(.IBDA,1)
- +3 SET IBDA=+$ORDER(IBDA(0))
- SET IBIFN=+$GET(IBDA(+IBDA))
- SET IB364=+$PIECE($GET(IBDA(IBDA)),U,2)
- +4 IF 'IBIFN
- GOTO RESQ
- +5 DO PRINT1^IBCEM03(IBIFN,.IBDA,IB364)
- +6 DO PAUSE^VALM1
- +7 IF $GET(IBDA)'=""
- DO BLD^IBCECOB1
- RESQ SET VALMBCK="R"
- +1 QUIT
- +2 ;
- EBI ;View an unauthorized transmitted bill
- +1 NEW IBFLG,IBDA,IBIFN,IB364,DFN
- +2 KILL ^TMP($JOB,"IBBILL")
- +3 DO FULL^VALM1
- +4 ;
- +5 DO SEL(.IBDA,1)
- +6 SET IBDA=+$ORDER(IBDA(""))
- +7 SET IBIFN=+$GET(IBDA(IBDA))
- SET IB364=+$PIECE($GET(IBDA(IBDA)),U,2)
- SET DFN=$PIECE($GET(^DGCR(399,IBIFN,0)),U,2)
- +8 if 'IBIFN
- GOTO EDITQ
- +9 SET IBV=1
- DO VIEW^IBCB2
- +10 IF '$DATA(IOUON)!'$DATA(IORVON)
- DO ENS^%ZISS
- +11 DO BLD^IBCECOB1
- EDITQ SET VALMBCK="R"
- +1 QUIT
- +2 ;
- SEL(IBDA,ONE) ; Select entry(s) from list
- +1 ; IBDA = array returned if selections made
- +2 ; IBDA(n)=ien of bill selected (file 399)
- +3 ; ONE = if set to 1, only one selection can be made at a time
- +4 NEW IB
- +5 KILL IBDA
- +6 DO FULL^VALM1
- +7 DO EN^VALM2($GET(XQORNOD(0)),$SELECT('$GET(ONE):"",1:"S"))
- +8 SET IBDA=0
- FOR
- SET IBDA=$ORDER(VALMY(IBDA))
- if 'IBDA
- QUIT
- SET IBDA(IBDA)=$PIECE($GET(^TMP("IBCECOB",$JOB,+IBDA)),U,2,6)
- +9 QUIT
- +10 ;
- EXIT ; Exit out of COB
- +1 DO FASTEXIT^IBCEFG4
- +2 IF $GET(IBFASTXT)=1
- SET IBFASTXT=5
- +3 QUIT
- +4 ;
- TOT(IBIFN,IBMRANOT) ; calculate if any balance remaining on non-MRA claim
- +1 ; IBIFN = claim ien
- +2 ; IBMRANOT = MRW/CBW flag (1=user came from CBW) added with IB*2.0*447
- +3 NEW IBPRTOT,IBBLD,IBCBN,IBU2
- +4 IF $GET(IBMRANOT)'=1
- QUIT $SELECT($$MSEDT^IBCEMU4(IBIFN)'="":$$MSPRE^IBCEMU4(IBIFN),1:$$PREOBTOT^IBCEU0(IBIFN))
- +5 ; total up the payer paid amounts, if this is a 2ndary claim, be sure to account for what the primary paid also
- +6 SET IBU2=$GET(^DGCR(399,IBIFN,"U2"))
- SET IBCBN=$$COBN^IBCEF(IBIFN)
- SET IBPRTOT=$$EOBTOT^IBCEU1(IBIFN,IBCBN)
- +7 ; don't allow negative prior payment or offset
- if IBPRTOT<0
- SET IBPRTOT=0
- +8 if IBCBN=2
- SET IBPRTOT=IBPRTOT+$PIECE(IBU2,U,4)
- +9 if IBCBN=3
- SET IBPRTOT=IBPRTOT+$PIECE(IBU2,U,4)+$PIECE(IBU2,U,5)
- +10 ; don't allow negative prior payment or offset
- if IBPRTOT<0
- SET IBPRTOT=0
- +11 ; Subtract payer paid amount from Total Charges from BILLS/CLAIMS (#399) file, don't allow neg
- +12 SET IBBLD=$PIECE($GET(^DGCR(399,IBIFN,"U1")),U,1)-IBPRTOT
- +13 if IBBLD<0
- SET IBBLD=0
- +14 QUIT IBBLD
- +15 ;
- CCCHK(IBIFN) ; If there are multiple EOBS on file for this claim, then one of them must be processed and AR status must be collected closed to process.
- +1 ; returns 1 if true
- +2 ; 0 if there are not multiple EOBs or mulitple EOBs and none are processed (all denials)
- +3 ; -1 if false
- +4 NEW IBDA,IBCT,IBPROC,IBARSTAT,IBEOBNDX,IBEOB
- +5 SET IBCT=0
- SET IBPROC=0
- +6 FOR IBEOBNDX="B","C"
- Begin DoDot:1
- +7 SET IBDA=0
- FOR
- SET IBDA=$ORDER(^IBM(361.1,IBEOBNDX,IBIFN,IBDA))
- if '+IBDA
- QUIT
- Begin DoDot:2
- +8 if $DATA(IBEOB(IBDA))
- QUIT
- +9 ; only count EOBs
- if $PIECE($GET(^IBM(361.1,IBDA,0)),U,4)=1
- QUIT
- +10 SET IBEOB(IBDA)=""
- SET IBCT=IBCT+1
- +11 IF $PIECE($GET(^IBM(361.1,IBDA,0)),U,13)=1
- SET IBPROC=1
- End DoDot:2
- End DoDot:1
- +12 ; less than 2 EOBs
- IF IBCT<2
- QUIT 0
- +13 ; no EOBs with status processed
- IF 'IBPROC
- QUIT 0
- +14 ; get status of AR
- SET IBARSTAT=$$ARSTATA^IBJTU4(IBIFN)
- +15 IF $PIECE(IBARSTAT,U)="COLLECTED/CLOSED"
- QUIT 1
- +16 QUIT -1
- +17 ;
- DENCHK(IBIFN,IBCT) ; Make sure all EOBs from this claim are denied.
- +1 ; Input: IBIFN - IEN to 399
- +2 ; IBCT - by reference. Return count of EOBs.
- +3 ; Output: returns 1 if there is at least one EOB and that none of the EOBS are processed.
- +4 ; otherwise 0
- +5 ;
- +6 NEW IBDA,IBPROC,IBEOBNDX,IBEOB
- +7 SET IBCT=0
- SET IBPROC=0
- +8 FOR IBEOBNDX="B","C"
- Begin DoDot:1
- +9 SET IBDA=0
- FOR
- SET IBDA=$ORDER(^IBM(361.1,IBEOBNDX,IBIFN,IBDA))
- if '+IBDA
- QUIT
- Begin DoDot:2
- +10 if $DATA(IBEOB(IBDA))
- QUIT
- +11 ; only count EOBs
- if $PIECE($GET(^IBM(361.1,IBDA,0)),U,4)=1
- QUIT
- +12 SET IBEOB(IBDA)=""
- SET IBCT=IBCT+1
- +13 IF $PIECE($GET(^IBM(361.1,IBDA,0)),U,13)=1
- SET IBPROC=1
- End DoDot:2
- End DoDot:1
- +14 ; there is at least one EOB and none of the EOBS are processed.
- IF IBCT
- IF 'IBPROC
- QUIT 1
- +15 ;
- QUIT 0
- +16 ;
- WARNMSE() ; Display MSE Warning and check if we should continue.
- +1 DO FULL^VALM1
- +2 NEW DIR,X,Y
- +3 SET DIR("A",1)="WARNING : The MRA for this claim caused a Data Mismatch/Message Storage Error."
- +4 SET DIR("A",2)="If you continue, the secondary claim may not contain the correct data."
- +5 SET DIR("A")="Do you wish to continue? "
- SET DIR("B")="NO"
- SET DIR(0)="YA"
- DO ^DIR
- +6 ; Okay to continue.
- IF Y>0
- QUIT 1
- +7 ;
- QUIT 0
- +8 ;
- WARNIBMRANOT() ;TPF;EBILL-2436;IB*2.0*727;WCJ-lessened to warning
- +1 DO FULL^VALM1
- +2 NEW DIR,X,Y
- +3 SET DIR("A",1)="WARNING: An EOB/MRA for this claim caused a Data Mismatch/Message Storage Error."
- +4 SET DIR("A",2)="If you continue, the subsequent claim may not contain the correct data."
- +5 SET DIR("A")="Do you wish to continue? "
- SET DIR("B")="NO"
- SET DIR(0)="YA"
- DO ^DIR
- +6 ; Okay to continue.
- IF Y>0
- QUIT 1
- +7 ;
- QUIT 0
- +8 ;
- +9 DO FULL^VALM1
- +10 WRITE !!,"WARNING: An EOB for this Claim has an MSE error and cannot be processed."
- +11 NEW DIR
- +12 SET DIR(0)="E"
- +13 DO ^DIR
- +14 QUIT 0