- BPSBCKJ ;BHAM ISC/AAT - BPS NIGHTLY BACKGROUND JOB ;02/27/2005
- ;;1.0;E CLAIMS MGMT ENGINE;**1,2,5,7,8,22**;JUN 2004;Build 28
- ;;Per VA Directive 6402, this routine should not be modified.
- ;
- Q
- ;
- EN ; The ECME NIGHTLY PROCESS
- ;
- ; The list of nightly actions
- D AUTOREV ; Auto-Reversals (normal and inpatient)
- D MAIN^BPSOSK ; Purge BPS LOG
- D TASKMAN^BPSJAREG ; Do automatic registration.
- Q
- ;
- AUTOREV ; The Auto-Reverse Procedure
- N BDT,BTRAN,BPHARM,BTRAN0,BTRAN1,BTRAN4,BDAYS,BRX,BFIL,BDATE,BNOW,BCLAIM,BRES,BREV,BTEST,REF,BCNT,BTX,X,X1,X2
- N BTRAN9,BELIG,BDRUG
- ;
- S BTEST=0 ; Debugging flag 1 - TEST, 0 - LIVE
- S BCNT=0 ; Count reversals
- ;
- S REF=$NA(^TMP($J,"BPSBCKJ")) K @REF
- ;
- S (X1,BNOW)=$$DT^XLFDT()
- ;
- ;Define number of days to look back - Auto Reverse days can be from 0-31
- ;To make sure every claim is caught, moving back 45 days
- S X2=-45 D C^%DTC S BDT=X
- ;
- ;Loop through 'LAST UPDATE' 'AH' index
- F S BDT=$O(^BPST("AH",BDT)) Q:'BDT S BTRAN=0 F S BTRAN=$O(^BPST("AH",BDT,BTRAN)) Q:'BTRAN D
- . W:BTEST !,"TRAN=",BTRAN," ",?20
- . S BTRAN0=$G(^BPST(BTRAN,0)),BTRAN1=$G(^(1)),BTRAN4=$G(^(4)),BTRAN9=$G(^(9))
- . I BTRAN0=""!(BTRAN1="") W:BTEST "ZERO OR ONE NODE MISSING" Q
- . I '$$PAID^BPSOSQ4(BTRAN) W:BTEST "NOT PAID" Q ; Not paid
- . S BPHARM=$P(BTRAN1,U,7) I 'BPHARM W:BTEST "NO BPS PHARM" Q ; BPS PHARMACY
- . W:BTEST "BPHARM=",$P($G(^BPS(9002313.56,BPHARM,0)),U,1)," "
- . ;
- . ;Handle 'Inpatient' Auto-Reversals
- . S BREV=$$REVINP(BNOW,BTRAN,BTRAN0,BTRAN1,BPHARM,BTRAN9) Q:BREV
- . ;
- . ;Handle Regular Auto-Reversals
- . S BDAYS=+$P($G(^BPS(9002313.56,BPHARM,0)),U,9)
- . I 'BDAYS W:BTEST "AUTO-REV DISABLED" Q ;disabled
- . I $P(BTRAN4,U,1) Q ;Reversal claim exist
- . S BCLAIM=$P(BTRAN0,U,4) I 'BCLAIM W:BTEST "NO BCLAIM" Q
- . I $P($G(^BPSC(BCLAIM,0)),U,7) W:BTEST "AUTO-REVERSE FLAG" Q
- . S BDATE=$P($G(^BPSC(BCLAIM,0)),U,5)
- . I 'BDATE S BDATE=$P($G(^BPSC(BCLAIM,0)),U,6)
- . S BDATE=$P(BDATE,".")
- . I 'BDATE="" W:BTEST "NO DATE" Q
- . W:BTEST "DATE=",BDATE," "
- . I $$FMDIFF^XLFDT(BNOW,BDATE,1)'>BDAYS W:BTEST "TOO EARLY" Q
- . S BRX=$P(BTRAN1,U,11) I 'BRX W:BTEST "NO RX" Q
- . S BFIL=$P(BTRAN1,U,1)
- . I $$RELDATE(BRX,BFIL) W:BTEST " RELEASED" Q ;released
- . S BELIG=$P(BTRAN9,U,4) I BELIG="" W:BTEST "NO ELIGIBILITY" Q
- . S BDRUG=$$RXAPI1^BPSUTIL1(BRX,6,"E") I BDRUG="" W:BTEST "NO DRUG" Q
- . S BRES=$$REVERSE(BRX,BFIL,BCLAIM,1)
- . W:BTEST " *REV CLM=",BCLAIM," STAT=",BRES
- . I BRES=0!(BRES=4) D
- .. S (BCNT,@REF@(BRES))=$G(@REF@(BRES))+1
- .. S @REF@(BRES,BCNT)=BTRAN_U_BCLAIM_U_BRX_U_BFIL_U_BPHARM_U_BELIG_U_BDRUG
- . ; Any notifications to IB?
- D BULL(REF) ; Send the bulletin
- K @REF
- Q
- ;
- ;Auto-Reverse Claims for Current Inpatients
- ;
- ;20050810;BEE;Phase III - CR11
- ;
- REVINP(BNOW,BTRAN,BTRAN0,BTRAN1,BPHARM,BTRAN9) ;
- N BRX,BFIL,BCLAIM,BDATE,BDRUG,BELIG,BRES,DFN,VAIP
- ;
- ;Only process Window fills
- S BRX=+$P(BTRAN1,U,11) I BRX=0 Q 0
- S BFIL=+$P(BTRAN1,U)
- I $$MWC^BPSRPT6(BRX,BFIL)'="W" Q 0
- ;
- ;Check for Fill date - Must be equal to T-5
- S BCLAIM=$P(BTRAN0,U,4) I 'BCLAIM Q 0
- S BDATE=$$FILDATE(BRX,BFIL)
- S BDATE=$P(BDATE,".")
- I 'BDATE="" Q 0
- I $$FMDIFF^XLFDT(BNOW,BDATE,1)'=5 Q 0
- ;
- ;Check for current Inpatient
- S DFN=+$P(BTRAN0,U,6) I DFN=0 Q 0
- D IN5^VADPT
- I $G(VAIP(3))="" Q 0
- ;
- S BELIG=$P(BTRAN9,U,4)
- S BDRUG=$$RXAPI1^BPSUTIL1(BRX,6,"E")
- ;
- ;Auto-Reverse Claim
- S BRES=$$REVERSE(BRX,BFIL,BCLAIM,2)
- W:BTEST " *REV CLM=",BCLAIM," STAT=",BRES
- I BRES=0!(BRES=4) D
- . S (BCNT,@REF@(BRES))=$G(@REF@(BRES))+1
- . S @REF@(BRES,BCNT)=BTRAN_U_BCLAIM_U_BRX_U_BFIL_U_BPHARM_U_BELIG_U_BDRUG
- Q 1
- ;
- RELDATE(BRX,BFIL) ;Get the Released Date
- I BFIL Q $$RXSUBF1^BPSUTIL1(BRX,52,52.1,+BFIL,17,"I")
- Q $$RXAPI1^BPSUTIL1(BRX,31,"I")
- ;
- FILDATE(BRX,BFIL) ;Get the Fill Date
- I BFIL Q $$RXSUBF1^BPSUTIL1(BRX,52,52.1,+BFIL,.01,"I")
- Q $$RXAPI1^BPSUTIL1(BRX,22,"I")
- ;
- REVERSE(BRX,BFIL,BCLAIM,BTYPE) ;Auto-Reverse the claim
- ;PUBLIC BTEST
- N BDOS,BRES,BDAT,BMES,BRSN,BPSCOB,BP59
- I $G(BTEST) Q 0 ; Test mode
- ;
- ; Get Date of Service and set reversal reason
- S BDOS=$$DOSDATE^BPSSCRRS(BRX,BFIL)
- S BRSN=$S(BTYPE=2:"CURRENT INPATIENT",1:"PRESCRIPTION NOT RELEASED")
- ;
- S BP59=$$CLAIM59^BPSUTIL2(BCLAIM) ;get the BPS TRANSACTION IEN for the claim
- S BPSCOB=$$COB59^BPSUTIL2(BP59) ;get COB for the BPS TRANSACTION IEN
- ;
- ; Call ECME to process reversal
- S BRES=$$EN^BPSNCPDP(BRX,BFIL,BDOS,"AREV","",BRSN,"",,,,BPSCOB)
- ;
- ; If successful, log message to the Prescription Activity Log
- ; and set the auto-reversal flag
- S BRES=+BRES,BMES="ECME: AUTO REVERSAL JOB-"_$S(BPSCOB=1:"p",BPSCOB=2:"s",1:"")_$$INSNAME^BPSSCRU6(BP59)
- I BRES=0 D
- . D ECMEACT^PSOBPSU1(BRX,BFIL,BMES,.5)
- . S BDAT(9002313.02,BCLAIM_",",.07)=BTYPE D FILE^DIE("","BDAT")
- Q BRES
- ;
- ;
- BULL(REF) ;Bulletin to the OPECC
- ;PUBLIC BTEST,DUZ,DT
- N XMSUB,XMY,XMTEXT,XMDUZ,BLNUM
- ;
- I BCNT<1,'$G(BTEST),(+$G(@REF@(4)))=0 Q
- S BLNUM=0,BCNT=+$G(@REF@(0))
- S XMSUB="ECME AUTO-REVERSAL PROCESS"
- I $G(BTEST) D T("*** P L E A S E D I S R E G A R D T H I S E M A I L ***"),T(),T("NOT ACTUALLY REVERSED - THIS IS A TEST"),T()
- D T("The ECME Nightly Process submitted auto-reversals for the following e-Pharmacy")
- D T("prescriptions.")
- D T()
- D T("TOTAL CLAIMS SUBMITTED FOR AUTO-REVERSALS: "_BCNT)
- D T()
- D T("Claims Submitted for Auto-Reversals on "_$$DAT(DT)_":") D ARLIST(0,REF)
- D T()
- S BCNT=+$G(@REF@(4))
- I BCNT'=0 D
- . D T()
- . D T("The ECME Nightly Process attempted to auto-reverse the following claims but")
- . D T("could not because the previous request was IN PROGRESS. Please verify that")
- . D T("the previous request is not stranded.")
- . D T()
- . D T("Total number of claims that could not be auto-reversed: "_BCNT)
- . D T()
- . D T("Claims not auto-reversed on "_$$DAT(DT)_":")
- . D ARLIST(4,REF)
- . D T()
- ;
- S XMDUZ="BPS PACKAGE",XMTEXT="BTX("
- S XMY("G.BPS OPECC")=""
- I $G(DUZ)'<1 S XMY(DUZ)=""
- D ^XMD
- Q
- ;
- T(BTXT) ; Add text to the message
- ;PUBLIC BLNUM,BTEST
- S BLNUM=BLNUM+1,BTX(BLNUM)=$G(BTXT," ")
- I $G(BTEST) W !,$G(BTXT)
- Q
- ;
- ARLIST(BRES,REF) ;Auto-Rev List
- N I,TXT,BCLAIM,BTRAN,Y,BRX,BFIL,BFDATE,BPHARM,BRXN,BPHARMN,BPAT,BPSTAT,BELIG,BDRUG
- D T()
- D T(" # RX/FILL STATUS DATE ELIG PATIENT BPS PHARM DRUG NAME")
- D T("------------------------------------------------------------------------------")
- S I=0 F S I=$O(@REF@(BRES,I)) Q:'I D
- . S Y=@REF@(BRES,I)
- . S BTRAN=$P(Y,U)
- . S BCLAIM=$P(Y,U,2)
- . S BRX=$P(Y,U,3),BRXN=$$RXAPI1^BPSUTIL1(BRX,.01,"I")
- . S BPAT=$P($G(^DPT(+$$RXAPI1^BPSUTIL1(BRX,2,"I"),0)),U)
- . S BFIL=$P(Y,U,4)
- . S BPHARM=$P(Y,U,5),BPHARMN=$P($G(^BPS(9002313.56,BPHARM,0)),U)
- . S BELIG=$P(Y,U,6)
- . S BDRUG=$P(Y,U,7)
- . S BFDATE=$$FILDATE(BRX,BFIL)
- . S BPSTAT=$$MWC^BPSRPT6(BRX,BFIL)_"/"_$S($$RELDATE(BRX,BFIL)]"":"RL",1:"NR")
- . S TXT=$J(I,3)_" "_$$J((BRXN_"/"_BFIL),13)_" "_$J(BPSTAT,4)_" "_$$J($$DAT(BFDATE),10)
- . S TXT=TXT_$J(BELIG,1)_" "_$$J($E(BPAT,1,18),18)_" "_$J($E(BPHARMN,1,3),3)
- . S TXT=TXT_" "_$$J($E(BDRUG,1,18),18)
- . D T(TXT)
- D T("------------------------------------------------------------------------------")
- Q
- ;
- J(TXT,LEN) ;Left justify
- Q TXT_$J("",LEN-$L(TXT))
- ;
- DAT(X,Y) ; Convert FM date to displayable (mm/dd/yy) format.
- ; -- optional output of time, if $g(y)
- N DATE,T
- S DATE=$S(X:$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3),1:"")
- I $G(Y) S T="."_$E($P(X,".",2)_"000000",1,7) I T>0 S DATE=DATE_" "_$S($E(T,2,3)>12:$E(T,2,3)-12,$E(T,2,3)="00":"00",1:+$E(T,2,3))_":"_$E(T,4,5)_$S($E(T,2,5)>1200:" pm",1:" am")
- Q DATE
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HBPSBCKJ 7649 printed Feb 18, 2025@23:17:06 Page 2
- BPSBCKJ ;BHAM ISC/AAT - BPS NIGHTLY BACKGROUND JOB ;02/27/2005
- +1 ;;1.0;E CLAIMS MGMT ENGINE;**1,2,5,7,8,22**;JUN 2004;Build 28
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- +4 QUIT
- +5 ;
- EN ; The ECME NIGHTLY PROCESS
- +1 ;
- +2 ; The list of nightly actions
- +3 ; Auto-Reversals (normal and inpatient)
- DO AUTOREV
- +4 ; Purge BPS LOG
- DO MAIN^BPSOSK
- +5 ; Do automatic registration.
- DO TASKMAN^BPSJAREG
- +6 QUIT
- +7 ;
- AUTOREV ; The Auto-Reverse Procedure
- +1 NEW BDT,BTRAN,BPHARM,BTRAN0,BTRAN1,BTRAN4,BDAYS,BRX,BFIL,BDATE,BNOW,BCLAIM,BRES,BREV,BTEST,REF,BCNT,BTX,X,X1,X2
- +2 NEW BTRAN9,BELIG,BDRUG
- +3 ;
- +4 ; Debugging flag 1 - TEST, 0 - LIVE
- SET BTEST=0
- +5 ; Count reversals
- SET BCNT=0
- +6 ;
- +7 SET REF=$NAME(^TMP($JOB,"BPSBCKJ"))
- KILL @REF
- +8 ;
- +9 SET (X1,BNOW)=$$DT^XLFDT()
- +10 ;
- +11 ;Define number of days to look back - Auto Reverse days can be from 0-31
- +12 ;To make sure every claim is caught, moving back 45 days
- +13 SET X2=-45
- DO C^%DTC
- SET BDT=X
- +14 ;
- +15 ;Loop through 'LAST UPDATE' 'AH' index
- +16 FOR
- SET BDT=$ORDER(^BPST("AH",BDT))
- if 'BDT
- QUIT
- SET BTRAN=0
- FOR
- SET BTRAN=$ORDER(^BPST("AH",BDT,BTRAN))
- if 'BTRAN
- QUIT
- Begin DoDot:1
- +17 if BTEST
- WRITE !,"TRAN=",BTRAN," ",?20
- +18 SET BTRAN0=$GET(^BPST(BTRAN,0))
- SET BTRAN1=$GET(^(1))
- SET BTRAN4=$GET(^(4))
- SET BTRAN9=$GET(^(9))
- +19 IF BTRAN0=""!(BTRAN1="")
- if BTEST
- WRITE "ZERO OR ONE NODE MISSING"
- QUIT
- +20 ; Not paid
- IF '$$PAID^BPSOSQ4(BTRAN)
- if BTEST
- WRITE "NOT PAID"
- QUIT
- +21 ; BPS PHARMACY
- SET BPHARM=$PIECE(BTRAN1,U,7)
- IF 'BPHARM
- if BTEST
- WRITE "NO BPS PHARM"
- QUIT
- +22 if BTEST
- WRITE "BPHARM=",$PIECE($GET(^BPS(9002313.56,BPHARM,0)),U,1)," "
- +23 ;
- +24 ;Handle 'Inpatient' Auto-Reversals
- +25 SET BREV=$$REVINP(BNOW,BTRAN,BTRAN0,BTRAN1,BPHARM,BTRAN9)
- if BREV
- QUIT
- +26 ;
- +27 ;Handle Regular Auto-Reversals
- +28 SET BDAYS=+$PIECE($GET(^BPS(9002313.56,BPHARM,0)),U,9)
- +29 ;disabled
- IF 'BDAYS
- if BTEST
- WRITE "AUTO-REV DISABLED"
- QUIT
- +30 ;Reversal claim exist
- IF $PIECE(BTRAN4,U,1)
- QUIT
- +31 SET BCLAIM=$PIECE(BTRAN0,U,4)
- IF 'BCLAIM
- if BTEST
- WRITE "NO BCLAIM"
- QUIT
- +32 IF $PIECE($GET(^BPSC(BCLAIM,0)),U,7)
- if BTEST
- WRITE "AUTO-REVERSE FLAG"
- QUIT
- +33 SET BDATE=$PIECE($GET(^BPSC(BCLAIM,0)),U,5)
- +34 IF 'BDATE
- SET BDATE=$PIECE($GET(^BPSC(BCLAIM,0)),U,6)
- +35 SET BDATE=$PIECE(BDATE,".")
- +36 IF 'BDATE=""
- if BTEST
- WRITE "NO DATE"
- QUIT
- +37 if BTEST
- WRITE "DATE=",BDATE," "
- +38 IF $$FMDIFF^XLFDT(BNOW,BDATE,1)'>BDAYS
- if BTEST
- WRITE "TOO EARLY"
- QUIT
- +39 SET BRX=$PIECE(BTRAN1,U,11)
- IF 'BRX
- if BTEST
- WRITE "NO RX"
- QUIT
- +40 SET BFIL=$PIECE(BTRAN1,U,1)
- +41 ;released
- IF $$RELDATE(BRX,BFIL)
- if BTEST
- WRITE " RELEASED"
- QUIT
- +42 SET BELIG=$PIECE(BTRAN9,U,4)
- IF BELIG=""
- if BTEST
- WRITE "NO ELIGIBILITY"
- QUIT
- +43 SET BDRUG=$$RXAPI1^BPSUTIL1(BRX,6,"E")
- IF BDRUG=""
- if BTEST
- WRITE "NO DRUG"
- QUIT
- +44 SET BRES=$$REVERSE(BRX,BFIL,BCLAIM,1)
- +45 if BTEST
- WRITE " *REV CLM=",BCLAIM," STAT=",BRES
- +46 IF BRES=0!(BRES=4)
- Begin DoDot:2
- +47 SET (BCNT,@REF@(BRES))=$GET(@REF@(BRES))+1
- +48 SET @REF@(BRES,BCNT)=BTRAN_U_BCLAIM_U_BRX_U_BFIL_U_BPHARM_U_BELIG_U_BDRUG
- End DoDot:2
- +49 ; Any notifications to IB?
- End DoDot:1
- +50 ; Send the bulletin
- DO BULL(REF)
- +51 KILL @REF
- +52 QUIT
- +53 ;
- +54 ;Auto-Reverse Claims for Current Inpatients
- +55 ;
- +56 ;20050810;BEE;Phase III - CR11
- +57 ;
- REVINP(BNOW,BTRAN,BTRAN0,BTRAN1,BPHARM,BTRAN9) ;
- +1 NEW BRX,BFIL,BCLAIM,BDATE,BDRUG,BELIG,BRES,DFN,VAIP
- +2 ;
- +3 ;Only process Window fills
- +4 SET BRX=+$PIECE(BTRAN1,U,11)
- IF BRX=0
- QUIT 0
- +5 SET BFIL=+$PIECE(BTRAN1,U)
- +6 IF $$MWC^BPSRPT6(BRX,BFIL)'="W"
- QUIT 0
- +7 ;
- +8 ;Check for Fill date - Must be equal to T-5
- +9 SET BCLAIM=$PIECE(BTRAN0,U,4)
- IF 'BCLAIM
- QUIT 0
- +10 SET BDATE=$$FILDATE(BRX,BFIL)
- +11 SET BDATE=$PIECE(BDATE,".")
- +12 IF 'BDATE=""
- QUIT 0
- +13 IF $$FMDIFF^XLFDT(BNOW,BDATE,1)'=5
- QUIT 0
- +14 ;
- +15 ;Check for current Inpatient
- +16 SET DFN=+$PIECE(BTRAN0,U,6)
- IF DFN=0
- QUIT 0
- +17 DO IN5^VADPT
- +18 IF $GET(VAIP(3))=""
- QUIT 0
- +19 ;
- +20 SET BELIG=$PIECE(BTRAN9,U,4)
- +21 SET BDRUG=$$RXAPI1^BPSUTIL1(BRX,6,"E")
- +22 ;
- +23 ;Auto-Reverse Claim
- +24 SET BRES=$$REVERSE(BRX,BFIL,BCLAIM,2)
- +25 if BTEST
- WRITE " *REV CLM=",BCLAIM," STAT=",BRES
- +26 IF BRES=0!(BRES=4)
- Begin DoDot:1
- +27 SET (BCNT,@REF@(BRES))=$GET(@REF@(BRES))+1
- +28 SET @REF@(BRES,BCNT)=BTRAN_U_BCLAIM_U_BRX_U_BFIL_U_BPHARM_U_BELIG_U_BDRUG
- End DoDot:1
- +29 QUIT 1
- +30 ;
- RELDATE(BRX,BFIL) ;Get the Released Date
- +1 IF BFIL
- QUIT $$RXSUBF1^BPSUTIL1(BRX,52,52.1,+BFIL,17,"I")
- +2 QUIT $$RXAPI1^BPSUTIL1(BRX,31,"I")
- +3 ;
- FILDATE(BRX,BFIL) ;Get the Fill Date
- +1 IF BFIL
- QUIT $$RXSUBF1^BPSUTIL1(BRX,52,52.1,+BFIL,.01,"I")
- +2 QUIT $$RXAPI1^BPSUTIL1(BRX,22,"I")
- +3 ;
- REVERSE(BRX,BFIL,BCLAIM,BTYPE) ;Auto-Reverse the claim
- +1 ;PUBLIC BTEST
- +2 NEW BDOS,BRES,BDAT,BMES,BRSN,BPSCOB,BP59
- +3 ; Test mode
- IF $GET(BTEST)
- QUIT 0
- +4 ;
- +5 ; Get Date of Service and set reversal reason
- +6 SET BDOS=$$DOSDATE^BPSSCRRS(BRX,BFIL)
- +7 SET BRSN=$SELECT(BTYPE=2:"CURRENT INPATIENT",1:"PRESCRIPTION NOT RELEASED")
- +8 ;
- +9 ;get the BPS TRANSACTION IEN for the claim
- SET BP59=$$CLAIM59^BPSUTIL2(BCLAIM)
- +10 ;get COB for the BPS TRANSACTION IEN
- SET BPSCOB=$$COB59^BPSUTIL2(BP59)
- +11 ;
- +12 ; Call ECME to process reversal
- +13 SET BRES=$$EN^BPSNCPDP(BRX,BFIL,BDOS,"AREV","",BRSN,"",,,,BPSCOB)
- +14 ;
- +15 ; If successful, log message to the Prescription Activity Log
- +16 ; and set the auto-reversal flag
- +17 SET BRES=+BRES
- SET BMES="ECME: AUTO REVERSAL JOB-"_$SELECT(BPSCOB=1:"p",BPSCOB=2:"s",1:"")_$$INSNAME^BPSSCRU6(BP59)
- +18 IF BRES=0
- Begin DoDot:1
- +19 DO ECMEACT^PSOBPSU1(BRX,BFIL,BMES,.5)
- +20 SET BDAT(9002313.02,BCLAIM_",",.07)=BTYPE
- DO FILE^DIE("","BDAT")
- End DoDot:1
- +21 QUIT BRES
- +22 ;
- +23 ;
- BULL(REF) ;Bulletin to the OPECC
- +1 ;PUBLIC BTEST,DUZ,DT
- +2 NEW XMSUB,XMY,XMTEXT,XMDUZ,BLNUM
- +3 ;
- +4 IF BCNT<1
- IF '$GET(BTEST)
- IF (+$GET(@REF@(4)))=0
- QUIT
- +5 SET BLNUM=0
- SET BCNT=+$GET(@REF@(0))
- +6 SET XMSUB="ECME AUTO-REVERSAL PROCESS"
- +7 IF $GET(BTEST)
- DO T("*** P L E A S E D I S R E G A R D T H I S E M A I L ***")
- DO T()
- DO T("NOT ACTUALLY REVERSED - THIS IS A TEST")
- DO T()
- +8 DO T("The ECME Nightly Process submitted auto-reversals for the following e-Pharmacy")
- +9 DO T("prescriptions.")
- +10 DO T()
- +11 DO T("TOTAL CLAIMS SUBMITTED FOR AUTO-REVERSALS: "_BCNT)
- +12 DO T()
- +13 DO T("Claims Submitted for Auto-Reversals on "_$$DAT(DT)_":")
- DO ARLIST(0,REF)
- +14 DO T()
- +15 SET BCNT=+$GET(@REF@(4))
- +16 IF BCNT'=0
- Begin DoDot:1
- +17 DO T()
- +18 DO T("The ECME Nightly Process attempted to auto-reverse the following claims but")
- +19 DO T("could not because the previous request was IN PROGRESS. Please verify that")
- +20 DO T("the previous request is not stranded.")
- +21 DO T()
- +22 DO T("Total number of claims that could not be auto-reversed: "_BCNT)
- +23 DO T()
- +24 DO T("Claims not auto-reversed on "_$$DAT(DT)_":")
- +25 DO ARLIST(4,REF)
- +26 DO T()
- End DoDot:1
- +27 ;
- +28 SET XMDUZ="BPS PACKAGE"
- SET XMTEXT="BTX("
- +29 SET XMY("G.BPS OPECC")=""
- +30 IF $GET(DUZ)'<1
- SET XMY(DUZ)=""
- +31 DO ^XMD
- +32 QUIT
- +33 ;
- T(BTXT) ; Add text to the message
- +1 ;PUBLIC BLNUM,BTEST
- +2 SET BLNUM=BLNUM+1
- SET BTX(BLNUM)=$GET(BTXT," ")
- +3 IF $GET(BTEST)
- WRITE !,$GET(BTXT)
- +4 QUIT
- +5 ;
- ARLIST(BRES,REF) ;Auto-Rev List
- +1 NEW I,TXT,BCLAIM,BTRAN,Y,BRX,BFIL,BFDATE,BPHARM,BRXN,BPHARMN,BPAT,BPSTAT,BELIG,BDRUG
- +2 DO T()
- +3 DO T(" # RX/FILL STATUS DATE ELIG PATIENT BPS PHARM DRUG NAME")
- +4 DO T("------------------------------------------------------------------------------")
- +5 SET I=0
- FOR
- SET I=$ORDER(@REF@(BRES,I))
- if 'I
- QUIT
- Begin DoDot:1
- +6 SET Y=@REF@(BRES,I)
- +7 SET BTRAN=$PIECE(Y,U)
- +8 SET BCLAIM=$PIECE(Y,U,2)
- +9 SET BRX=$PIECE(Y,U,3)
- SET BRXN=$$RXAPI1^BPSUTIL1(BRX,.01,"I")
- +10 SET BPAT=$PIECE($GET(^DPT(+$$RXAPI1^BPSUTIL1(BRX,2,"I"),0)),U)
- +11 SET BFIL=$PIECE(Y,U,4)
- +12 SET BPHARM=$PIECE(Y,U,5)
- SET BPHARMN=$PIECE($GET(^BPS(9002313.56,BPHARM,0)),U)
- +13 SET BELIG=$PIECE(Y,U,6)
- +14 SET BDRUG=$PIECE(Y,U,7)
- +15 SET BFDATE=$$FILDATE(BRX,BFIL)
- +16 SET BPSTAT=$$MWC^BPSRPT6(BRX,BFIL)_"/"_$SELECT($$RELDATE(BRX,BFIL)]"":"RL",1:"NR")
- +17 SET TXT=$JUSTIFY(I,3)_" "_$$J((BRXN_"/"_BFIL),13)_" "_$JUSTIFY(BPSTAT,4)_" "_$$J($$DAT(BFDATE),10)
- +18 SET TXT=TXT_$JUSTIFY(BELIG,1)_" "_$$J($EXTRACT(BPAT,1,18),18)_" "_$JUSTIFY($EXTRACT(BPHARMN,1,3),3)
- +19 SET TXT=TXT_" "_$$J($EXTRACT(BDRUG,1,18),18)
- +20 DO T(TXT)
- End DoDot:1
- +21 DO T("------------------------------------------------------------------------------")
- +22 QUIT
- +23 ;
- J(TXT,LEN) ;Left justify
- +1 QUIT TXT_$JUSTIFY("",LEN-$LENGTH(TXT))
- +2 ;
- DAT(X,Y) ; Convert FM date to displayable (mm/dd/yy) format.
- +1 ; -- optional output of time, if $g(y)
- +2 NEW DATE,T
- +3 SET DATE=$SELECT(X:$EXTRACT(X,4,5)_"/"_$EXTRACT(X,6,7)_"/"_$EXTRACT(X,2,3),1:"")
- +4 IF $GET(Y)
- SET T="."_$EXTRACT($PIECE(X,".",2)_"000000",1,7)
- IF T>0
- SET DATE=DATE_" "_$SELECT($EXTRACT(T,2,3)>12:$EXTRACT(T,2,3)-12,$EXTRACT(T,2,3)="00":"00",1:+$EXTRACT(T,2,3))_":"_$EXTRACT(T,4,5)_$SELECT($EXTRACT(T,2,5)>1200:" pm",1:" am")
- +5 QUIT DATE