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

RCDPESPA.m

Go to the documentation of this file.
  1. RCDPESPA ;OICO/HRUBOVCAK - ePayment Lockbox Parameter Audit Report ;29 Jan 2019 18:00:14
  1. ;;4.5;Accounts Receivable;**332,345,349,424**;Oct 11, 2018;Build 11
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. AUDPARM ;EP from RCDPESP2
  1. ; EDI Lockbox Parameters Audit Report [RCDPE PARAMETER AUDIT REPORT]
  1. ; Report logic moved from RCDPESP2, 11 October 2018
  1. ; Report displays the RCDPE PARAMETER AUDIT file (#344.7)
  1. ; and changes to the RCDPE PARAMETER file (#344.61)
  1. ;
  1. ; ^TMP($T(+0)_"-AUD",$J) - storage for LIST^DIC
  1. ; ^TMP($J,"RCLABEL") - field labels from $$GET1^DID
  1. ; RCDIERR - Errors from LIST^DIC
  1. ; RCDIGET - ^TMP storage for LIST^DIC A1^A2^...^An Where:
  1. ; A1 - Field of the parameter that was changed
  1. ; A2 - Timestamp when the changed occurred (internal)
  1. ; A3 - Old value of the parameter
  1. ; A4 - New value of the parameter
  1. ; A5 - User who made the change
  1. ; A6 - File of the changed parameter
  1. ; A7 - IEN of the changed value
  1. ; RCFLDS - Fields for LIST^DIC
  1. ; RCPARAM - Changed parameter
  1. ; RCPARAM("dt&tm") - Date and time parameter changed
  1. ; RCPARAM("file") - File number
  1. ; RCPARAM("fld") - Field number
  1. ; RCPARAM("newVal") - New parameter value
  1. ; RCPARAM("oldVal") - Old parameter value
  1. ; RCPARAM("usr") - User who changed parameter
  1. ; RCRPRT("begDate") - Report start date
  1. ; RCRPRT("endDate") - Report end date
  1. ; RCRPRT("eXcel") - Flag, output to Excel?
  1. ; RCRPRT("hdrDate") - Date/time report was run
  1. ; RCRPRT("hdrPg#") - Page counter
  1. ; RCRPRT("hdrTyp") - Type to display in header
  1. ; RCRPRT("pgLns") - Line count for page (or screen)
  1. ; RCRPRT("typRprt") - Type of report (Medical, Pharmacy, or Both)
  1. ; RCRPRT("cntr") - Count of records output
  1. ; RCSCR - Screening logic for LIST^DIC
  1. ; RCSTOP - Flag, stop displaying report
  1. ; RCTMP - One line from LIST^DIC
  1. ;
  1. N %ZIS,POP,RCDIERR,RCDIGET,RCFLDS,RCIEN,RCPARAM,RCRPRT,RCSCR,RCSTOP,RCTMP,X,XX,Y
  1. W !!,"EDI Lockbox Parameters Audit Report",!
  1. ;
  1. ; Set up FileMan storage location
  1. S RCDIGET=$NA(^TMP($T(+0)_"-AUD",$J))
  1. K @RCDIGET,^TMP($J,"RCLABEL")
  1. ;
  1. ; Initialize to zero
  1. S (RCSTOP,RCRPRT("hdrPg#"),RCRPRT("eXcel"),RCRPRT("cntr"),RCRPRT("pgLns"))=0
  1. ; Retrieve report type (Medical, Pharmacy, or All)
  1. S RCRPRT("typRprt")=$$RTYPE("A") ; PRCA*4.5*349
  1. Q:RCRPRT("typRprt")=-1 ; User '^' or timed out
  1. ;
  1. ; Type for header, PRCA*4.5*345
  1. S XX=RCRPRT("typRprt") ; PRCA*4.5*349 - Added line
  1. S RCRPRT("hdrTyp")=$S(XX="M":"Medical",XX="P":"Pharmacy",XX="T":"TRICARE",1:"All")
  1. S Y("dtRange")=$$DTRNG ; date range for report
  1. Q:Y("dtRange")=0 ; No date range selected
  1. ;
  1. S RCRPRT("begDate")=$P(Y("dtRange"),U,2)
  1. S RCRPRT("endDate")=$P(Y("dtRange"),U,3)
  1. K Y
  1. S RCRPRT("eXcel")=$$DISPTY^RCDPEM3 ; Export to excel?
  1. Q:+RCRPRT("eXcel")=-1 ; User '^' or timed out
  1. I RCRPRT("eXcel") D INFO^RCDPEM6 ; Display capture information for Excel
  1. S %ZIS="M"
  1. D ^%ZIS ; Select output device
  1. Q:POP
  1. U IO
  1. ;
  1. S RCRPRT("hdrDate")=$$FMTE^XLFDT($$NOW^XLFDT,"5S")
  1. S RCRPRT("dtRange")=$$FMTE^XLFDT(RCRPRT("begDate"),"5D")_" - "_$$FMTE^XLFDT(RCRPRT("endDate"),"5D")
  1. S RCRPRT("endDate")=RCRPRT("endDate")+.5
  1. S RCSCR="I ($P(^(0),U)'<"_RCRPRT("begDate")_")&($P(^(0),U)'>"_RCRPRT("endDate")_")"
  1. S RCFLDS="@;.04;.01I;.07;.06;.03;.05I;.02"
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR,,RCDIGET,"RCDIERR")
  1. I $D(RCDIERR) D Q
  1. . W !!,"FileMan error when collecting report data."
  1. . D ASK^RCDPEARL
  1. ;
  1. ; No changes found for date range
  1. I '$D(@RCDIGET@("DILIST",1)) D RPTEND Q
  1. ;
  1. ; PRCA*4.5*349 - Next 3 lines, get Auto-Decrease paid parameters
  1. S RCRPRT("medAuto")=$$GET1^DIQ(344.61,"1,",.03,"I") ; (#.03) AUTO-DECREASE MED ENABLED
  1. S RCRPRT("rxAuto")=$$GET1^DIQ(344.61,"1,",1.02,"I") ; (#1.02) AUTO-DECREASE RX ENABLED
  1. S RCRPRT("triAuto")=$$GET1^DIQ(344.61,"1,",1.06,"I") ; (#.03) AUTO-DECREASE TRI ENABLED
  1. ; Loop though changes from #344.7
  1. S RCIEN=0 F S RCIEN=$O(@RCDIGET@("DILIST",RCIEN)) Q:RCSTOP!'RCIEN D
  1. . I 'RCRPRT("hdrPg#") D ;
  1. . . D HDRLPR(.RCRPRT,.RCSTOP)
  1. . . S RCRPRT("pgLns")=9 ; page header
  1. . Q:RCSTOP
  1. . K RCPARAM
  1. . S RCTMP=$P(@RCDIGET@("DILIST",RCIEN,0),U,2,8)
  1. . S RCPARAM("file")=$P(RCTMP,U,6)
  1. . Q:RCPARAM("file")=344.6 ; Excluded payers reported elsewhere
  1. . S RCPARAM("fld")=$P(RCTMP,U,1) ; PRCA*4.5*326
  1. . ; Store Parameter labels in ^TMP to avoid redundant FileMan calls
  1. . I '$D(^TMP($J,"RCLABEL",RCPARAM("file"),RCPARAM("fld"))) D
  1. . . S X=$$GET1^DID(RCPARAM("file"),RCPARAM("fld"),,"LABEL")
  1. . . S ^TMP($J,"RCLABEL",RCPARAM("file"),RCPARAM("fld"))=X
  1. . ; if not both types, verify field should be printed
  1. . S RCPARAM=^TMP($J,"RCLABEL",RCPARAM("file"),RCPARAM("fld"))
  1. . I '(RCRPRT("typRprt")="A") Q:'$$TYPMTCH(.RCRPRT,.RCPARAM) ; PRCA*4.5*349 change "B" tp "A"
  1. . S RCRPRT("cntr")=RCRPRT("cntr")+1 ; Count records listed
  1. . ; next 2 lines PRCA*4.5*326
  1. . I RCPARAM("file")=344.61,RCPARAM("fld")=.11 S RCPARAM="AUTO-DECREASE MED NOPAY ENABLED"
  1. . I RCPARAM("file")=344.61,RCPARAM("fld")=.12 S RCPARAM="AUTO-DECREASE MED DAYS (NO-PAY)"
  1. . S X=$P(RCTMP,U,2) ; Timestamp
  1. . S RCPARAM("dt&tm")=$S(RCRPRT("eXcel"):$TR($$FMTE^XLFDT(X),"@"," "),1:$$FMTE^XLFDT(X,"2SZ"))
  1. . S RCPARAM("usr")=$P(RCTMP,U,5)
  1. . S RCPARAM("oldVal")=$P(RCTMP,U,3)
  1. . S RCPARAM("newVal")=$P(RCTMP,U,4)
  1. . I RCPARAM("file")=344.62 D ; file 344.62, format CARC code
  1. . . S Y="" I (RCPARAM("fld")>.01)&(RCPARAM("fld")<2) S Y="MED "
  1. . . I RCPARAM["PHARM",(RCPARAM("fld")>2)&(RCPARAM("fld")<3) D
  1. . . . Q:$E(RCPARAM,1,5)="PHARM"
  1. . . . N F,J S F=$F(RCPARAM,"PHARM "),J=$E(RCPARAM,1,F-7)_$E(RCPARAM,F,$L(RCPARAM))
  1. . . . S RCPARAM("oldParam")=RCPARAM,RCPARAM=J,Y="PHARM "
  1. . . S X=" ("_$S($P(RCTMP,U,7)'="":$P($G(^RCY(344.62,$P(RCTMP,U,7),0)),U),1:"ERR")_")" ; CARC code in parentheses
  1. . . S RCPARAM=Y_RCPARAM_X
  1. . ; format Boolean values, only if non-null
  1. . I RCPARAM("file")=342 D:"^7.05^7.06^7.07^7.08^7.09^"[(U_RCPARAM("fld")_U) YESNO(.RCPARAM,RCTMP)
  1. . I RCPARAM("file")=344.61 D:"^.02^.03^.11^1.01^1.02^1.11^"[(U_RCPARAM("fld")_U) YESNO(.RCPARAM,RCTMP) ; PRCA*4.5*424 add 1.11
  1. . ; PRCA*4.5*349 - Next line add 3.01 and 3.07 for TRICARE
  1. . I RCPARAM("file")=344.62 D:"^.02^.08^2.01^3.01^3.07^"[(U_RCPARAM("fld")_U) YESNO(.RCPARAM,RCTMP)
  1. . ;
  1. . F Y="oldVal","newVal" S:'$L(RCPARAM(Y)) RCPARAM(Y)="-" ; if null set to hyphen
  1. . I RCRPRT("eXcel") D Q ; no formatting needed
  1. . . W !,RCPARAM_U_RCPARAM("dt&tm")_U_RCPARAM("oldVal")_U_RCPARAM("newVal")_U_RCPARAM("usr")
  1. . ;
  1. . S Y=$$PAD(RCPARAM,38)_$$PAD(RCPARAM("dt&tm"),19)_$$PAD(RCPARAM("oldVal"),5)_$$PAD(RCPARAM("newVal"),5)_RCPARAM("usr")
  1. . W !,$E(Y,1,IOM) S RCRPRT("pgLns")=RCRPRT("pgLns")+1
  1. . I '(RCRPRT("pgLns")<(IOSL-2)) D HDRLPR(.RCRPRT,.RCSTOP) Q:RCSTOP S RCRPRT("pgLns")=9
  1. ;
  1. RPTEND ; end of report
  1. I 'RCSTOP,'RCRPRT("cntr") D
  1. . D HDRLPR(.RCRPRT,.RCSTOP)
  1. . W !," * No PARAMETER AUDIT entries to report. *",!
  1. ;
  1. I 'RCSTOP W !!,$$ENDORPRT^RCDPEARL,!
  1. U IO(0) D ^%ZISC
  1. I 'RCSTOP,'$G(ZTSK),($E(IOST,1,2)="C-") D ; Must have user
  1. . N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
  1. . S DIR("A")="Press enter to continue: "
  1. . S DIR(0)="EA" D ^DIR
  1. ;
  1. K @RCDIGET,^TMP($J,"RCLABEL") ; Clean up
  1. Q
  1. ;
  1. HDRLPR(RCRPRT,RCSTOP) ; Report header Lockbox Parameter Report
  1. ; Input: RCRPRT("eXcel") - If true output for Excel
  1. ; RCRPRT("hdrPg#") - Current Page count
  1. ; RCSTOP - Report exit flag
  1. ; RCRPRT("dtRange") - Selected Date Range
  1. ; RCRPRT("typRprt") - Type of report to run
  1. ; Output: RCRPRT("hdrPg#") - Updated Page count
  1. I RCRPRT("eXcel") D Q ; Excel header for PARAMETER AUDITS
  1. . Q:RCRPRT("hdrPg#")
  1. . W !,"PARAMETER^DATE/TIME EDITED^OLD VALUE^NEW VALUE^USER"
  1. . S RCRPRT("hdrPg#")=1 ; only print once
  1. ;
  1. I 'RCRPRT("eXcel") D
  1. . I RCRPRT("hdrPg#") D ASK^RCDPEARL(.RCSTOP) Q:RCSTOP
  1. . W @IOF
  1. . S RCRPRT("hdrPg#")=RCRPRT("hdrPg#")+1
  1. . W $$CNTR("EDI Lockbox Parameter Audit Report"),?IOM-8,"Page: "_RCRPRT("hdrPg#")
  1. . W !,$$CNTR("RUN DATE: "_RCRPRT("hdrDate"))
  1. . W !,$$CNTR("DATE RANGE: "_RCRPRT("dtRange"))
  1. . W !,$$CNTR("REPORT TYPE: "_RCRPRT("hdrTyp"))
  1. . W !!,"LOCKBOX PARAMETER UPDATES"
  1. . W !,"-------------------------- Values"
  1. . W !,"Parameter Date/Time Edited Old New User"
  1. . W !,$TR($J("",IOM-1)," ","=") ; row of equal signs
  1. Q
  1. ;
  1. GETPAYER() ; GET THE PAYER NAME + PAYER ID
  1. N RCIEN,RCPAYR
  1. S RCIEN=$P(RCTMP,U,6)
  1. I '$D(^RCY(344.6,RCIEN)) Q ""
  1. S RCPAYR=$$GET1^DIQ(344.6,RCIEN_",",.01)_" "_$$GET1^DIQ(344.6,RCIEN_",",.02)
  1. Q RCPAYR
  1. ;
  1. ;
  1. CNTR(TXT) ; center TXT
  1. Q $J("",IOM-$L(TXT)\2)_TXT
  1. ;
  1. DTRNG() ; function, returns date range for the report
  1. N RCEND,RCSTART
  1. D DATES(.RCSTART,.RCEND)
  1. Q:RCSTART=-1 0
  1. Q:RCSTART "1^"_RCSTART_"^"_RCEND
  1. Q:'RCSTART "0^^"
  1. Q 0
  1. ;
  1. DATES(BDATE,EDATE) ; Get a date range, both values passed by ref.
  1. N DIR,DTOUT,DUOUT,X,Y
  1. S (BDATE,EDATE)=0
  1. S DIR("?")="Enter the earliest AUDIT DATE to include on the report"
  1. S DIR(0)="DAO^:"_DT_":APE",DIR("A")="Report start date: " D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
  1. S BDATE=Y K DIR,X,Y
  1. S DIR("?")="Enter the latest AUDIT DATE to include on the report"
  1. S DIR(0)="DAO^"_BDATE_":"_DT_":APE",DIR("A")="Report end date: ",DIR("B")=$$FMTE^XLFDT(DT)
  1. D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
  1. S EDATE=Y
  1. Q
  1. ;
  1. RTYPE(DEF) ; EP from RCDPESP2, RCDPESP1
  1. ; Type of information to display
  1. ; Input: DEF - default value
  1. ; Returns:
  1. ; ; *future build*, add Tricare, change 'Both' to 'All'
  1. ; M - Medical, P - Pharmacy, T - Tricare, A - All, -1 - ^ or timed out
  1. N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR("?")="Enter the type of information to display on the report."
  1. S DIR(0)="SA^M:Medical;P:Pharmacy;T:TRICARE;A:All" ; PRCA*4.5*349
  1. S DIR("A")="(M)edical, (P)harmacy, (T)RICARE or (A)ll: " ; PRCA*4.5*349
  1. S DIR("B")=$S($G(DEF)'="":DEF,1:"All") ; PRCA*4.5*349
  1. D ^DIR
  1. K DIR
  1. I $D(DTOUT)!$D(DUOUT) Q -1
  1. S:Y="" Y="A"
  1. Q $E(Y)
  1. ;
  1. TYPMTCH(RCRPRT,RCPARAM) ; function, print changed parameter?
  1. ; Input passed by ref:
  1. ; RCRPRT("typRprt") - Report filter
  1. ; RCPARAM - values for the changed parameter
  1. ; Returns: 1 if valid to print, 0 otherwise
  1. N OK2PRNT S OK2PRNT=0
  1. I RCRPRT("typRprt")="M" D ; Medical Parameters
  1. . I RCPARAM["MED" S OK2PRNT=1 Q
  1. . I RCPARAM("file")=344.62,(RCPARAM("fld")>.01)&(RCPARAM("fld")<2) S OK2PRNT=1
  1. ;
  1. I RCRPRT("typRprt")="P" D ; Pharmacy parameters
  1. . I (RCPARAM["RX")!(RCPARAM["PHARM") S OK2PRNT=1 Q
  1. . I RCPARAM("file")=344.62,(RCPARAM("fld")>2)&(RCPARAM("fld")<3) S OK2PRNT=1
  1. ;
  1. I RCRPRT("typRprt")="T",(RCPARAM["TRICARE") S OK2PRNT=1 ; PRCA*4.5*349 - TRICARE Parameters
  1. Q OK2PRNT
  1. ;
  1. PAD(A,N) ; pad A with N spaces
  1. S A=A_" " ; always add 1 space
  1. Q:'($L(A)<N) A ; no padding needed
  1. Q A_$J("",N-$L(A))
  1. ;
  1. YESNO(RCPARAM,Y) ; Yes/No text, RCPARAM passed by ref., Y=RCTMP
  1. S:$L(RCPARAM("oldVal")) RCPARAM("oldVal")=$S($P(Y,U,3):"Yes",1:"No")
  1. S:$L(RCPARAM("newVal")) RCPARAM("newVal")=$S($P(Y,U,4):"Yes",1:"No")
  1. Q