IBJTBA1 ;ALB/TMK/PJH - TPJI BILL CHARGE INFO SCREEN ;Sep 30, 2014@12:07:36
 ;;2.0;INTEGRATED BILLING;**135,265,155,349,417,451,488,511,613**;21-MAR-94;Build 28
 ;Per VA Directive 6402, this routine should not be modified.
 ;
SHEOB(IBI,IBSPL,IBEOBCT,IBCTOF) ; Format EOB called from IBJTBA
 ; IBSPL = 0 if EOB represents one bill's payment
 ;       =  1 if AR had to split the EOB between multiple bills
 ; Assumes IBLN is defined and returns it with line count
 ; Assumes IBEOBDET may be defined as a flag to control detail level of print
 N X,IBPT,IBCN,IBM,IBM1,IBM2,IBTY,IBPY,IBPR,IBST,IBSTR,IBCA,IBTS,IBTA,Z,Z0
 S X="0.00"
 S IBM=$G(^IBM(361.1,IBI,0))
 S IBTY=$P(IBM,U,4),IBTY=$S(IBTY:"MEDICARE MRA",1:"NORMAL EOB")
 I IBTY'["MRA",IBSPL S IBTY="A/R SPLIT/COVERS MORE THAN 1 BILL"
 I $P(IBM,U,13)>1,$P(IBM,U,13)<5 S IBTY=IBTY_" ("_$$EXTERNAL^DILFD(361.1,.13,,$P(IBM,U,13))_")"
 S IBCN=$P(IBM,U,14),IBPY=$P(IBM,U,2)
 S:IBPY IBPY=$P($G(^DIC(36,IBPY,0)),U)
 S IBPR=$$FMTE^XLFDT($P(IBM,U,6)),IBST=$P(IBM,U,16)
 S IBST=$$EXPAND^IBTRE(361.1,.16,+IBST)
 S IBM1=$G(^IBM(361.1,IBI,1))
 ;
 S IBPT=$P(IBM1,U,2)   ; patient responsibility 1.02 file
 I $P(IBM,U,4),$D(^IBM(361.1,IBI,"ERR")) S IBPT=0  ; filing error
 ; If MRA & UB, then calculate patient responsiblity value
 I $P(IBM,U,4),$$FT^IBCEF(+$P(IBM,U,1))=3 S IBPT=$$PTRESPI^IBCECOB1(IBI)
 ;
 S IBCA=$P(IBM1,U)
 S IBM2=$G(^IBM(361.1,IBI,2)),IBTA=$P(IBM2,U,3)
 ; if no Total Allowed Amount, sum up amounts on Line Level Adjustment
 I IBTA="" S IBTA=$$ALLOWED^IBCEMU2(IBI)
 S IBTS=$P(IBM2,U,4)
 D MRA2
 S IBLN=$$SET^IBJTBA("",IBLN)
 I '$G(IBEOBDET),IBSPL D
 . S IBSTR=$$SETLN^IBJTBA("    **A/R CORRECTED PAYMENT DATA:","",1,50),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . S IBSTR=$$SETLN^IBJTBA("     TOTAL AMT PD: "_$J(+$P($G(^IBM(361.1,IBI,1)),U,1),"",2),"",1,75),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . S Z=0 F  S Z=$O(^IBM(361.1,IBI,8,Z)) Q:'Z  S Z0=$G(^(Z,0)) D
 .. S IBSTR=$$SETLN^IBJTBA($E($J("",8)_$S($P(Z0,U,3):$$BN1^PRCAFN(+$P(Z0,U,3)),1:"[suspense]"_$P(Z0,U))_$J("",25),1,25)_"  "_$J(+$P(Z0,U,2),"",2),"",1,75),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ;
 I $G(IBEOBDET) D
 . I $P($G(^IBM(361.1,IBI,0)),U,4) D  Q     ; Medicare MRA processing
 .. N VALMCNT
 .. K ^TMP("IBCECSD",$J)
 .. D GETEOB^IBCECSA6(IBI,0,,+$G(IBLN)-1)
 .. S Z=0 F  S Z=$O(^TMP("IBCECSD",$J,Z)) Q:'Z  S IBSTR=$$SETLN^IBJTBA($G(^TMP("IBCECSD",$J,Z,0)),"",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 .. K ^TMP("IBCECSD",$J)
 .. D EOBERR
 .. Q
 . ;
 . ; Normal EOB processing
 . N VALMCNT
 . K ^TMP("PRCA_EOB",$J)
 . ; IB*2*511 - do not display EEOB detail if EEOB has been "removed"
 . Q:$P($G(^IBM(361.1,IBI,102)),U)
 . D GETEOB^IBCECSA6(IBI,1)
 . S Z=0 F  S Z=$O(^TMP("PRCA_EOB",$J,IBI,Z)) Q:'Z  S IBSTR=$$SETLN^IBJTBA($G(^TMP("PRCA_EOB",$J,IBI,Z)),"",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . K ^TMP("PRCA_EOB",$J)
 . D EOBERR
 . Q
 ;
 Q
 ;
MRA2 ;
 N IBD
 S IBLN=$$SET^IBJTBA("",IBLN)
 S IBD="EOB/MRA Information"_$S($D(IBCTOF):" ("_$G(IBEOBCT)_" OF "_IBCTOF_")",1:"")
 S IBSTR=$$SETLN^IBJTBA(IBD,"",30,45),$E(IBSTR,1,2)=">>",IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ; IB*2*511 - do not display EEOB detail if EEOB has been removed
 I IBTY'["MRA",$P($G(^IBM(361.1,IBI,102)),U) D REMOVE Q
 S IBD="EOB Type: "_IBTY,IBSTR=$$SETLN^IBJTBA(IBD,"",5,59)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBD="ICN: "_IBCN,IBSTR=$$SETLN^IBJTBA(IBD,"",10,30)
 S IBD="Patient Resp Amount: "_$S('IBPT:X,1:IBPT)
 S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,44,35)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBD="Payer Name: "_IBPY,IBSTR=$$SETLN^IBJTBA(IBD,"",3,40)
 S IBD="Total Allowed Amount: "_$S('IBTA:X,1:IBTA)
 S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,43,36)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBD="EOB Date: "_IBPR,IBSTR=$$SETLN^IBJTBA(IBD,"",5,35)
 S IBD="Total Submitted Charges: "_$S('IBTS:X,1:IBTS)
 S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,40,39)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBD="Svc From Dt: "_$$DAT1^IBOUTL($P(IBM1,U,10))
 S IBSTR=$$SETLN^IBJTBA(IBD,"",2,38)
 S IBD="Svc To Dt: "_$$DAT1^IBOUTL($P(IBM1,U,11))
 S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,54,25)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=""
 I IBTY["MRA" S IBD="MRA Review Status: "_IBST,IBSTR=$$SETLN^IBJTBA(IBD,"",2,38)
 S IBD=$S('$G(IBSPL):"  ",1:"**")_"Reported Payment Amt: "_$S('IBCA:$J(X,"",2),1:$J(+IBCA,"",2))
 S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,41,37)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ;
 ; begin IB*2.0*451
 ; display Trace # and ERA # for every EOB record found. MRAs will not have an ERA #, only a Trace #
 I IBTY]"" D
 . N IBAPS,IBERAE,IBTRACE
 . S IBTRACE=$P($G(^IBM(361.1,IBI,0)),U,7)
 . I IBTRACE]"" S IBERAE=$O(^RCY(344.4,"D",IBTRACE,""))
 . S IBD="       ERA #: "_$G(IBERAE),IBSTR=$$SETLN^IBJTBA(IBD,"",1,25)
 . ; include AUTO-POST STATUS for auto-posted ERAs
 . ; *613 to fix undefined variable
 . I $G(IBERAE)]"" S IBAPS=$P($G(^RCY(344.4,IBERAE,4)),"^",2) I IBAPS]"" D
 . . S IBD=IBD_"   Auto-Post Status: "_$S(IBAPS=2:"Complete",1:"Not Complete") S IBSTR=$$SETLN^IBJTBA(IBD,"",1,80)
 . S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . S IBD="     Trace #: "_$G(IBTRACE),IBSTR=$$SETLN^IBJTBA(IBD,"",1,80) ; Trace # can be up to 50 characters long
 . S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . S IBLN=$$SET^IBJTBA("",IBLN)
 ; end IB*2.0*451
 ; 
 I IBTY["MRA",$D(^IBM(361.1,IBI,21)) D
 . S IBD=$TR($J("",35)," ","-")_"Review"_$TR($J("",38)," ","-")
 . S IBSTR=$$SETLN^IBJTBA(IBD,"",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . S (IBST,IBCN)=0 F  S IBCN=$O(^IBM(361.1,IBI,21,IBCN)) Q:'IBCN  S X=$G(^(IBCN,0)) D
 .. S IBST=0
 .. S IBD="Review Date: "_$$DAT1^IBOUTL($P(X,U))
 .. S IBSTR=$$SETLN^IBJTBA(IBD,"",1,30)
 .. S IBD="Reviewed By: "_$P($G(^VA(200,+$P(X,U,2),0)),U)
 .. S IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,40,39)
 .. S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 .. S IBD=0 F  S IBD=$O(^IBM(361.1,IBI,21,IBCN,1,IBD)) Q:'IBD  S IBSTR=$$SETLN^IBJTBA($S('IBST:"Comments: ",1:"")_$G(^(IBD,0)),"",1,$S('IBST:69,1:79)),IBST=1,IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 . I 'IBST D
 .. S IBSTR=$$SETLN^IBJTBA("None","",1,10)
 .. S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ;
MOVE    ;
 ;Display details of any EEOB MOVE/COPY
 I IBTY'["MRA",$D(^IBM(361.1,IBI,101)) D
 .N IEN101,FIRST101 S IEN101=0,FIRST101=1
 .F  S IEN101=$O(^IBM(361.1,IBI,101,IEN101)) Q:'IEN101  D
 ..N IB101,IB102,IBDATE,IBUSER,IBJS,IBJS1,IBJS2,IBORIG,IBDIR
 ..S IB101=$G(^IBM(361.1,IBI,101,IEN101,0)) Q:IB101=""
 ..D GETAUDIT(IB101)
 ..I FIRST101 D
 ...S IBSTR=$$SETLN^IBJTBA("MOVE/COPY/REMOVE HISTORY","",1,78),FIRST101=0
 ...S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..S IBLN=$$SET^IBJTBA("",IBLN)
 ..S:IBDIR']"" IBDIR="Move"
 ..S IBSTR=$$SETLN^IBJTBA("Date/Time of EEOB "_IBDIR_": "_IBDATE,"",1,78)
 ..S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..S IBSTR=$$SETLN^IBJTBA(IBDIR_" of EEOB performed by: "_IBUSER,"",1,78)
 ..S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..S IBSTR=$$SETLN^IBJTBA(IBDIR_" Justification Comments: ","",1,78)
 ..S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..S IBSTR=$$SETLN^IBJTBA(IBJS,"",1,78)
 ..S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..I IBJS1]"" D
 ...S IBSTR=$$SETLN^IBJTBA(IBJS1,"",1,78)
 ...S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..I IBORIG]"" D
 ...S IBSTR=$$SETLN^IBJTBA("Original Claim Number: "_IBORIG,"",1,78)
 ...S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ..;Other claim numbers
 ..D OTHERS(IBI,IEN101)
 Q
 ;
REMOVE ; Display Removal Reason and User
 N SUB,IB101,IBDATE,IBUSER,IBJS,IBJS1,IBJS2,IBORIG,IBDIR
 S SUB=$O(^IBM(361.1,IBI,101,"A"),-1) Q:'SUB
 S IB101=$G(^IBM(361.1,IBI,101,SUB,0)) Q:IB101=""
 D GETAUDIT(IB101)
 S IBSTR=$$SETLN^IBJTBA("                 *** EEOB REMOVED ***","",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA("MOVE/COPY/REMOVE HISTORY","",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA("Date/Time EEOB Removed: "_IBDATE,"",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA("Remove of EEOB performed by: "_IBUSER,"",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA("Remove Justification Comments: ","",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA(IBJS,"",1,78)
 S IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 I IBJS1]"" S IBSTR=$$SETLN^IBJTBA(IBJS1,"",1,78),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ; display original claim
 I IBORIG]"" S IBSTR=$$SETLN^IBJTBA("Original Claim Number: "_IBORIG,"",1,78),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 ;display OTHER claim numbers
 D OTHERS(IBI,SUB)
 Q
 ;
EOBERR ; Display information about any 361.1 message storage or filing errors
 N ERRTXT,DASHES,Z
 S DASHES="---------------------------------------------------------------------"
 I '$O(^IBM(361.1,IBI,"ERR",0)) Q
 S IBSTR=$$SETLN^IBJTBA("VistA could not match all of the Line Level data received in the EEOB","",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBSTR=$$SETLN^IBJTBA("(835 Record 40) to the claim in VistA.","",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 S IBLN=$$SET^IBJTBA("",IBLN)
 S Z=0 F  S Z=$O(^IBM(361.1,IBI,"ERR",Z)) Q:'Z  D
 .S ERRTXT=$G(^IBM(361.1,IBI,"ERR",Z,0))
 .I ERRTXT["##RAW DATA" S ERRTXT=DASHES
 .S IBSTR=$$SETLN^IBJTBA(ERRTXT,"",1,79),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 Q
 ;
GETAUDIT(IB101) ; retrieve audit data
 ;   IB101 - string of data at the MOVE/COPY/REMOVE HISTORY multiple (361.1,101)
 S IBDATE=$$EXTERNAL^DILFD(361.1101,.01,,$P(IB101,U,1))
 S IBUSER=$$EXTERNAL^DILFD(361.1101,.02,,$P(IB101,U,2))
 S IBJS=$E($P(IB101,U,3),1,78),IBJS1=$E($P(IB101,U,3),79,100)
 S IBDIR=$$EXTERNAL^DILFD(361.1101,.05,,$P(IB101,U,5))
 S IBORIG=$$EXTERNAL^DILFD(361.1101,.04,,$P(IB101,U,4))
 Q
 ;
OTHERS(IBI,IEN101) ; get other claim(s)
 ; IBI - ien for entry in 361.1
 ; IEN101 - sub-ien for entry in 361.1,101 multiple
 N SUB,IBOTH,OTEXT
 S SUB=0,OTEXT=""
 F  S SUB=$O(^IBM(361.1,IBI,101,IEN101,1,SUB)) Q:'SUB  D
 . S IBOTH=$P($G(^IBM(361.1,IBI,101,IEN101,1,SUB,0)),U) Q:'IBOTH
 . S IBOTH=$$EXTERNAL^DILFD(361.11016,.01,,IBOTH) Q:IBOTH=""
 . S OTEXT=OTEXT_","_IBOTH
 S OTEXT=$P(OTEXT,",",2,99)
 I OTEXT]"" S IBSTR=$$SETLN^IBJTBA("Other Claims: "_OTEXT,"",1,78),IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBJTBA1   9973     printed  Sep 23, 2025@20:00:04                                                                                                                                                                                                     Page 2
IBJTBA1   ;ALB/TMK/PJH - TPJI BILL CHARGE INFO SCREEN ;Sep 30, 2014@12:07:36
 +1       ;;2.0;INTEGRATED BILLING;**135,265,155,349,417,451,488,511,613**;21-MAR-94;Build 28
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3       ;
SHEOB(IBI,IBSPL,IBEOBCT,IBCTOF) ; Format EOB called from IBJTBA
 +1       ; IBSPL = 0 if EOB represents one bill's payment
 +2       ;       =  1 if AR had to split the EOB between multiple bills
 +3       ; Assumes IBLN is defined and returns it with line count
 +4       ; Assumes IBEOBDET may be defined as a flag to control detail level of print
 +5        NEW X,IBPT,IBCN,IBM,IBM1,IBM2,IBTY,IBPY,IBPR,IBST,IBSTR,IBCA,IBTS,IBTA,Z,Z0
 +6        SET X="0.00"
 +7        SET IBM=$GET(^IBM(361.1,IBI,0))
 +8        SET IBTY=$PIECE(IBM,U,4)
           SET IBTY=$SELECT(IBTY:"MEDICARE MRA",1:"NORMAL EOB")
 +9        IF IBTY'["MRA"
               IF IBSPL
                   SET IBTY="A/R SPLIT/COVERS MORE THAN 1 BILL"
 +10       IF $PIECE(IBM,U,13)>1
               IF $PIECE(IBM,U,13)<5
                   SET IBTY=IBTY_" ("_$$EXTERNAL^DILFD(361.1,.13,,$PIECE(IBM,U,13))_")"
 +11       SET IBCN=$PIECE(IBM,U,14)
           SET IBPY=$PIECE(IBM,U,2)
 +12       if IBPY
               SET IBPY=$PIECE($GET(^DIC(36,IBPY,0)),U)
 +13       SET IBPR=$$FMTE^XLFDT($PIECE(IBM,U,6))
           SET IBST=$PIECE(IBM,U,16)
 +14       SET IBST=$$EXPAND^IBTRE(361.1,.16,+IBST)
 +15       SET IBM1=$GET(^IBM(361.1,IBI,1))
 +16      ;
 +17      ; patient responsibility 1.02 file
           SET IBPT=$PIECE(IBM1,U,2)
 +18      ; filing error
           IF $PIECE(IBM,U,4)
               IF $DATA(^IBM(361.1,IBI,"ERR"))
                   SET IBPT=0
 +19      ; If MRA & UB, then calculate patient responsiblity value
 +20       IF $PIECE(IBM,U,4)
               IF $$FT^IBCEF(+$PIECE(IBM,U,1))=3
                   SET IBPT=$$PTRESPI^IBCECOB1(IBI)
 +21      ;
 +22       SET IBCA=$PIECE(IBM1,U)
 +23       SET IBM2=$GET(^IBM(361.1,IBI,2))
           SET IBTA=$PIECE(IBM2,U,3)
 +24      ; if no Total Allowed Amount, sum up amounts on Line Level Adjustment
 +25       IF IBTA=""
               SET IBTA=$$ALLOWED^IBCEMU2(IBI)
 +26       SET IBTS=$PIECE(IBM2,U,4)
 +27       DO MRA2
 +28       SET IBLN=$$SET^IBJTBA("",IBLN)
 +29       IF '$GET(IBEOBDET)
               IF IBSPL
                   Begin DoDot:1
 +30                   SET IBSTR=$$SETLN^IBJTBA("    **A/R CORRECTED PAYMENT DATA:","",1,50)
                       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +31                   SET IBSTR=$$SETLN^IBJTBA("     TOTAL AMT PD: "_$JUSTIFY(+$PIECE($GET(^IBM(361.1,IBI,1)),U,1),"",2),"",1,75)
                       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +32                   SET Z=0
                       FOR 
                           SET Z=$ORDER(^IBM(361.1,IBI,8,Z))
                           if 'Z
                               QUIT 
                           SET Z0=$GET(^(Z,0))
                           Begin DoDot:2
 +33                           SET IBSTR=$$SETLN^IBJTBA($EXTRACT($JUSTIFY("",8)_$SELECT($PIECE(Z0,U,3):$$BN1^PRCAFN(+$PIECE(Z0,U,3)),1:"[suspense]"_$PIECE(Z0,U))_$JUSTIFY("",25),1,25)_"  "_$JUSTIFY(+$PIECE(Z0,U,2),"",2),"",1,75)
                               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                           End DoDot:2
                   End DoDot:1
 +34      ;
 +35       IF $GET(IBEOBDET)
               Begin DoDot:1
 +36      ; Medicare MRA processing
                   IF $PIECE($GET(^IBM(361.1,IBI,0)),U,4)
                       Begin DoDot:2
 +37                       NEW VALMCNT
 +38                       KILL ^TMP("IBCECSD",$JOB)
 +39                       DO GETEOB^IBCECSA6(IBI,0,,+$GET(IBLN)-1)
 +40                       SET Z=0
                           FOR 
                               SET Z=$ORDER(^TMP("IBCECSD",$JOB,Z))
                               if 'Z
                                   QUIT 
                               SET IBSTR=$$SETLN^IBJTBA($GET(^TMP("IBCECSD",$JOB,Z,0)),"",1,79)
                               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +41                       KILL ^TMP("IBCECSD",$JOB)
 +42                       DO EOBERR
 +43                       QUIT 
                       End DoDot:2
                       QUIT 
 +44      ;
 +45      ; Normal EOB processing
 +46               NEW VALMCNT
 +47               KILL ^TMP("PRCA_EOB",$JOB)
 +48      ; IB*2*511 - do not display EEOB detail if EEOB has been "removed"
 +49               if $PIECE($GET(^IBM(361.1,IBI,102)),U)
                       QUIT 
 +50               DO GETEOB^IBCECSA6(IBI,1)
 +51               SET Z=0
                   FOR 
                       SET Z=$ORDER(^TMP("PRCA_EOB",$JOB,IBI,Z))
                       if 'Z
                           QUIT 
                       SET IBSTR=$$SETLN^IBJTBA($GET(^TMP("PRCA_EOB",$JOB,IBI,Z)),"",1,79)
                       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +52               KILL ^TMP("PRCA_EOB",$JOB)
 +53               DO EOBERR
 +54               QUIT 
               End DoDot:1
 +55      ;
 +56       QUIT 
 +57      ;
MRA2      ;
 +1        NEW IBD
 +2        SET IBLN=$$SET^IBJTBA("",IBLN)
 +3        SET IBD="EOB/MRA Information"_$SELECT($DATA(IBCTOF):" ("_$GET(IBEOBCT)_" OF "_IBCTOF_")",1:"")
 +4        SET IBSTR=$$SETLN^IBJTBA(IBD,"",30,45)
           SET $EXTRACT(IBSTR,1,2)=">>"
           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +5       ; IB*2*511 - do not display EEOB detail if EEOB has been removed
 +6        IF IBTY'["MRA"
               IF $PIECE($GET(^IBM(361.1,IBI,102)),U)
                   DO REMOVE
                   QUIT 
 +7        SET IBD="EOB Type: "_IBTY
           SET IBSTR=$$SETLN^IBJTBA(IBD,"",5,59)
 +8        SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +9        SET IBD="ICN: "_IBCN
           SET IBSTR=$$SETLN^IBJTBA(IBD,"",10,30)
 +10       SET IBD="Patient Resp Amount: "_$SELECT('IBPT:X,1:IBPT)
 +11       SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,44,35)
 +12       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +13       SET IBD="Payer Name: "_IBPY
           SET IBSTR=$$SETLN^IBJTBA(IBD,"",3,40)
 +14       SET IBD="Total Allowed Amount: "_$SELECT('IBTA:X,1:IBTA)
 +15       SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,43,36)
 +16       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +17       SET IBD="EOB Date: "_IBPR
           SET IBSTR=$$SETLN^IBJTBA(IBD,"",5,35)
 +18       SET IBD="Total Submitted Charges: "_$SELECT('IBTS:X,1:IBTS)
 +19       SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,40,39)
 +20       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +21       SET IBD="Svc From Dt: "_$$DAT1^IBOUTL($PIECE(IBM1,U,10))
 +22       SET IBSTR=$$SETLN^IBJTBA(IBD,"",2,38)
 +23       SET IBD="Svc To Dt: "_$$DAT1^IBOUTL($PIECE(IBM1,U,11))
 +24       SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,54,25)
 +25       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +26       SET IBSTR=""
 +27       IF IBTY["MRA"
               SET IBD="MRA Review Status: "_IBST
               SET IBSTR=$$SETLN^IBJTBA(IBD,"",2,38)
 +28       SET IBD=$SELECT('$GET(IBSPL):"  ",1:"**")_"Reported Payment Amt: "_$SELECT('IBCA:$JUSTIFY(X,"",2),1:$JUSTIFY(+IBCA,"",2))
 +29       SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,41,37)
 +30       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +31      ;
 +32      ; begin IB*2.0*451
 +33      ; display Trace # and ERA # for every EOB record found. MRAs will not have an ERA #, only a Trace #
 +34       IF IBTY]""
               Begin DoDot:1
 +35               NEW IBAPS,IBERAE,IBTRACE
 +36               SET IBTRACE=$PIECE($GET(^IBM(361.1,IBI,0)),U,7)
 +37               IF IBTRACE]""
                       SET IBERAE=$ORDER(^RCY(344.4,"D",IBTRACE,""))
 +38               SET IBD="       ERA #: "_$GET(IBERAE)
                   SET IBSTR=$$SETLN^IBJTBA(IBD,"",1,25)
 +39      ; include AUTO-POST STATUS for auto-posted ERAs
 +40      ; *613 to fix undefined variable
 +41               IF $GET(IBERAE)]""
                       SET IBAPS=$PIECE($GET(^RCY(344.4,IBERAE,4)),"^",2)
                       IF IBAPS]""
                           Begin DoDot:2
 +42                           SET IBD=IBD_"   Auto-Post Status: "_$SELECT(IBAPS=2:"Complete",1:"Not Complete")
                               SET IBSTR=$$SETLN^IBJTBA(IBD,"",1,80)
                           End DoDot:2
 +43               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +44      ; Trace # can be up to 50 characters long
                   SET IBD="     Trace #: "_$GET(IBTRACE)
                   SET IBSTR=$$SETLN^IBJTBA(IBD,"",1,80)
 +45               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +46               SET IBLN=$$SET^IBJTBA("",IBLN)
               End DoDot:1
 +47      ; end IB*2.0*451
 +48      ; 
 +49       IF IBTY["MRA"
               IF $DATA(^IBM(361.1,IBI,21))
                   Begin DoDot:1
 +50                   SET IBD=$TRANSLATE($JUSTIFY("",35)," ","-")_"Review"_$TRANSLATE($JUSTIFY("",38)," ","-")
 +51                   SET IBSTR=$$SETLN^IBJTBA(IBD,"",1,79)
                       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +52                   SET (IBST,IBCN)=0
                       FOR 
                           SET IBCN=$ORDER(^IBM(361.1,IBI,21,IBCN))
                           if 'IBCN
                               QUIT 
                           SET X=$GET(^(IBCN,0))
                           Begin DoDot:2
 +53                           SET IBST=0
 +54                           SET IBD="Review Date: "_$$DAT1^IBOUTL($PIECE(X,U))
 +55                           SET IBSTR=$$SETLN^IBJTBA(IBD,"",1,30)
 +56                           SET IBD="Reviewed By: "_$PIECE($GET(^VA(200,+$PIECE(X,U,2),0)),U)
 +57                           SET IBSTR=$$SETLN^IBJTBA(IBD,IBSTR,40,39)
 +58                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +59                           SET IBD=0
                               FOR 
                                   SET IBD=$ORDER(^IBM(361.1,IBI,21,IBCN,1,IBD))
                                   if 'IBD
                                       QUIT 
                                   SET IBSTR=$$SETLN^IBJTBA($SELECT('IBST:"Comments: ",1:"")_$GET(^(IBD,0)),"",1,$SELECT('IBST:69,1:79))
                                   SET IBST=1
                                   SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                           End DoDot:2
 +60                   IF 'IBST
                           Begin DoDot:2
 +61                           SET IBSTR=$$SETLN^IBJTBA("None","",1,10)
 +62                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                           End DoDot:2
                   End DoDot:1
 +63      ;
MOVE      ;
 +1       ;Display details of any EEOB MOVE/COPY
 +2        IF IBTY'["MRA"
               IF $DATA(^IBM(361.1,IBI,101))
                   Begin DoDot:1
 +3                    NEW IEN101,FIRST101
                       SET IEN101=0
                       SET FIRST101=1
 +4                    FOR 
                           SET IEN101=$ORDER(^IBM(361.1,IBI,101,IEN101))
                           if 'IEN101
                               QUIT 
                           Begin DoDot:2
 +5                            NEW IB101,IB102,IBDATE,IBUSER,IBJS,IBJS1,IBJS2,IBORIG,IBDIR
 +6                            SET IB101=$GET(^IBM(361.1,IBI,101,IEN101,0))
                               if IB101=""
                                   QUIT 
 +7                            DO GETAUDIT(IB101)
 +8                            IF FIRST101
                                   Begin DoDot:3
 +9                                    SET IBSTR=$$SETLN^IBJTBA("MOVE/COPY/REMOVE HISTORY","",1,78)
                                       SET FIRST101=0
 +10                                   SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                                   End DoDot:3
 +11                           SET IBLN=$$SET^IBJTBA("",IBLN)
 +12                           if IBDIR']""
                                   SET IBDIR="Move"
 +13                           SET IBSTR=$$SETLN^IBJTBA("Date/Time of EEOB "_IBDIR_": "_IBDATE,"",1,78)
 +14                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +15                           SET IBSTR=$$SETLN^IBJTBA(IBDIR_" of EEOB performed by: "_IBUSER,"",1,78)
 +16                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +17                           SET IBSTR=$$SETLN^IBJTBA(IBDIR_" Justification Comments: ","",1,78)
 +18                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +19                           SET IBSTR=$$SETLN^IBJTBA(IBJS,"",1,78)
 +20                           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +21                           IF IBJS1]""
                                   Begin DoDot:3
 +22                                   SET IBSTR=$$SETLN^IBJTBA(IBJS1,"",1,78)
 +23                                   SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                                   End DoDot:3
 +24                           IF IBORIG]""
                                   Begin DoDot:3
 +25                                   SET IBSTR=$$SETLN^IBJTBA("Original Claim Number: "_IBORIG,"",1,78)
 +26                                   SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
                                   End DoDot:3
 +27      ;Other claim numbers
 +28                           DO OTHERS(IBI,IEN101)
                           End DoDot:2
                   End DoDot:1
 +29       QUIT 
 +30      ;
REMOVE    ; Display Removal Reason and User
 +1        NEW SUB,IB101,IBDATE,IBUSER,IBJS,IBJS1,IBJS2,IBORIG,IBDIR
 +2        SET SUB=$ORDER(^IBM(361.1,IBI,101,"A"),-1)
           if 'SUB
               QUIT 
 +3        SET IB101=$GET(^IBM(361.1,IBI,101,SUB,0))
           if IB101=""
               QUIT 
 +4        DO GETAUDIT(IB101)
 +5        SET IBSTR=$$SETLN^IBJTBA("                 *** EEOB REMOVED ***","",1,78)
 +6        SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +7        SET IBSTR=$$SETLN^IBJTBA("MOVE/COPY/REMOVE HISTORY","",1,78)
 +8        SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +9        SET IBSTR=$$SETLN^IBJTBA("Date/Time EEOB Removed: "_IBDATE,"",1,78)
 +10       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +11       SET IBSTR=$$SETLN^IBJTBA("Remove of EEOB performed by: "_IBUSER,"",1,78)
 +12       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +13       SET IBSTR=$$SETLN^IBJTBA("Remove Justification Comments: ","",1,78)
 +14       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +15       SET IBSTR=$$SETLN^IBJTBA(IBJS,"",1,78)
 +16       SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +17       IF IBJS1]""
               SET IBSTR=$$SETLN^IBJTBA(IBJS1,"",1,78)
               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +18      ; display original claim
 +19       IF IBORIG]""
               SET IBSTR=$$SETLN^IBJTBA("Original Claim Number: "_IBORIG,"",1,78)
               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +20      ;display OTHER claim numbers
 +21       DO OTHERS(IBI,SUB)
 +22       QUIT 
 +23      ;
EOBERR    ; Display information about any 361.1 message storage or filing errors
 +1        NEW ERRTXT,DASHES,Z
 +2        SET DASHES="---------------------------------------------------------------------"
 +3        IF '$ORDER(^IBM(361.1,IBI,"ERR",0))
               QUIT 
 +4        SET IBSTR=$$SETLN^IBJTBA("VistA could not match all of the Line Level data received in the EEOB","",1,79)
           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +5        SET IBSTR=$$SETLN^IBJTBA("(835 Record 40) to the claim in VistA.","",1,79)
           SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +6        SET IBLN=$$SET^IBJTBA("",IBLN)
 +7        SET Z=0
           FOR 
               SET Z=$ORDER(^IBM(361.1,IBI,"ERR",Z))
               if 'Z
                   QUIT 
               Begin DoDot:1
 +8                SET ERRTXT=$GET(^IBM(361.1,IBI,"ERR",Z,0))
 +9                IF ERRTXT["##RAW DATA"
                       SET ERRTXT=DASHES
 +10               SET IBSTR=$$SETLN^IBJTBA(ERRTXT,"",1,79)
                   SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
               End DoDot:1
 +11       QUIT 
 +12      ;
GETAUDIT(IB101) ; retrieve audit data
 +1       ;   IB101 - string of data at the MOVE/COPY/REMOVE HISTORY multiple (361.1,101)
 +2        SET IBDATE=$$EXTERNAL^DILFD(361.1101,.01,,$PIECE(IB101,U,1))
 +3        SET IBUSER=$$EXTERNAL^DILFD(361.1101,.02,,$PIECE(IB101,U,2))
 +4        SET IBJS=$EXTRACT($PIECE(IB101,U,3),1,78)
           SET IBJS1=$EXTRACT($PIECE(IB101,U,3),79,100)
 +5        SET IBDIR=$$EXTERNAL^DILFD(361.1101,.05,,$PIECE(IB101,U,5))
 +6        SET IBORIG=$$EXTERNAL^DILFD(361.1101,.04,,$PIECE(IB101,U,4))
 +7        QUIT 
 +8       ;
OTHERS(IBI,IEN101) ; get other claim(s)
 +1       ; IBI - ien for entry in 361.1
 +2       ; IEN101 - sub-ien for entry in 361.1,101 multiple
 +3        NEW SUB,IBOTH,OTEXT
 +4        SET SUB=0
           SET OTEXT=""
 +5        FOR 
               SET SUB=$ORDER(^IBM(361.1,IBI,101,IEN101,1,SUB))
               if 'SUB
                   QUIT 
               Begin DoDot:1
 +6                SET IBOTH=$PIECE($GET(^IBM(361.1,IBI,101,IEN101,1,SUB,0)),U)
                   if 'IBOTH
                       QUIT 
 +7                SET IBOTH=$$EXTERNAL^DILFD(361.11016,.01,,IBOTH)
                   if IBOTH=""
                       QUIT 
 +8                SET OTEXT=OTEXT_","_IBOTH
               End DoDot:1
 +9        SET OTEXT=$PIECE(OTEXT,",",2,99)
 +10       IF OTEXT]""
               SET IBSTR=$$SETLN^IBJTBA("Other Claims: "_OTEXT,"",1,78)
               SET IBLN=$$SET^IBJTBA(IBSTR,IBLN)
 +11       QUIT 
 +12      ;