| 1 | IBCD ;ALB/ARH - AUTOMATED BILLER ;8/6/93
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**312**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;This routine is the begining of the auto biller.  No variables are required on entry.  It is be called by the
 | 
|---|
| 6 |  ;IB nightly job routine IBAMTC.  It first checks to see if it should run based on the auto biller frequency
 | 
|---|
| 7 |  ;site parameter.  It then gathers the Claims Tracking events with an EABD into a temporary file by patient,
 | 
|---|
| 8 |  ;event type, and episode date.  This temporary file ("IBACAB") is then used to sort the events into groups
 | 
|---|
| 9 |  ;that should be added to individual bills based on the individual event type billing cycle parameters.  This
 | 
|---|
| 10 |  ;second temporary file is then used to create the actual bills in IBCD1-2.
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | EN ;begin process of finding and creating bills
 | 
|---|
| 13 |  ;determine if auto biller should run, check site parameters (350.9,7.01-7.02)
 | 
|---|
| 14 |  N IBSWINFO,IBPFSS S IBSWINFO=$$SWSTAT^IBBAPI()            ;IB*2.0*312
 | 
|---|
| 15 |  S IBPAR7=$G(^IBE(350.9,1,7)) G:'$P(IBPAR7,U,1) EXIT
 | 
|---|
| 16 |  I +IBPAR7,+$P(IBPAR7,U,2),$$FMADD^XLFDT(+$P(IBPAR7,U,2),+IBPAR7)>DT G EXIT
 | 
|---|
| 17 |  S IBAUTO=1
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;begin search for events to bill, create array of events by patient
 | 
|---|
| 20 |  ;^TMP("IBCAB",$J, PATIENT, EVENT TYPE, EPISODE DATE, EVENT IFN)=""
 | 
|---|
| 21 |  ;adds all events in Claims Tracking that have an EABD not after today
 | 
|---|
| 22 |  S IBDFN=0 F  S IBDFN=$O(^IBT(356,"ATOBIL",IBDFN)) Q:'IBDFN  D
 | 
|---|
| 23 |  . S IBTYP=0 F  S IBTYP=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP)) Q:'IBTYP  D
 | 
|---|
| 24 |  .. S IBEABD=0 F  S IBEABD=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD)) Q:'IBEABD!(IBEABD>DT)  D
 | 
|---|
| 25 |  ... S IBTRN=0 F  S IBTRN=$O(^IBT(356,"ATOBIL",IBDFN,IBTYP,IBEABD,IBTRN)) Q:'IBTRN  D
 | 
|---|
| 26 |  .... 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
 | 
|---|
| 27 |  .... S IBX=$$EVNTCHK^IBCU82(IBTRN) I +IBX D TEABD(IBTRN,0) D TERR(IBTRN,0,$P(IBX,U,2)) Q
 | 
|---|
| 28 |  .... S IBTRND=$G(^IBT(356,IBTRN,0))
 | 
|---|
| 29 |  .... I +IBSWINFO D  Q:IBPFSS                               ;IB*2.0*312
 | 
|---|
| 30 |    ..... S IBPFSS=1                                         ;IB*2.0*312
 | 
|---|
| 31 |    ..... ; Do NOT PROCESS on VistA if DT>=Switch Eff Date   ;CCR-930
 | 
|---|
| 32 |    ..... I ($P(IBTRND,"^",6)+1)>$P(IBSWINFO,"^",2) Q        ;IB*2.0*312
 | 
|---|
| 33 |    ..... I $P($G(^DPT(IBDFN,.1)),"^")'="" Q                 ;IB*2.0*312
 | 
|---|
| 34 |    ..... Q:$$CHKDIS()                                       ;CCR-1081
 | 
|---|
| 35 |    ..... S IBPFSS=0     ;Before EffDt & Discharged          ;IB*2.0*312
 | 
|---|
| 36 |  .... ;
 | 
|---|
| 37 |  .... S ^TMP("IBCAB",$J,IBDFN,IBTYP,+$P(IBTRND,U,6),IBTRN)=""
 | 
|---|
| 38 |  K IBDFN,IBTYP,IBEABD,IBTRN,IBTRND,IBX
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  I $D(^TMP("IBCAB",$J)) D ^IBCD1 ; consolidate events into bills, create bills
 | 
|---|
| 41 |  D ^IBCDC ; set comments into file
 | 
|---|
| 42 |  S DIE="^IBE(350.9,",DA=1,DR="7.02////"_DT D ^DIE ;reset last date auto biller run
 | 
|---|
| 43 |  K ^TMP("IBCAB",$J),^TMP("IBEABD",$J),^TMP("IBCE",$J),^TMP("IBILL",$J)
 | 
|---|
| 44 |  F IBX=1:1:10 K ^TMP(("IBC"_IBX),$J)
 | 
|---|
| 45 | EXIT K IBX,IBPAR7,DIE,DA,DR,IBAUTO,IBBS,IBSC,IBT
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | CHKDIS() ; Returns 1 if discharge was on or after effective date   ;CCR-1081
 | 
|---|
| 48 |  N IBADMLNK,IBDISLNK
 | 
|---|
| 49 |  S IBADMLNK=$P(IBTRND,"^",5) G:'IBADMLNK CHKDISQ
 | 
|---|
| 50 |  S IBDISLNK=$P($G(^DGPM(IBADMLNK,0)),"^",17) G:'IBDISLNK CHKDISQ
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  I (^DGPM(IBDISLNK,0)+1)>$P(IBSWINFO,"^",2) Q 1
 | 
|---|
| 53 | CHKDISQ Q 0
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | TEABD(TRN,IBDT) ;array contains the list of claims tracking events that need EABD updated, and the new date
 | 
|---|
| 56 |  S IBDT=+$G(IBDT),^TMP("IBEABD",$J,TRN,+IBDT)=""
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | TERR(TRN,IFN,ER) ;array contains events or bills that need entries created in the comments file, and the comment
 | 
|---|
| 59 |  N X S TRN=+$G(TRN),IFN=+$G(IFN),X=+$G(^TMP("IBCE",$J,DT,TRN,IFN))+1
 | 
|---|
| 60 |  S ^TMP("IBCE",$J,DT,TRN,IFN,X)=$G(ER),^TMP("IBCE",$J,DT,TRN,IFN)=X
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | TBILL(TRN,IFN) ;array contains list of events and bills to be inserted into 356.399
 | 
|---|
| 63 |  I '$D(^IBT(356,+$G(TRN),0))!('$D(^DGCR(399,+$G(IFN),0))) Q
 | 
|---|
| 64 |  S ^TMP("IBILL",$J,TRN,IFN)=""
 | 
|---|
| 65 |  Q
 | 
|---|