Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RCDPEAR1

RCDPEAR1.m

Go to the documentation of this file.
  1. RCDPEAR1 ;ALB/TMK/PJH - ERA Unmatched Aging Report (file #344.4) ;Dec 20, 2014@18:41:35
  1. ;;4.5;Accounts Receivable;**173,269,276,284,293,298,321,326,371,409,432**;Mar 20, 1995;Build 16
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ;
  1. ; PRCA*4.5*298 routine completely refactored
  1. EN1 ; entry point - ERA Unmatched Aging Report [RCDPE ERA AGING REPORT]
  1. ; data from ELECTRONIC REMITTANCE ADVICE file (#344.4)
  1. N POP,RCDADJ,RCDISPTY,RCDT,RCDTRNG,RCHDR,RCJOB,RCLNCNT,RCLSTMGR,RCOUT ;PRCA*4.5*409 Added POP,RCADJ
  1. N RCPAR,RCPAY,RCPGNUM,RCPYRLST,RCSTOP,RCTMPND,RCTYPE,RCXCLUDE,RCZROBAL,VAUTD,XX,Y
  1. ;
  1. ; RCDADJ - Display Adjustment/Code info flag ;PRCA*4.5*409 Added line
  1. ; RCDISPTY - Display type (Excel)
  1. ; RCDTRNG - Selected date range
  1. ; RCDT("BEG") - Start date, RCDT("END") - end date
  1. ; RCHDR - Header array
  1. ; RCLSTMGR - list manager flag
  1. ; RCDTRNG - "1^start date^end date"
  1. ; RCXCLUDE("CHAMPVA") - boolean, exclude CHAMPVA
  1. ; RCXCLUDE("TRICARE") - boolean, exclude TriCare
  1. ; RCZROBAL - Zero balance flag
  1. ; VAUTD - Division information
  1. ; RCTYPE - MEDICAL/PHARMACY/TRICARE/CHAMPVA/ALL = M/P/T/C/A
  1. ; RCPAY - S=SELECTED, R=RANGE, A=ALL
  1. ; (Selected or range - payers stored in ^TMP(""RCDPEU1"",$J))
  1. ;
  1. K ^TMP($J,"RC TOTAL") ; Clear old totals
  1. W !,$$HDRNM
  1. D DIVISION^VAUTOMA ; Returns VAUTD
  1. I 'VAUTD&($D(VAUTD)'=11) D EN1Q Q
  1. S RCLSTMGR="" ; Initial value, won't be asked if non-null
  1. S (RCXCLUDE("CHAMPVA"),RCXCLUDE("TRICARE"))=0 ; Default to false
  1. S RCDTRNG=$$DTRNG^RCDPEM4()
  1. I 'RCDTRNG D EN1Q Q
  1. S RCDT("BEG")=$P(RCDTRNG,U,2),RCDT("END")=$P(RCDTRNG,U,3)
  1. ;
  1. ; PRCA*4.5*326 - Ask to show Medical/Pharmacy Tricare CHAMPVA or All
  1. S RCTYPE=$$RTYPE^RCDPEU1("A")
  1. I RCTYPE=-1 D EN1Q Q
  1. ;
  1. S RCPAR("SELC")=$$PAYRNG^RCDPEU1() ; PRCA*4.5*326 - Selected or Range of Payers
  1. I RCPAR("SELC")=-1 D EN1Q Q ; PRCA*4.5*326 '^' or timeout
  1. S RCPAY=RCPAR("SELC")
  1. ;
  1. I RCPAR("SELC")'="A" D Q:XX=-1 ; PRCA*4.5*326 - Since we don't want all payers
  1. . S RCPAR("TYPE")=RCTYPE ; prompt for payers we do want
  1. . S RCPAR("DICA")="Select Insurance Company NAME: "
  1. . S XX=$$SELPAY^RCDPEU1(.RCPAR)
  1. ;
  1. S RCZROBAL=$$ZROBAL() ; Get Zero Balance Filter
  1. I RCZROBAL<0 D EN1Q Q
  1. ;
  1. S RCDADJ=$$DADJCDE() ; Get Adjustment/Code Filter ;PRCA*4.5*409 Added line
  1. I RCDADJ<0 D EN1Q Q
  1. ;
  1. ; Display type, ask for Excel format
  1. S RCDISPTY=$$DISPTY^RCDPEM3()
  1. I RCDISPTY=-1 D EN1Q Q
  1. ;
  1. ; Display device info about Excel format, set ListMan flag to prevent question
  1. I RCDISPTY S RCLSTMGR="^" D INFO^RCDPEM6
  1. I $D(DUOUT)!$D(DTOUT) D EN1Q Q
  1. S RCJOB=$J ; Needed in RPTOUT
  1. ;
  1. ; If not output to Excel ask for ListMan display, exit if timeout or '^' - PRCA*4.5*298
  1. I RCLSTMGR="" S RCLSTMGR=$$ASKLM^RCDPEARL G:RCLSTMGR<0 EN1Q
  1. ;
  1. ; Display in ListMan format and exit on return
  1. I RCLSTMGR D Q
  1. . S RCTMPND=$T(+0)_"^ERA UNMATCHED AGING" K ^TMP($J,RCTMPND) ; clean any residue
  1. . D RPTOUT
  1. . N H,L,HDR S L=0
  1. . S HDR("TITLE")=$$HDRNM
  1. . F H=1:1:7 I $D(RCHDR(H)) S L=H,HDR(H)=RCHDR(H) ; take first 7 lines of report header
  1. . I $O(RCHDR(L)) D ; any remaining header lines at top of report
  1. . . N N S N=0,H=L F S H=$O(RCHDR(H)) Q:'H S N=N+.001,^TMP($J,RCTMPND,N)=RCHDR(H)
  1. . ;
  1. . ; invoke ListMan
  1. . D LMRPT^RCDPEARL(.HDR,$NA(^TMP($J,RCTMPND))) ; generate ListMan display
  1. . D EN1Q
  1. ;
  1. ; Ask device
  1. N %ZIS S %ZIS="QM"
  1. D ^%ZIS
  1. I POP D EN1Q Q
  1. I $D(IO("Q")) D Q
  1. . N ZTDESC,ZTQUEUED,ZTRTN,ZTSAVE,ZTSK,ZTSTOP
  1. . S ZTRTN="RPTOUT^RCDPEAR1",ZTDESC="AR - EDI LOCKBOX ERA AGING REPORT"
  1. . S ZTSAVE("RC*")="",ZTSAVE("VAUTD")=""
  1. . S ZTSAVE("^TMP(""RCDPEU1"",$J,")="" ; PRCA*4.5*326
  1. . D ^%ZTLOAD
  1. . W !!,$S($G(ZTSK):"Task number "_ZTSK_" has been queued.",1:"Unable to queue this task.")
  1. . K ZTSK,IO("Q")
  1. . D HOME^%ZIS
  1. . D EN1Q
  1. ;
  1. U IO
  1. S RCTMPND=""
  1. D RPTOUT
  1. ;
  1. EN1Q ; exit and clean up
  1. K ^TMP("RCSELPAY",$J),^TMP("RCPAYER",$J),^TMP("RCDPEU1",$J) ; PRCA*4.5*326
  1. I '$G(RCLSTMGR) D ^%ZISC
  1. Q
  1. ;
  1. RPTOUT ; Entry point for listing report
  1. ; Input: RCTMPND - Name of the subscript for ^TMP to use to return all lines
  1. ; (for bulletin). If undefined or null, output is printed
  1. ; Returns: Global if RCTMPND not null: ^TMP($J,RCTMPND,line#)=line text
  1. N ERADT,J,LNECNT,PYMNTFRM,RC0,RCEDT,RCEXCEP,RCFLIEN,RCITM,RCNT,RCSF0,RCZ
  1. N STA,STNAM,STNUM,X,XX,Y,Z,Z0
  1. ; ERADT - Date of entry
  1. ; LNECNT - # of Lines displayed on the current page
  1. ; RCDADJ - Display Adjustment/Code Filter ;PRCA*4.5*409 Added line
  1. ; RCNT - Count of items
  1. ; RCFLIEN - Entry number in file #344.4
  1. ; RCITM - Entry in ^RCY(344.4,0) = ELECTRONIC REMITTANCE ADVICE^344.4I
  1. ; RCSF0 - Zero node of sub-file entry
  1. ;
  1. S LNECNT=0
  1. S RCTMPND=$G(RCTMPND)
  1. I RCTMPND'="" K ^TMP($J,RCTMPND) ; Clear residual data
  1. K ^TMP($J,"RCERA_AGED"),^TMP($J,"RCERA_ADJ")
  1. S RCFLIEN=0,RCNT=0
  1. F S RCFLIEN=$O(^RCY(344.4,"AMATCH",0,RCFLIEN)) Q:'RCFLIEN D
  1. . K RCITM
  1. . M RCITM=^RCY(344.4,RCFLIEN) ; Grab entire entry
  1. . Q:$P($G(RCITM(6)),U) ; Who removed the ERA - PRCA*4.5*293
  1. . S ERADT=+$P($G(RCITM(0)),U,7) ; (#.07) FILE DATE/TIME [7D]
  1. . Q:'ERADT ; No date, don't include
  1. . ;
  1. . ; Check date range
  1. . Q:(RCDT("BEG")>ERADT\1)!(ERADT\1>RCDT("END"))
  1. . ;
  1. . ; Check Station/Division
  1. . ;I '$$CHKDIV^RCDPEDAR(RCFLIEN,1,.VAUTD) Q
  1. . I 'VAUTD D ERASTA^RCDPEM4(RCFLIEN,.STA,.STNUM,.STNAM) I '$D(VAUTD(STA)) Q
  1. . ;
  1. . I RCPAY'="A" D Q:'XX
  1. . . S XX=$$ISSEL^RCDPEU1(344.4,RCFLIEN) ; PRCA*4.5*326 Check if payer was selected
  1. . E I RCTYPE'="A" D Q:'XX ; If all of a give type of payer selected
  1. . . S XX=$$ISTYPE^RCDPEU1(344.4,RCFLIEN,RCTYPE) ; Check that payer matches type
  1. . ;
  1. . ; Check for Zero Bal
  1. . I 'RCZROBAL,'$P($G(RCITM(0)),U,5) Q ; (#.05) TOTAL AMOUNT PAID [5N]
  1. . S ^TMP($J,"RCERA_AGED",$$FMDIFF^XLFDT(ERADT,DT),RCFLIEN)=0,RCNT=RCNT+1
  1. ;
  1. S ^TMP($J,"RC TOTAL","COUNT")=RCNT ; Save counter
  1. ;
  1. ; Build header, initialize stop flag
  1. D:'RCLSTMGR HDRBLD
  1. S RCSTOP=0
  1. D:RCLSTMGR HDRLM
  1. ;
  1. ; Excel format, print and exit
  1. I RCDISPTY D EXCEL,^%ZISC,EXIT Q
  1. ;
  1. D ; Calculate total amount for ERA
  1. . N T S T=0 ; total
  1. . S RCZ=""
  1. . F D Q:RCZ=""
  1. . . S RCZ=$O(^TMP($J,"RCERA_AGED",RCZ))
  1. . . Q:RCZ=""
  1. . . S RCFLIEN=0
  1. . . F S RCFLIEN=$O(^TMP($J,"RCERA_AGED",RCZ,RCFLIEN)) Q:'RCFLIEN D
  1. . . . S RC0=$G(^RCY(344.4,RCFLIEN,0)),T=T+$P(RC0,U,5)
  1. . ;
  1. . S ^TMP($J,"RC TOTAL","AMOUNT")=T
  1. ;
  1. S RCLNCNT=0 ; Line counter
  1. D:'RCLSTMGR HDRLST^RCDPEARL(.RCSTOP,.RCHDR) ; First header in report
  1. ;
  1. ; List totals
  1. S Y=" Total NUMBER Aged Electronic ERA messages found: "_$FN(^TMP($J,"RC TOTAL","COUNT"),",")
  1. D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. S Y=" Total AMOUNT Aged Electronic ERA messages found: $"_$FN(^TMP($J,"RC TOTAL","AMOUNT"),",",2)
  1. D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. ;
  1. ; If filters selected show total excluded
  1. F J="CHAMPVA","TRICARE" I $G(RCXCLUDE(J)) D
  1. . S Y=" "_J_" exclusion count: "_(+$G(^TMP($J,"RC TOTAL",J)))
  1. . D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. D SL^RCDPEARL(" "_$TR($J("",78)," ","="),.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1 ; Row of equal signs
  1. ;
  1. S RCZ="" F S RCZ=$O(^TMP($J,"RCERA_AGED",RCZ)) Q:RCZ="" S RCFLIEN=0 F S RCFLIEN=$O(^TMP($J,"RCERA_AGED",RCZ,RCFLIEN)) Q:'RCFLIEN D G:RCSTOP EXIT
  1. .I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCPGNUM) W:RCTMPND="" !!,"***TASK STOPPED BY USER***" Q
  1. .I RCPGNUM D SL^RCDPEARL(" ",.RCLNCNT,.RCTMPND) S LNECNT=LNECNT+1 ; On detail list, skip line
  1. .I 'RCLSTMGR,'RCPGNUM!(($Y+5)>IOSL) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
  1. .S RC0=$G(^RCY(344.4,RCFLIEN,0))
  1. .S RCEXCEP=$$XCEPT^RCDPEWLP(RCFLIEN) ; PRCA*4.5*298 assignment of ERA exception flag (will either be "" or "x")
  1. .S Z=$$SETSTR^VALM1($J(RCEXCEP_-RCZ,4),"",1,5) ; PRCA*4.5*298 display ERA exception flag
  1. .S Z=$$SETSTR^VALM1(" "_$P(RC0,U,2),Z,5,50)
  1. .D SL^RCDPEARL(Z,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. .S Z=$$SETSTR^VALM1($$PAYTIN^RCDPRU2($P(RC0,U,6)_"/"_$P(RC0,U,3),78),"",3,78) ; PRCA*4.5*321
  1. .D SL^RCDPEARL(Z,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. .S Z=$$SETSTR^VALM1($J("",16)_$S($P(RC0,U,7):$$FMTE^XLFDT($P(RC0,U,7)\1,2),1:""),"",1,25)
  1. .S Z=$$SETSTR^VALM1(" "_$J($P(RC0,U,5),15,2),Z,26,17)
  1. .;
  1. .;PRCA*4.5*409 Added if statement
  1. .I RCDADJ D
  1. ..S Z=$$SETSTR^VALM1(" "_+$P(RC0,U,11),Z,43,11)
  1. .;
  1. .;PRCA*4.5*409 Replaced 43 with $S(RCDADJ:54,1:43)
  1. .S Z=$$SETSTR^VALM1(" "_$P(RC0,U),Z_$S('$$HACERA^RCDPEU(RCFLIEN):"",1:" (HAC ERA)"),$S(RCDADJ:54,1:43),16) ; PRCA*4.5*321
  1. .;PRCA*4.5*371 Moved ERA Date column over from 70 to 59 below
  1. .;
  1. .;PRCA*4.5*409 Replaced 59 with $S(RCDADJ:70,1:59)
  1. .S Z=$$SETSTR^VALM1(" "_$$FMTE^XLFDT($P(RC0,U,4),2),Z,$S(RCDADJ:70,1:59),10) ; PRCA*4.5*321
  1. .D SL^RCDPEARL(Z,.RCLNCNT,RCTMPND) S LNECNT=LNECNT+1
  1. .Q:'RCDADJ ;PRCA*4.5*409 Added line
  1. .;
  1. .;PRCA*4.5*409 Added call to new routine due to routine size limitations
  1. .D RPTOUT2^RCDPEAR4
  1. ;
  1. ; PRCA*4.5*298, put end-of-report into SL^RCDPEARL
  1. I 'RCSTOP D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND),SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCLNCNT,RCTMPND)
  1. D EXIT
  1. Q
  1. ;
  1. EXIT ; Exit the report
  1. ; PRCA*4.5*298, added ListMan check
  1. I '$D(ZTQUEUED),'RCLSTMGR D
  1. . I 'RCSTOP,RCPGNUM,RCTMPND="" D ASK^RCDPEARL(.RCSTOP)
  1. . D ^%ZISC
  1. ;
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K ^TMP($J,"RCERA_AGED"),^TMP("RCSELPAY",$J),^TMP($J,"RC TOTAL"),^TMP("RCDPEU1",$J) ; PRCA*4.5*326
  1. Q
  1. ;
  1. HDRBLD ; Create the report header
  1. ; Input: RCADJ - 1 - Display Adjustment/Code information, 0 otherwise ;PRCA*4.5*409 Added RCADJ
  1. ; RCDISPTY - 1 - Output to excel, 0 otherwise
  1. ; RCDTRNG - Date range selected
  1. ; RCXCLUDE - TRICARE /CHAMPVA flags
  1. ; VAUTD - Divisions to include in report (if listed in VAUTD array)
  1. ; Output: RCHDR(0) - Header text line count
  1. ; RCHDR(1) - Excel column data (only set If DISPTY=1)
  1. ; RCHDR("XECUTE") - M code for page number
  1. ; RCHDR("RUNDATE")- Date/time report generated, external format
  1. ; RCPGNUM - Page counter
  1. ; RCSTOP - Flag to exit
  1. ;
  1. N CHATRI,DIV,HCNT,XX,Y
  1. K RCHDR
  1. S RCHDR("RUNDATE")=$$NOW^RCDPEARL,RCPGNUM=0,RCSTOP=0
  1. I RCDISPTY D Q ; Excel format, xecute code is QUIT, null page number
  1. . S RCHDR(0)=1,RCHDR("XECUTE")="Q",RCPGNUM=""
  1. . S XX="Aged Days^Trace #^Payment From/ID^ERA Date^File Date^Amount Paid"
  1. . ;
  1. . ;PRCA*4.5*409 Replaced S XX=XX_"^ERA #" with If/Else below
  1. . I RCDADJ D
  1. . . S XX=XX_"^EEOB Cnt^ERA #^EEOB Detail"
  1. . E D
  1. . . S XX=XX_"^ERA #"
  1. . S RCHDR(1)=XX
  1. ;
  1. S XX="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDRNM^"
  1. S XX=XX_$T(+0)_",RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"_"_"" Page: ""_RCPGNUM,LNECNT=RCHDR(0)"
  1. S RCHDR("XECUTE")=XX
  1. S HCNT=1
  1. S Y="RUN DATE: "_RCHDR("RUNDATE"),HCNT=HCNT+1
  1. S RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. ;
  1. ; Divisions
  1. S Y="DIVISIONS: "
  1. I $D(VAUTD)=1 S Y=Y_"ALL",Y=$J("",80-$L(Y)\2)_Y,HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. I $D(VAUTD)>1 D
  1. . N S,X S S=0
  1. . F S S=$O(VAUTD(S)) Q:'S D
  1. . . S X=VAUTD(S)_$S($O(VAUTD(S)):", ",1:"")
  1. . . I $L(X)+$L(Y)>80 D
  1. . . . S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y,Y=$J(" ",12)
  1. . . S Y=Y_X
  1. . ;
  1. . S:$TR(Y," ")]"" HCNT=HCNT+1,RCHDR(HCNT)=Y ; any residual data
  1. ;
  1. ; Payers - PRCA*4.5*326
  1. S Y="PAYERS: "
  1. S Y=Y_$S(RCPAY="S":"SELECTED",RCPAY="R":"RANGE",1:"ALL")
  1. S Y=Y_$J("",38-$L(Y))_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: " ;PRCA*4.5*432 Add CHAMPVA, 45->38
  1. S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ;PRCA*4.5*432 Add CHAMPVA
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ;
  1. S Y("1ST")=$P(RCDTRNG,U,2),Y("LST")=$P(RCDTRNG,U,3)
  1. F Y="1ST","LST" S Y(Y)=$$FMTE^XLFDT(Y(Y),"2Z")
  1. S Y="DATE RANGE: "_Y("1ST")_" - "_Y("LST")_" (ERA FILE DATE)"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. ;
  1. S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. S Y="AGED"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="DAYS TRACE #"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" PAYMENT FROM/ID" ; PRCA*4.5*321 - Allow extra room for 60 character Payer Name
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ;
  1. ;PRCA*4.5*371 Removed EEOB CNT below
  1. ;PRCA*4.5*409 Replaced S Y=" FILE DATE AMOUNT PAID ERA # ERA DATE"
  1. ; with I/E statment below
  1. I RCDADJ D
  1. . S Y=" FILE DATE AMOUNT PAID EEOB CNT ERA # ERA DATE"
  1. E D
  1. . S Y=" FILE DATE AMOUNT PAID ERA # ERA DATE"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="",$P(Y,"=",80)="",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S RCHDR(0)=HCNT ; Total lines in header
  1. Q
  1. ;
  1. HDRLM ; Create the list manager version of the report header
  1. ; Input: RCDADJ - 1 - Display Adjustment/Code info 0 otherwise ;PRCA*4.5*409 Added RCDADJ
  1. ; RCDTRNG - Date range filter value to be printed as part of the
  1. ; header
  1. ; RCPAY - 1 - All Payers
  1. ; 2 - Selected Payers
  1. ; RCPAY() - Array of selected Payers if RCPAY=2
  1. ; RCLSTMGR -
  1. ; VAUTD - 1 - All divisions
  1. ; 2 - Selected divisions
  1. ; VAUTD() - Array of selected divisions (if VAUTD=2)
  1. ; Output: RCHDR(0) - Header text line count
  1. N DATE,DIV,HCNT,MSG,Y,Z0
  1. K RCHDR
  1. S Z0="",RCPGNUM=0,RCSTOP=0
  1. S RCHDR(1)="DATE RANGE: "_$$FMTE^XLFDT($P(RCDTRNG,U,2),"2Z")
  1. S RCHDR(1)=RCHDR(1)_" - "_$$FMTE^XLFDT($P(RCDTRNG,U,3),"2Z")_" (ERA FILE DATE)"
  1. S HCNT=1
  1. ;
  1. S Y="DIVISIONS: "
  1. I $D(VAUTD)=1 S Y=Y_"ALL",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. I $D(VAUTD)>1 D
  1. . N S,X
  1. . S S=0
  1. . F S S=$O(VAUTD(S)) Q:'S D
  1. . . S X=VAUTD(S)_$S($O(VAUTD(S)):", ",1:"")
  1. . . I $L(X)+$L(Y)>80 S HCNT=HCNT+1,RCHDR(HCNT)=Y,Y=$J(" ",12)
  1. . . S Y=Y_X
  1. . ;
  1. . S:$TR(Y," ")]"" HCNT=HCNT+1,RCHDR(HCNT)=Y ; any residual data
  1. ;
  1. ; Payers - PRCA*4.5*326
  1. S Y="PAYERS: "
  1. S Y=Y_$S(RCPAY="S":"SELECTED",RCPAY="R":"RANGE",1:"ALL")
  1. S Y=Y_$J("",38-$L(Y))_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: " ;PRCA*4.5*432 Add CHAMPVA, 45->38
  1. S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ;PRCA*4.5*432 Add CHAMPVA
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ;
  1. S Y="AGED"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="DAYS TRACE #"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" PAYMENT FROM/ID" ; PRCA*4.5*321 - Allow extra room for 60 character Payer Name
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ; PRCA*4.5*371 Removed EEOB CNT below
  1. ;PRCA*4.5*409 Replaced S Y=" FILE DATE AMOUNT PAID ERA # ERA DATE"
  1. ; with I/E statment below
  1. I RCDADJ D
  1. . S Y=" FILE DATE AMOUNT PAID EEOB CNT ERA # ERA DATE"
  1. E D
  1. . S Y=" FILE DATE AMOUNT PAID ERA # ERA DATE"
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S RCHDR(0)=HCNT ; Total lines in header
  1. Q
  1. ;
  1. HDRNM() ; Extrinsic variable, name for header PRCA*4.5*298
  1. Q "ERA UNMATCHED AGING REPORT"
  1. ;
  1. EXCEL ; Print report to screen, one record per line for export to MS Excel.
  1. N D,RCSF0,RC1ST,RCEXCEP,RCFLIEN,RCLN,RCSFIEN,RCZ,Z
  1. ; RCDADJ - Adjustment/Code filter ;PRCA*4.5*409 Added line
  1. ; RCSFIEN - sub-file ien
  1. D HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
  1. S RCZ=""
  1. F S RCZ=$O(^TMP($J,"RCERA_AGED",RCZ)) Q:RCZ="" D
  1. . S RCFLIEN=0
  1. . F S RCFLIEN=$O(^TMP($J,"RCERA_AGED",RCZ,RCFLIEN)) Q:'RCFLIEN D G:RCSTOP PRTQ2
  1. . . I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCPGNUM) W:RCTMPND="" !!,"***TASK STOPPED BY USER***" Q
  1. . . S RC0=$G(^RCY(344.4,RCFLIEN,0))
  1. . . S RCEXCEP=$$XCEPT^RCDPEWLP(RCFLIEN) ; PRCA*4.5*298 assignment of ERA exception flag (will either be "" or "x")
  1. . . S Z=$J(RCEXCEP_-RCZ,4)_U_$P(RC0,U,2)_U_$P(RC0,U,6)_"/"_$P(RC0,U,3)
  1. . . ;
  1. . . ;PRCA*4.5*371 Changed external date/times below to be just date (,2 to ,"2D")
  1. . . S Z=Z_U_$$FMTE^XLFDT($P(RC0,U,4),"2D")_U_$$FMTE^XLFDT($P(RC0,U,7),"2D")_U
  1. . . ;
  1. . . ;PRCA*4.5*409 Replaced S Z=Z_$P(RC0,U,5)_U_$P(RC0,U,1) with I/E below
  1. . . I RCDADJ D
  1. . . . S Z=Z_$P(RC0,U,5)_U_$P(RC0,U,11)_U_$P(RC0,U,1)
  1. . . E D
  1. . . . S Z=Z_$P(RC0,U,5)_U_$P(RC0,U,1)
  1. . . W !,Z
  1. . . S RCLN=Z,RC1ST=0
  1. . . Q:'RCDADJ ;PRCA*4.5*409 Added line
  1. . . ;
  1. . . ;PRCA*4.5*409 Begin - Lines restored ePayments Build 17 version of routine
  1. . . K Z
  1. . . I "23"[$$ADJ^RCDPEU(RCFLIEN) D LSTXCEL W "^** CLAIM LEVEL ADJUSTMENTS EXIST FOR THIS ERA ***"
  1. . . I $O(^RCY(344.4,RCFLIEN,2,0)) D ; ERA level adjustments exist
  1. . . . N Q
  1. . . . D DISPADJ^RCDPESR8(RCFLIEN,"^TMP("_$J_",""RCERA_ADJ"")")
  1. . . . I $O(^TMP($J,"RCERA_ADJ",0)) D LSTXCEL W "^** GENERAL ADJUSTMENT DATA EXISTS FOR ERA **"
  1. . . . S Q=0 F S Q=$O(^TMP($J,"RCERA_ADJ",Q)) Q:'Q D LSTXCEL W "^"_$G(^TMP($J,"RCERA_ADJ",Q))
  1. . . ;
  1. . . S RCSFIEN=0 F S RCSFIEN=$O(^RCY(344.4,RCFLIEN,1,RCSFIEN)) Q:'RCSFIEN S RCSF0=$G(^(RCSFIEN,0)) D Q:RCSTOP
  1. . . . N D
  1. . . . K RCOUT
  1. . . . S D=" EEOB Seq #: "_$P(RCSF0,U)_$S($D(^RCY(344.4,RCFLIEN,1,"ATB",1,RCSFIEN)):" (REVERSAL)",1:"")_" EEOB "
  1. . . . S D=D_$S('$P(RCSF0,U,2):"not on file",1:"on file for "_$P($G(^DGCR(399,+$G(^IBM(361.1,+$P(RCSF0,U,2),0)),0)),U))_" "_$J(+$P(RCSF0,U,3),"",2)
  1. . . . D LSTXCEL W "^",D
  1. . . . Q:$P(RCSF0,U,2)
  1. . . . D DISP^RCDPESR0("^RCY(344.4,"_RCFLIEN_",1,"_RCSFIEN_",1)","RCDATA",1,"RCOUT",68,1)
  1. . . . I '$O(RCOUT(0)) D LSTXCEL W "^NO DETAIL FOUND" Q
  1. . . . S Z=0 F S Z=$O(RCOUT(Z)) Q:'Z D Q:RCSTOP
  1. . . . . D LSTXCEL W "^*"_RCOUT(Z)
  1. ;
  1. ;PRCA*4.5*409 End
  1. ;
  1. W !!,$$ENDORPRT^RCDPEARL
  1. Q
  1. ;
  1. LSTXCEL ; Display repeat info line before each EEOB detail section.
  1. ; First detail line does not need it
  1. I RC1ST W !,RCLN Q
  1. S RC1ST=1 Q
  1. ;
  1. PRTQ2 I '$D(ZTQUEUED),'RCSTOP,RCPGNUM,RCTMPND="" D ASK^RCDPEARL(.RCSTOP)
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. K ^TMP($J,"RCEFT_AGED")
  1. Q
  1. ;
  1. ZROBAL() ; Get Zero Payment Filter
  1. ; Returns: 1 for yes, zero for no, -1 on '^' or timeout
  1. N DIR,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR(0)="YA",DIR("A")="Include Zero payment amounts? (Y/N): ",DIR("B")="YES"
  1. D ^DIR
  1. I $D(DUOUT)!$D(DIRUT)!$D(DTOUT) S Y=-1
  1. Q Y
  1. ;
  1. DADJCDE() ; Get Adjustment/Code Filter ;PRCA*4.5*409 Added method
  1. ; Returns: 1 for yes, zero for no, -1 on '^' or timeout
  1. N DIR,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR(0)="YA",DIR("A")="Display Adjustment/Code Information? (Y/N): ",DIR("B")="NO"
  1. D ^DIR
  1. I $D(DUOUT)!$D(DIRUT)!$D(DTOUT) S Y=-1
  1. Q Y
  1. ;