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

RCDPEWLP.m

Go to the documentation of this file.
  1. RCDPEWLP ;ALBANY/KML - EDI LOCKBOX ERA and EEOB WORKLIST procedures ; 4/28/22 7:39am
  1. ;;4.5;Accounts Receivable;**298,303,304,319,332,345,349,367,411**;Mar 20, 1995;Build 1
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. ; PRCA*4.5*298 - handle outstanding EFTs & ERAs with exceptions
  1. ; PRCA*4.5*411 - Check if prescription has a 'Delete' status which
  1. ; returns a null value to ^TMP("PSOR") array results
  1. ; in <undefined> error.
  1. ;
  1. AGEDEFTS(ERADA,TYPE) ;function, Search medical or pharmacy aged EFTs that have not been posted
  1. ; ENTRY point for the Select ERA action on the ERA Worklist screen
  1. ; Input: ERADA - IEN in file 344.4
  1. ; TYPE - Medical, Pharmacy or Tricare (M,P, T)
  1. ; Returns:
  1. ; "1P" Error for aged, unposted pharmacy EFTs
  1. ; "2P" Warning for aged,unposted pharmacy EFTs
  1. ; "3P" Override exists for aged, unposted pharmacy EFTs
  1. ; "1M" Error for aged, unposted medical EFTs
  1. ; "2M" Warning for aged, unposted medical EFTs
  1. ; "3M" Override exists for aged, unposted medical EFTs
  1. ; "1T" Error for aged, unposted Tricare EFTs
  1. ; "2T" Warning for aged, unposted Tricare EFTs
  1. ; "3T" Override exists for aged, unposted Tricare EFTs
  1. ; 0 No error or warning conditions
  1. ; NOTE: may be more than one - "1P" or "2P" or "3P" or "3P^2M" or "3P^3M", etc.
  1. ;
  1. ;for action Select ERA:
  1. ; 1. If unposted payments (EFTs) associated with 3rd party Medical claims > than 14 days, display WARNING message for action
  1. ; Select ERA on the ERA WORKLIST, allow user to enter the worklist
  1. ; 2. If there are unposted payments (EFTs) associated with Pharmacy claims > 21 days, display a WARNING message
  1. ; on the ERA WORKLIST, enter worklist
  1. ; 3. If there are unposted payments (EFTs) associated with 3rd party Tricare claims
  1. ; > 14 calendar days, display WARNING message, enter worklist
  1. ; 4. If there are unposted payments (EFTs) associated with 3rd party medical, pharmacy or
  1. ; Tricare claims, aged > the number of days in site parameters, display error message
  1. ;additional criteria for item 3:
  1. ;create scratchpad if:
  1. ; 3a. medical ERA is 14 days or older
  1. ; 3b. pharmacy ERA is 21 days or older
  1. ; 3c. Tricare ERA is 14 days or older
  1. ; 3d. If override exists
  1. ;DO NOT create scratchpad if no override and:
  1. ; 3e. medical ERA received within 14 days and there are aged, unposted EFTs
  1. ; 3f. pharmacy ERA received within 21 days and there are aged, unposted EFTs
  1. ; 3g. Tricare ERA received within 14 days and there are aged, unposted EFTs
  1. ;
  1. ;Do not consider EFTs older than two months prior to national release
  1. ;Note: EFTs to be auto-posted to a receipt included in search for aged, unposted EFTs
  1. N DATE,EFTDA,EFT0,RC3444,RC34431,SELERADT,UNPOST,X
  1. S UNPOST=0
  1. S RC3444=^RCY(344.4,ERADA,0)
  1. I '$P(RC3444,U,5) G AEFTSQ ; skip ERAs with zero payment
  1. S EFTDA=+$O(^RCY(344.31,"AERA",ERADA,0))
  1. S:EFTDA RC34431=^RCY(344.31,EFTDA,0)
  1. I 'EFTDA,$P(RC3444,U,9)=2 G AEFTSQ ; Ignore selected ERAs that are MATCHED TO PAPER CHECK
  1. ;
  1. ; skip unmatched ERAs with EXPECTED PAYMENT CODE "CHK"
  1. I 'EFTDA,$P(RC3444,U,15)="CHK" G AEFTSQ
  1. ;
  1. ; Use FILE DATE/TIME (344.4, .07) of ERA if no EFT (unmatched ERA),
  1. ; else use DATE RECEIVED (344.31,.13) of EFT associated with ERA
  1. S SELERADT=$S('EFTDA:$P($P(RC3444,U,7),"."),1:$P(RC34431,U,13))
  1. ;
  1. I TYPE="P" D G AEFTSQ
  1. . I $$FMDIFF^XLFDT(DT,SELERADT)>21 S UNPOST=0 Q ;ERA older than 21 days, enter scratchpad
  1. . S UNPOST=$$GETEFTS(TYPE) ;NOT older than 21 days, get unposted, aged EFTs
  1. ;
  1. I TYPE="M" D G AEFTSQ
  1. . I $$FMDIFF^XLFDT(DT,SELERADT)>14 S UNPOST=0 Q ;ERA older than 14 days, enter scratchpad
  1. . S UNPOST=$$GETEFTS(TYPE) ;NOT older than 14 days, get unposted, aged EFTs
  1. ;
  1. I TYPE="T" D G AEFTSQ
  1. . I $$FMDIFF^XLFDT(DT,SELERADT)>14 S UNPOST=0 Q ;ERA older than 14 days, enter scratchpad
  1. . S UNPOST=$$GETEFTS(TYPE) ;NOT older than 14 days, get unposted, aged EFTs
  1. ;
  1. AEFTSQ ; single exit for function
  1. Q UNPOST
  1. ;
  1. GETEFTS(TYPE,OPTION) ;function, EP from RCDPEUPO for Unposted EFT Override option
  1. ; Set up search criteria for unposted EFTs. If aged, unposted EFTs create warning/prevention messages
  1. ; TYPE: "M" (Medical ERA-EFT), "P" (Phamacy ERA-EFT), "T" (Tricare ERA-EFT), "A" (Medical, Pharmacy & Tricare)
  1. ;OPTION:
  1. ; null if Called by Select ERA action on ERA Worklist
  1. ; 1 if Called by RCDPE UNPOSTED EFT OVERRIDE option
  1. ; Returns: See output for AGEDEFTS
  1. ;
  1. N ARRAY,DAYSLIMT,DTARRY,OUTCOME,OVERRIDE,STARTDT,STR,TRARRY,X
  1. S OPTION=$G(OPTION)
  1. I TYPE="A" D ; Retrieve all Aged Days limits
  1. . S DAYSLIMT("M")=$$GET1^DIQ(344.61,1,.06) ; Medical
  1. . S DAYSLIMT("P")=$$GET1^DIQ(344.61,1,.07) ; Pharmacy
  1. . S DAYSLIMT("T")=$$GET1^DIQ(344.61,1,.13) ; Tricare
  1. ; Retrieve Aged Days limit for specified type
  1. I '(TYPE="A") S DAYSLIMT(TYPE)=$$GET1^DIQ(344.61,1,$S(TYPE="M":.06,TYPE="P":.07,1:.13))
  1. S STARTDT=$$CUTOFF
  1. D EFTDET(STARTDT,TYPE,.DAYSLIMT,.TRARRY)
  1. ;
  1. ; Aged unposted EFTs exist. Create prevention message and if called within
  1. ; the Worklist (not Override option) plus msg. with list of TRACE #s
  1. F X="M","P","T" D
  1. . I $D(TRARRY("ERROR",X)) D
  1. .. D CHECK^RCDPEUPO(X,.OVERRIDE) ; Determine if Override exists
  1. .. I OVERRIDE S OUTCOME=$G(OUTCOME)_3_X_U Q
  1. .. S OUTCOME=$G(OUTCOME)_1_X_U
  1. .. ; do not display warning msg if error condition exists
  1. .. K TRARRY("WARNING",X)
  1. .. Q:OPTION Q:OVERRIDE
  1. .. Q:(TYPE'="A"&(TYPE'=X)) ; Only show error messages for TYPE
  1. .. M ARRAY=TRARRY("ERROR",X)
  1. .. D FTRACE(.ARRAY,.STR),PREVMSG(X,.DAYSLIMT,.STR)
  1. .. K ARRAY
  1. ;
  1. F X="M","P","T" D
  1. . I $D(TRARRY("WARNING",X)) D
  1. .. S OUTCOME=$G(OUTCOME)_2_X_U
  1. .. Q:OPTION ; Called by OVERRIDE option, no trace number list
  1. .. Q:(TYPE'="A"&(TYPE'=X)) ; Only show warning messages for TYPE
  1. .. M ARRAY=TRARRY("WARNING",X)
  1. .. D FTRACE(.ARRAY,.STR),WARNMSG(X,.STR)
  1. .. K ARRAY ; aged unposted EFTs > 21 days exist, generate warning message
  1. ;
  1. S:'$D(OUTCOME) OUTCOME=0 ; no error or warnings
  1. ;
  1. Q OUTCOME
  1. ;
  1. CUTOFF() ; Returns EFT Cutoff date
  1. ; date is 2 months prior to install date of patch 298, ignore aged EFTS older than that
  1. ;PRCA*4.5*367 changed calculation of the cut-off date to 3 years ago to speed up the checking
  1. ; for old EFTs and to avoid EFTs matched to paper check with a receipt that
  1. ; was purged in the nightly process (MAN^RCDPUT)
  1. Q $$FMADD^XLFDT(DT,((365*-3)-2),0,0)
  1. ;N RCX S RCX=+$P($G(^RCY(344.61,1,0)),U,9)
  1. ;S:RCX=0 RCX=DT
  1. ;Q $$FMADD^XLFDT(RCX,-61,0,0)
  1. ;
  1. EFTDET(RECVDT,TYPE,DAYSLIMT,TRARRY) ; Gather EFT data, Only EFTs that are aged and unposted
  1. ;Input:
  1. ; RECVDT - start date in DATE RECEIVED cross-reference of file 344.3
  1. ; TYPE- "M" - (Medical ERA-EFT), "P" (Phamacy ERA-EFT), "T" (TRICARE ERA-EFT), "A" (Medical, Pharmacy and Tricare)
  1. ; DAYSLIMT - days EFT can age before post prevention rules apply
  1. ;Output:
  1. ; TRARRY - Array of trace numbers of the aged, unposted EFTs
  1. ;
  1. N EFTDA
  1. F S RECVDT=$O(^RCY(344.31,"ADR",RECVDT)) Q:'RECVDT D
  1. . S EFTDA="" F S EFTDA=$O(^RCY(344.31,"ADR",RECVDT,EFTDA)) Q:'EFTDA D
  1. .. D CHKEFT(RECVDT,EFTDA,TYPE,.DAYSLIMT,.TRARRY)
  1. Q
  1. ;
  1. CHKEFT(RECVDT,EFTDA,TYPE,DAYSLIMT,TRARRY) ; Check EFT for warnings/errors
  1. ;Input:
  1. ; RECVDT - Date Received
  1. ; EFTDA - IEN of EDI THIRD PARY EFT DETAIL
  1. ; TYPE - "M" (Medical ERA-EFT), "P" (Phamacy ERA-EFT), "T"(Tricare ERA-EFT), "A" (Medical, Pharmacy and Tricare)
  1. ; DAYSLIMT - days an EFT can age before post prevention rules apply
  1. ; TRARRY - Array with warning error info
  1. ;
  1. N AGED,EFTTYPE,ERAREC,MSTATUS,RCMED,RCPHARM,RCTRIC,TRACE
  1. Q:$G(^RCY(344.31,EFTDA,0))="" ; skip, no data
  1. Q:+$$GET1^DIQ(344.31,EFTDA_",",.07,"I")=0 ; skip, zero payment amt.
  1. ;
  1. ; Ignore duplicate EFTs which have been removed
  1. Q:$$GET1^DIQ(344.31,EFTDA_",",.18,"I") ;^DD(344.31,.18,0)="DATE/TIME DUPLICATE REMOVED
  1. S ERAREC=+$$GET1^DIQ(344.31,EFTDA_",",.1,"I") ; Pointer to ERA record
  1. I ERAREC,$$GET1^DIQ(344.4,ERAREC_",",.14,"I")=1 Q ; Ignore posted ERA-EFTs
  1. ;
  1. ; Exclude EFT matched to Paper EOB if receipt is processed
  1. I 'ERAREC,$$GET1^DIQ(344.31,EFTDA_",",.08,"I") Q:$$PROC(EFTDA)
  1. S MSTATUS=+$$GET1^DIQ(344.31,EFTDA_",",.08,"I") ; MATCH STATUS
  1. S AGED=$$FMDIFF^XLFDT(DT,RECVDT) ; days aged for EFT
  1. S TRACE=$$GET1^DIQ(344.31,EFTDA_",",.04,"I") ; TRACE #
  1. S:TRACE="" TRACE="(No trace #)"
  1. ;
  1. ; PRCA*4.5*345 - Start modified code block - Don't show warning message for unmatched EFTs
  1. S RCMED=$S(ERAREC:$$ISTYPE^RCDPEU1(344.4,ERAREC,"M"),1:$$ISTYPE^RCDPEU1(344.31,EFTDA,"M"))
  1. S RCPHARM=$S(ERAREC:$$PHARM(ERAREC),1:$$ISTYPE^RCDPEU1(344.31,EFTDA,"P"))
  1. S RCTRIC=$S(ERAREC:$$ISTYPE^RCDPEU1(344.4,ERAREC,"T"),1:$$ISTYPE^RCDPEU1(344.31,EFTDA,"T"))
  1. ;
  1. I (TYPE="A")!(TYPE="P"),RCPHARM D Q
  1. . ; Aged, unposted EFT gets error message, no scratchpad for the ERA
  1. . I AGED>DAYSLIMT("P") S TRARRY("ERROR","P",TRACE)="ERA = "_ERAREC_U_MSTATUS Q
  1. . ; Aged, unposted PHARMACY EFT display warning message when entering scratchpad with the ERA
  1. . I '$D(TRARRY("ERROR")),AGED>21 S TRARRY("WARNING","P",TRACE)="ERA = "_ERAREC_U_MSTATUS
  1. ;
  1. I (TYPE="A")!(TYPE="T"),RCTRIC D Q ; is payer type Tricare?
  1. . ; Aged, unposted EFT gets error message, no scratchpad for the ERA
  1. . I AGED>DAYSLIMT("T") S TRARRY("ERROR","T",TRACE)="ERA = "_ERAREC_U_MSTATUS Q
  1. . ; Aged, unposted MEDICAL EFT display warning message when entering scratchpad with the ERA
  1. . I '$D(TRARRY("ERROR")),AGED>14 S TRARRY("WARNING","T",TRACE)="ERA = "_ERAREC_U_MSTATUS
  1. ;
  1. I (TYPE="A")!(TYPE="M"),'RCPHARM,RCMED D
  1. . I AGED>DAYSLIMT("M") S TRARRY("ERROR","M",TRACE)="ERA = "_ERAREC_U_MSTATUS Q
  1. . ; Aged, unposted MEDICAL EFT warning message when entering scratchpad with ERA
  1. . I '$D(TRARRY("ERROR")),AGED>14 S TRARRY("WARNING","M",TRACE)="ERA = "_ERAREC_U_MSTATUS
  1. ; PRCA*4.5*345 - End modified code block
  1. Q
  1. ;
  1. PROC(EFTDA) ; Check if TR Receipt for an EFT linked to Paper EOB is processed
  1. ; Input: EFTDA - IEN for file 344.31
  1. ; Returns: 1 if TR receipt exists and is OPEN, 0 otherwise
  1. N IEN344,RET S RET=0
  1. ; Find TR receipt and check if status is not CLOSED
  1. S IEN344=$O(^RCY(344,"AEFT",EFTDA,0))
  1. I IEN344,$$GET1^DIQ(344,IEN344_",",.14,"I")'=1 S RET=1
  1. Q RET
  1. ;
  1. FTRACE(TRARRY,STR) ; both args. passed by ref.
  1. ; TRARRY - trace numbers of aged, unposted EFTs
  1. ; returns: STR - array of trace numbers separated by commas for warning or error message
  1. N CTR,LEN,TRACE,X
  1. K STR S CTR=1,TRACE=""
  1. F S TRACE=$O(TRARRY(TRACE)) Q:TRACE="" D
  1. . S STR(CTR)=$G(STR(CTR)) ; Initialize
  1. . I $L(STR(CTR))+$L(TRACE)>77 S CTR=CTR+1,STR(CTR)=TRACE Q
  1. . S STR(CTR)=STR(CTR)_$S(STR(CTR)]"":",",1:"")_TRACE ; comma if needed
  1. Q
  1. ;
  1. WARNMSG(TYPE,STR) ; warning message when aged, unposted EFTs exist
  1. ; Input: TYPE - "M" - Medical, "P" - Pharmacy or "T" - Tricare
  1. ; STR - Array, subscripts are strings in "trace#, trace#," format
  1. N DIR,LN,X,Y
  1. S DIR(0)="EA"
  1. S DIR("A",1)="WARNING: Unposted "_$S(TYPE="P":"pharmacy",TYPE="M":"medical",1:"TRICARE")
  1. S DIR("A",1)=DIR("A",1)_" EFTs exist that are more than "_$S(TYPE="P":21,1:14)_" days old."
  1. S DIR("A",2)=" "
  1. S DIR("A",3)="Post the older payments first. The EFTs may be unmatched or matched."
  1. S DIR("A",4)="Trace number(s) associated with unposted EFTs:"
  1. S LN=4,X=0 F S X=$O(STR(X)) Q:'X S LN=LN+1,DIR("A",LN)=STR(X)
  1. S LN=LN+1,DIR("A",LN)=" "
  1. S DIR("A")="Press ENTER to continue: "
  1. W !
  1. D ^DIR
  1. Q
  1. ;
  1. PREVMSG(TYPE,DAYS,STR) ; Display Error message when aged, unposted EFTs exist
  1. ;Input:
  1. ; TYPE - "M":Medical, "P":Pharmacy, "T":Tricare
  1. ; DAYS - days EFT can age before post prevention rules apply
  1. ; STR - Array, each subscrpt is string of trace numbers in "trace#, trace#," format
  1. ;
  1. N DIR,LN,X,Y
  1. S DIR(0)="EA"
  1. S DIR("A",1)="ERROR: Unposted "_$S(TYPE="P":"Pharmacy",TYPE="M":"Medical",1:"TRICARE")
  1. S DIR("A",1)=DIR("A",1)_" EFTs exist that are more than "_DAYS(TYPE)_" days old. Scratchpad"
  1. S DIR("A",2)="creation is not allowed for newer payments. Post older payments first."
  1. S DIR("A",3)="The EFTs may be matched or unmatched."
  1. S DIR("A",4)=" "
  1. S DIR("A",5)="Trace number(s) associated with unposted EFTs:"
  1. S LN=5,X=0 F S X=$O(STR(X)) Q:'X S LN=LN+1,DIR("A",LN)=" "_STR(X)
  1. S LN=LN+1,DIR("A",LN)=" "
  1. S DIR("A")="Press ENTER to continue: "
  1. W !
  1. D ^DIR
  1. Q
  1. ;
  1. EXCDENY ; PRCA*4.5*298
  1. ; access denied message for ERAs selected off ERA Worklist with exceptions
  1. ; PRCA*4.5*304 - undeclared parameters (from WL^RCDPEWL7): RCERA and RCEXC
  1. N DIR,DIROUT,DIRUT,DTOUT,DUOUT,RCDWLIEN,X,Y
  1. S DIR(0)="YA"
  1. S DIR("A",1)="ACCESS DENIED: Scratchpad creation is not allowed when third party"
  1. S DIR("A",2)="medical exceptions exist. Fix Transmission Exceptions first and then Data"
  1. S DIR("A",3)="Exceptions with the EXE EDI Lockbox 3rd Party Exceptions option which is"
  1. S DIR("A",4)="located on the EDI Lockbox Main Menu."
  1. S DIR("A",5)=" "
  1. ;PRCA*4.5*304 - Allow user to fix exceptions
  1. S DIR("A")="Do you want to begin clearing Exceptions for this ERA (Y/N)?: "
  1. S DIR("B")="Y"
  1. W ! D ^DIR
  1. ;PRCA*4.5*304 - allow jump to work on Exceptions
  1. ; If 'yes' to work on exceptions?, set neeeded vars., default payer range is ALL (for now)
  1. I Y=1 D S:$G(RCMBG)'="" VALMBG=RCMBG S:$G(RCDWLIEN)'="" RCERA=RCDWLIEN S RCEXC=1 K RCMBG
  1. . S RCMBG=$G(VALMBG),RCDWLIEN=RCERA D EN^RCDPEX1
  1. Q
  1. ;
  1. EXCWARN(ERADA) ; prca*4.5*298 warning msg. if exception
  1. ; Input: ERADA - IEN in file 344.4
  1. ; Output: WARNING MESSAGE if exception exists on ERA
  1. ;
  1. Q:$$PHARM(ERADA) ; Ignore pharmacy ERA
  1. Q:$$XCEPT(ERADA)="" ; no exception
  1. N DIR
  1. S DIR(0)="EA"
  1. S DIR("A",1)="WARNING: Fix Transmission Exceptions first and then Data Exceptions via"
  1. S DIR("A",2)="the EXE EDI Lockbox 3rd Party Exceptions option which is located on the"
  1. S DIR("A",3)="EDI Lockbox Main Menu."
  1. S DIR("A",4)=" "
  1. S DIR("A")="Press ENTER to continue: "
  1. W !
  1. D ^DIR
  1. Q
  1. ;
  1. XCEPT(ERADA) ; prca*4.5*298, return ERA exception state
  1. ; Input: ERADA - IEN in file 344.4
  1. ; Returns: "x" or null, "x": Exception for a claim in the ERA
  1. N RES
  1. S RES=$S($D(^RCY(344.4,"AEXC",1,ERADA)):"x",$D(^RCY(344.4,"AEXC",2,ERADA)):"x",$D(^RCY(344.4,"AEXC",99,ERADA)):"ERADA",1:"")
  1. Q RES
  1. ;
  1. PHARM(X1) ; prca*4.5*298, function, Pharmacy, or Medical ERA?
  1. ; X1 - IEN file 344.4
  1. ; Returns: 1: Pharmacy ERA, 0: Non-pharmacy ERA
  1. Q $S($D(^RCY(344.4,X1,1,"ECME")):1,1:0)
  1. ;
  1. GETPHARM(PRCAIEN,RCARRY) ;prca*4.5*298 return pharmacy data to show on EEOB items in scratchpad
  1. ; Input: PRCAIEN - IEN file 430
  1. ; Output: RCARRY - holds pharmacy data
  1. ; IA 6033 - read access file 362.4
  1. ; ICR 1878 - EN^PSOORDER call
  1. N RC0,RCDFN,RXDATA,RXFILL,RXIEN
  1. K RCARRY
  1. Q:PRCAIEN=""
  1. S RCDFN=$P(^PRCA(430,PRCAIEN,0),U,7)
  1. S RC0=+$O(^IBA(362.4,"C",PRCAIEN,0)) Q:RC0=0
  1. S RXDATA=$G(^IBA(362.4,RC0,0))
  1. S RCARRY("DOS")=$$FMTE^XLFDT($P(RXDATA,U,3),"2Z")
  1. S RCARRY("FILL")=+$P(RXDATA,U,10) ; Rx fill#
  1. S RXIEN=+$P(RXDATA,U,5) ; Rx IEN in file 52
  1. D EN^PSOORDER(RCDFN,RXIEN)
  1. ; PRCA*4.5*411 - Check if prescription was deleted.
  1. I $D(^TMP("PSOR",$J,RXIEN,0)) D ;
  1. . S RCARRY("RX")=$P(^TMP("PSOR",$J,RXIEN,0),U,5)
  1. . I RCARRY("FILL")=0 D
  1. . . S RCARRY("RELEASED STATUS")=$S($P(^TMP("PSOR",$J,RXIEN,0),U,13)]"":"Released",1:"Not Released") ; determine release status from Rx on the first fill (no refills)
  1. . I RCARRY("FILL")>0 D
  1. . . S RCARRY("RELEASED STATUS")=$S($P($G(^TMP("PSOR",$J,RXIEN,"REF",RCARRY("FILL"),0)),U,8)]"":"Released",1:"Not Released") ; ; determine release status from Rx refill # ;PRCA319 add $G()
  1. E D ;
  1. . S RCARRY("RX")="Rx Deleted"
  1. . S RCARRY("RELEASED STATUS")="Not Found"
  1. ; PRCA*4.5*411 - End modified code block
  1. Q
  1. ;
  1. CV ; Change View action for ERA Worklist
  1. D FULL^VALM1
  1. D PARAMS^RCDPEWL0("CV")
  1. D HDR^RCDPEWL7,INIT^RCDPEWL7
  1. S VALMBCK="R",VALMBG=1
  1. Q
  1. ;
  1. NOEDIT ; no edit allowed, ERA designated for auto-posting
  1. N DIR
  1. S DIR(0)="EA",DIR("A",1)="This action is not available for Auto-Posted ERAs."
  1. S DIR("A")="Press ENTER to continue: "
  1. W ! D ^DIR W !
  1. Q
  1. ;
  1. VR(ERADA) ; EP from RCDPEWL4, RCDPEAA3
  1. ; handle auto-posted ERAs, Look at Receipt protocol for standard Worklist
  1. ; Input: ERADA - IEN from file 344.49 (and 344.4)
  1. N RCDA,RCZ,RCZ0,EEOBREC
  1. D SEL^RCDPEWL(.RCDA) ; Select EEOB off scratchpad
  1. S RCZ=+$O(RCDA(0)),RCZ=+$G(RCDA(RCZ))
  1. Q:'RCZ
  1. S RCZ0=$G(^RCY(344.49,ERADA,1,RCZ,0))
  1. S EEOBREC=$P($G(^RCY(344.4,ERADA,1,+$P(RCZ0,U,9),4)),U,3)
  1. I EEOBREC']"" D NOVIEW Q
  1. I '$D(^XUSEC("RCDPEPP",DUZ)) D Q ; PRCA*4.5*349 - Added AM worklist preview
  1. . D EN^VALM("RCDPE EOB RECEIPT PREVIEW AM")
  1. D EN^VALM("RCDPE AUTO EOB RECEIPT PREVIEW")
  1. Q
  1. ;
  1. NOVIEW ; selected EEOB cannot be viewed if no receipt number
  1. N DIR
  1. S DIR(0)="EA"
  1. S DIR("A",1)="THIS ACTION IS NOT AVAILABLE SINCE THE EEOB HAS NOT BEEN AUTO-POSTED."
  1. S DIR("A")="Press ENTER to continue: "
  1. W ! D ^DIR W !
  1. Q
  1. ;
  1. INIT(ERADA,EEOBREC) ; List Template - RCDPE AUTO EOB RECEIPT PREVIEW entry point
  1. ; Display EEOBs that have been posted (receipt exists)
  1. ; Input:
  1. ; ERADA - IEN file 344.49 (and 344.4)
  1. ; EEOBREC - Selected EEOBs receipt
  1. ; Output: ^TMP("RCDPE_AP_EOB_PREVIEW",$J)
  1. N RCPT,RCZ,Z,Z0,Z1,Z2,SEQ
  1. K ^TMP("RCDPE_AP_EOB_PREVIEW",$J)
  1. S VALMCNT=0,VALMBG=1
  1. S SEQ(344.491)=0 F S SEQ(344.491)=$O(^RCY(344.49,ERADA,1,SEQ(344.491))) Q:'SEQ(344.491) D
  1. . S SEQ(344.491,0)=$G(^RCY(344.49,ERADA,1,SEQ(344.491),0))
  1. . I $P(SEQ(344.491,0),U)\1=+SEQ(344.491,0) S SEQ("claim#")=$P(SEQ(344.491,0),U,2)
  1. . S RCPT=+$P($G(^RCY(344.4,ERADA,1,+$P(SEQ(344.491,0),U,9),4)),U,3),RCPT(RCPT)="" ; receipt array
  1. . I $P($P(SEQ(344.491,0),U),".",2),$D(RCPT(EEOBREC)) D ; if the EEOB has same receipt# as selected EEOB it can be on the preview screen
  1. .. S:$P(SEQ(344.491,0),U,2)="" $P(SEQ(344.491,0),U,2)=SEQ("claim#")
  1. .. ;RCZ=0:zero payments, -1:negative bal., 1:lines for rcpt., 2:other lines
  1. .. S RCZ=$S(+$P(SEQ(344.491,0),U,6)=0:0,+$P(SEQ(344.491,0),U,6)<0:-1,$P(SEQ(344.491,0),U,7):1,1:2)
  1. .. S RCZ(RCZ,SEQ(344.491))=SEQ(344.491,0)
  1. .. K RCPT
  1. .. S SEQ(344.4911)=0 F S SEQ(344.4911)=$O(^RCY(344.49,ERADA,1,SEQ(344.491),1,SEQ(344.4911))) Q:'SEQ(344.4911) D
  1. ... S SEQ(344.4911,0)=$G(^RCY(344.49,ERADA,1,SEQ(344.491),1,SEQ(344.4911),0))
  1. ... I $P(SEQ(344.4911,0),U,5)=1 D ;(#.05) BACKGROUND ACTION [5S] - '1' FOR DECREASE ADJUSTMENT;
  1. .... S RCZ(RCZ,SEQ(344.491),"ADJ",SEQ(344.4911))="Dec adj $"_$J(0-$P(SEQ(344.4911,0),U,3),"",2)_" pending - "
  1. .... S RCZ(RCZ,SEQ(344.491),"ADJ",SEQ(344.4911),1)=$J("",4)_$P(SEQ(344.4911,0),U,9)
  1. ;
  1. F RCZ=1,2,0,-1 D:$D(RCZ(RCZ))
  1. . I RCZ=1 D SET("PAYMENTS (LINES FOR RECEIPT):")
  1. . I RCZ=0,VALMCNT>0 D SET(" "),SET("ZERO DOLLAR PAYMENTS:")
  1. . I RCZ=-1,VALMCNT>0 D SET(" "),SET("LINES WITH NEGATIVE BALANCES STILL NEEDING TO BE DISTRIBUTED:")
  1. . S Z=0 F S Z=$O(RCZ(RCZ,Z)) Q:'Z D
  1. .. S Z0=RCZ(RCZ,Z),X=""
  1. .. S X=$$SETFLD^VALM1($P(Z0,U),X,"LINE #")
  1. .. S X=$$SETFLD^VALM1($S($P(Z0,U,7):$$BN1^PRCAFN($P(Z0,U,7)),1:$S(RCZ=0:"",1:"[SUSPENSE]")_$S($P(Z0,U,2)["**ADJ"&'$P($P(Z0,U,2),"ADJ",2):"TOTALS MISMATCH ADJ",1:$P(Z0,U,2))),X,"ACCOUNT")
  1. .. S X=$$SETFLD^VALM1($J(+$P(Z0,U,6),"",2),X,"AMOUNT")
  1. .. D SET(X)
  1. .. S Z1=0 F S Z1=$O(RCZ(RCZ,Z,"ADJ",Z1)) Q:'Z1 D
  1. ... D SET($J("",12)_$G(RCZ(RCZ,Z,"ADJ",Z1)))
  1. ... S Z2=0 F S Z2=$O(RCZ(RCZ,Z,"ADJ",Z1,Z2)) Q:'Z2 D SET($J("",12)_$G(RCZ(RCZ,Z,"ADJ",Z1,Z2)))
  1. Q
  1. ;
  1. SET(X) ;
  1. S VALMCNT=VALMCNT+1,^TMP("RCDPE_AP_EOB_PREVIEW",$J,VALMCNT,0)=X
  1. Q
  1. ;
  1. HDR ;
  1. D HDR^RCDPEWL Q
  1. ;
  1. FNL ;
  1. K ^TMP("RCDPE_AP_EOB_PREVIEW",$J) Q
  1. ;