| 1 | IBACVA1 ;ALB/CPM - BILL CHAMPVA SUBSISTENCE CHARGE ; 29-JUL-93 | 
|---|
| 2 | ;;Version 2.0 ; INTEGRATED BILLING ;**27,45,52**; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | BILL ; Create the CHAMPVA inpatient subsistence charge. | 
|---|
| 6 | S IBY=1 I '$$CHECK^IBECEAU(0) D ERRMSG^IBACVA2(1,1) G BILLQ | 
|---|
| 7 | S IBCHGT=0 | 
|---|
| 8 | D LIM($$HTFM^XLFDT(IBBDT,1)) | 
|---|
| 9 | I IBY<0 W:$G(IBJOB)=4 !!,"Cannot determine the Subsistence limit!" D ERRMSG^IBACVA2(1,1) G BILLQ | 
|---|
| 10 | ; | 
|---|
| 11 | ; - calculate the subsistence charge for the episode | 
|---|
| 12 | F IBD=IBBDT:1:IBEDT S IBDT=$$HTFM^XLFDT(IBD,1) D  Q:IBY<0 | 
|---|
| 13 | .I IBBDT'=IBEDT S VAIP("D")=IBDT_.2359 D IN5^VADPT Q:'VAIP(10)  ; on leave | 
|---|
| 14 | .D PD(IBDT) Q:IBY<0  ; can't find daily per diem | 
|---|
| 15 | .S:'IBCHGT IBFR=IBDT ; set 'from date' on 1st pass | 
|---|
| 16 | .S IBCHGT=IBCHGT+IBCHG,IBTO=IBDT ; build cumulative charge/set 'to date' | 
|---|
| 17 | I IBY<0 W:$G(IBJOB)=4 !!,"Cannot determine Subsistence per diem rate!" D ERRMSG^IBACVA2(1,1) G BILLQ | 
|---|
| 18 | I IBCHGT<IBLIM S IBCHGT=IBLIM,IBTO=IBDT | 
|---|
| 19 | ; | 
|---|
| 20 | ; - display message and get confirmation for Cancel/Edit/Add. | 
|---|
| 21 | I $G(IBJOB)=4 D  G:IBY<0 BILLQ | 
|---|
| 22 | .W !!,"The following billing parameters have been calculated:" | 
|---|
| 23 | .W !!,"    Bill From: ",$$DAT1^IBOUTL(IBFR) | 
|---|
| 24 | .W !,"      Bill To: ",$$DAT1^IBOUTL(IBTO) | 
|---|
| 25 | .W !,"       Charge: $",IBCHGT,! | 
|---|
| 26 | .D PROC^IBECEAU4("add") | 
|---|
| 27 | ; | 
|---|
| 28 | ; - bill the charge | 
|---|
| 29 | W:'$G(DGQUIET) !,"Billing the CHAMPVA inpatient subsistence charge..." | 
|---|
| 30 | S IBUNIT=1,IBDESC="CHAMPVA SUBSISTENCE",IBCHG=IBCHGT,IBSL="405:"_IBSL | 
|---|
| 31 | D ADD^IBECEAU3 I IBY<0 D ERRMSG^IBACVA2(1,1) G BILLQ | 
|---|
| 32 | ; | 
|---|
| 33 | ; - release the charge to AR | 
|---|
| 34 | D AR^IBR I IBY<0 D ERRMSG^IBACVA2(1,1) G BILLQ | 
|---|
| 35 | ; | 
|---|
| 36 | S:$G(IBJOB)=4 IBCOMMIT=1 W:'$G(DGQUIET) "completed." | 
|---|
| 37 | ; | 
|---|
| 38 | BILLQ Q | 
|---|
| 39 | ; | 
|---|
| 40 | LIM(DATE) ; Find the CHAMPVA subsistence limit on DATE. | 
|---|
| 41 | ;  Input:    DATE  --  The date on which to determine the limit | 
|---|
| 42 | ;  Output:  IBLIM  --  The maximum subsistence charge for an episode | 
|---|
| 43 | N X S IBLIM=0 | 
|---|
| 44 | S X=$O(^IBE(350.1,"E","CHAMPVA LIMIT",0)) I 'X S IBY="-1^IB083" G LIMQ | 
|---|
| 45 | S X=$O(^IBE(350.2,"AIVDT",+X,-(DATE+.1))),X=$O(^(+X,0)) | 
|---|
| 46 | S IBLIM=$P($G(^IBE(350.2,+X,0)),"^",4) I 'IBLIM S IBY="-1^IB084" | 
|---|
| 47 | LIMQ Q | 
|---|
| 48 | ; | 
|---|
| 49 | PD(IBDT) ; Find the CHAMPVA per diem charge on IBDT. | 
|---|
| 50 | ;  Input:    IBDT  --  The date on which to determine the per diem | 
|---|
| 51 | ;  Output:  IBCHG  --  The CHAMPVA per diem charge on IBDT | 
|---|
| 52 | ;          IBATYP  --  CHAMPVA Action Type | 
|---|
| 53 | S IBATYP=$O(^IBE(350.1,"E","CHAMPVA SUBSISTENCE",0)),IBCHG=0 | 
|---|
| 54 | I 'IBATYP S IBY="-1^IB008" G PDQ | 
|---|
| 55 | D COST^IBAUTL2 I 'IBCHG S IBY="-1^IB029" | 
|---|
| 56 | PDQ Q | 
|---|
| 57 | ; | 
|---|
| 58 | PREV(DFN,DATE,LINK) ; Billed an admission the CHAMPVA subsistence charge? | 
|---|
| 59 | ;  Input:     DFN  --  Pointer to patient in file #2 | 
|---|
| 60 | ;            DATE  --  Event (admission) date | 
|---|
| 61 | ;            LINK  --  Pointer to mvmt in file #405 | 
|---|
| 62 | ;  Output:      0  --  Admission has not been billed, or | 
|---|
| 63 | ;              >0  --  ien of billed charge in file #350 | 
|---|
| 64 | I '$G(DFN)!'$G(DATE)!'$G(LINK) G PREVQ | 
|---|
| 65 | N IBN,IBND,IBP,Y | 
|---|
| 66 | S IBP=0 F  S IBP=$O(^IB("ACVA",DFN,DATE,IBP)) Q:'IBP  S IBN=$$LAST^IBECEAU(IBP),IBND=$G(^IB(IBN,0)) I $P($G(^IBE(350.1,+$P(IBND,"^",3),0)),"^",5)'=2,$P(IBND,"^",4)=("405:"_LINK),"^3^4^"[("^"_+$P(IBND,"^",5)_"^") S Y=IBN Q | 
|---|
| 67 | PREVQ Q +$G(Y) | 
|---|