- IBCD ;ALB/ARH - AUTOMATED BILLER ; 8/6/93
- ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
- ;;Per VHA Directive 10-93-142, this routine should not be modified.
- ;
- ;This routine is the begining of the auto biller. No variables are required on entry. It is be called by the
- ;IB nightly job routine IBAMTC. It first checks to see if it should run based on the auto biller frequency
- ;site parameter. It then gathers the Claims Tracking events with an EABD into a temporary file by patient,
- ;event type, and episode date. This temporary file ("IBACAB") is then used to sort the events into groups
- ;that should be added to individual bills based on the individual event type billing cycle parameters. This
- ;second temporary file is then used to create the actual bills in IBCD1-2.
- ;
- EN ;begin process of finding and creating bills
- ;determine if auto biller should run, check site parameters (350.9,7.01-7.02)
- S IBPAR7=$G(^IBE(350.9,1,7)) G:'$P(IBPAR7,U,1) EXIT
- I +IBPAR7,+$P(IBPAR7,U,2),$$FMADD^XLFDT(+$P(IBPAR7,U,2),+IBPAR7)>DT G EXIT
- S IBAUTO=1
- ;
- ;begin search for events to bill, create array of events by patient
- ;^TMP("IBCAB",$J, PATIENT, EVENT TYPE, EPISODE DATE, EVENT IFN)=""
- ;adds all events in Claims Tracking that have an EABD not after today
- S IBDFN=0 F S IBDFN=$O(^IBT(356,"ATOBIL",IBDFN)) Q:'IBDFN D
- . S IBTYP=0 F S IBTYP=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP)) Q:'IBTYP D
- .. S IBEABD=0 F S IBEABD=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD)) Q:'IBEABD!(IBEABD>DT) D
- ... S IBTRN=0 F S IBTRN=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD,IBTRN)) Q:'IBTRN D
- .... S IBX=$$EVBILL^IBCU81(IBTRN) I 'IBX!(IBX>DT) D TEABD(IBTRN,+IBX) D:$P(IBX,U,2)'="" TERR(IBTRN,0,$P(IBX,U,2)) Q
- .... S IBX=$$EVNTCHK^IBCU82(IBTRN) I +IBX D TEABD(IBTRN,0) D TERR(IBTRN,0,$P(IBX,U,2)) Q
- .... S IBTRND=$G(^IBT(356,IBTRN,0))
- .... S ^TMP("IBCAB",$J,IBDFN,IBTYP,+$P(IBTRND,U,6),IBTRN)=""
- K IBDFN,IBTYP,IBEABD,IBTRN,IBTRND,IBX
- ;
- I $D(^TMP("IBCAB",$J)) D ^IBCD1 ; consolidate events into bills, create bills
- D ^IBCDC ; set comments into file
- S DIE="^IBE(350.9,",DA=1,DR="7.02////"_DT D ^DIE ;reset last date auto biller run
- K ^TMP("IBCAB",$J),^TMP("IBEABD",$J),^TMP("IBCE",$J),^TMP("IBILL",$J)
- F IBX=1:1:10 K ^TMP(("IBC"_IBX),$J)
- EXIT K IBX,IBPAR7,DIE,DA,DR,IBAUTO,IBBS,IBSC,IBT
- Q
- ;
- TEABD(TRN,IBDT) ;array contains the list of claims tracking events that need EABD updated, and the new date
- S IBDT=+$G(IBDT),^TMP("IBEABD",$J,TRN,+IBDT)=""
- Q
- TERR(TRN,IFN,ER) ;array contains events or bills that need entries created in the comments file, and the comment
- N X S TRN=+$G(TRN),IFN=+$G(IFN),X=+$G(^TMP("IBCE",$J,DT,TRN,IFN))+1
- S ^TMP("IBCE",$J,DT,TRN,IFN,X)=$G(ER),^TMP("IBCE",$J,DT,TRN,IFN)=X
- Q
- TBILL(TRN,IFN) ;array contains list of events and bills to be inserted into 356.399
- I '$D(^IBT(356,+$G(TRN),0))!('$D(^DGCR(399,+$G(IFN),0))) Q
- S ^TMP("IBILL",$J,TRN,IFN)=""
- Q
- IBCD ;ALB/ARH - AUTOMATED BILLER ; 8/6/93
- +1 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
- +2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
- +3 ;
- +4 ;This routine is the begining of the auto biller. No variables are required on entry. It is be called by the
- +5 ;IB nightly job routine IBAMTC. It first checks to see if it should run based on the auto biller frequency
- +6 ;site parameter. It then gathers the Claims Tracking events with an EABD into a temporary file by patient,
- +7 ;event type, and episode date. This temporary file ("IBACAB") is then used to sort the events into groups
- +8 ;that should be added to individual bills based on the individual event type billing cycle parameters. This
- +9 ;second temporary file is then used to create the actual bills in IBCD1-2.
- +10 ;
- EN ;begin process of finding and creating bills
- +1 ;determine if auto biller should run, check site parameters (350.9,7.01-7.02)
- +2 SET IBPAR7=$GET(^IBE(350.9,1,7))
- IF '$PIECE(IBPAR7,U,1)
- GOTO EXIT
- +3 IF +IBPAR7
- IF +$PIECE(IBPAR7,U,2)
- IF $$FMADD^XLFDT(+$PIECE(IBPAR7,U,2),+IBPAR7)>DT
- GOTO EXIT
- +4 SET IBAUTO=1
- +5 ;
- +6 ;begin search for events to bill, create array of events by patient
- +7 ;^TMP("IBCAB",$J, PATIENT, EVENT TYPE, EPISODE DATE, EVENT IFN)=""
- +8 ;adds all events in Claims Tracking that have an EABD not after today
- +9 SET IBDFN=0
- FOR
- SET IBDFN=$ORDER(^IBT(356,"ATOBIL",IBDFN))
- IF 'IBDFN
- QUIT
- Begin DoDot:1
- +10 SET IBTYP=0
- FOR
- SET IBTYP=$ORDER(^IBT(356,"ATOBIL",IBDFN,IBTYP))
- IF 'IBTYP
- QUIT
- Begin DoDot:2
- +11 SET IBEABD=0
- FOR
- SET IBEABD=$ORDER(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD))
- IF 'IBEABD!(IBEABD>DT)
- QUIT
- Begin DoDot:3
- +12 SET IBTRN=0
- FOR
- SET IBTRN=$ORDER(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD,IBTRN))
- IF 'IBTRN
- QUIT
- Begin DoDot:4
- +13 SET IBX=$$EVBILL^IBCU81(IBTRN)
- IF 'IBX!(IBX>DT)
- DO TEABD(IBTRN,+IBX)
- IF $PIECE(IBX,U,2)'=""
- DO TERR(IBTRN,0,$PIECE(IBX,U,2))
- QUIT
- +14 SET IBX=$$EVNTCHK^IBCU82(IBTRN)
- IF +IBX
- DO TEABD(IBTRN,0)
- DO TERR(IBTRN,0,$PIECE(IBX,U,2))
- QUIT
- +15 SET IBTRND=$GET(^IBT(356,IBTRN,0))
- +16 SET ^TMP("IBCAB",$JOB,IBDFN,IBTYP,+$PIECE(IBTRND,U,6),IBTRN)=""
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +17 KILL IBDFN,IBTYP,IBEABD,IBTRN,IBTRND,IBX
- +18 ;
- +19 ; consolidate events into bills, create bills
- IF $DATA(^TMP("IBCAB",$JOB))
- DO ^IBCD1
- +20 ; set comments into file
- DO ^IBCDC
- +21 ;reset last date auto biller run
- SET DIE="^IBE(350.9,"
- SET DA=1
- SET DR="7.02////"_DT
- DO ^DIE
- +22 KILL ^TMP("IBCAB",$JOB),^TMP("IBEABD",$JOB),^TMP("IBCE",$JOB),^TMP("IBILL",$JOB)
- +23 FOR IBX=1:1:10
- KILL ^TMP(("IBC"_IBX),$JOB)
- EXIT KILL IBX,IBPAR7,DIE,DA,DR,IBAUTO,IBBS,IBSC,IBT
- +1 QUIT
- +2 ;
- TEABD(TRN,IBDT) ;array contains the list of claims tracking events that need EABD updated, and the new date
- +1 SET IBDT=+$GET(IBDT)
- SET ^TMP("IBEABD",$JOB,TRN,+IBDT)=""
- +2 QUIT
- TERR(TRN,IFN,ER) ;array contains events or bills that need entries created in the comments file, and the comment
- +1 NEW X
- SET TRN=+$GET(TRN)
- SET IFN=+$GET(IFN)
- SET X=+$GET(^TMP("IBCE",$JOB,DT,TRN,IFN))+1
- +2 SET ^TMP("IBCE",$JOB,DT,TRN,IFN,X)=$GET(ER)
- SET ^TMP("IBCE",$JOB,DT,TRN,IFN)=X
- +3 QUIT
- TBILL(TRN,IFN) ;array contains list of events and bills to be inserted into 356.399
- +1 IF '$DATA(^IBT(356,+$GET(TRN),0))!('$DATA(^DGCR(399,+$GET(IFN),0)))
- QUIT
- +2 SET ^TMP("IBILL",$JOB,TRN,IFN)=""
- +3 QUIT