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

RCDPESP2.m

Go to the documentation of this file.
  1. RCDPESP2 ;BIRM/SAB - ePayment Lockbox Parameter Audit and Exclusion Reports ;29 Jan 2019 18:00:14
  1. ;;4.5;Accounts Receivable;**298,304,317,321,326,332,345,349**;Mar 20, 1995;Build 44
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. RPT1 ; EDI Lockbox Parameters Report [RCDPE SITE PARAMETER REPORT]
  1. D AUDPARM^RCDPESPA ; PRCA*4.5*332, report moved, 11 October 2018
  1. Q
  1. ;
  1. RPT2 ; EDI Lockbox Exclusion Audit Report [RCDPE EXCLUSION AUDIT REPORT]
  1. ;
  1. ; Input: NONE
  1. ; Local Variables:
  1. ; RCRANGE - Date range for report
  1. ; RCSTDT - Report start date
  1. ; RCENDT - Report end date
  1. ; RCEXCEL - 1 if report in Excel format, 0 otherwise
  1. ; RCSCR - Screening logic for LIST^DIC
  1. ; RCFLDS - Fields for LIST^DIC
  1. ; RCDIGET - Storage for results from LIST^DIC
  1. ; RCDIERR - Errors from LIST^DIC
  1. ; RCHDR("PAGE") - Page counter
  1. ; RCHDR("RUNDATE") - Date/time report was run
  1. ; RCSTOP - 1 to exit report, 0 otherwise
  1. ; RCPARAM - Parameter that was changed
  1. ; RCPARAM("TIME") - Time parameter changed
  1. ; RCPARAM("OLDVAL") - Old parameter value
  1. ; RCPARAM("NEWVAL") - New parameter value
  1. ; RCPARAM("USER") - User who changed the parameter
  1. ; RCTMP - One record from LIST^DIC
  1. ; RCFND - Flag indicating records returned
  1. ; RCTYPE - Report filter (MEDICAL, PHARMACY, TRICARE OR ALL)
  1. ;
  1. W !!," EDI Lockbox Exclusion Audit Report",!
  1. ; PRCA*4.5*349 - Added RCDIMEDD, RCDIRXD,RCDITR,RCDITRD
  1. N RCT,RCDIERR,RCDIMED,RCDIMEDD,RCDIRX,RCDIRXD,RCDITR,RCDITRD,RCFLDS,RCFND,RCHDR,RCRPT
  1. N RCSCR,RCSCRTYP,RCSTDT,RCSTOP,RCTMP,RCTYPE
  1. N X1,X2,X,Y,%ZIS,POP ; Kernel variable
  1. ;
  1. W !!," EDI Lockbox Exclusion Audit Report",!
  1. ; PRCA*4.5*345 Begin
  1. S (RCHDR("PAGE"),RCSTOP,RCIEN,RCRPT("excel"),RCFND)=0 ; Initialize values
  1. S RCT("MedPost")=$NA(^TMP("RC-MedPost",$J))
  1. K @RCT("MedPost")
  1. S RCT("MedDecr")=$NA(^TMP("RC-MedDecr",$J))
  1. K @RCT("MedDecr")
  1. S RCT("RxPost")=$NA(^TMP("RC-RxPost",$J))
  1. K @RCT("RxPost")
  1. S RCT("RxDecr")=$NA(^TMP("RC-RxDecr",$J))
  1. K @RCT("RxDecr")
  1. S RCT("TriPost")=$NA(^TMP("RC-TriPost",$J)) ; PRCA*4.5*349 - Add TRICARE
  1. K @RCT("TriPost") ; PRCA*4.5*349
  1. S RCT("TriDecr")=$NA(^TMP("RC-TriDecr",$J)) ; PRCA*4.5*349
  1. K @RCT("TriDecr") ; PRCA*4.5*349
  1. ; PRCA*4.5*345 end
  1. S RCTYPE=$$RTYPE^RCDPESPA ; PRCA*4.5*345 - changed to M,P,T,ALL
  1. Q:RCTYPE=-1
  1. S RCHDR("rprtTyp")=RCTYPE ; Save filter selection
  1. S RCRPT("dtRange")=$$DTRNG ; Get date range
  1. Q:RCRPT("dtRange")=0
  1. S RCRPT("begDt")=$P(RCRPT("dtRange"),U,2)-.1
  1. S RCRPT("endDt")=$P(RCRPT("dtRange"),U,3)+.9
  1. S RCFLDS="@;.04;.01I;.06;.03;.08;.02" ; Output fields for LIST^DIC
  1. ; .04 - CHANGED FIELD .01 - TIMESTAMP .06 - NEW VALUE
  1. ; .03 - CHANGED BY .08 - COMMENT .02 - MODIFIED IEN
  1. ;
  1. ; first part of LIST^DIC screening logic
  1. S RCSCR="I ($P(^(0),U,5)=344.6)&($P(^(0),U,1)>"_RCRPT("begDt")_")&($P(^(0),U,1)<"_RCRPT("endDt")_")"
  1. ;
  1. S RCRPT("excel")=$$DISPTY^RCDPEM3 ; output to Excel?
  1. Q:+RCRPT("excel")=-1
  1. I RCRPT("excel") D INFO^RCDPEM6
  1. S %ZIS="M" D ^%ZIS Q:POP U IO ; Select output device
  1. ;
  1. S RCHDR("RUNDATE")=$$FMTE^XLFDT($$NOW^XLFDT,"5S")
  1. ;
  1. ; Process Auto-Post Payer Exclusions
  1. ; Get screening logic based on the type of audit report
  1. S RCSCR(.06)=RCSCR_"&($P(^(0),U,4)=.06)" ; screening logic for medical auto-post
  1. S RCSCR(.07)=RCSCR_"&($P(^(0),U,4)=.07)" ; screening logic for medical auto-decrease
  1. S RCSCR(.08)=RCSCR_"&($P(^(0),U,4)=.08)" ; screening logic for pharmacy auto-post
  1. S RCSCR(.12)=RCSCR_"&($P(^(0),U,4)=.12)" ; screening logic for pharmacy auto-decrease, PRCA*4.5*345
  1. S RCSCR(.13)=RCSCR_"&($P(^(0),U,4)=.13)" ; PRCA*4.5*349 - screening logic for TRICARE auto-post
  1. S RCSCR(.14)=RCSCR_"&($P(^(0),U,4)=.14)" ; PRCA*4.5*349 - screening logic for TRICARE auto-decrease
  1. ; Get medical Auto-Post Payer exclusions
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.06),,RCT("MedDecr"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . W !!,"Error collecting auto-post report data."
  1. . D ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. ; Get medical Auto-Decrease Payer exclusions
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.07),,RCT("MedPost"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . W !!,"Error collecting Payer auto-decrease report data."
  1. . D ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. ; Get the pharmacy Auto-Post Payer exclusions
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.08),,RCT("RxPost"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . D ERR4USR("Pharmacy Auto-Post"),ASK^RCDPEARL(.RCSTOP)
  1. ; Get pharmacy Auto-Decrease Payer exclusions
  1. ;
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.12),,RCT("RxDecr"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . D ERR4USR("Pharmacy Auto-Decrease"),ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. ; PRCA*4.5*349 - Start modified block
  1. ; Get Tricare Auto-Post Payer exclusions
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.13),,RCT("TriPost"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . D ERR4USR("Tricare Auto-Post"),ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. ; Tricare Auto-Decrease Payer exclusions
  1. D LIST^DIC(344.7,,RCFLDS,"P",,,,,RCSCR(.14),,RCT("TriDecr"),"RCDIERR")
  1. I $D(RCDIERR) D Q ; exit if errors
  1. . D ERR4USR("Tricare Auto-Decrease"),ASK^RCDPEARL(.RCSTOP)
  1. ; PRCA*4.5*349 - End modified block
  1. ;
  1. I (RCTYPE="A")!(RCTYPE="M") D G:RCSTOP RPT2Q ; Display Medical Payer exclusions
  1. . D OPTYPE("MedPost",.06,RCTYPE)
  1. . D OPTYPE("MedDecr",.07,RCTYPE)
  1. ;
  1. I (RCTYPE="A")!(RCTYPE="P") D G:RCSTOP RPT2Q ; Display pharmacy Payer exclusions
  1. . D OPTYPE("RxPost",.08,RCTYPE)
  1. . D OPTYPE("RxDecr",.12,RCTYPE)
  1. ;
  1. ; PRCA*4.5*349 - Add TRICARE, next 3 lines
  1. I (RCTYPE="A")!(RCTYPE="T") D G:RCSTOP RPT2Q ; Display TRICARE Payer exclusions
  1. . D OPTYPE("TriPost",.13,RCTYPE)
  1. . D OPTYPE("TriDecr",.14,RCTYPE)
  1. ;
  1. ; PRCA*4.5*345 end
  1. ; end of report
  1. W !!,$$ENDORPRT^RCDPEARL
  1. D ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. RPT2Q ; exit point
  1. S X="" F S X=$O(RCT(X)) Q:X="" K @RCT(X) ; clean up ^TMP storage
  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. HDRXAR(RCTYP,RCEXCTYP) ; Report header for auto-posting exclusion report
  1. ; Input:
  1. ; RCTYP - .06 = Auto-Posting exclusion (medical)
  1. ; .07 = Auto-Decrease exclusion (medical)
  1. ; .08 = Auto-Posting exclusion (pharmacy)
  1. ; .12 = Auto-Decrease exclusion (pharmacy)
  1. ; .13 = Auto-Posting exclusion (TRICARE)
  1. ; .14 = Auto-Decrease exclusion (TRICARE)
  1. ; RCEXCTYP - M - Medical, P - Pharmacy, T - TRICARE A - All
  1. ;
  1. N RCTYPED,XX
  1. S RCTYPED=$S(RCEXCTYP="M":"MEDICAL",RCEXCTYP="P":"PHARMACY",RCEXCTYP="T":"TRICARE",1:"ALL")
  1. I RCRPT("excel") D Q
  1. . Q:RCHDR("PAGE")
  1. . ; Excel header for parameter audits
  1. . W !!,"TYPE^CHANGE^PAYER^TIMESTAMP^USER^COMMENT"
  1. . S RCHDR("PAGE")=1 ; only print it once
  1. ;
  1. I RCHDR("PAGE") D ASK^RCDPEARL(.RCSTOP) Q:RCSTOP
  1. W @IOF
  1. S RCHDR("PAGE")=RCHDR("PAGE")+1
  1. ; report header for parameter audits
  1. W $$CNTR("EDI Lockbox Exclusion Audit Report"),?IOM-8,"Page: "_RCHDR("PAGE")
  1. W !,$$CNTR("DIVISIONS: ALL")
  1. W !,$$CNTR("RUN DATE: "_$G(RCHDR("RUNDATE")))
  1. S XX=$$FMTE^XLFDT($P(RCRPT("dtRange"),U,2),"5D")_" - "_$$FMTE^XLFDT($P(RCRPT("dtRange"),U,3),"5D") ; PRCA*4.5*349
  1. W !,$$CNTR("DATE RANGE: "_XX) ; PRCA*4.5*349 - Changed to XX to make it easier to read
  1. W !,$$CNTR("REPORT TYPE: "_RCTYPED) ; PRCA*4.5*349
  1. D SECTHDR(RCTYP,RCEXCTYP)
  1. Q
  1. ; PRCA*4.5*345 begin
  1. SECTHDR(RCTYPE,RCREPT) ; SECTION HEADER
  1. ; PRCA*4.5*345 - Added Rx Auto-Decrease
  1. ; Input: RCTYP - .06 = Auto-Posting exclusion (medical)
  1. ; .07 = Auto-Decrease exclusion (medical)
  1. ; .08 = Auto-Posting exclusion (Rx)
  1. ; .12 = Auto-Decrease exclusion (Rx)
  1. ; .13 = Auto-Posting exclusion (TRICARE)
  1. ; .14 = Auto-Decrease exclusion (TRICARE)
  1. ; RCREPT - M - Medical, P - Pharmacy, T - TRICARE A - All
  1. Q:$G(RCRPT("excel"))
  1. I RCTYPE=.06 D TXPEQLS("MEDICAL AUTO-POSTING PAYER EXCLUSION LIST")
  1. I RCTYPE=.07 D TXPEQLS("MEDICAL AUTO-DECREASE PAYER EXCLUSION LIST")
  1. I RCTYPE=.08 D TXPEQLS("PHARMACY AUTO-POSTING PAYER EXCLUSION LIST")
  1. I RCTYPE=.12 D TXPEQLS("PHARMACY AUTO-DECREASE PAYER EXCLUSION LIST")
  1. I RCTYPE=.13 D TXPEQLS("TRICARE AUTO-POSTING PAYER EXCLUSION LIST") ; PRCA*4.5*349
  1. I RCTYPE=.14 D TXPEQLS("TRICARE AUTO-DECREASE PAYER EXCLUSION LIST") ; PRCA*4.5*349
  1. ;
  1. W !,"Change Payer Date/Time Edited User"
  1. W !,$$EQLSGNS(IOM-1) ; row of equal signs
  1. Q
  1. ;
  1. TXPEQLS(Y) ; write text in Y then row of equal signs
  1. Q:$G(Y)="" ; must have text
  1. W !!,Y,!,$$EQLSGNS($L(Y)) Q
  1. ;
  1. EQLSGNS(N) Q $S($G(N)>0:$TR($J("",N)," ","="),1:"") ; row of N equal signs
  1. ;
  1. ERR4USR(TXT) ; error message display
  1. W !!,"Error collecting "_$G(TXT)_" report data." Q
  1. ; PRCA*4.5*345 end
  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 DIR,DUOUT,RNGFLG,X,Y,RCSTART,RCEND
  1. S (RCSTART,RCEND)=0 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,DIROUT,DIRUT,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: "
  1. D ^DIR
  1. 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
  1. K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
  1. S EDATE=Y
  1. Q
  1. ;
  1. DSPXCLSN(RCX) ; display exclusion
  1. ; RCX - exclusion value from ^DIC call
  1. N RCXCLSN
  1. S RCXCLSN("CHANGE")=$S($P(RCX,U,3):"Added",1:"Removed")
  1. S RCXCLSN("TIME")=$$FMTE^XLFDT($P(RCX,U,2),"2")
  1. S RCXCLSN("USER")=$P(RCX,U,4)
  1. S RCXCLSN("PAYER")=$$GETPAYER
  1. S RCXCLSN("COMMENT")=$P(RCX,U,5)
  1. ;
  1. I 'RCRPT("excel") D Q
  1. .N Y S Y=RCXCLSN("CHANGE"),$E(Y,9)=$E(RCXCLSN("PAYER"),1,30),$E(Y,41)=" "_RCXCLSN("TIME"),Y=Y_" "_RCXCLSN("USER")
  1. .W !,Y,!," Comment: "_RCXCLSN("COMMENT")
  1. ; Excel format
  1. S RCXCLSN("LABEL")=$$GET1^DID(344.6,$P(RCX,U,1),,"LABEL")
  1. W !,RCXCLSN("LABEL")_U_RCXCLSN("CHANGE")_U_RCXCLSN("PAYER")_U_RCXCLSN("TIME")_U_RCXCLSN("USER")_U_RCXCLSN("COMMENT")
  1. ;
  1. Q
  1. ;
  1. ;Retrieve the parameter for the type of information to display
  1. RTYPE(DEF) ;EP from RCDPEAA1
  1. ; Input: DEF - Value to use a default
  1. ; Returns: -1 - User ^ or timed out
  1. ; M - User selected MEDICAL
  1. ; P - User selected PHARMACY
  1. ; T - User selected TRICARE
  1. ; A - User selected ALL
  1. ;
  1. N DA,DIR,DTOUT,DUOUT,X,Y,DIRUT,DIROUT,RCTYPE
  1. S RCTYPE=""
  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"
  1. S DIR("A")="(M)EDICAL, (P)HARMACY, (T)RICARE or (A)LL: "
  1. S DIR("B")=$S($G(DEF)'="":DEF,1:"ALL")
  1. D ^DIR
  1. K DIR
  1. I $D(DTOUT)!$D(DUOUT) Q -1
  1. Q:Y="" "A"
  1. Q $E(Y)
  1. ;
  1. ;Check to see if the Data element matches the report type
  1. RPTYPE(RCTYPE,RCPARAM) ;
  1. ; Return 1 if valid to print, 0 otherwise
  1. N RCDATA,RCMEN,RCREN
  1. ;
  1. S (RCMEN,RCREN)=""
  1. ; Get Auto Decrease parameters
  1. I RCTYPE="M" S RCMEN=$P($G(^RCY(344.61,1,0)),U,3)
  1. I RCTYPE="P" S RCREN=$P($G(^RCY(344.61,1,1)),U,2)
  1. ;
  1. Q:RCTYPE="B" 1
  1. Q:(RCTYPE="M")&(RCPARAM["MED") 1 ; Medical Parameters
  1. Q:(RCTYPE="P")&(RCPARAM["RX") 1 ; Pharmacy parameters
  1. Q:(RCTYPE="P")&(RCPARAM["PHARM") 1 ; Pharmacy parameters
  1. Q:(RCTYPE="M")&(RCMEN)&(RCPARAM["DECREASE") 1 ; Auto-decrease for med is on
  1. Q:(RCTYPE="P")&(RCREN)&(RCPARAM["DECREASE") 1 ; Auto-decrease for pharmacy
  1. Q 0
  1. ;
  1. OPTYPE(SUB,FIELD,RCTYPE) ; Output data for each type
  1. ; Input: SUB - Subscript to array that contain the data for this type
  1. ; FIELD - Changed field from field 4 file 344.7
  1. ; RCTYPE - M - Medical, P - Pharmacy, T - Tricare, A - All
  1. D HDRXAR(FIELD,RCTYPE) ; complete header
  1. S RCFND=$D(@RCT(SUB)@("DILIST",1)) ; check for payer exclusions
  1. I 'RCFND D ;
  1. . W !,"No "
  1. . I FIELD=.06 W "Medical Auto-Post"
  1. . I FIELD=.07 W "Medical Auto-Decrease"
  1. . I FIELD=.08 W "Pharmacy Auto-Post"
  1. . I FIELD=.12 W "Pharmacy Auto-Decrease"
  1. . I FIELD=.13 W "Pharmacy Auto-Post"
  1. . I FIELD=.14 W "Pharmacy Auto-Decrease"
  1. . W " Exclusions to Display",!
  1. I RCFND D ; Display medical Auto-post Payer exclusions
  1. . S RCIEN=0,RCSTOP=0
  1. . F S RCIEN=$O(@RCT(SUB)@("DILIST",RCIEN)) Q:RCSTOP!('RCIEN) D
  1. . . S RCTMP=$P(@RCT(SUB)@("DILIST",RCIEN,0),U,2,7)
  1. . . I $Y+4>IOSL D HDRXAR(FIELD,RCTYPE) Q:RCSTOP
  1. . . D DSPXCLSN(RCTMP)
  1. Q