IBJDF52 ;ALB/RB - CHAMPVA/TRICARE FOLLOW-UP REPORT (PRINT) ;15-APR-00
;;2.0;INTEGRATED BILLING;**123,159,240,618,739**;21-MAR-94;Build 3
;;Per VHA Directive 6402, this routine should not be modified.
;
EN ; - Print the Follow-up report.
S (IBQ,IBFLG)=0 D NOW^%DTC S IBRUN=$$DAT2^IBOUTL(%) G:IBRPT="S" SUM
I 'IBSD D DET(0) G SUM
I IBSEL["1" D DET(0)
S IBDIV=""
F S IBDIV=$O(VAUTD(IBDIV)) Q:IBDIV="" D DET(IBDIV) Q:IBQ
;
SUM I 'IBQ D PRT^IBJDF53 ; Print summary.
ENQ K I,IB0,IBC,IBCAT,IBCD,IBC1,IBC2,IBDIV,IBFLG,IBIN,IBKEY,IBN,IBPT,IBPAG
K IBQ,IBRUN,IBTYP,%
Q
;
DET(IBDIV) ; - Print report for a specific division.
; Input: IBDIV=Pointer to the division in file #40.8 & variable IBSEL1
S IBCAT=0
F S IBCAT=$O(IBCAT(IBCAT)) Q:'IBCAT D Q:IBQ
. S (IB0,IBIN,IBKEY,IBTYP)=""
. F IBTYP=1:1:4 D:IBSEL1[IBTYP Q:IBQ
. . I IBDIV,IBCAT=31 Q
. . I IBSD,'IBDIV,IBCAT'=31 Q
. . I '$D(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP)) D HDR1,NAR,PAUSE Q
. . S IBFLG=0
. . F S IBIN=$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN)) Q:IBIN="" D Q:IBQ
. . . D HDR1,HDR2 Q:IBQ
. . . F S IBKEY=$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY)) Q:IBKEY="" D Q:IBQ
. . . . S IBPT=$G(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY))
. . . . D WPAT
. . . . F S IB0=$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0)) Q:IB0="" D Q:IBQ
. . . . . S IBN=$G(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0))
. . . . . I $Y>(IOSL-3) D PAUSE Q:IBQ D HDR1,HDR2 Q:IBQ D WPAT
. . . . . W ?59,IB0,?71,$$DAT1^IBOUTL(+IBN)
. . . . . W ?80,$$DAT1^IBOUTL($P(IBN,U,2))
. . . . . W ?89,$$DAT1^IBOUTL($P(IBN,U,3)),?98,$J($P(IBN,U,4),8,2)
. . . . . W ?107,$J($P(IBN,U,5),8,2),?116,$P(IBN,U,6),!
. . . . . ;
. . . . . ; - Display bill comment history, if necessary.
. . . . . I IBSH D WCOM
. . . D:'IBQ PAUSE
;
DETQ Q
;
DASH(X) ; - Return a dashed line.
Q $TR($J("",X)," ","=")
;
PAUSE ; - Page break.
I $E(IOST,1,2)'="C-" Q
N IBX,DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
F IBX=$Y:1:(IOSL-3) W !
S DIR(0)="E" D ^DIR S:$D(DIRUT)!($D(DUOUT)) IBQ=1
Q
;
HDR1 ; - Write the primary report header.
N FLG,X,IBCATNM
;
S FLG=1 I $G(IBFLG) S FLG=0
I '$G(IBFLG),$E(IOST,1,2)="C-"!$G(IBPAG) D
. W @IOF,*13 S IBFLG=0
. S IBPAG=$G(IBPAG)+1
I $G(IBFLG) D
. I $Y'>(IOSL-11) W !!! Q
. W @IOF,*13 S IBPAG=$G(IBPAG)+1,FLG=1
I '$G(IBPAG) S IBPAG=1
I IBDIV!FLG D
. W "CHAMPVA/TRICARE Follow-Up Report"
. I IBDIV W " for ",$P($G(^DG(40.8,IBDIV,0)),U)," "
. W ?75,"Run Date: ",IBRUN W:FLG ?123,"Page: ",$J(IBPAG,3)
S IBCATNM=$$ARCAT^IBJDF62(IBCAT) ; patch IB*2.0*618
S X="ALL ACTIVE "_$G(IBCATNM)_" RECEIVABLES " ; patch IB*2.0*618
I IBTYP'=4 S X=X_"("_$G(IBTPR(IBTYP))_") "
I IBSMN S X=X_"OVER "_IBSMN_" AND UNDER "_IBSMX_" DAYS OLD "
S X=X_" / BY PATIENT NAME" ;IB*2.0*739
S X=X_" ("_$S($G(IBSNA)="ALL":"ALL",1:"From "_$S(IBSNF="":"FIRST",1:IBSNF)_" to "_$S(IBSNL="zzzzz":"LAST",1:IBSNL))_")"
S X=X_" / "_$S('IBSAM:"NO ",1:"")_"MINIMUM BALANCE"
I IBSAM S X=X_$S(IBSAM:": $"_$FN(IBSAM,",",2),1:"")
S X=X_" / "_$S('IBSH:"NO ",IBSH1="A":"ALL ",1:"ONLY ")_"COMMENTS"
S X=X_$S($G(IBSH2):" NOT OLDER THAN "_IBSH2_" DAYS",1:"")
S X=X_" / '*' AFTER THE PATIENT NAME = VA EMPLOYEE"
F I=1:1 W !,$E(X,1,132) S X=$E(X,133,999) I X="" Q
;
W !!?71,"Dte Bill",?98,"Original Current"
W !,"Patient",?26,"Age" W:IBCAT'=31 ?43,"Other Insurance" ;IB*2.0*739
W ?59,"Bill Number Prepared",?80,"Bill Frm Bill To Amount Balance"
W:IBCAT'=31 ?116,"Subscriber ID"
W !,$$DASH(IOM),!
S IBQ=$$STOP^IBOUTL("CHAMPVA/TRICARE Follow-Up Report")
Q
;
HDR2 ; - Write the insurance company sub-header.
N X,X13
I $P(IBIN,"@@")'=0 W ?2,"Carrier: ",$P(IBIN,"@@")
S X=$G(^DIC(36,+$P(IBIN,"@@",2),.11)),X13=$G(^(.13))
I X]"" D
.W ", ",$P(X,U),", ",$P(X,U,4),", ",$P($G(^DIC(5,+$P(X,U,5),0)),U,2)," ",$P(X,U,6)
.I $P(X13,U,2)]"" W " Billing Phone: ",$P(X13,U,2) Q
.I $P(X13,U)]"" W " Main Phone: ",$P(X13,U)
;
Q
;
NAR ; - Write detail line (if '$D).
S IBFLG=1
W !!,"There are no active receivables for the parameters above."
Q
;
WPAT ; - Write patient data.
W !,$P(IBPT,U),?26,$J($P(IBPT,U,2),3),?43,$P(IBPT,U,4) ;IB*2.0*739
;W ?43,$P(IBPT,U,4)
Q
;
WCOM ; - Write bill comments
N CONT,DIWL,DIWR,IBC,IBCD,IBC1,IBC2,X
;
S (IBC,CONT,IBCD)=0,IBC1="",DIWL=1,DIWR=104 K ^UTILITY($J)
F S IBC=$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC)) Q:'IBC D Q:IBQ
. F S IBC1=$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1)) Q:IBC1="" D Q:IBQ
. . S IBC2=^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1)
. . I 'IBC1 S IBCD=IBC2 D WCD Q
. . I $Y>(IOSL-4) D WCPB Q:IBQ
. . S X=IBC2 I $E(X)=" ",$L(X)>1 S $E(X)=""
. . D ^DIWP
. . I 'CONT,$L(IBC2)<66 D WCTXT Q
. . S CONT=$L(IBC2)>65
. . I '$O(^TMP("IBJDF5",$J,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1)) D
. . . D:$D(^UTILITY($J,"W")) WCTXT
K ^UTILITY($J,"W")
Q
;
WCTXT ; - Write comment text
N LIN,WLIN
S LIN=""
F S LIN=$O(^UTILITY($J,"W",1,LIN)) Q:LIN="" D Q:IBQ
. S WLIN=$G(^UTILITY($J,"W",1,LIN,0))
. I $Y>(IOSL-4) D WCPB Q:IBQ
. W:WLIN'="" ?26,WLIN,!
K ^UTILITY($J,"W")
Q
;
WCPB ; - Page Break in the middle of Comments
;
D PAUSE Q:IBQ D HDR1,HDR2 Q:IBQ
W ! D WPAT D WCD W:IBC1>1 ?26,"(continued)",!
Q
;
WCD ; - Write comment date.
W !?2,"Comment Date: ",$$DAT1^IBOUTL(IBCD)
Q
;
SSN(X) ; - Format the SSN.
Q $S(X:$E(X,1,3)_"-"_$E(X,4,5)_"-"_$E(X,6,10),1:"")
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBJDF52 5525 printed Sep 02, 2024@19:08:06 Page 2
IBJDF52 ;ALB/RB - CHAMPVA/TRICARE FOLLOW-UP REPORT (PRINT) ;15-APR-00
+1 ;;2.0;INTEGRATED BILLING;**123,159,240,618,739**;21-MAR-94;Build 3
+2 ;;Per VHA Directive 6402, this routine should not be modified.
+3 ;
EN ; - Print the Follow-up report.
+1 SET (IBQ,IBFLG)=0
DO NOW^%DTC
SET IBRUN=$$DAT2^IBOUTL(%)
if IBRPT="S"
GOTO SUM
+2 IF 'IBSD
DO DET(0)
GOTO SUM
+3 IF IBSEL["1"
DO DET(0)
+4 SET IBDIV=""
+5 FOR
SET IBDIV=$ORDER(VAUTD(IBDIV))
if IBDIV=""
QUIT
DO DET(IBDIV)
if IBQ
QUIT
+6 ;
SUM ; Print summary.
IF 'IBQ
DO PRT^IBJDF53
ENQ KILL I,IB0,IBC,IBCAT,IBCD,IBC1,IBC2,IBDIV,IBFLG,IBIN,IBKEY,IBN,IBPT,IBPAG
+1 KILL IBQ,IBRUN,IBTYP,%
+2 QUIT
+3 ;
DET(IBDIV) ; - Print report for a specific division.
+1 ; Input: IBDIV=Pointer to the division in file #40.8 & variable IBSEL1
+2 SET IBCAT=0
+3 FOR
SET IBCAT=$ORDER(IBCAT(IBCAT))
if 'IBCAT
QUIT
Begin DoDot:1
+4 SET (IB0,IBIN,IBKEY,IBTYP)=""
+5 FOR IBTYP=1:1:4
if IBSEL1[IBTYP
Begin DoDot:2
+6 IF IBDIV
IF IBCAT=31
QUIT
+7 IF IBSD
IF 'IBDIV
IF IBCAT'=31
QUIT
+8 IF '$DATA(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP))
DO HDR1
DO NAR
DO PAUSE
QUIT
+9 SET IBFLG=0
+10 FOR
SET IBIN=$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN))
if IBIN=""
QUIT
Begin DoDot:3
+11 DO HDR1
DO HDR2
if IBQ
QUIT
+12 FOR
SET IBKEY=$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY))
if IBKEY=""
QUIT
Begin DoDot:4
+13 SET IBPT=$GET(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY))
+14 DO WPAT
+15 FOR
SET IB0=$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0))
if IB0=""
QUIT
Begin DoDot:5
+16 SET IBN=$GET(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0))
+17 IF $Y>(IOSL-3)
DO PAUSE
if IBQ
QUIT
DO HDR1
DO HDR2
if IBQ
QUIT
DO WPAT
+18 WRITE ?59,IB0,?71,$$DAT1^IBOUTL(+IBN)
+19 WRITE ?80,$$DAT1^IBOUTL($PIECE(IBN,U,2))
+20 WRITE ?89,$$DAT1^IBOUTL($PIECE(IBN,U,3)),?98,$JUSTIFY($PIECE(IBN,U,4),8,2)
+21 WRITE ?107,$JUSTIFY($PIECE(IBN,U,5),8,2),?116,$PIECE(IBN,U,6),!
+22 ;
+23 ; - Display bill comment history, if necessary.
+24 IF IBSH
DO WCOM
End DoDot:5
if IBQ
QUIT
End DoDot:4
if IBQ
QUIT
+25 if 'IBQ
DO PAUSE
End DoDot:3
if IBQ
QUIT
End DoDot:2
if IBQ
QUIT
End DoDot:1
if IBQ
QUIT
+26 ;
DETQ QUIT
+1 ;
DASH(X) ; - Return a dashed line.
+1 QUIT $TRANSLATE($JUSTIFY("",X)," ","=")
+2 ;
PAUSE ; - Page break.
+1 IF $EXTRACT(IOST,1,2)'="C-"
QUIT
+2 NEW IBX,DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
+3 FOR IBX=$Y:1:(IOSL-3)
WRITE !
+4 SET DIR(0)="E"
DO ^DIR
if $DATA(DIRUT)!($DATA(DUOUT))
SET IBQ=1
+5 QUIT
+6 ;
HDR1 ; - Write the primary report header.
+1 NEW FLG,X,IBCATNM
+2 ;
+3 SET FLG=1
IF $GET(IBFLG)
SET FLG=0
+4 IF '$GET(IBFLG)
IF $EXTRACT(IOST,1,2)="C-"!$GET(IBPAG)
Begin DoDot:1
+5 WRITE @IOF,*13
SET IBFLG=0
+6 SET IBPAG=$GET(IBPAG)+1
End DoDot:1
+7 IF $GET(IBFLG)
Begin DoDot:1
+8 IF $Y'>(IOSL-11)
WRITE !!!
QUIT
+9 WRITE @IOF,*13
SET IBPAG=$GET(IBPAG)+1
SET FLG=1
End DoDot:1
+10 IF '$GET(IBPAG)
SET IBPAG=1
+11 IF IBDIV!FLG
Begin DoDot:1
+12 WRITE "CHAMPVA/TRICARE Follow-Up Report"
+13 IF IBDIV
WRITE " for ",$PIECE($GET(^DG(40.8,IBDIV,0)),U)," "
+14 WRITE ?75,"Run Date: ",IBRUN
if FLG
WRITE ?123,"Page: ",$JUSTIFY(IBPAG,3)
End DoDot:1
+15 ; patch IB*2.0*618
SET IBCATNM=$$ARCAT^IBJDF62(IBCAT)
+16 ; patch IB*2.0*618
SET X="ALL ACTIVE "_$GET(IBCATNM)_" RECEIVABLES "
+17 IF IBTYP'=4
SET X=X_"("_$GET(IBTPR(IBTYP))_") "
+18 IF IBSMN
SET X=X_"OVER "_IBSMN_" AND UNDER "_IBSMX_" DAYS OLD "
+19 ;IB*2.0*739
SET X=X_" / BY PATIENT NAME"
+20 SET X=X_" ("_$SELECT($GET(IBSNA)="ALL":"ALL",1:"From "_$SELECT(IBSNF="":"FIRST",1:IBSNF)_" to "_$SELECT(IBSNL="zzzzz":"LAST",1:IBSNL))_")"
+21 SET X=X_" / "_$SELECT('IBSAM:"NO ",1:"")_"MINIMUM BALANCE"
+22 IF IBSAM
SET X=X_$SELECT(IBSAM:": $"_$FNUMBER(IBSAM,",",2),1:"")
+23 SET X=X_" / "_$SELECT('IBSH:"NO ",IBSH1="A":"ALL ",1:"ONLY ")_"COMMENTS"
+24 SET X=X_$SELECT($GET(IBSH2):" NOT OLDER THAN "_IBSH2_" DAYS",1:"")
+25 SET X=X_" / '*' AFTER THE PATIENT NAME = VA EMPLOYEE"
+26 FOR I=1:1
WRITE !,$EXTRACT(X,1,132)
SET X=$EXTRACT(X,133,999)
IF X=""
QUIT
+27 ;
+28 WRITE !!?71,"Dte Bill",?98,"Original Current"
+29 ;IB*2.0*739
WRITE !,"Patient",?26,"Age"
if IBCAT'=31
WRITE ?43,"Other Insurance"
+30 WRITE ?59,"Bill Number Prepared",?80,"Bill Frm Bill To Amount Balance"
+31 if IBCAT'=31
WRITE ?116,"Subscriber ID"
+32 WRITE !,$$DASH(IOM),!
+33 SET IBQ=$$STOP^IBOUTL("CHAMPVA/TRICARE Follow-Up Report")
+34 QUIT
+35 ;
HDR2 ; - Write the insurance company sub-header.
+1 NEW X,X13
+2 IF $PIECE(IBIN,"@@")'=0
WRITE ?2,"Carrier: ",$PIECE(IBIN,"@@")
+3 SET X=$GET(^DIC(36,+$PIECE(IBIN,"@@",2),.11))
SET X13=$GET(^(.13))
+4 IF X]""
Begin DoDot:1
+5 WRITE ", ",$PIECE(X,U),", ",$PIECE(X,U,4),", ",$PIECE($GET(^DIC(5,+$PIECE(X,U,5),0)),U,2)," ",$PIECE(X,U,6)
+6 IF $PIECE(X13,U,2)]""
WRITE " Billing Phone: ",$PIECE(X13,U,2)
QUIT
+7 IF $PIECE(X13,U)]""
WRITE " Main Phone: ",$PIECE(X13,U)
End DoDot:1
+8 ;
+9 QUIT
+10 ;
NAR ; - Write detail line (if '$D).
+1 SET IBFLG=1
+2 WRITE !!,"There are no active receivables for the parameters above."
+3 QUIT
+4 ;
WPAT ; - Write patient data.
+1 ;IB*2.0*739
WRITE !,$PIECE(IBPT,U),?26,$JUSTIFY($PIECE(IBPT,U,2),3),?43,$PIECE(IBPT,U,4)
+2 ;W ?43,$P(IBPT,U,4)
+3 QUIT
+4 ;
WCOM ; - Write bill comments
+1 NEW CONT,DIWL,DIWR,IBC,IBCD,IBC1,IBC2,X
+2 ;
+3 SET (IBC,CONT,IBCD)=0
SET IBC1=""
SET DIWL=1
SET DIWR=104
KILL ^UTILITY($JOB)
+4 FOR
SET IBC=$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC))
if 'IBC
QUIT
Begin DoDot:1
+5 FOR
SET IBC1=$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1))
if IBC1=""
QUIT
Begin DoDot:2
+6 SET IBC2=^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1)
+7 IF 'IBC1
SET IBCD=IBC2
DO WCD
QUIT
+8 IF $Y>(IOSL-4)
DO WCPB
if IBQ
QUIT
+9 SET X=IBC2
IF $EXTRACT(X)=" "
IF $LENGTH(X)>1
SET $EXTRACT(X)=""
+10 DO ^DIWP
+11 IF 'CONT
IF $LENGTH(IBC2)<66
DO WCTXT
QUIT
+12 SET CONT=$LENGTH(IBC2)>65
+13 IF '$ORDER(^TMP("IBJDF5",$JOB,IBDIV,IBCAT,IBTYP,IBIN,IBKEY,IB0,IBC,IBC1))
Begin DoDot:3
+14 if $DATA(^UTILITY($JOB,"W"))
DO WCTXT
End DoDot:3
End DoDot:2
if IBQ
QUIT
End DoDot:1
if IBQ
QUIT
+15 KILL ^UTILITY($JOB,"W")
+16 QUIT
+17 ;
WCTXT ; - Write comment text
+1 NEW LIN,WLIN
+2 SET LIN=""
+3 FOR
SET LIN=$ORDER(^UTILITY($JOB,"W",1,LIN))
if LIN=""
QUIT
Begin DoDot:1
+4 SET WLIN=$GET(^UTILITY($JOB,"W",1,LIN,0))
+5 IF $Y>(IOSL-4)
DO WCPB
if IBQ
QUIT
+6 if WLIN'=""
WRITE ?26,WLIN,!
End DoDot:1
if IBQ
QUIT
+7 KILL ^UTILITY($JOB,"W")
+8 QUIT
+9 ;
WCPB ; - Page Break in the middle of Comments
+1 ;
+2 DO PAUSE
if IBQ
QUIT
DO HDR1
DO HDR2
if IBQ
QUIT
+3 WRITE !
DO WPAT
DO WCD
if IBC1>1
WRITE ?26,"(continued)",!
+4 QUIT
+5 ;
WCD ; - Write comment date.
+1 WRITE !?2,"Comment Date: ",$$DAT1^IBOUTL(IBCD)
+2 QUIT
+3 ;
SSN(X) ; - Format the SSN.
+1 QUIT $SELECT(X:$EXTRACT(X,1,3)_"-"_$EXTRACT(X,4,5)_"-"_$EXTRACT(X,6,10),1:"")