- 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