| 1 | IBARXEC3 ;ALB/AAS -RX CO-PAY INCOME EXEMPTION CONVERSION ; 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 | DQ ; -- run background sweep | 
|---|
| 6 | ; | 
|---|
| 7 | U IO | 
|---|
| 8 | S IBJOB=11 | 
|---|
| 9 | I $G(IBDONE)=1 G REPORT | 
|---|
| 10 | S (IBTCNT,IBTECNT,IBTNCNT,IBTAMT,IBTEAMT,IBTNAMT,IBTCECNT,IBTCEAMT,IBTNECNT,IBTBCNT,IBTCBCNT,IBQUIT)=0 | 
|---|
| 11 | I IBARXJOB>1 S X=^IBE(350.9,1,3) D GET ; -- set variables to previous amounts | 
|---|
| 12 | ; | 
|---|
| 13 | ; -- Don't allow multiple conversion to run | 
|---|
| 14 | D CHK G:IBQUIT DQEND | 
|---|
| 15 | ; | 
|---|
| 16 | ; -- Start with last patient processed | 
|---|
| 17 | S DFN=+$P(^IBE(350.9,1,3),"^",4) | 
|---|
| 18 | ; | 
|---|
| 19 | S IBDT=$S(IBDT<$$STDATE^IBARXEU:$$STDATE^IBARXEU,1:IBDT) | 
|---|
| 20 | F  S DFN=$O(^IB("APTDT",DFN)) Q:'DFN  D CHK Q:IBQUIT  I $O(^IB("APTDT",DFN,(IBDT-.01)))'>IBEDT D PAT I '$D(ZTQUEUED),'(IBTCNT#10) D READ W "." | 
|---|
| 21 | I DFN="" S IBDONE=1 D | 
|---|
| 22 | .; --set done flag once completed | 
|---|
| 23 | .D NOW^%DTC S $P(^IBE(350.9,1,3),"^",14)=% | 
|---|
| 24 | .; | 
|---|
| 25 | .D ^IBARXEC2 ;send mail message if done | 
|---|
| 26 | .Q | 
|---|
| 27 | ; | 
|---|
| 28 | REPORT ; -- start the report process here | 
|---|
| 29 | D:$G(IBDONE)=1 REPORT^IBARXEC1 | 
|---|
| 30 | DQEND D END^IBARXEC ;conversion all done | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | PAT ; -- process one patient | 
|---|
| 34 | ; | 
|---|
| 35 | K ^TMP($J,"IBARRY") D KVAR^VADPT | 
|---|
| 36 | S (IBCNT,IBECNT,IBCECNT,IBNCNT,IBAMT,IBEAMT,IBCEAMT,IBNAMT,IBNECNT,IBBCNT,IBCBCNT)=0 | 
|---|
| 37 | S IBCNT=1 ;one patient checked | 
|---|
| 38 | S IBSTAT=$$RXEXMT^IBARXEU0(DFN,DT) ;get current status | 
|---|
| 39 | S:IBSTAT IBECNT=1 S:'IBSTAT IBNCNT=1 ; current status count | 
|---|
| 40 | ; | 
|---|
| 41 | ; -- must check each charge even if patient is exempt | 
|---|
| 42 | D CANCEL^IBARXECA(DFN,IBDT,IBEDT) ;cancel IB charges for patient from beg to end | 
|---|
| 43 | D COUNTS | 
|---|
| 44 | D CANDT^IBARXEU4 ;see if converted on the fly | 
|---|
| 45 | D ARCAN^IBARXEU4(DFN,IBSTAT,$P(IBCANDT,"^"),$P(IBCANDT,"^",2)) | 
|---|
| 46 | ; | 
|---|
| 47 | PATQ Q | 
|---|
| 48 | ; | 
|---|
| 49 | ; | 
|---|
| 50 | COUNTS ; -- update the counts  -  Variables by: | 
|---|
| 51 | ; | 
|---|
| 52 | ;      Patient    Totals       Represents | 
|---|
| 53 | ;      -------    ------       ---------- | 
|---|
| 54 | ;  5   ibcnt      ibtcnt   = : total patient count checked | 
|---|
| 55 | ;  6   ibecnt     ibtecnt  = : total exempt patients | 
|---|
| 56 | ;  7   ibncnt     ibtncnt  = : total non-exempt patients | 
|---|
| 57 | ;  8   ibcecnt    ibtcecnt = : total count of exempt charges (rx's) | 
|---|
| 58 | ;  9   ibamt      ibtamt   = : total dollar amount checked | 
|---|
| 59 | ; 10   ibeamt     ibteamt  = : total exempt dollar amount | 
|---|
| 60 | ; 11   ibnamt     ibtnamt  = : total non-exempt dollar amount | 
|---|
| 61 | ; 12   ibceamt    ibtceamt = : total cancelled charges amount | 
|---|
| 62 | ; 15   ibnecnt    ibtnecnt = : total non-exempt count | 
|---|
| 63 | ; 16   ibbcnt     ibtbcnt  = : total bills checked | 
|---|
| 64 | ; 17   ibcbcnt    ibtcbcnt = : total number of cancelled bills | 
|---|
| 65 | ; | 
|---|
| 66 | S IBTCNT=IBTCNT+IBCNT | 
|---|
| 67 | S IBTECNT=IBTECNT+IBECNT | 
|---|
| 68 | S IBTNCNT=IBTNCNT+IBNCNT | 
|---|
| 69 | S IBTCECNT=IBTCECNT+IBCECNT | 
|---|
| 70 | S IBTAMT=IBTAMT+IBAMT | 
|---|
| 71 | S IBTEAMT=IBTEAMT+IBEAMT | 
|---|
| 72 | S IBTNAMT=IBTNAMT+IBNAMT | 
|---|
| 73 | S IBTCEAMT=IBTCEAMT+IBCEAMT | 
|---|
| 74 | S IBTNECNT=IBTNECNT+IBNECNT | 
|---|
| 75 | S IBTBCNT=IBTBCNT+IBBCNT | 
|---|
| 76 | S IBTCBCNT=IBTCBCNT+IBCBCNT | 
|---|
| 77 | Q:'$D(IBCONVER) | 
|---|
| 78 | ; | 
|---|
| 79 | ; -- set run paramters for conversion | 
|---|
| 80 | S $P(^IBE(350.9,1,3),"^",4,12)=DFN_U_IBTCNT_U_IBTECNT_U_IBTNCNT_U_IBTCECNT_U_IBTAMT_U_IBTEAMT_U_IBTNAMT_U_IBTCEAMT,$P(^(3),"^",15,17)=IBTNECNT_U_IBTBCNT_U_IBTCBCNT | 
|---|
| 81 | Q | 
|---|
| 82 | ; | 
|---|
| 83 | CHK ; -- Don't allow multiple conversion to run | 
|---|
| 84 | I IBARXJOB'=$P(^IBE(350.9,1,3),"^",3)  W !!,"The Integrated Billing Check of Pharmacy Copay Exemption due to Income",!,"was terminated.  Appears to be already running!" S IBQUIT=1 | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | READ ; -- pause, check for an excape | 
|---|
| 88 | N X,IBSHOW F  R X:1 Q:'$T  I X["^" D:'$D(IBSHOW) QUIC^IBARXEC1 S IBSHOW="" | 
|---|
| 89 | Q | 
|---|
| 90 | ; | 
|---|
| 91 | GET ; -- set initialization variable if restarting | 
|---|
| 92 | S IBTCNT=$P(X,"^",5) | 
|---|
| 93 | S IBTECNT=$P(X,"^",6) | 
|---|
| 94 | S IBTNCNT=$P(X,"^",7) | 
|---|
| 95 | S IBTCECNT=$P(X,"^",8) | 
|---|
| 96 | S IBTAMT=$P(X,"^",9) | 
|---|
| 97 | S IBTEAMT=$P(X,"^",10) | 
|---|
| 98 | S IBTNAMT=$P(X,"^",11) | 
|---|
| 99 | S IBTCEAMT=$P(X,"^",12) | 
|---|
| 100 | S IBTNECNT=$P(X,"^",15) | 
|---|
| 101 | S IBTBCNT=$P(X,"^",16) | 
|---|
| 102 | S IBTCBCNT=$P(X,"^",17) | 
|---|
| 103 | Q | 
|---|