RCDPENR3 ;ALB/SAB - EPay National Reports - ERA/EFT Trending Report, part 2 ;20 Aug 2018 13:01:41
;;4.5;Accounts Receivable;**304,321,326,332,349,432,446**;Mar 20, 1995;Build 15
;;Per VA Directive 6402, this routine should not be modified.
;
;Read ^DGCR(399) via Private IA 3820
;Read ^DG(40.8) via Controlled IA 417
;Read ^IBM(361.1) via Private IA 4051
;Use DIV^IBJDF2 via Private IA 3130
;
Q
;
;
;Generate statistics for report
COMPILE ;
;
;RCERATYP values 1="ERA/EFT" 2="ERA/PAPER CHECK" 3="PAPER EOB/EFT" 4="UNMATCHED EOB" 5="ZERO PAYMENTS"
; needed for correct report sort order, PRCA*4.5*446, Added values 4 and 5
N I,J,RCINSTIN,RCERATYP,RCCLAIM,RCDATA,RCDAYS,RCEFTPD,RCEPDT,RCERAIEN,RCERANUM,RCEFTIEN ; Looping variable
N RCGPDATA,RCGPCT,RCGPBILL,RCGPPD,RCGPBECT,RCGPBEDY,RCGPEECT,RCGPEEDY,RCGPEPCT,RCGPEPDY,RCGPBPCT,RCGPBPDY,RCGPECT,RCGPENM,RCGPFCT,RCGPFPD ; Grand Total W/Payment method variables
N RCMETHOD,RCPPDATA,RCPPCT,RCPPBILL,RCPPPD,RCPPBECT,RCPPBEDY,RCPPEECT,RCPPEEDY,RCPPEPCT,RCPPEPDY,RCPPBPCT,RCPPBPDY,RCPPECT,RCPPENM,RCPPFCT,RCPPFPD ; Payer W/Payment method variables
;
;Initialize all valid ERA/EFT combinations to report on.
; init grand total
F I=1:1:3 D ; US 767
. I '$D(^TMP("RCDPENR2",$J,"GTOT","MANUAL",I)) S ^TMP("RCDPENR2",$J,"GTOT","MANUAL",I)=0 ; PRCA*4.5*349
. I '$D(^TMP("RCDPENR2",$J,"GTOT","AUTOPOST",I)) S ^TMP("RCDPENR2",$J,"GTOT","AUTOPOST",I)=0 ; PRCA*4.5*349
;
F I=4:1:5 D ; PRCA*4.5*446, Added values 4 and 5
. I '$D(^TMP("RCDPENR2",$J,"GTOT","UNPOSTED",I)) S ^TMP("RCDPENR2",$J,"GTOT","UNPOSTED",I)=0 ; PRCA*4.5*446
;
; init insurance grand totals
S RCINSTIN=""
F S RCINSTIN=$O(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN)) Q:RCINSTIN="" D
. F I=1:1:3 D
. . I '$D(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"MANUAL",I)) S ^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"MANUAL",I)=0 ; PRCA*4.5*349
. . I '$D(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"AUTOPOST",I)) S ^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"AUTOPOST",I)=0 ; PRCA*4.5*349
. F I=4:1:5 D ; PRCA*4.5*446, Added values 4 and 5
. . I '$D(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"UNPOSTED",I)) S ^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,"UNPOSTED",I)=0 ; PRCA*4.5*446
;
; Compile results
S RCINSTIN=""
F S RCINSTIN=$O(^TMP("RCDPENR2",$J,"MAIN",RCINSTIN)) Q:RCINSTIN="" D
. S RCMETHOD="" ; PRCA*4.5*349
. F S RCMETHOD=$O(^TMP("RCDPENR2",$J,"MAIN",RCINSTIN,RCMETHOD)) Q:RCMETHOD="" D ; PRCA*4.5*349 add $O on RCMETHOD
. . S RCERATYP="" ; PRCA*4.5*349 add 1 "." to this line and every line below
. . F S RCERATYP=$O(^TMP("RCDPENR2",$J,"MAIN",RCINSTIN,RCMETHOD,RCERATYP)) Q:RCERATYP="" D
. . . S RCCLAIM=""
. . . F S RCCLAIM=$O(^TMP("RCDPENR2",$J,"MAIN",RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM)) Q:RCCLAIM="" D
. . . . S RCDATA=$G(^TMP("RCDPENR2",$J,"MAIN",RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM))
. . . . Q:RCDATA=""
. . . . I RCPUZ="P" I RCAUTO="A"&(RCMETHOD="M")!(RCAUTO="N"&(RCMETHOD="A")) Q ; PRCA*4.5*349, PRCA*4.5*446 If user selected Payments
. . . . F J=RCMETHOD,"TOTAL" D COMPILEX(J,RCDATA,RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM)
Q
;
COMPILEX(J,RCDATA,RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM) ; PRCA*4.5*349 subroutine split off
; Extract Grand Total by EFT/ERA type
S RCGPDATA=$G(^TMP("RCDPENR2",$J,"GTOT",J,RCERATYP))
S RCGPCT=$P(RCGPDATA,U)
S RCGPBILL=$P(RCGPDATA,U,2)
S RCGPPD=$P(RCGPDATA,U,3)
S RCGPBECT=$P(RCGPDATA,U,4)
S RCGPBEDY=$P(RCGPDATA,U,5)
S RCGPEECT=$P(RCGPDATA,U,6)
S RCGPEEDY=$P(RCGPDATA,U,7)
S RCGPEPCT=$P(RCGPDATA,U,8)
S RCGPEPDY=$P(RCGPDATA,U,9)
S RCGPBPCT=$P(RCGPDATA,U,10)
S RCGPBPDY=$P(RCGPDATA,U,11)
S RCGPECT=$P(RCGPDATA,U,12)
S RCGPENM=$P(RCGPDATA,U,13)
S RCGPFCT=$P(RCGPDATA,U,14)
S RCGPFPD=$P(RCGPDATA,U,15)
;
; Extract the Payer specific info by EFT/ERA type
S RCPPDATA=$G(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,J,RCERATYP))
S RCPPCT=$P(RCPPDATA,U)
S RCPPBILL=$P(RCPPDATA,U,2)
S RCPPPD=$P(RCPPDATA,U,3)
S RCPPBECT=$P(RCPPDATA,U,4)
S RCPPBEDY=$P(RCPPDATA,U,5)
S RCPPEECT=$P(RCPPDATA,U,6)
S RCPPEEDY=$P(RCPPDATA,U,7)
S RCPPEPCT=$P(RCPPDATA,U,8)
S RCPPEPDY=$P(RCPPDATA,U,9)
S RCPPBPCT=$P(RCPPDATA,U,10)
S RCPPBPDY=$P(RCPPDATA,U,11)
S RCPPECT=$P(RCPPDATA,U,12)
S RCPPENM=$P(RCPPDATA,U,13)
S RCPPFCT=$P(RCPPDATA,U,14)
S RCPPFPD=$P(RCPPDATA,U,15)
;
; Total counts - Grand/Payment Method
S RCGPCT=RCGPCT+1
S RCGPBILL=RCGPBILL+$P(RCDATA,U,6)
S RCGPPD=RCGPPD+$P(RCDATA,U,7)
;
; Total counts - Payer/Payment method
S RCPPCT=RCPPCT+1
S RCPPBILL=RCPPBILL+$P(RCDATA,U,6)
S RCPPPD=RCPPPD+$P(RCDATA,U,7)
;
; Billed to ERA received
I $P(RCDATA,U,8),$P(RCDATA,U,9) D
. S RCGPBECT=RCGPBECT+1
. S RCPPBECT=RCPPBECT+1
. S RCDAYS=$$FMDIFF^XLFDT($P(RCDATA,U,9),$P(RCDATA,U,8),1)
. S RCGPBEDY=RCGPBEDY+RCDAYS
. S RCPPBEDY=RCPPBEDY+RCDAYS
;
; ERA to EFT received
I $P(RCDATA,U,10),$P(RCDATA,U,9) D
. S RCGPEECT=RCGPEECT+1
. S RCPPEECT=RCPPEECT+1
. S RCDAYS=$$FMDIFF^XLFDT($P(RCDATA,U,10),$P(RCDATA,U,9),1)
. S RCGPEEDY=RCGPEEDY+RCDAYS
. S RCPPEEDY=RCPPEEDY+RCDAYS
;
; ERA and EFT received, and payment Posted
I $P(RCDATA,U,10),$P(RCDATA,U,9),$P(RCDATA,U,11) D
. S RCGPEPCT=RCGPEPCT+1
. S RCPPEPCT=RCPPEPCT+1
. S RCEPDT=$S($P(RCDATA,U,9)>$P(RCDATA,U,10):9,1:10) ;determine which date is later
. S RCDAYS=$$FMDIFF^XLFDT($P(RCDATA,U,11),$P(RCDATA,U,RCEPDT),1)
. S RCGPEPDY=RCGPEPDY+RCDAYS
. S RCPPEPDY=RCPPEPDY+RCDAYS
;
; Bill to Payment Posted
I $P(RCDATA,U,8),$P(RCDATA,U,11) D
. S RCGPBPCT=RCGPBPCT+1
. S RCPPBPCT=RCPPBPCT+1
. S RCDAYS=$$FMDIFF^XLFDT($P(RCDATA,U,11),$P(RCDATA,U,8),1)
. S RCGPBPDY=RCGPBPDY+RCDAYS
. S RCPPBPDY=RCPPBPDY+RCDAYS
;
; If the ERA hasn't already been counted, add it to the totals
S RCERAIEN=$P(RCDATA,U,2)
I RCERAIEN,'$D(^TMP("RCDPENR2",$J,"ERA",RCERAIEN,J)) D
. S ^TMP("RCDPENR2",$J,"ERA",RCERAIEN,J)=""
. S RCERANUM=$P(RCDATA,U,15)
. S RCGPECT=RCGPECT+1,RCPPECT=RCPPECT+1
. S RCGPENM=RCGPENM+RCERANUM,RCPPENM=RCPPENM+RCERANUM
;
; If the EFT hasn't already been counted, add it to the totals
S RCEFTIEN=$P(RCDATA,U,3)
I (RCEFTIEN),('$D(^TMP("RCDPENR2",$J,"EFT",RCEFTIEN,J))) D
. S ^TMP("RCDPENR2",$J,"EFT",RCEFTIEN,J)=""
. S RCEFTPD=$P(RCDATA,U,18)
. S RCGPFCT=RCGPFCT+1,RCPPFCT=RCPPFCT+1
. S RCGPFPD=RCGPFPD+RCEFTPD,RCPPFPD=RCPPFPD+RCEFTPD
;
; Update payer specific info By Payment Method
S $P(RCPPDATA,U)=RCPPCT
S $P(RCPPDATA,U,2)=RCPPBILL
S $P(RCPPDATA,U,3)=RCPPPD
S $P(RCPPDATA,U,4)=RCPPBECT
S $P(RCPPDATA,U,5)=RCPPBEDY
S $P(RCPPDATA,U,6)=RCPPEECT
S $P(RCPPDATA,U,7)=RCPPEEDY
S $P(RCPPDATA,U,8)=RCPPEPCT
S $P(RCPPDATA,U,9)=RCPPEPDY
S $P(RCPPDATA,U,10)=RCPPBPCT
S $P(RCPPDATA,U,11)=RCPPBPDY
S $P(RCPPDATA,U,12)=RCPPECT
S $P(RCPPDATA,U,13)=RCPPENM
S $P(RCPPDATA,U,14)=RCPPFCT
S $P(RCPPDATA,U,15)=RCPPFPD
S ^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,J,RCERATYP)=RCPPDATA
;
; Update Grand Total specific information By Payment Method
S $P(RCGPDATA,U)=RCGPCT
S $P(RCGPDATA,U,2)=RCGPBILL
S $P(RCGPDATA,U,3)=RCGPPD
S $P(RCGPDATA,U,4)=RCGPBECT
S $P(RCGPDATA,U,5)=RCGPBEDY
S $P(RCGPDATA,U,6)=RCGPEECT
S $P(RCGPDATA,U,7)=RCGPEEDY
S $P(RCGPDATA,U,8)=RCGPEPCT
S $P(RCGPDATA,U,9)=RCGPEPDY
S $P(RCGPDATA,U,10)=RCGPBPCT
S $P(RCGPDATA,U,11)=RCGPBPDY
S $P(RCGPDATA,U,12)=RCGPECT
S $P(RCGPDATA,U,13)=RCGPENM
S $P(RCGPDATA,U,14)=RCGPFCT
S $P(RCGPDATA,U,15)=RCGPFPD
S ^TMP("RCDPENR2",$J,"GTOT",J,RCERATYP)=RCGPDATA ; PRCA*4.5*349
Q
;
;Retrieve all necessary info for EFTs sent during requested period.
; PRCA*4.5*349 - Add Closed Claims filter
GETEFT(RCSDATE,RCEDATE,RCRATE,RCCLM,RCPUZ,RCSORT) ;EP
;RCSDATE - Start date of extraction
;RCEDATE - End date of extraction
;RCPUZ - (P)ayment EEOBs, (U)nmatched EEOBs, (Z)ero payment EEOBs, (A)ll
;RCSORT - (P)ayer, (A)mount
;
;^TMP("RCDPENR2",$J,"MAIN",IEN of Claim/Bill #) =
; Where:
; Piece Variable
; 1 RCBILL - IEN: Bill/Claim #
; 2 RCERA - IEN: ERA the bill was paid on.
; 3 RCIEN - IEN: EFT the money for the bill arrived on
; 4 RCEOB - IEN: EOB within the ERA
; 5 RCDOS - Date of Service
; 6 RCAMTBL - Amount Billed
; 7 RCAMTPD - Amount Paid
; 8 RCDTBILL - Date of Bill
; 9 RCERARCD - Date ERA received
; 10 RCEFTRCD - Date EFT received
; 11 RCPOSTED - Date Payment Posted to claim
; 12 RCTRACE - ERA Trace number for EOB
; 13 RCMETHOD - Method of Payment transmittal
; 14 RCTRNTYP - Was payment EFT or Paper Check / Was the ERA Paper or EDI Lockbox
; 15 RCERANUM - # EOB'S in ERA
; 16 RCDIV - Division of the bill
; 17 RCINSTIN - Insurance/Insurance TIN
; 18 RCEFTPD - Amount paid as an EFT, not as a check.
;
I RCPUZ="U" Q ;PRCA*4.5*446 If user selected Unmatched, all entries will come from ERA search, not EFT
;
N OKAY,RCLDATE,RCINS,RCIEN,RCEFTDT,RCERA,RCEFT,RCRCPT,RCPOSTED,RCPAYTYP,RCERADT,RCTRACE,RCERAIDX
N RCTRLN,RCTRBD,RCERANUM,RCTIN,RCPAYER,RCINSTIN,RCLPIEN,RCDTDATA,RCEOB,RCBILL,RCDIV,RCDOS,RCAMTBL
N RCDTBILL,RCMETHOD,RCPAPER,RCEFTTYP,RCEFTPD,RCKEEP,RCTRNTYP,RCDATA,RCAMTPD,RCEFTRCD,RCERARCD,RCRATETP
N RCMSTAT,RCEFTST,RCESUMDT,RCPSUMDT,RCZERO,X,ZZPNAME ; PRCA*4.5*349 ;PRCA*4.5*446 add RCEFTST
;
;Get EFT Detail info for report batches sent within given date range.
S RCLDATE=RCSDATE-.001,RCEDATE=RCEDATE+1
F S RCLDATE=$O(^RCY(344.31,"ADR",RCLDATE)) Q:RCLDATE="" Q:RCLDATE>RCEDATE D
. S RCIEN=0
. F S RCIEN=$O(^RCY(344.31,"ADR",RCLDATE,RCIEN)) Q:'RCIEN D
. . S RCEFTDT=$G(^RCY(344.31,RCIEN,0))
. . Q:RCEFTDT=""
. . I '$$CHKEFT^RCDPEU1(RCIEN) Q ; Only include posted EFTs - PRCA*4.5*349
. . I RCPAY="A",RCTYPE'="A" D Q:'OKAY ; PRCA*4.5*326 If all payers included, check by type
. . . S OKAY=$$ISTYPE^RCDPEU1(344.31,RCIEN,RCTYPE)
. . ; Check Payer Name
. . I RCPAY'="A" D Q:'OKAY ; PRCA*4.5*326
. . . S OKAY=$$ISSEL^RCDPEU1(344.31,RCIEN)
. . ;
. . S RCERA=$P(RCEFTDT,U,10) ; ERA IEN
. . S RCEFTRCD=$P(RCEFTDT,U,13)
. . S RCEFT=$P(RCEFTDT,U)
. . S ZZPNAME=$P(RCEFTDT,U,2)
. . S RCMSTAT=$P(RCEFTDT,U,8)
. . S RCRCPT=$P(RCEFTDT,U,9)
. . S RCEFTPD=$P(RCEFTDT,U,7)
. . S RCPOSTED=$$GET1^DIQ(344.3,RCEFT_",",.11,"I")
. . S RCPAYTYP=$$GET1^DIQ(344,RCRCPT_",",.04,"I")
. . I RCERA D Q
. . . S RCERADT=$G(^RCY(344.4,RCERA,0)) ; ERA Data extracted
. . . Q:'RCERADT
. . . S RCTRACE=$P(RCERADT,U,2) ; Trace #
. . . S RCTRLN=$L(RCTRACE),RCTRBD=$S(RCTRLN<11:1,1:RCTRLN-9)
. . . S RCTRACE=$E(RCTRACE,RCTRBD,RCTRLN) ; get the last 10 digits of Trace #
. . . S RCERARCD=$P($P(RCERADT,U,7),".",1) ;get the date of the ERA
. . . S RCERANUM=$P(RCERADT,U,11)
. . . S RCTIN=$P(RCERADT,U,3)
. . . S RCINS=$P(RCERADT,U,6)
. . . S RCEFTST=$P(RCERADT,U,9)
. . . S RCPAYER=$$GETARPYR^RCDPENR2(RCTIN,ZZPNAME) ; find the AR Payer IEN
. . . ; Q:'RCPAYER ; Quit if Payer/TIN not found
. . . ; Q:'$$INSCHK^RCDPENR2(RCPAYER) ; Payer is not in the included list for the report
. . . S RCINSTIN=RCINS_"/"_RCTIN
. . . S RCLPIEN=0
. . . F S RCLPIEN=$O(^RCY(344.4,RCERA,1,RCLPIEN)) Q:'RCLPIEN D
. . . . ; I $$GET1^DIQ(344.41,RCLPIEN_","_RCERA_",",.25,"I")="" Q ; PRCA*4.5*349 - No receipt, line is not posted
. . . . S RCDTDATA=$G(^RCY(344.4,RCERA,1,RCLPIEN,0))
. . . . S RCEOB=$P(RCDTDATA,U,2)
. . . . S RCBILL=$$BILLIEN^RCDPENR1(RCEOB)
. . . . Q:RCBILL="" ; no billing information
. . . . I RCCLM="C",'$$CLOSEDB(RCBILL) Q ; Bill isn't closed - PRCA*4.5*349 added line
. . . . Q:$D(^TMP("RCDPENR2",$J,"MAIN",RCBILL)) ;already captured.
. . . . S RCDIV=$$DIV^IBJDF2(RCBILL)
. . . . S RCDIV=$$GET1^DIQ(40.8,RCDIV_",",".01","E")
. . . . ;
. . . . S RCRATETP=$$GET1^DIQ(399,RCBILL_",",.07,"I")
. . . . Q:RCRATETP'=RCRATE
. . . . ; Quit if user specified a specific division and bill is not in that Division
. . . . I '$D(^TMP("RCDPENR2",$J,"DIVALL"))&'$D(^TMP("RCDPENR2",$J,"DIV",RCDIV)) Q
. . . . S RCDOS=$$GET1^DIQ(399,RCBILL_",",.03,"I")
. . . . S RCAMTBL=$$GET1^DIQ(361.1,RCEOB_",",2.04,"I")
. . . . S RCAMTPD=$$GET1^DIQ(361.1,RCEOB_",",1.01,"I")
. . . . S RCDTBILL=$$GET1^DIQ(399,RCBILL_",",12,"I")
. . . . Q:RCDTBILL="" ;cant calculate if date first printed is NULL
. . . . ;
. . . . ; PRCA*4.5*446 Add logic for to filter zero-pay based on RCPUZ
. . . . S RCZERO=0 I RCPUZ="Z" S RCKEEP=0 S:RCEFTST=3 RCKEEP=1,RCZERO=1 Q:'RCKEEP ;RCEFTST=3 -> Match-0 Payment
. . . . I RCPUZ="Z" Q:'RCZERO
. . . . I (RCPUZ="U")!(RCPUZ="P") Q:RCZERO
. . . . ;
. . . . S RCMETHOD=$S(RCZERO:"UNPOSTED",$$GET1^DIQ(344.41,RCLPIEN_","_RCERA_",",9,"I")="":"MANUAL",1:"AUTOPOST") ; PRCA*4.5*349, PRCA*4.5*446
. . . . S RCPAPER=$P($G(^RCY(344.4,RCERA,20)),U,3) ; Paper EOB ERA?
. . . . ;ERA not a paper ERA, is the EOB a Paper EOB
. . . . S:'RCPAPER RCPAPER=$S($$GET1^DIQ(361.1,RCEOB_",",.17,"I")=0:"ERA",1:"PAPER")
. . . . S RCEFTTYP=$S(RCPAYTYP=4:"PAPER",1:"EFT")
. . . . S RCTRNTYP=RCPAPER_"/"_RCEFTTYP
. . . . S RCERAIDX=$S(RCTRNTYP="ERA/EFT":1,RCTRNTYP="ERA/PAPER":2,RCTRNTYP="PAPER/EFT":3,1:4)
. . . . Q:RCERAIDX=4 ;Paper Check Paper EOB not supported
. . . . S RCDATA=RCBILL_U_RCERA_U_RCIEN_U_RCEOB_U_RCDOS_U_RCAMTBL_U_RCAMTPD_U_RCDTBILL_U_RCERARCD
. . . . S RCDATA=RCDATA_U_RCEFTRCD_U_RCPOSTED_U_RCTRACE_U_RCMETHOD_U
. . . . S RCDATA=RCDATA_RCTRNTYP_U_RCERANUM_U_RCDIV_U_RCINSTIN_U_RCEFTPD
. . . . S ^TMP("RCDPENR2",$J,"MAIN",RCINSTIN,RCMETHOD,RCERAIDX,RCBILL_"/"_RCERA_"/"_RCAMTBL)=RCDATA ; PRCA*4.5*349 add post method, PRCA*4.5*446 add pieces to last subscript to make unique
. . . . I RCSORT="A" S ^TMP("RCDPENR2",$J,"MAINAMT",RCMETHOD,RCAMTBL,RCBILL_"/"_RCERA)=RCDATA_U_RCERAIDX_U_RCBILL ;PRCA*4.5*446
. . I (RCMSTAT=2),(RCIEN),('$D(^TMP("RCDPENR2",$J,"EFT",RCIEN))) D
. . . S RCTIN=$P(RCEFTDT,U,3)
. . . S RCINS=$P(RCEFTDT,U,2)
. . . S RCPAYER=$$GETARPYR^RCDPENR2(RCTIN,ZZPNAME) ; find the AR Payer IEN
. . . ; Q:'RCPAYER ; Quit if Payer/TIN not found
. . . ; Q:'$$INSCHK^RCDPENR2(RCPAYER) ; Payer is not in the included list for the report
. . . S RCINSTIN=RCINS_"/"_RCTIN
. . . S RCMETHOD="MANUAL" ; PRCA*4.5*349 - Unmatched EFT must be manually posted
. . . F X=RCMETHOD,"TOTAL" D ; PRCA*4.5*349
. . . . S RCESUMDT=$G(^TMP("RCDPENR2",$J,"GTOT",X,3)) ; PRCA*4.5*349
. . . . S RCPSUMDT=$G(^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,X,3)) ; PRCA*4.5*349
. . . . S $P(RCESUMDT,U,14)=$P(RCESUMDT,U,14)+1
. . . . S $P(RCPSUMDT,U,14)=$P(RCPSUMDT,U,14)+1
. . . . S $P(RCESUMDT,U,15)=$P(RCESUMDT,U,15)+RCEFTPD
. . . . S $P(RCPSUMDT,U,15)=$P(RCPSUMDT,U,15)+RCEFTPD
. . . . S ^TMP("RCDPENR2",$J,"GTOT",X,3)=RCESUMDT ; PRCA*4.5*349
. . . . S ^TMP("RCDPENR2",$J,"PAYER",RCINSTIN,X,3)=RCPSUMDT ; PRCA*4.5*349
Q
;
CLOSEDB(RCBILL) ;EP
; PRCA*4.5*349 - Added subroutine
; Check to see if a bill is closed
; Input: RCBILL - IEN for 361.1 of the bill to be checked
; Returns: 1 - Bill is closed, 0 Otherwise
N XX
S XX=$$GET1^DIQ(430,RCBILL_",",8,"I")
S XX=$$GET1^DIQ(430.3,XX_",",1)
I XX="CC" Q 1
Q 0
;
;Moved PRINTGT to ^RCDPENR5 because of routine size, PRCA*4.5*446
;Moved GDTXT to ^RCDPENR5 because of routine size, PRCA*4.5*446
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPENR3 15472 printed Sep 23, 2025@19:21:06 Page 2
RCDPENR3 ;ALB/SAB - EPay National Reports - ERA/EFT Trending Report, part 2 ;20 Aug 2018 13:01:41
+1 ;;4.5;Accounts Receivable;**304,321,326,332,349,432,446**;Mar 20, 1995;Build 15
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;
+4 ;Read ^DGCR(399) via Private IA 3820
+5 ;Read ^DG(40.8) via Controlled IA 417
+6 ;Read ^IBM(361.1) via Private IA 4051
+7 ;Use DIV^IBJDF2 via Private IA 3130
+8 ;
+9 QUIT
+10 ;
+11 ;
+12 ;Generate statistics for report
COMPILE ;
+1 ;
+2 ;RCERATYP values 1="ERA/EFT" 2="ERA/PAPER CHECK" 3="PAPER EOB/EFT" 4="UNMATCHED EOB" 5="ZERO PAYMENTS"
+3 ; needed for correct report sort order, PRCA*4.5*446, Added values 4 and 5
+4 ; Looping variable
NEW I,J,RCINSTIN,RCERATYP,RCCLAIM,RCDATA,RCDAYS,RCEFTPD,RCEPDT,RCERAIEN,RCERANUM,RCEFTIEN
+5 ; Grand Total W/Payment method variables
NEW RCGPDATA,RCGPCT,RCGPBILL,RCGPPD,RCGPBECT,RCGPBEDY,RCGPEECT,RCGPEEDY,RCGPEPCT,RCGPEPDY,RCGPBPCT,RCGPBPDY,RCGPECT,RCGPENM,RCGPFCT,RCGPFPD
+6 ; Payer W/Payment method variables
NEW RCMETHOD,RCPPDATA,RCPPCT,RCPPBILL,RCPPPD,RCPPBECT,RCPPBEDY,RCPPEECT,RCPPEEDY,RCPPEPCT,RCPPEPDY,RCPPBPCT,RCPPBPDY,RCPPECT,RCPPENM,RCPPFCT,RCPPFPD
+7 ;
+8 ;Initialize all valid ERA/EFT combinations to report on.
+9 ; init grand total
+10 ; US 767
FOR I=1:1:3
Begin DoDot:1
+11 ; PRCA*4.5*349
IF '$DATA(^TMP("RCDPENR2",$JOB,"GTOT","MANUAL",I))
SET ^TMP("RCDPENR2",$JOB,"GTOT","MANUAL",I)=0
+12 ; PRCA*4.5*349
IF '$DATA(^TMP("RCDPENR2",$JOB,"GTOT","AUTOPOST",I))
SET ^TMP("RCDPENR2",$JOB,"GTOT","AUTOPOST",I)=0
End DoDot:1
+13 ;
+14 ; PRCA*4.5*446, Added values 4 and 5
FOR I=4:1:5
Begin DoDot:1
+15 ; PRCA*4.5*446
IF '$DATA(^TMP("RCDPENR2",$JOB,"GTOT","UNPOSTED",I))
SET ^TMP("RCDPENR2",$JOB,"GTOT","UNPOSTED",I)=0
End DoDot:1
+16 ;
+17 ; init insurance grand totals
+18 SET RCINSTIN=""
+19 FOR
SET RCINSTIN=$ORDER(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN))
if RCINSTIN=""
QUIT
Begin DoDot:1
+20 FOR I=1:1:3
Begin DoDot:2
+21 ; PRCA*4.5*349
IF '$DATA(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"MANUAL",I))
SET ^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"MANUAL",I)=0
+22 ; PRCA*4.5*349
IF '$DATA(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"AUTOPOST",I))
SET ^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"AUTOPOST",I)=0
End DoDot:2
+23 ; PRCA*4.5*446, Added values 4 and 5
FOR I=4:1:5
Begin DoDot:2
+24 ; PRCA*4.5*446
IF '$DATA(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"UNPOSTED",I))
SET ^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,"UNPOSTED",I)=0
End DoDot:2
End DoDot:1
+25 ;
+26 ; Compile results
+27 SET RCINSTIN=""
+28 FOR
SET RCINSTIN=$ORDER(^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN))
if RCINSTIN=""
QUIT
Begin DoDot:1
+29 ; PRCA*4.5*349
SET RCMETHOD=""
+30 ; PRCA*4.5*349 add $O on RCMETHOD
FOR
SET RCMETHOD=$ORDER(^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN,RCMETHOD))
if RCMETHOD=""
QUIT
Begin DoDot:2
+31 ; PRCA*4.5*349 add 1 "." to this line and every line below
SET RCERATYP=""
+32 FOR
SET RCERATYP=$ORDER(^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN,RCMETHOD,RCERATYP))
if RCERATYP=""
QUIT
Begin DoDot:3
+33 SET RCCLAIM=""
+34 FOR
SET RCCLAIM=$ORDER(^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM))
if RCCLAIM=""
QUIT
Begin DoDot:4
+35 SET RCDATA=$GET(^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM))
+36 if RCDATA=""
QUIT
+37 ; PRCA*4.5*349, PRCA*4.5*446 If user selected Payments
IF RCPUZ="P"
IF RCAUTO="A"&(RCMETHOD="M")!(RCAUTO="N"&(RCMETHOD="A"))
QUIT
+38 FOR J=RCMETHOD,"TOTAL"
DO COMPILEX(J,RCDATA,RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM)
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+39 QUIT
+40 ;
COMPILEX(J,RCDATA,RCINSTIN,RCMETHOD,RCERATYP,RCCLAIM) ; PRCA*4.5*349 subroutine split off
+1 ; Extract Grand Total by EFT/ERA type
+2 SET RCGPDATA=$GET(^TMP("RCDPENR2",$JOB,"GTOT",J,RCERATYP))
+3 SET RCGPCT=$PIECE(RCGPDATA,U)
+4 SET RCGPBILL=$PIECE(RCGPDATA,U,2)
+5 SET RCGPPD=$PIECE(RCGPDATA,U,3)
+6 SET RCGPBECT=$PIECE(RCGPDATA,U,4)
+7 SET RCGPBEDY=$PIECE(RCGPDATA,U,5)
+8 SET RCGPEECT=$PIECE(RCGPDATA,U,6)
+9 SET RCGPEEDY=$PIECE(RCGPDATA,U,7)
+10 SET RCGPEPCT=$PIECE(RCGPDATA,U,8)
+11 SET RCGPEPDY=$PIECE(RCGPDATA,U,9)
+12 SET RCGPBPCT=$PIECE(RCGPDATA,U,10)
+13 SET RCGPBPDY=$PIECE(RCGPDATA,U,11)
+14 SET RCGPECT=$PIECE(RCGPDATA,U,12)
+15 SET RCGPENM=$PIECE(RCGPDATA,U,13)
+16 SET RCGPFCT=$PIECE(RCGPDATA,U,14)
+17 SET RCGPFPD=$PIECE(RCGPDATA,U,15)
+18 ;
+19 ; Extract the Payer specific info by EFT/ERA type
+20 SET RCPPDATA=$GET(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,J,RCERATYP))
+21 SET RCPPCT=$PIECE(RCPPDATA,U)
+22 SET RCPPBILL=$PIECE(RCPPDATA,U,2)
+23 SET RCPPPD=$PIECE(RCPPDATA,U,3)
+24 SET RCPPBECT=$PIECE(RCPPDATA,U,4)
+25 SET RCPPBEDY=$PIECE(RCPPDATA,U,5)
+26 SET RCPPEECT=$PIECE(RCPPDATA,U,6)
+27 SET RCPPEEDY=$PIECE(RCPPDATA,U,7)
+28 SET RCPPEPCT=$PIECE(RCPPDATA,U,8)
+29 SET RCPPEPDY=$PIECE(RCPPDATA,U,9)
+30 SET RCPPBPCT=$PIECE(RCPPDATA,U,10)
+31 SET RCPPBPDY=$PIECE(RCPPDATA,U,11)
+32 SET RCPPECT=$PIECE(RCPPDATA,U,12)
+33 SET RCPPENM=$PIECE(RCPPDATA,U,13)
+34 SET RCPPFCT=$PIECE(RCPPDATA,U,14)
+35 SET RCPPFPD=$PIECE(RCPPDATA,U,15)
+36 ;
+37 ; Total counts - Grand/Payment Method
+38 SET RCGPCT=RCGPCT+1
+39 SET RCGPBILL=RCGPBILL+$PIECE(RCDATA,U,6)
+40 SET RCGPPD=RCGPPD+$PIECE(RCDATA,U,7)
+41 ;
+42 ; Total counts - Payer/Payment method
+43 SET RCPPCT=RCPPCT+1
+44 SET RCPPBILL=RCPPBILL+$PIECE(RCDATA,U,6)
+45 SET RCPPPD=RCPPPD+$PIECE(RCDATA,U,7)
+46 ;
+47 ; Billed to ERA received
+48 IF $PIECE(RCDATA,U,8)
IF $PIECE(RCDATA,U,9)
Begin DoDot:1
+49 SET RCGPBECT=RCGPBECT+1
+50 SET RCPPBECT=RCPPBECT+1
+51 SET RCDAYS=$$FMDIFF^XLFDT($PIECE(RCDATA,U,9),$PIECE(RCDATA,U,8),1)
+52 SET RCGPBEDY=RCGPBEDY+RCDAYS
+53 SET RCPPBEDY=RCPPBEDY+RCDAYS
End DoDot:1
+54 ;
+55 ; ERA to EFT received
+56 IF $PIECE(RCDATA,U,10)
IF $PIECE(RCDATA,U,9)
Begin DoDot:1
+57 SET RCGPEECT=RCGPEECT+1
+58 SET RCPPEECT=RCPPEECT+1
+59 SET RCDAYS=$$FMDIFF^XLFDT($PIECE(RCDATA,U,10),$PIECE(RCDATA,U,9),1)
+60 SET RCGPEEDY=RCGPEEDY+RCDAYS
+61 SET RCPPEEDY=RCPPEEDY+RCDAYS
End DoDot:1
+62 ;
+63 ; ERA and EFT received, and payment Posted
+64 IF $PIECE(RCDATA,U,10)
IF $PIECE(RCDATA,U,9)
IF $PIECE(RCDATA,U,11)
Begin DoDot:1
+65 SET RCGPEPCT=RCGPEPCT+1
+66 SET RCPPEPCT=RCPPEPCT+1
+67 ;determine which date is later
SET RCEPDT=$SELECT($PIECE(RCDATA,U,9)>$PIECE(RCDATA,U,10):9,1:10)
+68 SET RCDAYS=$$FMDIFF^XLFDT($PIECE(RCDATA,U,11),$PIECE(RCDATA,U,RCEPDT),1)
+69 SET RCGPEPDY=RCGPEPDY+RCDAYS
+70 SET RCPPEPDY=RCPPEPDY+RCDAYS
End DoDot:1
+71 ;
+72 ; Bill to Payment Posted
+73 IF $PIECE(RCDATA,U,8)
IF $PIECE(RCDATA,U,11)
Begin DoDot:1
+74 SET RCGPBPCT=RCGPBPCT+1
+75 SET RCPPBPCT=RCPPBPCT+1
+76 SET RCDAYS=$$FMDIFF^XLFDT($PIECE(RCDATA,U,11),$PIECE(RCDATA,U,8),1)
+77 SET RCGPBPDY=RCGPBPDY+RCDAYS
+78 SET RCPPBPDY=RCPPBPDY+RCDAYS
End DoDot:1
+79 ;
+80 ; If the ERA hasn't already been counted, add it to the totals
+81 SET RCERAIEN=$PIECE(RCDATA,U,2)
+82 IF RCERAIEN
IF '$DATA(^TMP("RCDPENR2",$JOB,"ERA",RCERAIEN,J))
Begin DoDot:1
+83 SET ^TMP("RCDPENR2",$JOB,"ERA",RCERAIEN,J)=""
+84 SET RCERANUM=$PIECE(RCDATA,U,15)
+85 SET RCGPECT=RCGPECT+1
SET RCPPECT=RCPPECT+1
+86 SET RCGPENM=RCGPENM+RCERANUM
SET RCPPENM=RCPPENM+RCERANUM
End DoDot:1
+87 ;
+88 ; If the EFT hasn't already been counted, add it to the totals
+89 SET RCEFTIEN=$PIECE(RCDATA,U,3)
+90 IF (RCEFTIEN)
IF ('$DATA(^TMP("RCDPENR2",$JOB,"EFT",RCEFTIEN,J)))
Begin DoDot:1
+91 SET ^TMP("RCDPENR2",$JOB,"EFT",RCEFTIEN,J)=""
+92 SET RCEFTPD=$PIECE(RCDATA,U,18)
+93 SET RCGPFCT=RCGPFCT+1
SET RCPPFCT=RCPPFCT+1
+94 SET RCGPFPD=RCGPFPD+RCEFTPD
SET RCPPFPD=RCPPFPD+RCEFTPD
End DoDot:1
+95 ;
+96 ; Update payer specific info By Payment Method
+97 SET $PIECE(RCPPDATA,U)=RCPPCT
+98 SET $PIECE(RCPPDATA,U,2)=RCPPBILL
+99 SET $PIECE(RCPPDATA,U,3)=RCPPPD
+100 SET $PIECE(RCPPDATA,U,4)=RCPPBECT
+101 SET $PIECE(RCPPDATA,U,5)=RCPPBEDY
+102 SET $PIECE(RCPPDATA,U,6)=RCPPEECT
+103 SET $PIECE(RCPPDATA,U,7)=RCPPEEDY
+104 SET $PIECE(RCPPDATA,U,8)=RCPPEPCT
+105 SET $PIECE(RCPPDATA,U,9)=RCPPEPDY
+106 SET $PIECE(RCPPDATA,U,10)=RCPPBPCT
+107 SET $PIECE(RCPPDATA,U,11)=RCPPBPDY
+108 SET $PIECE(RCPPDATA,U,12)=RCPPECT
+109 SET $PIECE(RCPPDATA,U,13)=RCPPENM
+110 SET $PIECE(RCPPDATA,U,14)=RCPPFCT
+111 SET $PIECE(RCPPDATA,U,15)=RCPPFPD
+112 SET ^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,J,RCERATYP)=RCPPDATA
+113 ;
+114 ; Update Grand Total specific information By Payment Method
+115 SET $PIECE(RCGPDATA,U)=RCGPCT
+116 SET $PIECE(RCGPDATA,U,2)=RCGPBILL
+117 SET $PIECE(RCGPDATA,U,3)=RCGPPD
+118 SET $PIECE(RCGPDATA,U,4)=RCGPBECT
+119 SET $PIECE(RCGPDATA,U,5)=RCGPBEDY
+120 SET $PIECE(RCGPDATA,U,6)=RCGPEECT
+121 SET $PIECE(RCGPDATA,U,7)=RCGPEEDY
+122 SET $PIECE(RCGPDATA,U,8)=RCGPEPCT
+123 SET $PIECE(RCGPDATA,U,9)=RCGPEPDY
+124 SET $PIECE(RCGPDATA,U,10)=RCGPBPCT
+125 SET $PIECE(RCGPDATA,U,11)=RCGPBPDY
+126 SET $PIECE(RCGPDATA,U,12)=RCGPECT
+127 SET $PIECE(RCGPDATA,U,13)=RCGPENM
+128 SET $PIECE(RCGPDATA,U,14)=RCGPFCT
+129 SET $PIECE(RCGPDATA,U,15)=RCGPFPD
+130 ; PRCA*4.5*349
SET ^TMP("RCDPENR2",$JOB,"GTOT",J,RCERATYP)=RCGPDATA
+131 QUIT
+132 ;
+133 ;Retrieve all necessary info for EFTs sent during requested period.
+134 ; PRCA*4.5*349 - Add Closed Claims filter
GETEFT(RCSDATE,RCEDATE,RCRATE,RCCLM,RCPUZ,RCSORT) ;EP
+1 ;RCSDATE - Start date of extraction
+2 ;RCEDATE - End date of extraction
+3 ;RCPUZ - (P)ayment EEOBs, (U)nmatched EEOBs, (Z)ero payment EEOBs, (A)ll
+4 ;RCSORT - (P)ayer, (A)mount
+5 ;
+6 ;^TMP("RCDPENR2",$J,"MAIN",IEN of Claim/Bill #) =
+7 ; Where:
+8 ; Piece Variable
+9 ; 1 RCBILL - IEN: Bill/Claim #
+10 ; 2 RCERA - IEN: ERA the bill was paid on.
+11 ; 3 RCIEN - IEN: EFT the money for the bill arrived on
+12 ; 4 RCEOB - IEN: EOB within the ERA
+13 ; 5 RCDOS - Date of Service
+14 ; 6 RCAMTBL - Amount Billed
+15 ; 7 RCAMTPD - Amount Paid
+16 ; 8 RCDTBILL - Date of Bill
+17 ; 9 RCERARCD - Date ERA received
+18 ; 10 RCEFTRCD - Date EFT received
+19 ; 11 RCPOSTED - Date Payment Posted to claim
+20 ; 12 RCTRACE - ERA Trace number for EOB
+21 ; 13 RCMETHOD - Method of Payment transmittal
+22 ; 14 RCTRNTYP - Was payment EFT or Paper Check / Was the ERA Paper or EDI Lockbox
+23 ; 15 RCERANUM - # EOB'S in ERA
+24 ; 16 RCDIV - Division of the bill
+25 ; 17 RCINSTIN - Insurance/Insurance TIN
+26 ; 18 RCEFTPD - Amount paid as an EFT, not as a check.
+27 ;
+28 ;PRCA*4.5*446 If user selected Unmatched, all entries will come from ERA search, not EFT
IF RCPUZ="U"
QUIT
+29 ;
+30 NEW OKAY,RCLDATE,RCINS,RCIEN,RCEFTDT,RCERA,RCEFT,RCRCPT,RCPOSTED,RCPAYTYP,RCERADT,RCTRACE,RCERAIDX
+31 NEW RCTRLN,RCTRBD,RCERANUM,RCTIN,RCPAYER,RCINSTIN,RCLPIEN,RCDTDATA,RCEOB,RCBILL,RCDIV,RCDOS,RCAMTBL
+32 NEW RCDTBILL,RCMETHOD,RCPAPER,RCEFTTYP,RCEFTPD,RCKEEP,RCTRNTYP,RCDATA,RCAMTPD,RCEFTRCD,RCERARCD,RCRATETP
+33 ; PRCA*4.5*349 ;PRCA*4.5*446 add RCEFTST
NEW RCMSTAT,RCEFTST,RCESUMDT,RCPSUMDT,RCZERO,X,ZZPNAME
+34 ;
+35 ;Get EFT Detail info for report batches sent within given date range.
+36 SET RCLDATE=RCSDATE-.001
SET RCEDATE=RCEDATE+1
+37 FOR
SET RCLDATE=$ORDER(^RCY(344.31,"ADR",RCLDATE))
if RCLDATE=""
QUIT
if RCLDATE>RCEDATE
QUIT
Begin DoDot:1
+38 SET RCIEN=0
+39 FOR
SET RCIEN=$ORDER(^RCY(344.31,"ADR",RCLDATE,RCIEN))
if 'RCIEN
QUIT
Begin DoDot:2
+40 SET RCEFTDT=$GET(^RCY(344.31,RCIEN,0))
+41 if RCEFTDT=""
QUIT
+42 ; Only include posted EFTs - PRCA*4.5*349
IF '$$CHKEFT^RCDPEU1(RCIEN)
QUIT
+43 ; PRCA*4.5*326 If all payers included, check by type
IF RCPAY="A"
IF RCTYPE'="A"
Begin DoDot:3
+44 SET OKAY=$$ISTYPE^RCDPEU1(344.31,RCIEN,RCTYPE)
End DoDot:3
if 'OKAY
QUIT
+45 ; Check Payer Name
+46 ; PRCA*4.5*326
IF RCPAY'="A"
Begin DoDot:3
+47 SET OKAY=$$ISSEL^RCDPEU1(344.31,RCIEN)
End DoDot:3
if 'OKAY
QUIT
+48 ;
+49 ; ERA IEN
SET RCERA=$PIECE(RCEFTDT,U,10)
+50 SET RCEFTRCD=$PIECE(RCEFTDT,U,13)
+51 SET RCEFT=$PIECE(RCEFTDT,U)
+52 SET ZZPNAME=$PIECE(RCEFTDT,U,2)
+53 SET RCMSTAT=$PIECE(RCEFTDT,U,8)
+54 SET RCRCPT=$PIECE(RCEFTDT,U,9)
+55 SET RCEFTPD=$PIECE(RCEFTDT,U,7)
+56 SET RCPOSTED=$$GET1^DIQ(344.3,RCEFT_",",.11,"I")
+57 SET RCPAYTYP=$$GET1^DIQ(344,RCRCPT_",",.04,"I")
+58 IF RCERA
Begin DoDot:3
+59 ; ERA Data extracted
SET RCERADT=$GET(^RCY(344.4,RCERA,0))
+60 if 'RCERADT
QUIT
+61 ; Trace #
SET RCTRACE=$PIECE(RCERADT,U,2)
+62 SET RCTRLN=$LENGTH(RCTRACE)
SET RCTRBD=$SELECT(RCTRLN<11:1,1:RCTRLN-9)
+63 ; get the last 10 digits of Trace #
SET RCTRACE=$EXTRACT(RCTRACE,RCTRBD,RCTRLN)
+64 ;get the date of the ERA
SET RCERARCD=$PIECE($PIECE(RCERADT,U,7),".",1)
+65 SET RCERANUM=$PIECE(RCERADT,U,11)
+66 SET RCTIN=$PIECE(RCERADT,U,3)
+67 SET RCINS=$PIECE(RCERADT,U,6)
+68 SET RCEFTST=$PIECE(RCERADT,U,9)
+69 ; find the AR Payer IEN
SET RCPAYER=$$GETARPYR^RCDPENR2(RCTIN,ZZPNAME)
+70 ; Q:'RCPAYER ; Quit if Payer/TIN not found
+71 ; Q:'$$INSCHK^RCDPENR2(RCPAYER) ; Payer is not in the included list for the report
+72 SET RCINSTIN=RCINS_"/"_RCTIN
+73 SET RCLPIEN=0
+74 FOR
SET RCLPIEN=$ORDER(^RCY(344.4,RCERA,1,RCLPIEN))
if 'RCLPIEN
QUIT
Begin DoDot:4
+75 ; I $$GET1^DIQ(344.41,RCLPIEN_","_RCERA_",",.25,"I")="" Q ; PRCA*4.5*349 - No receipt, line is not posted
+76 SET RCDTDATA=$GET(^RCY(344.4,RCERA,1,RCLPIEN,0))
+77 SET RCEOB=$PIECE(RCDTDATA,U,2)
+78 SET RCBILL=$$BILLIEN^RCDPENR1(RCEOB)
+79 ; no billing information
if RCBILL=""
QUIT
+80 ; Bill isn't closed - PRCA*4.5*349 added line
IF RCCLM="C"
IF '$$CLOSEDB(RCBILL)
QUIT
+81 ;already captured.
if $DATA(^TMP("RCDPENR2",$JOB,"MAIN",RCBILL))
QUIT
+82 SET RCDIV=$$DIV^IBJDF2(RCBILL)
+83 SET RCDIV=$$GET1^DIQ(40.8,RCDIV_",",".01","E")
+84 ;
+85 SET RCRATETP=$$GET1^DIQ(399,RCBILL_",",.07,"I")
+86 if RCRATETP'=RCRATE
QUIT
+87 ; Quit if user specified a specific division and bill is not in that Division
+88 IF '$DATA(^TMP("RCDPENR2",$JOB,"DIVALL"))&'$DATA(^TMP("RCDPENR2",$JOB,"DIV",RCDIV))
QUIT
+89 SET RCDOS=$$GET1^DIQ(399,RCBILL_",",.03,"I")
+90 SET RCAMTBL=$$GET1^DIQ(361.1,RCEOB_",",2.04,"I")
+91 SET RCAMTPD=$$GET1^DIQ(361.1,RCEOB_",",1.01,"I")
+92 SET RCDTBILL=$$GET1^DIQ(399,RCBILL_",",12,"I")
+93 ;cant calculate if date first printed is NULL
if RCDTBILL=""
QUIT
+94 ;
+95 ; PRCA*4.5*446 Add logic for to filter zero-pay based on RCPUZ
+96 ;RCEFTST=3 -> Match-0 Payment
SET RCZERO=0
IF RCPUZ="Z"
SET RCKEEP=0
if RCEFTST=3
SET RCKEEP=1
SET RCZERO=1
if 'RCKEEP
QUIT
+97 IF RCPUZ="Z"
if 'RCZERO
QUIT
+98 IF (RCPUZ="U")!(RCPUZ="P")
if RCZERO
QUIT
+99 ;
+100 ; PRCA*4.5*349, PRCA*4.5*446
SET RCMETHOD=$SELECT(RCZERO:"UNPOSTED",$$GET1^DIQ(344.41,RCLPIEN_","_RCERA_",",9,"I")="":"MANUAL",1:"AUTOPOST")
+101 ; Paper EOB ERA?
SET RCPAPER=$PIECE($GET(^RCY(344.4,RCERA,20)),U,3)
+102 ;ERA not a paper ERA, is the EOB a Paper EOB
+103 if 'RCPAPER
SET RCPAPER=$SELECT($$GET1^DIQ(361.1,RCEOB_",",.17,"I")=0:"ERA",1:"PAPER")
+104 SET RCEFTTYP=$SELECT(RCPAYTYP=4:"PAPER",1:"EFT")
+105 SET RCTRNTYP=RCPAPER_"/"_RCEFTTYP
+106 SET RCERAIDX=$SELECT(RCTRNTYP="ERA/EFT":1,RCTRNTYP="ERA/PAPER":2,RCTRNTYP="PAPER/EFT":3,1:4)
+107 ;Paper Check Paper EOB not supported
if RCERAIDX=4
QUIT
+108 SET RCDATA=RCBILL_U_RCERA_U_RCIEN_U_RCEOB_U_RCDOS_U_RCAMTBL_U_RCAMTPD_U_RCDTBILL_U_RCERARCD
+109 SET RCDATA=RCDATA_U_RCEFTRCD_U_RCPOSTED_U_RCTRACE_U_RCMETHOD_U
+110 SET RCDATA=RCDATA_RCTRNTYP_U_RCERANUM_U_RCDIV_U_RCINSTIN_U_RCEFTPD
+111 ; PRCA*4.5*349 add post method, PRCA*4.5*446 add pieces to last subscript to make unique
SET ^TMP("RCDPENR2",$JOB,"MAIN",RCINSTIN,RCMETHOD,RCERAIDX,RCBILL_"/"_RCERA_"/"_RCAMTBL)=RCDATA
+112 ;PRCA*4.5*446
IF RCSORT="A"
SET ^TMP("RCDPENR2",$JOB,"MAINAMT",RCMETHOD,RCAMTBL,RCBILL_"/"_RCERA)=RCDATA_U_RCERAIDX_U_RCBILL
End DoDot:4
End DoDot:3
QUIT
+113 IF (RCMSTAT=2)
IF (RCIEN)
IF ('$DATA(^TMP("RCDPENR2",$JOB,"EFT",RCIEN)))
Begin DoDot:3
+114 SET RCTIN=$PIECE(RCEFTDT,U,3)
+115 SET RCINS=$PIECE(RCEFTDT,U,2)
+116 ; find the AR Payer IEN
SET RCPAYER=$$GETARPYR^RCDPENR2(RCTIN,ZZPNAME)
+117 ; Q:'RCPAYER ; Quit if Payer/TIN not found
+118 ; Q:'$$INSCHK^RCDPENR2(RCPAYER) ; Payer is not in the included list for the report
+119 SET RCINSTIN=RCINS_"/"_RCTIN
+120 ; PRCA*4.5*349 - Unmatched EFT must be manually posted
SET RCMETHOD="MANUAL"
+121 ; PRCA*4.5*349
FOR X=RCMETHOD,"TOTAL"
Begin DoDot:4
+122 ; PRCA*4.5*349
SET RCESUMDT=$GET(^TMP("RCDPENR2",$JOB,"GTOT",X,3))
+123 ; PRCA*4.5*349
SET RCPSUMDT=$GET(^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,X,3))
+124 SET $PIECE(RCESUMDT,U,14)=$PIECE(RCESUMDT,U,14)+1
+125 SET $PIECE(RCPSUMDT,U,14)=$PIECE(RCPSUMDT,U,14)+1
+126 SET $PIECE(RCESUMDT,U,15)=$PIECE(RCESUMDT,U,15)+RCEFTPD
+127 SET $PIECE(RCPSUMDT,U,15)=$PIECE(RCPSUMDT,U,15)+RCEFTPD
+128 ; PRCA*4.5*349
SET ^TMP("RCDPENR2",$JOB,"GTOT",X,3)=RCESUMDT
+129 ; PRCA*4.5*349
SET ^TMP("RCDPENR2",$JOB,"PAYER",RCINSTIN,X,3)=RCPSUMDT
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+130 QUIT
+131 ;
CLOSEDB(RCBILL) ;EP
+1 ; PRCA*4.5*349 - Added subroutine
+2 ; Check to see if a bill is closed
+3 ; Input: RCBILL - IEN for 361.1 of the bill to be checked
+4 ; Returns: 1 - Bill is closed, 0 Otherwise
+5 NEW XX
+6 SET XX=$$GET1^DIQ(430,RCBILL_",",8,"I")
+7 SET XX=$$GET1^DIQ(430.3,XX_",",1)
+8 IF XX="CC"
QUIT 1
+9 QUIT 0
+10 ;
+11 ;Moved PRINTGT to ^RCDPENR5 because of routine size, PRCA*4.5*446
+12 ;Moved GDTXT to ^RCDPENR5 because of routine size, PRCA*4.5*446
+13 ;