| 1 | IBARXECA ;ALB/AAS -RX CO-PAY INCOME EXEMPTION CANCEL OLD BILLS ; 2-NOV-92 | 
|---|
| 2 | ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | % ; -- count variables | 
|---|
| 6 | ;      Patient    Totals       Represents | 
|---|
| 7 | ;      -------    ------       ---------- | 
|---|
| 8 | ;  5   ibcnt      ibtcnt   = : total patient count checked | 
|---|
| 9 | ;  6   ibecnt     ibtecnt  = : total exempt patients | 
|---|
| 10 | ;  7   ibncnt     ibtncnt  = : total non-exempt patients | 
|---|
| 11 | ;  8   ibcecnt    ibtcecnt = : total count of exempt charges (rx's) | 
|---|
| 12 | ;  9   ibamt      ibtamt   = : total dollar amount checked | 
|---|
| 13 | ; 10   ibeamt     ibteamt  = : total exempt dollar amount | 
|---|
| 14 | ; 11   ibnamt     ibtnamt  = : total non-exempt dollar amount | 
|---|
| 15 | ; 12   ibceamt    ibtceamt = : total cancelled charges amount | 
|---|
| 16 | ; 15   ibnecnt    ibtnecnt = : total non-exempt count | 
|---|
| 17 | ; 16   ibbcnt     ibtbcnt  = : total bills checked | 
|---|
| 18 | ; 17   ibcbcnt    ibtcbcnt = : total number of cancelled bills | 
|---|
| 19 | ; | 
|---|
| 20 | CANCEL(DFN,IBDT,IBEDT) ; -- cancel all charges for a patient for a date range | 
|---|
| 21 | ;  do not pass to ar as its done, call all at once later. | 
|---|
| 22 | ; | 
|---|
| 23 | D ARPARM^IBAUTL | 
|---|
| 24 | S IBBDT=IBDT-.00001 | 
|---|
| 25 | F  S IBBDT=$O(^IB("APTDT",DFN,IBBDT)) Q:'IBBDT!((IBEDT+.9)<IBBDT)  S IBN=0 F  S IBN=$O(^IB("APTDT",DFN,IBBDT,IBN)) Q:'IBN  D BILL | 
|---|
| 26 | ; | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | BILL ; -- process cancelling one bill | 
|---|
| 30 | S X=$G(^IB(IBN,0)) Q:X="" | 
|---|
| 31 | Q:+$P(X,"^",4)'=52  ;quit if not pharmacy co-pay | 
|---|
| 32 | ; find parent | 
|---|
| 33 | S IBPARNT=$P(X,"^",9) Q:$D(^TMP($J,"IBARRY",DFN,IBPARNT))  ;don't keep checking  modifications to charge already checked | 
|---|
| 34 | ; | 
|---|
| 35 | S ^TMP($J,"IBARRY",DFN,IBPARNT)="" | 
|---|
| 36 | S IBPARDT=$P($G(^IB(IBPARNT,1)),"^",2) ; get date of parent charge | 
|---|
| 37 | I $S(IBPARDT="":1,IBPARDT<IBDT:1,IBPARDT>IBEDT:1,1:0) ; ignore charges started before or after date range | 
|---|
| 38 | ; | 
|---|
| 39 | ; -- get exemption status on date of charge | 
|---|
| 40 | ;    (NOT NECESSARY, conversion will use only current exemption | 
|---|
| 41 | ;S IBSTAT=$$RXEXMT^IBARXEU0(DFN,IBPARDT) | 
|---|
| 42 | ; | 
|---|
| 43 | ; -- get must recent ibaction | 
|---|
| 44 | S IBPARNT1=IBPARNT F  S IBPARNT1=$P($G(^IB(IBPARNT,0)),"^",9) Q:IBPARNT1=IBPARNT  S IBPARNT=IBPARNT1 ;gets parent of parents, makes sure old bug where parents get lost isn't a problem | 
|---|
| 45 | D LAST | 
|---|
| 46 | ; | 
|---|
| 47 | ; -- add charge amounts to corrct variable | 
|---|
| 48 | S IBND=$G(^IB(IBLAST,0)),IBBCNT=IBBCNT+1,IBAMT=IBAMT+$P(IBND,"^",7) | 
|---|
| 49 | S:IBSTAT IBCECNT=IBCECNT+1,IBEAMT=IBEAMT+$P(IBND,"^",7) | 
|---|
| 50 | S:'IBSTAT IBNECNT=IBNECNT+1,IBNAMT=IBNAMT+$P(IBND,"^",7) | 
|---|
| 51 | ; | 
|---|
| 52 | Q:'IBSTAT  ;quit if non-exempt | 
|---|
| 53 | Q:$P(^IBE(350.1,$P(^IB(IBLAST,0),"^",3),0),"^",5)=2  ;quit if already cancelled | 
|---|
| 54 | ; | 
|---|
| 55 | ; -- add cancellation charge for amount | 
|---|
| 56 | S IBCEAMT=IBCEAMT+$P(IBND,"^",7),IBCBCNT=IBCBCNT+1 ;counts of amount of actual cancellations | 
|---|
| 57 | S IBCRES=$O(^IBE(350.3,"B","RX COPAY INCOME EXEMPTION",0)) ; get cancellation reason | 
|---|
| 58 | ; | 
|---|
| 59 | D CANRX^IBARXEU3 | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | END ;K VARIABLES | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | LAST ; -- find most recent (the last) entry for a parent action | 
|---|
| 66 | S IBLAST="" | 
|---|
| 67 | S IBLDT=$O(^IB("APDT",IBPARNT,"")) I +IBLDT F IBL=0:0 S IBL=$O(^IB("APDT",IBPARNT,IBLDT,IBL)) Q:'IBL  S IBLAST=IBL | 
|---|
| 68 | I IBLAST="" S IBLAST=IBPARNT | 
|---|
| 69 | Q | 
|---|