- RCDPENER ;AITC/CJE - NEGATIVE ERA LINE REPORT ;Dec 20, 2014@18:42
- ;;4.5;Accounts Receivable;**424**;Mar 20, 1995;Build 11
- ;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 DIVISION^VAUTOMA via Controlled IA 664
- RPT ; entry point for Negative ERA Line Report [RCDPE NEGATIVE ERA LINE REPORT]
- N POP,RCDISP,RCDIV,RCDIVS,RCDTRNG,RCJOB,RCLAIM,RCPAGE,RCPAR,RCPARRAY,RCPAY,RCPROG,RCRANGE
- N RCSORT,RCWHICH,STANAM,STANUM,X,Y
- S (RCDTRNG,RCPAGE)=0,RCPROG="RCDPENER",RCJOB=$J ; Initialize page and start point
- S RCDIV=$$STADIV^RCDPEAPP(.RCDIVS) Q:RCDIV=-1 ; Select Filter/Sort by Division
- ;
- S RCLAIM=$$RTYPE^RCDPEU1() Q:RCLAIM=-1 ; Tricare filter to Med/Pharm/Both
- S RCWHICH=$$NMORTIN^RCDPEAPP() Q:RCWHICH=-1 ; Filter by Payer Name or TIN
- ;
- S RCPAR("SELC")=$$PAYRNG^RCDPEU1(0,1,RCWHICH) ; Selected or Range of Payers
- Q:RCPAR("SELC")=-1 ; '^' or timeout
- S RCPAY=RCPAR("SELC")
- ;
- I RCPAR("SELC")'="A" D Q:XX=-1 ; Since we don't want all payers
- . S RCPAR("TYPE")=RCLAIM
- . S RCPAR("SRCH")=$S(RCWHICH=2:"T",1:"N") ; prompt for payers we do want
- . S RCPAR("FILE")=344.4
- . S RCPAR("DICA")="Select Insurance Company"_$S(RCWHICH=1:" NAME: ",1:" TIN: ")
- . S XX=$$SELPAY^RCDPEU1(.RCPAR)
- ;
- S RCSORT=$$SORTT^RCDPEAPP() Q:RCSORT=-1 ; Select Sort
- S RCRANGE=$$DTRNG() Q:RCRANGE=0 ; Select Date Range for Report
- S RCDISP=$$DISPTY^RCDPEAPP() Q:RCDISP=-1 ; Output to Excel?
- I RCDISP D INFO^RCDPEM6 ; Display capture information for Excel
- ;
- I 'RCDISP W !,"This report requires 132 column display."
- S %ZIS="QM" D ^%ZIS Q:POP ; Select output device
- ;
- ; Option to queue
- I 'RCDISP,$D(IO("Q")) D Q
- . N ZTDESC,ZTQUEUED,ZTRTN,ZTSAVE,ZTSK
- . S ZTRTN="REPORT^RCDPENER"
- . S ZTDESC="EDI LOCKBOX NEGATIVE ERA LINE REPORT"
- . S ZTSAVE("RC*")="" ;**FA** ,ZTSAVE("VAUTD")=""
- . S ZTSAVE("^TMP(""RCDPEU1"",$J,")="" ;
- . D ^%ZTLOAD
- . I $D(ZTSK) W !!,"Task number "_ZTSK_" was queued."
- . E W !!,"Unable to queue this job."
- . K IO("Q")
- . D HOME^%ZIS
- ;
- D REPORT ; Compile and print report
- Q
- REPORT ; Compile and print report
- ; Input: RCDISP - 0 - Output to paper or screen, 1 - Output to Excel
- ; RCDIV - 1 - All divisions, 2 - Selected divisions
- ; RCDIVS()- Array of selected divisions if RCDIV=2
- ; RCRANGE - 1^Start Date^End Date
- ; RCJOB - $J
- ; RCLAIM - "M" - Medical Claims, "P" - Pharmacy Claims, "B" - Both
- ; RCPAGE - Initialized to 0
- ; RCPARRAY- Array of selected payers
- ; RCPROG - "RCDPENER"
- ; RCSORT - 0 - Sort by Payer Name, 1 - Sort by Payer TIN
- ; RCWHICH - 1 - Filter by Payer Name, 2 - Filter by Payer TIN
- ; ^TMP("RCDPEU1",$J) - Selected payerers (see SELPAY^RCDPEU1 for details)
- ;
- N GLOB,GTOTAL,ZTREQ
- K ^TMP(RCPROG,$J),^TMP("RCDPEAPP2",$J)
- S GLOB=$NA(^TMP(RCPROG,$J))
- D COMPILE^RCDPENE1 ; Scan ERA file for entries in date range
- D DISP ; Display the Report
- ;
- ; Clear ^TMP global
- K ^TMP(RCPROG,$J),^TMP("RCSELPAY",RCJOB),^TMP("RCDPEAPP2",$J),^TMP("RCDPEU1",$J)
- Q
- ;
- DISP ; Format the display for screen/printer or MS Excel
- ; Input: GLOB - ^TMP("RCDPENER",$J) (See SAVE^RCDPENE1 for field order)
- ; RCDISP - 1 - Output to Excel, 0 otherwise
- ; RCDIV - 1 - All Divisions selected
- ; RCDIVS - Array of selected Divisions (if all not selected)
- ; RCPARRAY- Array of selected Payers
- ; RCPAY - 1 - All Payers selected
- N DIVS,LINE1,LINE2,PAYERS,RCDATA,RCHDRDT,RCSTOP,SPACES,SUB,SUB1,SUB2,SUB3
- S RCHDRDT=$$FMTE^XLFDT($$NOW^XLFDT,"2SZ") ; Date/time for header
- S LINE1=$TR($J("",131)," ","-"),LINE2=$TR(LINE1,"-","=")
- U IO
- ;
- ; Report by division or 'ALL'
- D LINED^RCDPEAPP(RCDIV,.RCDIVS,.DIVS) ; Format Division filter
- D LINEP^RCDPEAPP(RCPAY,.RCPARRAY,RCWHICH,.PAYERS) ; Format Payer filter
- S SPACES=" "
- S SUB="",RCSTOP=0
- I RCDISP D HDR(.DIVS,.PAYERS) ; Single header for Excel
- F S SUB=$O(@GLOB@(SUB)) Q:SUB="" D Q:RCSTOP ;
- . I 'RCDISP D
- . . D HDR(.DIVS,.PAYERS) ; Display Header
- . . W !,"DIVISION: ",SUB
- . S SUB1="" ; Division
- . F S SUB1=$O(@GLOB@(SUB,SUB1)) Q:SUB1="" D Q:RCSTOP
- . . S SUB2=""
- . . F S SUB2=$O(@GLOB@(SUB,SUB1,SUB2)) Q:SUB2="" D Q:RCSTOP
- . . . ;
- . . . ; Display payer sub-header
- . . . I 'RCDISP D HDRP^RCDPEAPP(SUB1_"/"_SUB2)
- . . . S SUB3=""
- . . . F S SUB3=$O(@GLOB@(SUB,SUB1,SUB2,SUB3)) Q:SUB3="" D Q:RCSTOP
- . . . . S RCDATA=@GLOB@(SUB,SUB1,SUB2,SUB3)
- . . . . I 'RCDISP D Q:RCSTOP
- . . . . . I $Y>(IOSL-6) D HDR(.DIVS,.PAYERS) Q:RCSTOP
- . . . . . W !,$P(RCDATA,U,4) ; Patient Name
- . . . . . W ?30,$P(RCDATA,U,5) ; ERA#
- . . . . . W ?37,$P(RCDATA,U,6) ; Date Received
- . . . . . W ?48,$E($P(RCDATA,U,7),1,12) ; Bill #
- . . . . . W ?57,$J($P(RCDATA,U,12),8)_" " ; Date of Service
- . . . . . W $J($P(RCDATA,U,8),11,2)_" " ; Paid Amount
- . . . . . W $E($E($P(RCDATA,U,10),1,11)_SPACES,1,13) ; Claim Status
- . . . . . W $J($P(RCDATA,U,9),15,2) ; Claim Balance
- . . . . . W !,?3,"Trace #: ",$P(RCDATA,U,11) ; Trace #
- . . . . . ;
- . . . . I RCDISP D
- . . . . . I $L(RCDATA)>255 D ;
- . . . . . . N RCPAY,RCTIN
- . . . . . . S RCPAY=$P(RCDATA,"^",3)
- . . . . . . S RCTIN=$P(RCPAY,"/",$S(RCSORT=0:2,1:1))
- . . . . . . S RCPAY=$P(RCPAY,"/",$S(RCSORT=0:1,1:2))
- . . . . . . S RCPAY=$E(RCPAY,1,$L(RCPAY)-($L(RCDATA)-255))
- . . . . . . S RCPAY=$S(RCSORT=0:RCPAY_"/"_RCTIN,1:RCTIN_"/"_RCPAY)
- . . . . . . S $P(RCDATA,"^",3)=RCPAY
- . . . . . W !,RCDATA
- . . . ;
- ;
- I '$D(@GLOB) D ;
- . I 'RCDISP D HDR(.DIVS,.PAYERS)
- . W !!,"*** NO DATA FOUND FOR THIS DATE RANGE AND FILTER CONDITIONS ***",!!
- ;
- I 'RCSTOP D ASK^RCDPEAPP(.RCSTOP)
- ;
- ; Close device
- I '$D(ZTQUEUED) D ^%ZISC
- I $D(ZTQUEUED) S ZTREQ="@"
- Q
- ;
- HDR(DIVS,PAYERS) ; Print the report header
- ; Input: DIVS() - Array of selected Division lines for Header
- ; PAYERS() - Array of selected Payer lines for Header
- ; RCDISP - 1 - Output to Excel, 0 otherwise
- ; RCHDRDT - External Print Date/Tim
- ; RCPAGE - Current Page number
- ; RCRANGE - Selected Date Range
- ; RCSORT - 0 - Sort by Payer Name, 1 - Sort by Payer TIN
- ; RCSTOP - 1 if display aborted
- ; Output: RCPAGE - Updated Page Number
- ; RCSTOP - 1 if display aborted
- N END,LN,MSG,START,XX,Y
- Q:RCSTOP
- I RCDISP D Q ; Output to Excel
- . S XX="STATION^STATION NUMBER^PAYER^PATIENT NAME/SSN^ERA#^DT REC'D"
- . S XX=XX_"^BILL#^AMT PAID^CLAIM BALANCE^CLAIM STATUS^TRACE#^DOS"
- . W !,XX
- S START=$$FMTE^XLFDT($P(RCRANGE,U,2),"2DZ")
- S END=$$FMTE^XLFDT($P(RCRANGE,U,3),"2DZ")
- I RCPAGE D ASK^RCDPEAPP(.RCSTOP) Q:RCSTOP
- S RCPAGE=RCPAGE+1
- W @IOF
- S MSG(1)="EDI LOCKBOX NEGATIVE ERA LINE REPORT"
- S MSG(1)=MSG(1)_$J("",47)_"Print Date: "_RCHDRDT_" Page: "_RCPAGE
- ;
- S LN=2,XX=""
- F D Q:XX="" ; Display Division filters
- . S XX=$O(DIVS(XX))
- . Q:XX=""
- . S MSG(LN)=DIVS(XX),LN=LN+1
- ;
- S MSG(LN)="CLAIM TYPE: "
- S MSG(LN)=MSG(LN)_$S(RCLAIM="P":"PHARMACY",RCLAIM="M":"MEDICAL",RCLAIM="T":"TRICARE",1:"ALL")
- S MSG(LN)=MSG(LN)_$J("",55-$L(MSG(LN)))_"SORTED BY: "_$S(RCSORT=0:"PAYER NAME",1:"PAYER TIN")
- S LN=LN+1
- S MSG(LN)=$S(RCWHICH=2:"TINS",1:"PAYERS")_" : "_$S(RCPAY="S":"SELECTED",RCPAY="R":"RANGE",1:"ALL")
- S LN=LN+1
- S MSG(LN)="RESULTS FOR ERA FILED DATE RANGE: "_START_" - "_END
- S LN=LN+1,MSG(LN)=LINE2
- S LN=LN+1
- S MSG(LN)="PATIENT NAME/SSN ERA# DT REC'D BILL# DOS AMOUNT BILL STATUS CURRENT BALANCE"
- S LN=LN+1,MSG(LN)=LINE2
- D EN^DDIOL(.MSG)
- Q
- ;
- DTRNG() ; Get the date range for the report
- ; Input: None
- ; Returns: 0 - User ^ or timed out
- ; 1^Start Date^End Date
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,RCEND,RNGFLG,RCSTART,X,Y
- D DATES(.RCSTART,.RCEND)
- Q:RCSTART=-1 0
- Q:RCSTART "1^"_RCSTART_"^"_RCEND
- Q:'RCSTART "0^^"
- Q 0
- ;
- DATES(BDATE,EDATE) ; Get a date range.
- ; Input: None
- ; Output: BDATE - Internal Begin date
- ; EDATE - Internal End date
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- S (BDATE,EDATE)=0
- S DIR("?")="Enter the earliest ERA file date date to include on the report"
- S DIR(0)="DAO^:"_DT_":APE",DIR("A")="Start Date: "
- D ^DIR K DIR
- I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
- S BDATE=Y
- S DIR("?")="Enter the latest ERA file date date to include on the report"
- S DIR("B")=Y(0)
- S DIR(0)="DAO^"_BDATE_":"_DT_":APE",DIR("A")="End Date: "
- D ^DIR K DIR
- I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
- S EDATE=Y
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPENER 9306 printed Mar 13, 2025@20:49:41 Page 2
- RCDPENER ;AITC/CJE - NEGATIVE ERA LINE REPORT ;Dec 20, 2014@18:42
- +1 ;;4.5;Accounts Receivable;**424**;Mar 20, 1995;Build 11
- +2 ;Per VA Directive 6402, this routine should not be modified.
- +3 ;Read ^DGCR(399) via Private IA 3820
- +4 ;Read ^DG(40.8) via Controlled IA 417
- +5 ;Read ^IBM(361.1) via Private IA 4051
- +6 ;Use DIVISION^VAUTOMA via Controlled IA 664
- RPT ; entry point for Negative ERA Line Report [RCDPE NEGATIVE ERA LINE REPORT]
- +1 NEW POP,RCDISP,RCDIV,RCDIVS,RCDTRNG,RCJOB,RCLAIM,RCPAGE,RCPAR,RCPARRAY,RCPAY,RCPROG,RCRANGE
- +2 NEW RCSORT,RCWHICH,STANAM,STANUM,X,Y
- +3 ; Initialize page and start point
- SET (RCDTRNG,RCPAGE)=0
- SET RCPROG="RCDPENER"
- SET RCJOB=$JOB
- +4 ; Select Filter/Sort by Division
- SET RCDIV=$$STADIV^RCDPEAPP(.RCDIVS)
- if RCDIV=-1
- QUIT
- +5 ;
- +6 ; Tricare filter to Med/Pharm/Both
- SET RCLAIM=$$RTYPE^RCDPEU1()
- if RCLAIM=-1
- QUIT
- +7 ; Filter by Payer Name or TIN
- SET RCWHICH=$$NMORTIN^RCDPEAPP()
- if RCWHICH=-1
- QUIT
- +8 ;
- +9 ; Selected or Range of Payers
- SET RCPAR("SELC")=$$PAYRNG^RCDPEU1(0,1,RCWHICH)
- +10 ; '^' or timeout
- if RCPAR("SELC")=-1
- QUIT
- +11 SET RCPAY=RCPAR("SELC")
- +12 ;
- +13 ; Since we don't want all payers
- IF RCPAR("SELC")'="A"
- Begin DoDot:1
- +14 SET RCPAR("TYPE")=RCLAIM
- +15 ; prompt for payers we do want
- SET RCPAR("SRCH")=$SELECT(RCWHICH=2:"T",1:"N")
- +16 SET RCPAR("FILE")=344.4
- +17 SET RCPAR("DICA")="Select Insurance Company"_$SELECT(RCWHICH=1:" NAME: ",1:" TIN: ")
- +18 SET XX=$$SELPAY^RCDPEU1(.RCPAR)
- End DoDot:1
- if XX=-1
- QUIT
- +19 ;
- +20 ; Select Sort
- SET RCSORT=$$SORTT^RCDPEAPP()
- if RCSORT=-1
- QUIT
- +21 ; Select Date Range for Report
- SET RCRANGE=$$DTRNG()
- if RCRANGE=0
- QUIT
- +22 ; Output to Excel?
- SET RCDISP=$$DISPTY^RCDPEAPP()
- if RCDISP=-1
- QUIT
- +23 ; Display capture information for Excel
- IF RCDISP
- DO INFO^RCDPEM6
- +24 ;
- +25 IF 'RCDISP
- WRITE !,"This report requires 132 column display."
- +26 ; Select output device
- SET %ZIS="QM"
- DO ^%ZIS
- if POP
- QUIT
- +27 ;
- +28 ; Option to queue
- +29 IF 'RCDISP
- IF $DATA(IO("Q"))
- Begin DoDot:1
- +30 NEW ZTDESC,ZTQUEUED,ZTRTN,ZTSAVE,ZTSK
- +31 SET ZTRTN="REPORT^RCDPENER"
- +32 SET ZTDESC="EDI LOCKBOX NEGATIVE ERA LINE REPORT"
- +33 ;**FA** ,ZTSAVE("VAUTD")=""
- SET ZTSAVE("RC*")=""
- +34 ;
- SET ZTSAVE("^TMP(""RCDPEU1"",$J,")=""
- +35 DO ^%ZTLOAD
- +36 IF $DATA(ZTSK)
- WRITE !!,"Task number "_ZTSK_" was queued."
- +37 IF '$TEST
- WRITE !!,"Unable to queue this job."
- +38 KILL IO("Q")
- +39 DO HOME^%ZIS
- End DoDot:1
- QUIT
- +40 ;
- +41 ; Compile and print report
- DO REPORT
- +42 QUIT
- REPORT ; Compile and print report
- +1 ; Input: RCDISP - 0 - Output to paper or screen, 1 - Output to Excel
- +2 ; RCDIV - 1 - All divisions, 2 - Selected divisions
- +3 ; RCDIVS()- Array of selected divisions if RCDIV=2
- +4 ; RCRANGE - 1^Start Date^End Date
- +5 ; RCJOB - $J
- +6 ; RCLAIM - "M" - Medical Claims, "P" - Pharmacy Claims, "B" - Both
- +7 ; RCPAGE - Initialized to 0
- +8 ; RCPARRAY- Array of selected payers
- +9 ; RCPROG - "RCDPENER"
- +10 ; RCSORT - 0 - Sort by Payer Name, 1 - Sort by Payer TIN
- +11 ; RCWHICH - 1 - Filter by Payer Name, 2 - Filter by Payer TIN
- +12 ; ^TMP("RCDPEU1",$J) - Selected payerers (see SELPAY^RCDPEU1 for details)
- +13 ;
- +14 NEW GLOB,GTOTAL,ZTREQ
- +15 KILL ^TMP(RCPROG,$JOB),^TMP("RCDPEAPP2",$JOB)
- +16 SET GLOB=$NAME(^TMP(RCPROG,$JOB))
- +17 ; Scan ERA file for entries in date range
- DO COMPILE^RCDPENE1
- +18 ; Display the Report
- DO DISP
- +19 ;
- +20 ; Clear ^TMP global
- +21 KILL ^TMP(RCPROG,$JOB),^TMP("RCSELPAY",RCJOB),^TMP("RCDPEAPP2",$JOB),^TMP("RCDPEU1",$JOB)
- +22 QUIT
- +23 ;
- DISP ; Format the display for screen/printer or MS Excel
- +1 ; Input: GLOB - ^TMP("RCDPENER",$J) (See SAVE^RCDPENE1 for field order)
- +2 ; RCDISP - 1 - Output to Excel, 0 otherwise
- +3 ; RCDIV - 1 - All Divisions selected
- +4 ; RCDIVS - Array of selected Divisions (if all not selected)
- +5 ; RCPARRAY- Array of selected Payers
- +6 ; RCPAY - 1 - All Payers selected
- +7 NEW DIVS,LINE1,LINE2,PAYERS,RCDATA,RCHDRDT,RCSTOP,SPACES,SUB,SUB1,SUB2,SUB3
- +8 ; Date/time for header
- SET RCHDRDT=$$FMTE^XLFDT($$NOW^XLFDT,"2SZ")
- +9 SET LINE1=$TRANSLATE($JUSTIFY("",131)," ","-")
- SET LINE2=$TRANSLATE(LINE1,"-","=")
- +10 USE IO
- +11 ;
- +12 ; Report by division or 'ALL'
- +13 ; Format Division filter
- DO LINED^RCDPEAPP(RCDIV,.RCDIVS,.DIVS)
- +14 ; Format Payer filter
- DO LINEP^RCDPEAPP(RCPAY,.RCPARRAY,RCWHICH,.PAYERS)
- +15 SET SPACES=" "
- +16 SET SUB=""
- SET RCSTOP=0
- +17 ; Single header for Excel
- IF RCDISP
- DO HDR(.DIVS,.PAYERS)
- +18 ;
- FOR
- SET SUB=$ORDER(@GLOB@(SUB))
- if SUB=""
- QUIT
- Begin DoDot:1
- +19 IF 'RCDISP
- Begin DoDot:2
- +20 ; Display Header
- DO HDR(.DIVS,.PAYERS)
- +21 WRITE !,"DIVISION: ",SUB
- End DoDot:2
- +22 ; Division
- SET SUB1=""
- +23 FOR
- SET SUB1=$ORDER(@GLOB@(SUB,SUB1))
- if SUB1=""
- QUIT
- Begin DoDot:2
- +24 SET SUB2=""
- +25 FOR
- SET SUB2=$ORDER(@GLOB@(SUB,SUB1,SUB2))
- if SUB2=""
- QUIT
- Begin DoDot:3
- +26 ;
- +27 ; Display payer sub-header
- +28 IF 'RCDISP
- DO HDRP^RCDPEAPP(SUB1_"/"_SUB2)
- +29 SET SUB3=""
- +30 FOR
- SET SUB3=$ORDER(@GLOB@(SUB,SUB1,SUB2,SUB3))
- if SUB3=""
- QUIT
- Begin DoDot:4
- +31 SET RCDATA=@GLOB@(SUB,SUB1,SUB2,SUB3)
- +32 IF 'RCDISP
- Begin DoDot:5
- +33 IF $Y>(IOSL-6)
- DO HDR(.DIVS,.PAYERS)
- if RCSTOP
- QUIT
- +34 ; Patient Name
- WRITE !,$PIECE(RCDATA,U,4)
- +35 ; ERA#
- WRITE ?30,$PIECE(RCDATA,U,5)
- +36 ; Date Received
- WRITE ?37,$PIECE(RCDATA,U,6)
- +37 ; Bill #
- WRITE ?48,$EXTRACT($PIECE(RCDATA,U,7),1,12)
- +38 ; Date of Service
- WRITE ?57,$JUSTIFY($PIECE(RCDATA,U,12),8)_" "
- +39 ; Paid Amount
- WRITE $JUSTIFY($PIECE(RCDATA,U,8),11,2)_" "
- +40 ; Claim Status
- WRITE $EXTRACT($EXTRACT($PIECE(RCDATA,U,10),1,11)_SPACES,1,13)
- +41 ; Claim Balance
- WRITE $JUSTIFY($PIECE(RCDATA,U,9),15,2)
- +42 ; Trace #
- WRITE !,?3,"Trace #: ",$PIECE(RCDATA,U,11)
- +43 ;
- End DoDot:5
- if RCSTOP
- QUIT
- +44 IF RCDISP
- Begin DoDot:5
- +45 ;
- IF $LENGTH(RCDATA)>255
- Begin DoDot:6
- +46 NEW RCPAY,RCTIN
- +47 SET RCPAY=$PIECE(RCDATA,"^",3)
- +48 SET RCTIN=$PIECE(RCPAY,"/",$SELECT(RCSORT=0:2,1:1))
- +49 SET RCPAY=$PIECE(RCPAY,"/",$SELECT(RCSORT=0:1,1:2))
- +50 SET RCPAY=$EXTRACT(RCPAY,1,$LENGTH(RCPAY)-($LENGTH(RCDATA)-255))
- +51 SET RCPAY=$SELECT(RCSORT=0:RCPAY_"/"_RCTIN,1:RCTIN_"/"_RCPAY)
- +52 SET $PIECE(RCDATA,"^",3)=RCPAY
- End DoDot:6
- +53 WRITE !,RCDATA
- End DoDot:5
- End DoDot:4
- if RCSTOP
- QUIT
- +54 ;
- End DoDot:3
- if RCSTOP
- QUIT
- End DoDot:2
- if RCSTOP
- QUIT
- End DoDot:1
- if RCSTOP
- QUIT
- +55 ;
- +56 ;
- IF '$DATA(@GLOB)
- Begin DoDot:1
- +57 IF 'RCDISP
- DO HDR(.DIVS,.PAYERS)
- +58 WRITE !!,"*** NO DATA FOUND FOR THIS DATE RANGE AND FILTER CONDITIONS ***",!!
- End DoDot:1
- +59 ;
- +60 IF 'RCSTOP
- DO ASK^RCDPEAPP(.RCSTOP)
- +61 ;
- +62 ; Close device
- +63 IF '$DATA(ZTQUEUED)
- DO ^%ZISC
- +64 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +65 QUIT
- +66 ;
- HDR(DIVS,PAYERS) ; Print the report header
- +1 ; Input: DIVS() - Array of selected Division lines for Header
- +2 ; PAYERS() - Array of selected Payer lines for Header
- +3 ; RCDISP - 1 - Output to Excel, 0 otherwise
- +4 ; RCHDRDT - External Print Date/Tim
- +5 ; RCPAGE - Current Page number
- +6 ; RCRANGE - Selected Date Range
- +7 ; RCSORT - 0 - Sort by Payer Name, 1 - Sort by Payer TIN
- +8 ; RCSTOP - 1 if display aborted
- +9 ; Output: RCPAGE - Updated Page Number
- +10 ; RCSTOP - 1 if display aborted
- +11 NEW END,LN,MSG,START,XX,Y
- +12 if RCSTOP
- QUIT
- +13 ; Output to Excel
- IF RCDISP
- Begin DoDot:1
- +14 SET XX="STATION^STATION NUMBER^PAYER^PATIENT NAME/SSN^ERA#^DT REC'D"
- +15 SET XX=XX_"^BILL#^AMT PAID^CLAIM BALANCE^CLAIM STATUS^TRACE#^DOS"
- +16 WRITE !,XX
- End DoDot:1
- QUIT
- +17 SET START=$$FMTE^XLFDT($PIECE(RCRANGE,U,2),"2DZ")
- +18 SET END=$$FMTE^XLFDT($PIECE(RCRANGE,U,3),"2DZ")
- +19 IF RCPAGE
- DO ASK^RCDPEAPP(.RCSTOP)
- if RCSTOP
- QUIT
- +20 SET RCPAGE=RCPAGE+1
- +21 WRITE @IOF
- +22 SET MSG(1)="EDI LOCKBOX NEGATIVE ERA LINE REPORT"
- +23 SET MSG(1)=MSG(1)_$JUSTIFY("",47)_"Print Date: "_RCHDRDT_" Page: "_RCPAGE
- +24 ;
- +25 SET LN=2
- SET XX=""
- +26 ; Display Division filters
- FOR
- Begin DoDot:1
- +27 SET XX=$ORDER(DIVS(XX))
- +28 if XX=""
- QUIT
- +29 SET MSG(LN)=DIVS(XX)
- SET LN=LN+1
- End DoDot:1
- if XX=""
- QUIT
- +30 ;
- +31 SET MSG(LN)="CLAIM TYPE: "
- +32 SET MSG(LN)=MSG(LN)_$SELECT(RCLAIM="P":"PHARMACY",RCLAIM="M":"MEDICAL",RCLAIM="T":"TRICARE",1:"ALL")
- +33 SET MSG(LN)=MSG(LN)_$JUSTIFY("",55-$LENGTH(MSG(LN)))_"SORTED BY: "_$SELECT(RCSORT=0:"PAYER NAME",1:"PAYER TIN")
- +34 SET LN=LN+1
- +35 SET MSG(LN)=$SELECT(RCWHICH=2:"TINS",1:"PAYERS")_" : "_$SELECT(RCPAY="S":"SELECTED",RCPAY="R":"RANGE",1:"ALL")
- +36 SET LN=LN+1
- +37 SET MSG(LN)="RESULTS FOR ERA FILED DATE RANGE: "_START_" - "_END
- +38 SET LN=LN+1
- SET MSG(LN)=LINE2
- +39 SET LN=LN+1
- +40 SET MSG(LN)="PATIENT NAME/SSN ERA# DT REC'D BILL# DOS AMOUNT BILL STATUS CURRENT BALANCE"
- +41 SET LN=LN+1
- SET MSG(LN)=LINE2
- +42 DO EN^DDIOL(.MSG)
- +43 QUIT
- +44 ;
- DTRNG() ; Get the date range for the report
- +1 ; Input: None
- +2 ; Returns: 0 - User ^ or timed out
- +3 ; 1^Start Date^End Date
- +4 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,RCEND,RNGFLG,RCSTART,X,Y
- +5 DO DATES(.RCSTART,.RCEND)
- +6 if RCSTART=-1
- QUIT 0
- +7 if RCSTART
- QUIT "1^"_RCSTART_"^"_RCEND
- +8 if 'RCSTART
- QUIT "0^^"
- +9 QUIT 0
- +10 ;
- DATES(BDATE,EDATE) ; Get a date range.
- +1 ; Input: None
- +2 ; Output: BDATE - Internal Begin date
- +3 ; EDATE - Internal End date
- +4 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- +5 SET (BDATE,EDATE)=0
- +6 SET DIR("?")="Enter the earliest ERA file date date to include on the report"
- +7 SET DIR(0)="DAO^:"_DT_":APE"
- SET DIR("A")="Start Date: "
- +8 DO ^DIR
- KILL DIR
- +9 IF $DATA(DTOUT)!$DATA(DUOUT)!(Y="")
- SET BDATE=-1
- QUIT
- +10 SET BDATE=Y
- +11 SET DIR("?")="Enter the latest ERA file date date to include on the report"
- +12 SET DIR("B")=Y(0)
- +13 SET DIR(0)="DAO^"_BDATE_":"_DT_":APE"
- SET DIR("A")="End Date: "
- +14 DO ^DIR
- KILL DIR
- +15 IF $DATA(DTOUT)!$DATA(DUOUT)!(Y="")
- SET BDATE=-1
- QUIT
- +16 SET EDATE=Y
- +17 QUIT