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

RCDPEAPS.m

Go to the documentation of this file.
  1. RCDPEAPS ;ALB/DMB - ERA STATUS CHANGE AUDIT REPORT ;Nov 25, 2015
  1. ;;4.5;Accounts Receivable;**304,326,432**;Mar 20, 1995;Build 16
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ;
  1. EN ;
  1. ; Prompt for report type
  1. N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,RCALL,RCTYPE,RCERA,RCRANGE ; PRCA*4.5*326
  1. S DIR(0)="SA^S:SINGLE ERA;A:ALL"
  1. S DIR("A")="SELECT (S)ingle ERA or (A)LL: ",DIR("B")="ALL"
  1. D ^DIR
  1. I Y'="S",Y'="A" Q
  1. S RCALL=Y ; PRCA*4.5*326
  1. ;
  1. ; If Single ERA, select the ERA
  1. S RCERA="",RCTYPE="A"
  1. I RCALL="S" S RCERA=$$SELERA() Q:'RCERA G RANGE ; PRCA*4.5*326
  1. ;
  1. ; If ALL ERAs, select Type of Payers to include and Date Range for Report
  1. S RCTYPE=$$RTYPE^RCDPEU1("A") I RCTYPE=-1 Q ; PRCA*4.5*326
  1. ;
  1. RANGE ; Select date range for audit transactions
  1. S RCRANGE=""
  1. S RCRANGE=$$DTRNG() I 'RCRANGE Q
  1. ;
  1. ; Prompt for device
  1. N %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP
  1. S %ZIS="QM"
  1. D ^%ZIS
  1. I POP G ENQ
  1. I $D(IO("Q")) D G ENQ
  1. . S ZTRTN="RUN^RCDPEAPS(RCERA,RCRANGE)"
  1. . S ZTIO=ION
  1. . S ZTSAVE("*")=""
  1. . S ZTDESC="ERA STATUS CHANGE AUDIT REPORT"
  1. . D ^%ZTLOAD
  1. . W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
  1. . D HOME^%ZIS
  1. U IO
  1. ;
  1. D RUN(RCERA,RCRANGE)
  1. ;
  1. ENQ ;
  1. Q
  1. ;
  1. RUN(RCERA,RCRANGE) ;
  1. ;
  1. K ^TMP("RCDPEAPS",$J)
  1. ;
  1. ; Compile Data
  1. D COMPILE(RCERA,RCRANGE)
  1. ;
  1. ; Generate Report
  1. D REPORT(RCRANGE)
  1. ;
  1. K ^TMP("RCDPEAPS",$J)
  1. Q
  1. ;
  1. COMPILE(RCERA,RCRANGE) ;
  1. ; Compile the data
  1. ;
  1. N CNT,BDATE,EDATE,AUDDATE,IEN,CNT,DATA
  1. S CNT=0,BDATE=$P(RCRANGE,U,1)-.000001,EDATE=$P(RCRANGE,U,2)+.999999
  1. ;
  1. ; If RCERA is non-zero, then we are doing a single ERA
  1. I RCERA D Q
  1. . S IEN="" F S IEN=$O(^RCY(344.72,"E",RCERA,IEN)) Q:'IEN D
  1. .. S DATA=$G(^RCY(344.72,IEN,0))
  1. .. S AUDDATE=$P(DATA,U,1)
  1. .. I AUDDATE="" Q
  1. .. I AUDDATE<BDATE!(AUDDATE>EDATE) Q
  1. .. S CNT=CNT+1
  1. .. S ^TMP("RCDPEAPS",$J,RCERA,AUDDATE,CNT)=$P(DATA,U,4)_U_$P(DATA,U,5)_U_$P(DATA,U,2)_U_$P(DATA,U,6)
  1. ;
  1. ; If RCERA is zero, then we are gathering data by date
  1. I 'RCERA D Q
  1. . S AUDDATE=BDATE F S AUDDATE=$O(^RCY(344.72,"B",AUDDATE)) Q:'AUDDATE!(AUDDATE>EDATE) D
  1. .. S IEN="" F S IEN=$O(^RCY(344.72,"B",AUDDATE,IEN)) Q:'IEN D
  1. ... S DATA=$G(^RCY(344.72,IEN,0))
  1. ... I $P(DATA,U,3)="" Q
  1. ... S CNT=CNT+1
  1. ... S ^TMP("RCDPEAPS",$J,$P(DATA,U,3),AUDDATE,CNT)=$P(DATA,U,4)_U_$P(DATA,U,5)_U_$P(DATA,U,2)_U_$P(DATA,U,6)
  1. Q
  1. ;
  1. REPORT(RCRANGE) ;
  1. ; Display output
  1. ;
  1. ; Initialize Report Date, Page Number and Sting of underscores
  1. N RCSCR,RCNOW,RCPG,RCHR,ERA,DATE,CNT,DATA,LINES
  1. S RCSCR=$S($E($G(IOST),1,2)="C-":1,1:0)
  1. S RCNOW=$$UP^XLFSTR($$NOW^RCDPRU()),RCPG=0,RCHR="",$P(RCHR,"-",IOM+1)=""
  1. ;
  1. U IO
  1. D HEADER(RCNOW,.RCPG,RCHR,RCRANGE)
  1. I '$D(^TMP("RCDPEAPS",$J)) W !,"No data found"
  1. ;
  1. ; Display the detail
  1. S ERA="" F S ERA=$O(^TMP("RCDPEAPS",$J,ERA)) Q:'ERA D I RCPG=0 Q
  1. . I RCTYPE'="A",'$$ISTYPE^RCDPEU1(344.4,ERA,RCTYPE) Q ; PRCA*4.5*326 Filter by Medical, Tricare, CHAMPVA or Pharmacy
  1. . S DATE="" F S DATE=$O(^TMP("RCDPEAPS",$J,ERA,DATE)) Q:'DATE D I RCPG=0 Q
  1. .. S CNT=0 F S CNT=$O(^TMP("RCDPEAPS",$J,ERA,DATE,CNT)) Q:'CNT D I RCPG=0 Q
  1. ... S DATA=^TMP("RCDPEAPS",$J,ERA,DATE,CNT)
  1. ... S LINES=2
  1. ... I $P(DATA,U,4)]"" S LINES=3
  1. ... I RCSCR S LINES=LINES+1
  1. ... D CHKP(RCNOW,.RCPG,RCHR,RCRANGE,RCSCR,LINES) I RCPG=0 Q
  1. ... W !,ERA,?15,$$FMTE^XLFDT(DATE,"2Z"),?38,$$STATUS($P(DATA,U,1)),?49,$$STATUS($P(DATA,U,2))
  1. ... W ?63,$E($$GET1^DIQ(200,+$P(DATA,U,3)_",",.01),1,IOM-63)
  1. ... I $P(DATA,U,4)]"" W !,?3,$E($P(DATA,U,4),1,IOM-4)
  1. ... W !
  1. ;
  1. I 'RCSCR W !,@IOF
  1. I $D(ZTQUEUED) S ZTREQ="@" Q
  1. D ^%ZISC
  1. ;
  1. I RCPG,RCSCR D PAUSE
  1. Q
  1. ;
  1. ; Print Header
  1. ;
  1. N LINE
  1. W @IOF
  1. S RCPG=RCPG+1
  1. S LINE="EDI Lockbox ERA Status Change Audit Report"
  1. W ?(IOM-$L(LINE)\2),LINE
  1. S LINE="Page: "_RCPG_" "
  1. W ?(IOM-$L(LINE)),LINE
  1. S LINE="RUN DATE: "_RCNOW
  1. S LINE=LINE_" MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
  1. S LINE=LINE_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARAMCY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ;PRCA*4.5*432 Add CHAMPVA
  1. W !?(IOM-$L(LINE)\2),LINE
  1. S LINE="DATE RANGE: "_$$FMTE^XLFDT($P(RCRANGE,U,1),"5DZ")_" - "_$$FMTE^XLFDT($P(RCRANGE,U,2),"5DZ")
  1. W !?(IOM-$L(LINE)\2),LINE
  1. ;
  1. W !!,"ERA#",?15,"Date/Time Edited",?38,"Status (Old/New)",?63,"User"
  1. W !?3,"Reason Text"
  1. W !,RCHR
  1. Q
  1. ;
  1. PAUSE() ;
  1. N DIR,X,Y,DTOUT,DUOUT,DIROUT,DIRUT
  1. S DIR(0)="E"
  1. D ^DIR
  1. Q Y
  1. ;
  1. CHKP(RCNOW,RCPG,RCHR,RCRANGE,RCSCR,LINES) ;
  1. ; Check if we need to do a page break
  1. ;
  1. I $Y'>(IOSL-LINES) Q
  1. I RCSCR,'$$PAUSE S RCPG=0 Q
  1. D HEADER(RCNOW,.RCPG,RCHR,RCRANGE)
  1. Q
  1. ;
  1. SELERA() ;
  1. ; Lookup on the Electronic Remittance Advice (#344.4) file
  1. ;
  1. N DIC,X,Y,DTOUT,DUOUT
  1. S DIC="^RCY(344.4,",DIC(0)="QEAMn"
  1. D ^DIC
  1. I $G(DTOUT)!$G(DUOUT)!(Y=-1) Q 0
  1. Q +Y
  1. ;
  1. DTRNG() ;
  1. ; Get the date range for the report
  1. ;
  1. N DIR,X,Y,DTOUT,DUOUT,DIROUT,DIRUT,BDATE
  1. S DIR("?")="ENTER THE EARLIEST AUDIT DATE TO INCLUDE ON THE REPORT"
  1. S DIR(0)="DA^:"_DT_":APE",DIR("A")="START DATE: ",DIR("B")="T" D ^DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q 0
  1. S BDATE=Y
  1. K DIR
  1. S DIR("?")="ENTER THE LATEST AUDIT DATE TO INCLUDE ON THE REPORT"
  1. S DIR("B")=Y(0)
  1. S DIR(0)="DA^"_BDATE_":"_DT_":APE",DIR("A")="END DATE: ",DIR("B")="T" D ^DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") Q 0
  1. Q BDATE_"^"_Y
  1. ;
  1. STATUS(STATUS) ;
  1. ; Convert internal status to external status
  1. I '$D(STATUS) Q ""
  1. I STATUS="" Q "NULL"
  1. Q $$EXTERNAL^DILFD(344.4,4.02,,STATUS)