| 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
 | 
|---|