IBARXEC3 ;ALB/AAS -RX CO-PAY INCOME EXEMPTION CONVERSION ; 2-NOV-92
;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
;;Per VHA Directive 10-93-142, this routine should not be modified.
;
DQ ; -- run background sweep
;
U IO
S IBJOB=11
I $G(IBDONE)=1 G REPORT
S (IBTCNT,IBTECNT,IBTNCNT,IBTAMT,IBTEAMT,IBTNAMT,IBTCECNT,IBTCEAMT,IBTNECNT,IBTBCNT,IBTCBCNT,IBQUIT)=0
I IBARXJOB>1 S X=^IBE(350.9,1,3) D GET ; -- set variables to previous amounts
;
; -- Don't allow multiple conversion to run
D CHK G:IBQUIT DQEND
;
; -- Start with last patient processed
S DFN=+$P(^IBE(350.9,1,3),"^",4)
;
S IBDT=$S(IBDT<$$STDATE^IBARXEU:$$STDATE^IBARXEU,1:IBDT)
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 "."
I DFN="" S IBDONE=1 D
.; --set done flag once completed
.D NOW^%DTC S $P(^IBE(350.9,1,3),"^",14)=%
.;
.D ^IBARXEC2 ;send mail message if done
.Q
;
REPORT ; -- start the report process here
D:$G(IBDONE)=1 REPORT^IBARXEC1
DQEND D END^IBARXEC ;conversion all done
Q
;
PAT ; -- process one patient
;
K ^TMP($J,"IBARRY") D KVAR^VADPT
S (IBCNT,IBECNT,IBCECNT,IBNCNT,IBAMT,IBEAMT,IBCEAMT,IBNAMT,IBNECNT,IBBCNT,IBCBCNT)=0
S IBCNT=1 ;one patient checked
S IBSTAT=$$RXEXMT^IBARXEU0(DFN,DT) ;get current status
S:IBSTAT IBECNT=1 S:'IBSTAT IBNCNT=1 ; current status count
;
; -- must check each charge even if patient is exempt
D CANCEL^IBARXECA(DFN,IBDT,IBEDT) ;cancel IB charges for patient from beg to end
D COUNTS
D CANDT^IBARXEU4 ;see if converted on the fly
D ARCAN^IBARXEU4(DFN,IBSTAT,$P(IBCANDT,"^"),$P(IBCANDT,"^",2))
;
PATQ Q
;
;
COUNTS ; -- update the counts - Variables by:
;
; Patient Totals Represents
; ------- ------ ----------
; 5 ibcnt ibtcnt = : total patient count checked
; 6 ibecnt ibtecnt = : total exempt patients
; 7 ibncnt ibtncnt = : total non-exempt patients
; 8 ibcecnt ibtcecnt = : total count of exempt charges (rx's)
; 9 ibamt ibtamt = : total dollar amount checked
; 10 ibeamt ibteamt = : total exempt dollar amount
; 11 ibnamt ibtnamt = : total non-exempt dollar amount
; 12 ibceamt ibtceamt = : total cancelled charges amount
; 15 ibnecnt ibtnecnt = : total non-exempt count
; 16 ibbcnt ibtbcnt = : total bills checked
; 17 ibcbcnt ibtcbcnt = : total number of cancelled bills
;
S IBTCNT=IBTCNT+IBCNT
S IBTECNT=IBTECNT+IBECNT
S IBTNCNT=IBTNCNT+IBNCNT
S IBTCECNT=IBTCECNT+IBCECNT
S IBTAMT=IBTAMT+IBAMT
S IBTEAMT=IBTEAMT+IBEAMT
S IBTNAMT=IBTNAMT+IBNAMT
S IBTCEAMT=IBTCEAMT+IBCEAMT
S IBTNECNT=IBTNECNT+IBNECNT
S IBTBCNT=IBTBCNT+IBBCNT
S IBTCBCNT=IBTCBCNT+IBCBCNT
Q:'$D(IBCONVER)
;
; -- set run paramters for conversion
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
Q
;
CHK ; -- Don't allow multiple conversion to run
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
Q
;
READ ; -- pause, check for an excape
N X,IBSHOW F R X:1 Q:'$T I X["^" D:'$D(IBSHOW) QUIC^IBARXEC1 S IBSHOW=""
Q
;
GET ; -- set initialization variable if restarting
S IBTCNT=$P(X,"^",5)
S IBTECNT=$P(X,"^",6)
S IBTNCNT=$P(X,"^",7)
S IBTCECNT=$P(X,"^",8)
S IBTAMT=$P(X,"^",9)
S IBTEAMT=$P(X,"^",10)
S IBTNAMT=$P(X,"^",11)
S IBTCEAMT=$P(X,"^",12)
S IBTNECNT=$P(X,"^",15)
S IBTBCNT=$P(X,"^",16)
S IBTCBCNT=$P(X,"^",17)
Q
IBARXEC3 ;ALB/AAS -RX CO-PAY INCOME EXEMPTION CONVERSION ; 2-NOV-92
+1 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
+2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
DQ ; -- run background sweep
+1 ;
+2 USE IO
+3 SET IBJOB=11
+4 IF $GET(IBDONE)=1
GOTO REPORT
+5 SET (IBTCNT,IBTECNT,IBTNCNT,IBTAMT,IBTEAMT,IBTNAMT,IBTCECNT,IBTCEAMT,IBTNECNT,IBTBCNT,IBTCBCNT,IBQUIT)=0
+6 ; -- set variables to previous amounts
IF IBARXJOB>1
SET X=^IBE(350.9,1,3)
DO GET
+7 ;
+8 ; -- Don't allow multiple conversion to run
+9 DO CHK
IF IBQUIT
GOTO DQEND
+10 ;
+11 ; -- Start with last patient processed
+12 SET DFN=+$PIECE(^IBE(350.9,1,3),"^",4)
+13 ;
+14 SET IBDT=$SELECT(IBDT<$$STDATE^IBARXEU:$$STDATE^IBARXEU,1:IBDT)
+15 FOR
SET DFN=$ORDER(^IB("APTDT",DFN))
IF 'DFN
QUIT
DO CHK
IF IBQUIT
QUIT
IF $ORDER(^IB("APTDT",DFN,(IBDT-.01)))'>IBEDT
DO PAT
IF '$DATA(ZTQUEUED)
IF '(IBTCNT#10)
DO READ
WRITE "."
+16 IF DFN=""
SET IBDONE=1
Begin DoDot:1
+17 ; --set done flag once completed
+18 DO NOW^%DTC
SET $PIECE(^IBE(350.9,1,3),"^",14)=%
+19 ;
+20 ;send mail message if done
DO ^IBARXEC2
+21 QUIT
End DoDot:1
+22 ;
REPORT ; -- start the report process here
+1 IF $GET(IBDONE)=1
DO REPORT^IBARXEC1
DQEND ;conversion all done
DO END^IBARXEC
+1 QUIT
+2 ;
PAT ; -- process one patient
+1 ;
+2 KILL ^TMP($JOB,"IBARRY")
DO KVAR^VADPT
+3 SET (IBCNT,IBECNT,IBCECNT,IBNCNT,IBAMT,IBEAMT,IBCEAMT,IBNAMT,IBNECNT,IBBCNT,IBCBCNT)=0
+4 ;one patient checked
SET IBCNT=1
+5 ;get current status
SET IBSTAT=$$RXEXMT^IBARXEU0(DFN,DT)
+6 ; current status count
IF IBSTAT
SET IBECNT=1
IF 'IBSTAT
SET IBNCNT=1
+7 ;
+8 ; -- must check each charge even if patient is exempt
+9 ;cancel IB charges for patient from beg to end
DO CANCEL^IBARXECA(DFN,IBDT,IBEDT)
+10 DO COUNTS
+11 ;see if converted on the fly
DO CANDT^IBARXEU4
+12 DO ARCAN^IBARXEU4(DFN,IBSTAT,$PIECE(IBCANDT,"^"),$PIECE(IBCANDT,"^",2))
+13 ;
PATQ QUIT
+1 ;
+2 ;
COUNTS ; -- update the counts - Variables by:
+1 ;
+2 ; Patient Totals Represents
+3 ; ------- ------ ----------
+4 ; 5 ibcnt ibtcnt = : total patient count checked
+5 ; 6 ibecnt ibtecnt = : total exempt patients
+6 ; 7 ibncnt ibtncnt = : total non-exempt patients
+7 ; 8 ibcecnt ibtcecnt = : total count of exempt charges (rx's)
+8 ; 9 ibamt ibtamt = : total dollar amount checked
+9 ; 10 ibeamt ibteamt = : total exempt dollar amount
+10 ; 11 ibnamt ibtnamt = : total non-exempt dollar amount
+11 ; 12 ibceamt ibtceamt = : total cancelled charges amount
+12 ; 15 ibnecnt ibtnecnt = : total non-exempt count
+13 ; 16 ibbcnt ibtbcnt = : total bills checked
+14 ; 17 ibcbcnt ibtcbcnt = : total number of cancelled bills
+15 ;
+16 SET IBTCNT=IBTCNT+IBCNT
+17 SET IBTECNT=IBTECNT+IBECNT
+18 SET IBTNCNT=IBTNCNT+IBNCNT
+19 SET IBTCECNT=IBTCECNT+IBCECNT
+20 SET IBTAMT=IBTAMT+IBAMT
+21 SET IBTEAMT=IBTEAMT+IBEAMT
+22 SET IBTNAMT=IBTNAMT+IBNAMT
+23 SET IBTCEAMT=IBTCEAMT+IBCEAMT
+24 SET IBTNECNT=IBTNECNT+IBNECNT
+25 SET IBTBCNT=IBTBCNT+IBBCNT
+26 SET IBTCBCNT=IBTCBCNT+IBCBCNT
+27 IF '$DATA(IBCONVER)
QUIT
+28 ;
+29 ; -- set run paramters for conversion
+30 SET $PIECE(^IBE(350.9,1,3),"^",4,12)=DFN_U_IBTCNT_U_IBTECNT_U_IBTNCNT_U_IBTCECNT_U_IBTAMT_U_IBTEAMT_U_IBTNAMT_U_IBTCEAMT
SET $PIECE(^(3),"^",15,17)=IBTNECNT_U_IBTBCNT_U_IBTCBCNT
+31 QUIT
+32 ;
CHK ; -- Don't allow multiple conversion to run
+1 IF IBARXJOB'=$PIECE(^IBE(350.9,1,3),"^",3)
WRITE !!,"The Integrated Billing Check of Pharmacy Copay Exemption due to Income",!,"was terminated. Appears to be already running!"
SET IBQUIT=1
+2 QUIT
+3 ;
READ ; -- pause, check for an excape
+1 NEW X,IBSHOW
FOR
READ X:1
IF '$TEST
QUIT
IF X["^"
IF '$DATA(IBSHOW)
DO QUIC^IBARXEC1
SET IBSHOW=""
+2 QUIT
+3 ;
GET ; -- set initialization variable if restarting
+1 SET IBTCNT=$PIECE(X,"^",5)
+2 SET IBTECNT=$PIECE(X,"^",6)
+3 SET IBTNCNT=$PIECE(X,"^",7)
+4 SET IBTCECNT=$PIECE(X,"^",8)
+5 SET IBTAMT=$PIECE(X,"^",9)
+6 SET IBTEAMT=$PIECE(X,"^",10)
+7 SET IBTNAMT=$PIECE(X,"^",11)
+8 SET IBTCEAMT=$PIECE(X,"^",12)
+9 SET IBTNECNT=$PIECE(X,"^",15)
+10 SET IBTBCNT=$PIECE(X,"^",16)
+11 SET IBTCBCNT=$PIECE(X,"^",17)
+12 QUIT