RCDPEM5 ;ALB/PJH - EPAYMENTS MOVE EEOB TO NEW CLAIM ;Oct 29, 2014@16:43:51
;;4.5;Accounts Receivable;**173,208,276,298,321,332**;Mar 20, 1995;Build 40
;Per VA Directive 6402, this routine should not be modified.
Q
;
EN ;Entry point for EEOB Move/Copy/Remove [RCDPE EEOB MOVE/COPY/REMOVE] option
;
N DIR,X,Y,DIROUT,DUOUT,MODE
S DIR("A")="Select action"
S DIR("B")="M"
S DIR(0)="S^M:Move EEOB to different claim;"
S DIR(0)=DIR(0)_"C:Copy EEOB to multiple claims;"
S DIR(0)=DIR(0)_"R:Remove EEOB from claim"
D ^DIR Q:$G(DIROUT)!$G(DUOUT)
S MODE=Y
;
; - PRCA*4.5*298 - OWNSKEY^XUSRB - Supported IA 3277
I MODE="R" N MSG D OWNSKEY^XUSRB(.MSG,"RCDPE REMOVE EEOB",DUZ) I 'MSG(0) D Q
.W !!,"SORRY, YOU ARE NOT AUTHORIZED TO USE THIS ACTION"
.W !,"This action is locked with RCDPE REMOVE EEOB key.",!
.N DIR S DIR(0)="E" D ^DIR
;
;Read access to file #361.1 under IA 4051
;
N DA,DIC,DIE,DIR,DR,NCLAIM,ORIG,ORIGNAM,X,Y
;
;Allow selection of a original third party EOB
S DIC("A")="Select EXPLANATION OF BENEFIT (EEOB) to "_$S(MODE="M":"MOVE",MODE="R":"REMOVE",1:"COPY")_": "
; screen to only allow selection of an active EEOB (not marked as deleted) and non-MRA type EOB
S DIC("S")="I ($P(^(0),U,4)=0)&('$P($G(^(102)),U))",DIC="^IBM(361.1,",DIC(0)="AEMQ"
W ! D ^DIC K DIC
;
I Y'>0 Q
; controlled subscription IA 1992
S ORIG=+Y,ORIGNAM=$$GET1^DIQ(399,$P(Y,U,2),.01)
;
;Get current bill payer sequence from claim - IA 3820
D
.N CURR,IEN399
.S IEN399=$P($G(^IBM(361.1,ORIG,0)),U) Q:'IEN399
.S CURR=$P($G(^DGCR(399,IEN399,0)),U,21) I (CURR'="T")&(CURR'="S") Q
.W !!,"Warning - selected EEOB has secondary claims and may have tertiary claims"
;
;Lock Original EOB
Q:'$$LOCK^IBCEOB4(ORIG)
;
;Remove Option
I MODE="R" D REMOVE(ORIG,MODE),EXIT Q
;
;Select Claim(s) to Move/Copy to
N RCBILL,RCBILLNM,NCLAIM,NCLAIMX,QUIT,SUB,LIT
S SUB=0,QUIT=0,LIT=""
W !
F D Q:QUIT Q:SUB&(MODE="M")
.;Allow selection of a third party claim
.I MODE="M" S DIC("A")="Select A/R Bill to MOVE to: "
.I MODE="C" S DIC("A")="Select "_LIT_"A/R Bill to COPY to: "
.S DIC="^PRCA(430,",DIC(0)="AEMQ",DIC("S")="I $D(^DGCR(399,+Y,0))&($$VALSTAT^RCDPEM5(+Y))"
.D ^DIC K DIC
.I Y'>0 S QUIT=1 Q
.S RCBILL=+Y,RCBILLNM=$P($P(Y,U,2),"-",2)
.I ORIGNAM=RCBILLNM,MODE="M" W !,"Cannot move EEOB to same claim" Q
.I $D(NCLAIMX(RCBILL)) W !,"Claim already entered" Q
.S SUB=SUB+1,NCLAIM(SUB)=RCBILL,NCLAIMX(RCBILL)=""
.S:MODE="C" LIT="another "
;
I $G(DUOUT)!$G(DIROUT) D EXIT Q
;
;User Exit or no claims selected
I '$O(NCLAIM("")) D EXIT Q
;
;Prompt user to continue
N DIR,X,Y,DIROUT
S DIR(0)="Y",DIR("B")="YES"
S DIR("A")=$$PROMPT(ORIG,.NCLAIM,MODE)
W ! D ^DIR
;
I $G(DIROUT)!$G(DUOUT)!(Y=0) D EXIT Q
;
;Enter Justification Comment
N DIR,DIROUT,DUOUT,JCOM,X,Y
S DIR(0)="FA^1:100^K:$TR(X,"" "","""")="""" X",DIR("A")="Enter JUSTIFICATION COMMENT: "
W ! D ^DIR I $G(DIROUT)!$G(DUOUT) W !!,"Update not performed" D EXIT Q
S JCOM=Y
;
;Update EOB
D UPDATE(ORIG,.NCLAIM,MODE,JCOM),EXIT
;
Q
;
;Unlock original EOB
EXIT D UNLOCK^IBCEOB4(ORIG)
Q
;
;File EOB #361.1 changes - Integration Agreement 5671 for IBCEOB4
UPDATE(ORIG,NCLAIM,MODE,JUST) ;
; Input - ORIG - Original EOB
; - NCLAIM - New claim (s)
; - MODE M=Move C=Copy
; - JUST = User input justification text
; Output - Updates EOB and Audit log
N JUST1
;Move EOB
I MODE="M" D
.;Auto generate text for AR comments on original claim
.S JUST1=$$JUST1(ORIG,.NCLAIM,"M",0)
.;Update AR Comments on the 'from bill'
.D AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
.;Change claim number on EEOB
.D MOVE^IBCEOB4(ORIG,NCLAIM(1),DUZ,$$NOW^XLFDT,JUST,MODE)
.;Update AR Comments on 'to bill'
.D AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
;Copy EOB
I MODE="C" D
.D COPY^IBCEOB4(ORIG,.NCLAIM,DUZ,$$NOW^XLFDT,JUST,MODE)
.;Auto generate text for AR comments on original claim
.S JUST1=$$JUST1(ORIG,.NCLAIM,"C",0)
.;Update AR Comments on original claim
.D AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
.;Auto generate text for AR comments on new claim
.S JUST1=$$JUST1(ORIG,.NCLAIM,"C",1)
.;Update AR Comments on new claims
.N SUB,NEWEOB
.S SUB=0
.F S SUB=$O(NCLAIM(SUB)) Q:'SUB D
..;Convert Claim pointer to EOB pointer
..S NEWEOB=$O(^IBM(361.1,"B",NCLAIM(SUB),0)) Q:'NEWEOB
..D AUDIT^RCDPAYER(NEWEOB,JUST_"^"_JUST1,MODE)
W !!,"EEOB Update Complete" H 1
Q
;
PROMPT(ORIG,NCLAIM,MODE) ;Construct prompt text
; Input - ORIG - Original EOB
; - NCLAIM - New claim (s)
; - MODE M=Move C=Copy
; Output - Justification text
;
N FIRST,STR,STR1,SUB,TEXT
;Move or copy text
S TEXT=$$EXTERNAL^DILFD(361.1,.01,,$P($G(^IBM(361.1,ORIG,0)),U))
I MODE="M" S STR="Move EEOB from claim "_TEXT_" to claim "
E S STR="Copy EEOB from claim "_TEXT_" to claim(s) "
;Build list of claims
S STR1="",SUB="",FIRST=1
F S SUB=$O(NCLAIM(SUB)) Q:'SUB D
.S TEXT=$P($G(^PRCA(430,NCLAIM(SUB),0)),U)
.I FIRST S STR1=STR1_$P(TEXT,"-",2),FIRST=0 Q
.S STR1=STR1_", "_$P(TEXT,"-",2)
;Return full prompt text
Q STR_STR1_" "
;
JUST(ORIG,NCLAIM,MODE,TYPE,SRC) ;Construct justification text for automatic updates
; Input - ORIG - Original EOB
; - NCLAIM - New claim (s)
; - MODE - "M" = Move "C" =Copy "R" = Remove
; - TYPE - 0 = old EOB 1 = new EOB
; - SRC - "W" = Worklist "A" = Auto-post, "L" = Link Payment
; Output - Justification text
N FIRST,STR,STR1,SUB,TEXT
;Original bill number
S TEXT=$$EXTERNAL^DILFD(361.1,.01,,$P($G(^IBM(361.1,ORIG,0)),U))
;Justification comment for original EOB
I TYPE=0 D
.I MODE="R" S STR="EEOB removed from claim "_TEXT,STR1="" Q ;PRCA*4.5*321
.I MODE="M" S STR="EEOB from claim "_TEXT_" moved to claim "
.I MODE="C" S STR="EEOB from claim "_TEXT_" copied to claim(s) "
.;Build list of claims
.S STR1="",SUB="",FIRST=1
.F S SUB=$O(NCLAIM(SUB)) Q:'SUB D
..S TEXT=$P($G(^PRCA(430,NCLAIM(SUB),0)),U)
..I FIRST S STR1=STR1_$P(TEXT,"-",2),FIRST=0 Q
..S STR1=STR1_", "_$P(TEXT,"-",2)
;Justification comment for new EOB's
I TYPE=1 D
.I MODE="M" S STR="EEOB moved from EEOB for claim "_TEXT,STR1=""
.I MODE="C" S STR="EEOB copied from EEOB for claim "_TEXT,STR1=""
;Return full justification text
Q STR_STR1_" automatically by "_$S(SRC="A":"Auto-post",SRC="L":"Link Payment",1:"Worklist")
;
JUST1(ORIG,NCLAIM,MODE,TYPE) ;Construct AR comment for stand-alone MCR option
; Input - ORIG - Original EOB
; - NCLAIM - New claim (s)
; - MODE M=Move C=Copy
; - TYPE = 0 - original EOB 1 - new EOB(s)
; Output - Justification text
N FIRST,STR,STR1,SUB,TEXT
;Original bill number
S TEXT=$$EXTERNAL^DILFD(361.1,.01,,$P($G(^IBM(361.1,ORIG,0)),U))
;Justification comment for original EOB
I TYPE=0 D
.I MODE="M" S STR="EEOB from claim "_TEXT_" moved to claim "
.I MODE="C" S STR="EEOB from claim "_TEXT_" copied to claim(s) "
.;Build list of claims
.S STR1="",SUB="",FIRST=1
.F S SUB=$O(NCLAIM(SUB)) Q:'SUB D
..S TEXT=$P($G(^PRCA(430,NCLAIM(SUB),0)),U)
..I FIRST S STR1=STR1_$P(TEXT,"-",2),FIRST=0 Q
..S STR1=STR1_", "_$P(TEXT,"-",2)
;Justification comment for new EOB's
I TYPE=1 D
.I MODE="M" S STR="EEOB moved from EEOB for claim "_TEXT,STR1=""
.I MODE="C" S STR="EEOB copied from EEOB for claim "_TEXT,STR1=""
;Return comment text
Q STR_STR1
;
FINDEOB(IEN3444,BILL) ;Find EOB for a claim within an ERA
; Input - IEN3444 = ERA ien
; BILL = Bill number
; Output - IEN of EOB in #361.1
N IEN3611,SUB
S (SUB,IEN3611)=0
F S SUB=$O(^RCY(344.4,IEN3444,1,"AC",SUB)) Q:'SUB D Q:IEN3611
.I $$EXTERNAL^DILFD(344.41,.02,,SUB)=BILL S IEN3611=SUB
Q IEN3611
;
REMOVE(ORIG,MODE) ; Interactive option to Remove EEOB - PRCA*4.5*298
; Input - ORIG = original EOB in #361.1
; Output - mode = "R"
;
;Prompt user to continue
N DIR,X,Y,DIROUT
S DIR(0)="Y",DIR("B")="YES"
S DIR("A")="Are you sure you want to remove EEOB from claim "_ORIGNAM_" (Y/N)?"
W ! D ^DIR
;
I $G(DIROUT)!$G(DUOUT)!(Y=0) Q
;
;Enter Justification Comment
N DIR,DIROUT,DUOUT,JUST,X,Y
S DIR(0)="FA^1:100^K:$TR(X,"" "","""")="""" X",DIR("A")="Enter JUSTIFICATION COMMENT: "
W ! D ^DIR I $G(DIROUT)!$G(DUOUT) W !!,"Update not performed" D EXIT Q
S JUST=Y
;
;Update EEOB
D REMOVE^IBCEOB4(ORIG,DUZ,JUST)
;Update AR Comments for removed claim
D AUDIT^RCDPAYER(ORIG,JUST,MODE)
;
W !!,"EEOB Update Complete" H 1
Q
;
VALSTAT(CLIEN) ; validation on current status of the AR claim selected for the move/copy event
; Claims that are in a incomplete state cannot be selected
; incomplete states are determined at CURRENT STATUS (8,430) of the AR claim
; AR claims with 'BILL INCOMPLETE', 'INCOMPLETE', 'NEW BILL' statuses cannot be selected
; CLIEN=430 ien
; returns 0 or 1
N CSTAT,FLAG
S CSTAT=$$GET1^DIQ(430,CLIEN,8)
S FLAG=$S(CSTAT="BILL INCOMPLETE":0,CSTAT="INCOMPLETE":0,CSTAT="NEW BILL":0,1:1)
Q FLAG
;
; BEGIN - PRCA*4.5*321
AUTO(OBILL,RCSPLIT,RCERA,SRC,ORIG) ;EP from RCDPEM and RCDPEMA
; Automatic move copy of EOB
; Input: OBILL - Original Bill number in #399
; RCSPLIT - Array of split lines
; RCERA - ERA ien #344.4
; SRC - "W" = Worklist "A" = APAR/Autopost
; ORIG - IEN of EOB in file #361.1
; Output - Update EOBs and audit trail
N CCLAIM,FLAG,IFN,J,NCLAIM,NBILL,JUST,JUST1,SUB,SUB1,VALID ; PRCA*4.5*332
; EOB for the original claim must be present
I 'ORIG Q 1
S (SUB,SUB1)=0,VALID=1 ; ; PRCA*4.5*332
F J="O","N","S" S FLAG(J)=0 ; PRCA*4.5*332 Initialize flags for original, new and suspense EEOBs
; Loop through split lines
F S SUB=$O(RCSPLIT(SUB)) Q:'SUB D
. ; Bill Number on split line
. S NBILL=$P(RCSPLIT(SUB),U,2)
. S IFN=$P(RCSPLIT(SUB),U,7) ; PRCA*4.5*332
. ; Ignore split lines with zero value
. Q:+$P(RCSPLIT(SUB),U,3)=0
. ; Suspense claims, piece 7 is pointer to AR claim file 430
. I 'IFN S FLAG("S")=1 Q ; PRCA*4.5*332
. ; Is original bill is in the array?
. I OBILL=NBILL S FLAG("O")=1 ; PRCA*4.5*332
. ; Save POINTER to AR Claim file 430 (DINUM to 399)
. S SUB1=SUB1+1,NCLAIM(SUB1)=IFN
. ; Build list of new claims to copy
. I OBILL'=NBILL D ; PRCA*4.5*332
. . S CCLAIM(IFN)=IFN ; PRCA*4.5*332
. . S FLAG("N")=1 ; PRCA*4.5*332
;
; No new claims. Payment must have been split to suspense, or suspense and original payment - no action
I 'FLAG("N") Q 1 ; PRCA*4.5*332
;
; Lock Original EOB
I '$$LOCK(ORIG) Q 0
;
; PRCA*4.5*332 - Start modified code block
; If split to single new claim move EOB - i.e. change claim number on EOB
I SUB1=1,'FLAG("S") D ;
. ; Change claim number on original EOB attached to ERA
. D AUTOMOVE(ORIG,.NCLAIM,SRC) ; PRCA*4.5*332
;
; Split was to multiple new claims or new claim(s) and suspense - copy original EOB to new claim(s)
E D ;
. ; Copy EOB to new EOBs for "to" claims
. D AUTOCOPY(ORIG,.CCLAIM,SRC) ; PRCA*4.5*332
. ; If no money went to suspense or the original EOB
. ; mark original EOB removed but with text of 'copied to claims....'
. I 'FLAG("O"),'FLAG("S") D ;
. . S JUST=$$JUST(ORIG,.CCLAIM,"C",0,SRC)_" then removed"
. . D AUTOREM(ORIG,JUST)
; PRCA*4.5*332 - End modified code block
;
D UNLOCK(ORIG)
Q 1
;
AUTOREM(ORIG,JUST) ;Silent remove of EEOB where entire payment is suspensed or moved to other claims
; Input - ORIG = EOB in #361.1
; JUST = Justification text
; Output - Update EOB in #361.1 and audit trail
;
;Lock Original EOB
I '$$LOCK(ORIG) Q
;Update EEOB
D REMOVE^IBCEOB4(ORIG,DUZ,JUST)
;Update AR Comments for removed claim
D AUDIT^RCDPAYER(ORIG,JUST,"R")
;Unlock original EOB
D UNLOCK(ORIG)
;
Q
;
AUTOCOPY(ORIG,CCLAIM,SRC) ; EP from RCDPEU2 - Copy EOBs and upate AR TRANSACTION file - PRCA*4.5*332
; Input: ORIG - IEN for file 361.1 of original EOB
; CCLAIM - Array of claims to copy to
; SRC - "W" = Worklist "A" = APAR/Autopost "L" = Link Payments
N JUST,JUST1,MODE,SUB,NEWEOB
S MODE=$S(SRC="L":"L",1:"W")
S JUST=$$JUST(ORIG,.CCLAIM,"C",0,SRC) ; Text for original EEOB (copied to claims x,y,z - then removed)
S JUST1=$$JUST(ORIG,.CCLAIM,"C",1,SRC) ; Text for copied to EEOB (copied from claim w)
; Copy EOB to new EOBs for "to" claims
D COPY^IBCEOB4(ORIG,.CCLAIM,DUZ,$$NOW^XLFDT,JUST1,"C")
;
; Auto generate text for AR comments on original claim
D AUDIT^RCDPAYER(ORIG,JUST,MODE)
; Auto generate text for AR comments on new claim
S SUB=0
F S SUB=$O(CCLAIM(SUB)) Q:'SUB D
. ; Convert Claim pointer to EOB pointer
. S NEWEOB=$O(^IBM(361.1,"B",CCLAIM(SUB),""),-1) Q:'NEWEOB
. D AUDIT^RCDPAYER(NEWEOB,JUST1,MODE)
Q
;
AUTOMOVE(ORIG,NCLAIM,SRC) ; EP from RCDPEU2 - Move EOB from one claim to another PRCA*4.5*332
; Input: ORIG - IEN for file 361.1 of original EOB
; NCLAIM - Array of new claims
; SRC - "W" = Worklist "A" = APAR/Autopost "L" = Link Payments
N JUST,JUST1,MODE,SUB
S MODE=$S(SRC="L":"L",1:"W")
S JUST=$$JUST(ORIG,.NCLAIM,"M",0,SRC) ;Just. Text for original claim
S JUST1=$$JUST(ORIG,.NCLAIM,"M",1,SRC) ;Just. Text for new claim
; Update AR Transaction for original claim
D AUDIT^RCDPAYER(ORIG,JUST,MODE)
; Change claim number on original EOB attached to ERA
D MOVE^IBCEOB4(ORIG,NCLAIM(1),DUZ,$$NOW^XLFDT,JUST,"M")
; Update AR Transaction for new claim
D AUDIT^RCDPAYER(ORIG,JUST1,MODE)
Q
;
;Read access to file #361.1 under IA 4051
LOCK(EOBIEN) ;Lock Original EOB
L +^IBM(361.1,EOBIEN):5 I Q 1
Q 0
;
UNLOCK(EOBIEN) ;Release EOB
L -^IBM(361.1,EOBIEN)
Q
; END PRCA*4.5*321
;
;US1394 ADDITIONS - EP RCDPRPL1 and RCDPLPL3
EEOB(RCRCPT,RCTRANDA) ; Option to restore associated suspended/removed EEOB
;
; INPUT - RCRCPT - Receipt ien #344
; - RCTRANDA - Receipt line #344.01
;
; OUTPUT - RCEEOB - selected EEOB ien #361.1
; or 0 if no EEOB
; or -1 if ^ abort
;
N CLAIM,DIROUT,DTOUT,DUOUT,RCEEOB,RCEEOBH,RCERA,RCLINE
; Get new claim IEN from receipt line
S CLAIM=$$GET1^DIQ(344.01,RCTRANDA_","_RCRCPT_",",.09,"I")
; Quit if this is not a third party claim payment
Q:CLAIM'["PRCA" 0
; Check if ERA has a suspended EEOB for this line
S RCEEOB=$$SUSP(RCRCPT,RCTRANDA,.RCERA,.RCLINE)
; If no suspended EEOB skip prompt
Q:'RCEEOB 0
;
; Get last move/copy history record - Read access to file #361.1 under IA 4051
S RCEEOBH=$O(^IBM(361.1,RCEEOB,101,"A"),-1)
; Quit if EEOB if no history found - should not occur since EEOB is suspended
Q:'RCEEOBH 0
; Display EOB detail
W !!,"This claim has an associated EEOB on ERA "_RCERA
W !!,"Claim Number : ",$$GET1^DIQ(344.41,RCLINE_","_RCERA,.02,"E")
W !,"Trace Number : ",$$GET1^DIQ(344.4,RCERA,.02,"E")
W !,"Total Amount Paid: ",$$GET1^DIQ(361.1,RCEEOB,1.01,"E")
W !,"Date/Time Removed: ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.01,"E")
W !,"Removed by : ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.02,"E")
W !,"Justification : ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.03,"E"),!
;
; Confirm that this is the correct EEOB
K DIR
S DIR(0)="YO",DIR("B")="NO"
S DIR("A")="Is this the correct EEOB to associate with this claim"
D ^DIR
I $G(DTOUT)!($G(DUOUT)) Q -1
Q:Y'=1 0
;
;Return selected EEOB
Q RCEEOB
;
SUSP(RCRCPT,RCTRANDA,RCERA,RCLINE) ; Identify suspended EEOB
;
; INPUT - RCRCPT - Receipt ien #344
; - RCTRANDA - Receipt line #344.01
;
; OUTPUT - RCEEOB - selected EEOB ien #361.1
; - RCERA - ERA ien #344.4
; - RCLINE - ERA line #344.41;
;
N RCEEOB,RCORIG,RCRCZ,RCSPLIT
; Get ERA from receipt
S RCERA=$$GET1^DIQ(344,RCRCPT_",",.18,"I")
; Quit if no ERA
Q:'RCERA 0
; Get ERA Scratchpad line
S RCRCZ=$$GET1^DIQ(344.01,RCTRANDA_","_RCRCPT_",",.27,"I")
; Quit if ERA scratchpad line missing
Q:'RCRCZ 0
; Get the original line sequence number from before the split was performed
S RCSPLIT=$$GET1^DIQ(344.491,RCRCZ_","_RCERA_",",.01),RCORIG=RCSPLIT\1
; Convert sequence number into original line IEN
S RCORIG=$O(^RCY(344.49,RCERA,1,"ASEQ",RCORIG,""))
; Quit if original scratchpad line not found
Q:'RCORIG 0
; Get ERA line from original scratchpad line
S RCLINE=$$GET1^DIQ(344.491,RCORIG_","_RCERA_",",.09,"I")
; Quit if ERA line not found
Q:'RCLINE 0
; Get EEOB from ERA line
S RCEEOB=$$GET1^DIQ(344.41,RCLINE_","_RCERA_",",.02,"I")
; Quit if ERA line pointer to EEOB is missing
Q:'RCEEOB 0
; Ignore EEOB if status is not removed - read access to file #361.1 under IA 4051
Q:$$GET1^DIQ(361.1,RCEEOB_",",102,"I")'=1 0
; Return suspended EEOB IEN
Q RCEEOB
;
; EP RCDPRPL1 and RCDPLPL3
RESTORE(RCPTDA,RCTRANDA,ORIG,SRC) ; Change bill number on EOB and clear 'removed' status
;
; INPUT - RCPTDA - Receipt ien #344
; - RCTRANDA - Receipt line #344.01
; - ORIG - EOB ien #361.1
; - SRC - 'L' - Link Payments 'R' - Receipt Porcessing
;
Q:'$$LOCK^IBCEOB4(ORIG)
;
W !,"Updating EEOB...."
;
N NCLAIM,JUST
; Get new claim IEN from receipt line
S NCLAIM=$P($$GET1^DIQ(344.01,RCTRANDA_","_RCPTDA_",",.09,"I"),";")
; Set up justification text
S JUST="EEOB restored from suspense in "_$S(SRC="L":"Link Payments",SRC="R":"Edit Payments",1:"Other")
; Update AR comments on 'from claim'
D AUDIT^RCDPAYER(ORIG,JUST,"W")
; Change claim number on EOB
D MOVE^IBCEOB4(ORIG,NCLAIM,DUZ,$$NOW^XLFDT,JUST,"M")
; Reset EEOB REMOVED status
D RESTORE^IBCEOB4(ORIG)
;Unlock EOB
D UNLOCK^IBCEOB4(ORIG)
;
H 1 W "done"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPEM5 17742 printed Oct 16, 2024@17:45:41 Page 2
RCDPEM5 ;ALB/PJH - EPAYMENTS MOVE EEOB TO NEW CLAIM ;Oct 29, 2014@16:43:51
+1 ;;4.5;Accounts Receivable;**173,208,276,298,321,332**;Mar 20, 1995;Build 40
+2 ;Per VA Directive 6402, this routine should not be modified.
+3 QUIT
+4 ;
EN ;Entry point for EEOB Move/Copy/Remove [RCDPE EEOB MOVE/COPY/REMOVE] option
+1 ;
+2 NEW DIR,X,Y,DIROUT,DUOUT,MODE
+3 SET DIR("A")="Select action"
+4 SET DIR("B")="M"
+5 SET DIR(0)="S^M:Move EEOB to different claim;"
+6 SET DIR(0)=DIR(0)_"C:Copy EEOB to multiple claims;"
+7 SET DIR(0)=DIR(0)_"R:Remove EEOB from claim"
+8 DO ^DIR
if $GET(DIROUT)!$GET(DUOUT)
QUIT
+9 SET MODE=Y
+10 ;
+11 ; - PRCA*4.5*298 - OWNSKEY^XUSRB - Supported IA 3277
+12 IF MODE="R"
NEW MSG
DO OWNSKEY^XUSRB(.MSG,"RCDPE REMOVE EEOB",DUZ)
IF 'MSG(0)
Begin DoDot:1
+13 WRITE !!,"SORRY, YOU ARE NOT AUTHORIZED TO USE THIS ACTION"
+14 WRITE !,"This action is locked with RCDPE REMOVE EEOB key.",!
+15 NEW DIR
SET DIR(0)="E"
DO ^DIR
End DoDot:1
QUIT
+16 ;
+17 ;Read access to file #361.1 under IA 4051
+18 ;
+19 NEW DA,DIC,DIE,DIR,DR,NCLAIM,ORIG,ORIGNAM,X,Y
+20 ;
+21 ;Allow selection of a original third party EOB
+22 SET DIC("A")="Select EXPLANATION OF BENEFIT (EEOB) to "_$SELECT(MODE="M":"MOVE",MODE="R":"REMOVE",1:"COPY")_": "
+23 ; screen to only allow selection of an active EEOB (not marked as deleted) and non-MRA type EOB
+24 SET DIC("S")="I ($P(^(0),U,4)=0)&('$P($G(^(102)),U))"
SET DIC="^IBM(361.1,"
SET DIC(0)="AEMQ"
+25 WRITE !
DO ^DIC
KILL DIC
+26 ;
+27 IF Y'>0
QUIT
+28 ; controlled subscription IA 1992
+29 SET ORIG=+Y
SET ORIGNAM=$$GET1^DIQ(399,$PIECE(Y,U,2),.01)
+30 ;
+31 ;Get current bill payer sequence from claim - IA 3820
+32 Begin DoDot:1
+33 NEW CURR,IEN399
+34 SET IEN399=$PIECE($GET(^IBM(361.1,ORIG,0)),U)
if 'IEN399
QUIT
+35 SET CURR=$PIECE($GET(^DGCR(399,IEN399,0)),U,21)
IF (CURR'="T")&(CURR'="S")
QUIT
+36 WRITE !!,"Warning - selected EEOB has secondary claims and may have tertiary claims"
End DoDot:1
+37 ;
+38 ;Lock Original EOB
+39 if '$$LOCK^IBCEOB4(ORIG)
QUIT
+40 ;
+41 ;Remove Option
+42 IF MODE="R"
DO REMOVE(ORIG,MODE)
DO EXIT
QUIT
+43 ;
+44 ;Select Claim(s) to Move/Copy to
+45 NEW RCBILL,RCBILLNM,NCLAIM,NCLAIMX,QUIT,SUB,LIT
+46 SET SUB=0
SET QUIT=0
SET LIT=""
+47 WRITE !
+48 FOR
Begin DoDot:1
+49 ;Allow selection of a third party claim
+50 IF MODE="M"
SET DIC("A")="Select A/R Bill to MOVE to: "
+51 IF MODE="C"
SET DIC("A")="Select "_LIT_"A/R Bill to COPY to: "
+52 SET DIC="^PRCA(430,"
SET DIC(0)="AEMQ"
SET DIC("S")="I $D(^DGCR(399,+Y,0))&($$VALSTAT^RCDPEM5(+Y))"
+53 DO ^DIC
KILL DIC
+54 IF Y'>0
SET QUIT=1
QUIT
+55 SET RCBILL=+Y
SET RCBILLNM=$PIECE($PIECE(Y,U,2),"-",2)
+56 IF ORIGNAM=RCBILLNM
IF MODE="M"
WRITE !,"Cannot move EEOB to same claim"
QUIT
+57 IF $DATA(NCLAIMX(RCBILL))
WRITE !,"Claim already entered"
QUIT
+58 SET SUB=SUB+1
SET NCLAIM(SUB)=RCBILL
SET NCLAIMX(RCBILL)=""
+59 if MODE="C"
SET LIT="another "
End DoDot:1
if QUIT
QUIT
if SUB&(MODE="M")
QUIT
+60 ;
+61 IF $GET(DUOUT)!$GET(DIROUT)
DO EXIT
QUIT
+62 ;
+63 ;User Exit or no claims selected
+64 IF '$ORDER(NCLAIM(""))
DO EXIT
QUIT
+65 ;
+66 ;Prompt user to continue
+67 NEW DIR,X,Y,DIROUT
+68 SET DIR(0)="Y"
SET DIR("B")="YES"
+69 SET DIR("A")=$$PROMPT(ORIG,.NCLAIM,MODE)
+70 WRITE !
DO ^DIR
+71 ;
+72 IF $GET(DIROUT)!$GET(DUOUT)!(Y=0)
DO EXIT
QUIT
+73 ;
+74 ;Enter Justification Comment
+75 NEW DIR,DIROUT,DUOUT,JCOM,X,Y
+76 SET DIR(0)="FA^1:100^K:$TR(X,"" "","""")="""" X"
SET DIR("A")="Enter JUSTIFICATION COMMENT: "
+77 WRITE !
DO ^DIR
IF $GET(DIROUT)!$GET(DUOUT)
WRITE !!,"Update not performed"
DO EXIT
QUIT
+78 SET JCOM=Y
+79 ;
+80 ;Update EOB
+81 DO UPDATE(ORIG,.NCLAIM,MODE,JCOM)
DO EXIT
+82 ;
+83 QUIT
+84 ;
+85 ;Unlock original EOB
EXIT DO UNLOCK^IBCEOB4(ORIG)
+1 QUIT
+2 ;
+3 ;File EOB #361.1 changes - Integration Agreement 5671 for IBCEOB4
UPDATE(ORIG,NCLAIM,MODE,JUST) ;
+1 ; Input - ORIG - Original EOB
+2 ; - NCLAIM - New claim (s)
+3 ; - MODE M=Move C=Copy
+4 ; - JUST = User input justification text
+5 ; Output - Updates EOB and Audit log
+6 NEW JUST1
+7 ;Move EOB
+8 IF MODE="M"
Begin DoDot:1
+9 ;Auto generate text for AR comments on original claim
+10 SET JUST1=$$JUST1(ORIG,.NCLAIM,"M",0)
+11 ;Update AR Comments on the 'from bill'
+12 DO AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
+13 ;Change claim number on EEOB
+14 DO MOVE^IBCEOB4(ORIG,NCLAIM(1),DUZ,$$NOW^XLFDT,JUST,MODE)
+15 ;Update AR Comments on 'to bill'
+16 DO AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
End DoDot:1
+17 ;Copy EOB
+18 IF MODE="C"
Begin DoDot:1
+19 DO COPY^IBCEOB4(ORIG,.NCLAIM,DUZ,$$NOW^XLFDT,JUST,MODE)
+20 ;Auto generate text for AR comments on original claim
+21 SET JUST1=$$JUST1(ORIG,.NCLAIM,"C",0)
+22 ;Update AR Comments on original claim
+23 DO AUDIT^RCDPAYER(ORIG,JUST_"^"_JUST1,MODE)
+24 ;Auto generate text for AR comments on new claim
+25 SET JUST1=$$JUST1(ORIG,.NCLAIM,"C",1)
+26 ;Update AR Comments on new claims
+27 NEW SUB,NEWEOB
+28 SET SUB=0
+29 FOR
SET SUB=$ORDER(NCLAIM(SUB))
if 'SUB
QUIT
Begin DoDot:2
+30 ;Convert Claim pointer to EOB pointer
+31 SET NEWEOB=$ORDER(^IBM(361.1,"B",NCLAIM(SUB),0))
if 'NEWEOB
QUIT
+32 DO AUDIT^RCDPAYER(NEWEOB,JUST_"^"_JUST1,MODE)
End DoDot:2
End DoDot:1
+33 WRITE !!,"EEOB Update Complete"
HANG 1
+34 QUIT
+35 ;
PROMPT(ORIG,NCLAIM,MODE) ;Construct prompt text
+1 ; Input - ORIG - Original EOB
+2 ; - NCLAIM - New claim (s)
+3 ; - MODE M=Move C=Copy
+4 ; Output - Justification text
+5 ;
+6 NEW FIRST,STR,STR1,SUB,TEXT
+7 ;Move or copy text
+8 SET TEXT=$$EXTERNAL^DILFD(361.1,.01,,$PIECE($GET(^IBM(361.1,ORIG,0)),U))
+9 IF MODE="M"
SET STR="Move EEOB from claim "_TEXT_" to claim "
+10 IF '$TEST
SET STR="Copy EEOB from claim "_TEXT_" to claim(s) "
+11 ;Build list of claims
+12 SET STR1=""
SET SUB=""
SET FIRST=1
+13 FOR
SET SUB=$ORDER(NCLAIM(SUB))
if 'SUB
QUIT
Begin DoDot:1
+14 SET TEXT=$PIECE($GET(^PRCA(430,NCLAIM(SUB),0)),U)
+15 IF FIRST
SET STR1=STR1_$PIECE(TEXT,"-",2)
SET FIRST=0
QUIT
+16 SET STR1=STR1_", "_$PIECE(TEXT,"-",2)
End DoDot:1
+17 ;Return full prompt text
+18 QUIT STR_STR1_" "
+19 ;
JUST(ORIG,NCLAIM,MODE,TYPE,SRC) ;Construct justification text for automatic updates
+1 ; Input - ORIG - Original EOB
+2 ; - NCLAIM - New claim (s)
+3 ; - MODE - "M" = Move "C" =Copy "R" = Remove
+4 ; - TYPE - 0 = old EOB 1 = new EOB
+5 ; - SRC - "W" = Worklist "A" = Auto-post, "L" = Link Payment
+6 ; Output - Justification text
+7 NEW FIRST,STR,STR1,SUB,TEXT
+8 ;Original bill number
+9 SET TEXT=$$EXTERNAL^DILFD(361.1,.01,,$PIECE($GET(^IBM(361.1,ORIG,0)),U))
+10 ;Justification comment for original EOB
+11 IF TYPE=0
Begin DoDot:1
+12 ;PRCA*4.5*321
IF MODE="R"
SET STR="EEOB removed from claim "_TEXT
SET STR1=""
QUIT
+13 IF MODE="M"
SET STR="EEOB from claim "_TEXT_" moved to claim "
+14 IF MODE="C"
SET STR="EEOB from claim "_TEXT_" copied to claim(s) "
+15 ;Build list of claims
+16 SET STR1=""
SET SUB=""
SET FIRST=1
+17 FOR
SET SUB=$ORDER(NCLAIM(SUB))
if 'SUB
QUIT
Begin DoDot:2
+18 SET TEXT=$PIECE($GET(^PRCA(430,NCLAIM(SUB),0)),U)
+19 IF FIRST
SET STR1=STR1_$PIECE(TEXT,"-",2)
SET FIRST=0
QUIT
+20 SET STR1=STR1_", "_$PIECE(TEXT,"-",2)
End DoDot:2
End DoDot:1
+21 ;Justification comment for new EOB's
+22 IF TYPE=1
Begin DoDot:1
+23 IF MODE="M"
SET STR="EEOB moved from EEOB for claim "_TEXT
SET STR1=""
+24 IF MODE="C"
SET STR="EEOB copied from EEOB for claim "_TEXT
SET STR1=""
End DoDot:1
+25 ;Return full justification text
+26 QUIT STR_STR1_" automatically by "_$SELECT(SRC="A":"Auto-post",SRC="L":"Link Payment",1:"Worklist")
+27 ;
JUST1(ORIG,NCLAIM,MODE,TYPE) ;Construct AR comment for stand-alone MCR option
+1 ; Input - ORIG - Original EOB
+2 ; - NCLAIM - New claim (s)
+3 ; - MODE M=Move C=Copy
+4 ; - TYPE = 0 - original EOB 1 - new EOB(s)
+5 ; Output - Justification text
+6 NEW FIRST,STR,STR1,SUB,TEXT
+7 ;Original bill number
+8 SET TEXT=$$EXTERNAL^DILFD(361.1,.01,,$PIECE($GET(^IBM(361.1,ORIG,0)),U))
+9 ;Justification comment for original EOB
+10 IF TYPE=0
Begin DoDot:1
+11 IF MODE="M"
SET STR="EEOB from claim "_TEXT_" moved to claim "
+12 IF MODE="C"
SET STR="EEOB from claim "_TEXT_" copied to claim(s) "
+13 ;Build list of claims
+14 SET STR1=""
SET SUB=""
SET FIRST=1
+15 FOR
SET SUB=$ORDER(NCLAIM(SUB))
if 'SUB
QUIT
Begin DoDot:2
+16 SET TEXT=$PIECE($GET(^PRCA(430,NCLAIM(SUB),0)),U)
+17 IF FIRST
SET STR1=STR1_$PIECE(TEXT,"-",2)
SET FIRST=0
QUIT
+18 SET STR1=STR1_", "_$PIECE(TEXT,"-",2)
End DoDot:2
End DoDot:1
+19 ;Justification comment for new EOB's
+20 IF TYPE=1
Begin DoDot:1
+21 IF MODE="M"
SET STR="EEOB moved from EEOB for claim "_TEXT
SET STR1=""
+22 IF MODE="C"
SET STR="EEOB copied from EEOB for claim "_TEXT
SET STR1=""
End DoDot:1
+23 ;Return comment text
+24 QUIT STR_STR1
+25 ;
FINDEOB(IEN3444,BILL) ;Find EOB for a claim within an ERA
+1 ; Input - IEN3444 = ERA ien
+2 ; BILL = Bill number
+3 ; Output - IEN of EOB in #361.1
+4 NEW IEN3611,SUB
+5 SET (SUB,IEN3611)=0
+6 FOR
SET SUB=$ORDER(^RCY(344.4,IEN3444,1,"AC",SUB))
if 'SUB
QUIT
Begin DoDot:1
+7 IF $$EXTERNAL^DILFD(344.41,.02,,SUB)=BILL
SET IEN3611=SUB
End DoDot:1
if IEN3611
QUIT
+8 QUIT IEN3611
+9 ;
REMOVE(ORIG,MODE) ; Interactive option to Remove EEOB - PRCA*4.5*298
+1 ; Input - ORIG = original EOB in #361.1
+2 ; Output - mode = "R"
+3 ;
+4 ;Prompt user to continue
+5 NEW DIR,X,Y,DIROUT
+6 SET DIR(0)="Y"
SET DIR("B")="YES"
+7 SET DIR("A")="Are you sure you want to remove EEOB from claim "_ORIGNAM_" (Y/N)?"
+8 WRITE !
DO ^DIR
+9 ;
+10 IF $GET(DIROUT)!$GET(DUOUT)!(Y=0)
QUIT
+11 ;
+12 ;Enter Justification Comment
+13 NEW DIR,DIROUT,DUOUT,JUST,X,Y
+14 SET DIR(0)="FA^1:100^K:$TR(X,"" "","""")="""" X"
SET DIR("A")="Enter JUSTIFICATION COMMENT: "
+15 WRITE !
DO ^DIR
IF $GET(DIROUT)!$GET(DUOUT)
WRITE !!,"Update not performed"
DO EXIT
QUIT
+16 SET JUST=Y
+17 ;
+18 ;Update EEOB
+19 DO REMOVE^IBCEOB4(ORIG,DUZ,JUST)
+20 ;Update AR Comments for removed claim
+21 DO AUDIT^RCDPAYER(ORIG,JUST,MODE)
+22 ;
+23 WRITE !!,"EEOB Update Complete"
HANG 1
+24 QUIT
+25 ;
VALSTAT(CLIEN) ; validation on current status of the AR claim selected for the move/copy event
+1 ; Claims that are in a incomplete state cannot be selected
+2 ; incomplete states are determined at CURRENT STATUS (8,430) of the AR claim
+3 ; AR claims with 'BILL INCOMPLETE', 'INCOMPLETE', 'NEW BILL' statuses cannot be selected
+4 ; CLIEN=430 ien
+5 ; returns 0 or 1
+6 NEW CSTAT,FLAG
+7 SET CSTAT=$$GET1^DIQ(430,CLIEN,8)
+8 SET FLAG=$SELECT(CSTAT="BILL INCOMPLETE":0,CSTAT="INCOMPLETE":0,CSTAT="NEW BILL":0,1:1)
+9 QUIT FLAG
+10 ;
+11 ; BEGIN - PRCA*4.5*321
AUTO(OBILL,RCSPLIT,RCERA,SRC,ORIG) ;EP from RCDPEM and RCDPEMA
+1 ; Automatic move copy of EOB
+2 ; Input: OBILL - Original Bill number in #399
+3 ; RCSPLIT - Array of split lines
+4 ; RCERA - ERA ien #344.4
+5 ; SRC - "W" = Worklist "A" = APAR/Autopost
+6 ; ORIG - IEN of EOB in file #361.1
+7 ; Output - Update EOBs and audit trail
+8 ; PRCA*4.5*332
NEW CCLAIM,FLAG,IFN,J,NCLAIM,NBILL,JUST,JUST1,SUB,SUB1,VALID
+9 ; EOB for the original claim must be present
+10 IF 'ORIG
QUIT 1
+11 ; ; PRCA*4.5*332
SET (SUB,SUB1)=0
SET VALID=1
+12 ; PRCA*4.5*332 Initialize flags for original, new and suspense EEOBs
FOR J="O","N","S"
SET FLAG(J)=0
+13 ; Loop through split lines
+14 FOR
SET SUB=$ORDER(RCSPLIT(SUB))
if 'SUB
QUIT
Begin DoDot:1
+15 ; Bill Number on split line
+16 SET NBILL=$PIECE(RCSPLIT(SUB),U,2)
+17 ; PRCA*4.5*332
SET IFN=$PIECE(RCSPLIT(SUB),U,7)
+18 ; Ignore split lines with zero value
+19 if +$PIECE(RCSPLIT(SUB),U,3)=0
QUIT
+20 ; Suspense claims, piece 7 is pointer to AR claim file 430
+21 ; PRCA*4.5*332
IF 'IFN
SET FLAG("S")=1
QUIT
+22 ; Is original bill is in the array?
+23 ; PRCA*4.5*332
IF OBILL=NBILL
SET FLAG("O")=1
+24 ; Save POINTER to AR Claim file 430 (DINUM to 399)
+25 SET SUB1=SUB1+1
SET NCLAIM(SUB1)=IFN
+26 ; Build list of new claims to copy
+27 ; PRCA*4.5*332
IF OBILL'=NBILL
Begin DoDot:2
+28 ; PRCA*4.5*332
SET CCLAIM(IFN)=IFN
+29 ; PRCA*4.5*332
SET FLAG("N")=1
End DoDot:2
End DoDot:1
+30 ;
+31 ; No new claims. Payment must have been split to suspense, or suspense and original payment - no action
+32 ; PRCA*4.5*332
IF 'FLAG("N")
QUIT 1
+33 ;
+34 ; Lock Original EOB
+35 IF '$$LOCK(ORIG)
QUIT 0
+36 ;
+37 ; PRCA*4.5*332 - Start modified code block
+38 ; If split to single new claim move EOB - i.e. change claim number on EOB
+39 ;
IF SUB1=1
IF 'FLAG("S")
Begin DoDot:1
+40 ; Change claim number on original EOB attached to ERA
+41 ; PRCA*4.5*332
DO AUTOMOVE(ORIG,.NCLAIM,SRC)
End DoDot:1
+42 ;
+43 ; Split was to multiple new claims or new claim(s) and suspense - copy original EOB to new claim(s)
+44 ;
IF '$TEST
Begin DoDot:1
+45 ; Copy EOB to new EOBs for "to" claims
+46 ; PRCA*4.5*332
DO AUTOCOPY(ORIG,.CCLAIM,SRC)
+47 ; If no money went to suspense or the original EOB
+48 ; mark original EOB removed but with text of 'copied to claims....'
+49 ;
IF 'FLAG("O")
IF 'FLAG("S")
Begin DoDot:2
+50 SET JUST=$$JUST(ORIG,.CCLAIM,"C",0,SRC)_" then removed"
+51 DO AUTOREM(ORIG,JUST)
End DoDot:2
End DoDot:1
+52 ; PRCA*4.5*332 - End modified code block
+53 ;
+54 DO UNLOCK(ORIG)
+55 QUIT 1
+56 ;
AUTOREM(ORIG,JUST) ;Silent remove of EEOB where entire payment is suspensed or moved to other claims
+1 ; Input - ORIG = EOB in #361.1
+2 ; JUST = Justification text
+3 ; Output - Update EOB in #361.1 and audit trail
+4 ;
+5 ;Lock Original EOB
+6 IF '$$LOCK(ORIG)
QUIT
+7 ;Update EEOB
+8 DO REMOVE^IBCEOB4(ORIG,DUZ,JUST)
+9 ;Update AR Comments for removed claim
+10 DO AUDIT^RCDPAYER(ORIG,JUST,"R")
+11 ;Unlock original EOB
+12 DO UNLOCK(ORIG)
+13 ;
+14 QUIT
+15 ;
AUTOCOPY(ORIG,CCLAIM,SRC) ; EP from RCDPEU2 - Copy EOBs and upate AR TRANSACTION file - PRCA*4.5*332
+1 ; Input: ORIG - IEN for file 361.1 of original EOB
+2 ; CCLAIM - Array of claims to copy to
+3 ; SRC - "W" = Worklist "A" = APAR/Autopost "L" = Link Payments
+4 NEW JUST,JUST1,MODE,SUB,NEWEOB
+5 SET MODE=$SELECT(SRC="L":"L",1:"W")
+6 ; Text for original EEOB (copied to claims x,y,z - then removed)
SET JUST=$$JUST(ORIG,.CCLAIM,"C",0,SRC)
+7 ; Text for copied to EEOB (copied from claim w)
SET JUST1=$$JUST(ORIG,.CCLAIM,"C",1,SRC)
+8 ; Copy EOB to new EOBs for "to" claims
+9 DO COPY^IBCEOB4(ORIG,.CCLAIM,DUZ,$$NOW^XLFDT,JUST1,"C")
+10 ;
+11 ; Auto generate text for AR comments on original claim
+12 DO AUDIT^RCDPAYER(ORIG,JUST,MODE)
+13 ; Auto generate text for AR comments on new claim
+14 SET SUB=0
+15 FOR
SET SUB=$ORDER(CCLAIM(SUB))
if 'SUB
QUIT
Begin DoDot:1
+16 ; Convert Claim pointer to EOB pointer
+17 SET NEWEOB=$ORDER(^IBM(361.1,"B",CCLAIM(SUB),""),-1)
if 'NEWEOB
QUIT
+18 DO AUDIT^RCDPAYER(NEWEOB,JUST1,MODE)
End DoDot:1
+19 QUIT
+20 ;
AUTOMOVE(ORIG,NCLAIM,SRC) ; EP from RCDPEU2 - Move EOB from one claim to another PRCA*4.5*332
+1 ; Input: ORIG - IEN for file 361.1 of original EOB
+2 ; NCLAIM - Array of new claims
+3 ; SRC - "W" = Worklist "A" = APAR/Autopost "L" = Link Payments
+4 NEW JUST,JUST1,MODE,SUB
+5 SET MODE=$SELECT(SRC="L":"L",1:"W")
+6 ;Just. Text for original claim
SET JUST=$$JUST(ORIG,.NCLAIM,"M",0,SRC)
+7 ;Just. Text for new claim
SET JUST1=$$JUST(ORIG,.NCLAIM,"M",1,SRC)
+8 ; Update AR Transaction for original claim
+9 DO AUDIT^RCDPAYER(ORIG,JUST,MODE)
+10 ; Change claim number on original EOB attached to ERA
+11 DO MOVE^IBCEOB4(ORIG,NCLAIM(1),DUZ,$$NOW^XLFDT,JUST,"M")
+12 ; Update AR Transaction for new claim
+13 DO AUDIT^RCDPAYER(ORIG,JUST1,MODE)
+14 QUIT
+15 ;
+16 ;Read access to file #361.1 under IA 4051
LOCK(EOBIEN) ;Lock Original EOB
+1 LOCK +^IBM(361.1,EOBIEN):5
IF $TEST
QUIT 1
+2 QUIT 0
+3 ;
UNLOCK(EOBIEN) ;Release EOB
+1 LOCK -^IBM(361.1,EOBIEN)
+2 QUIT
+3 ; END PRCA*4.5*321
+4 ;
+5 ;US1394 ADDITIONS - EP RCDPRPL1 and RCDPLPL3
EEOB(RCRCPT,RCTRANDA) ; Option to restore associated suspended/removed EEOB
+1 ;
+2 ; INPUT - RCRCPT - Receipt ien #344
+3 ; - RCTRANDA - Receipt line #344.01
+4 ;
+5 ; OUTPUT - RCEEOB - selected EEOB ien #361.1
+6 ; or 0 if no EEOB
+7 ; or -1 if ^ abort
+8 ;
+9 NEW CLAIM,DIROUT,DTOUT,DUOUT,RCEEOB,RCEEOBH,RCERA,RCLINE
+10 ; Get new claim IEN from receipt line
+11 SET CLAIM=$$GET1^DIQ(344.01,RCTRANDA_","_RCRCPT_",",.09,"I")
+12 ; Quit if this is not a third party claim payment
+13 if CLAIM'["PRCA"
QUIT 0
+14 ; Check if ERA has a suspended EEOB for this line
+15 SET RCEEOB=$$SUSP(RCRCPT,RCTRANDA,.RCERA,.RCLINE)
+16 ; If no suspended EEOB skip prompt
+17 if 'RCEEOB
QUIT 0
+18 ;
+19 ; Get last move/copy history record - Read access to file #361.1 under IA 4051
+20 SET RCEEOBH=$ORDER(^IBM(361.1,RCEEOB,101,"A"),-1)
+21 ; Quit if EEOB if no history found - should not occur since EEOB is suspended
+22 if 'RCEEOBH
QUIT 0
+23 ; Display EOB detail
+24 WRITE !!,"This claim has an associated EEOB on ERA "_RCERA
+25 WRITE !!,"Claim Number : ",$$GET1^DIQ(344.41,RCLINE_","_RCERA,.02,"E")
+26 WRITE !,"Trace Number : ",$$GET1^DIQ(344.4,RCERA,.02,"E")
+27 WRITE !,"Total Amount Paid: ",$$GET1^DIQ(361.1,RCEEOB,1.01,"E")
+28 WRITE !,"Date/Time Removed: ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.01,"E")
+29 WRITE !,"Removed by : ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.02,"E")
+30 WRITE !,"Justification : ",$$GET1^DIQ(361.1101,RCEEOBH_","_RCEEOB,.03,"E"),!
+31 ;
+32 ; Confirm that this is the correct EEOB
+33 KILL DIR
+34 SET DIR(0)="YO"
SET DIR("B")="NO"
+35 SET DIR("A")="Is this the correct EEOB to associate with this claim"
+36 DO ^DIR
+37 IF $GET(DTOUT)!($GET(DUOUT))
QUIT -1
+38 if Y'=1
QUIT 0
+39 ;
+40 ;Return selected EEOB
+41 QUIT RCEEOB
+42 ;
SUSP(RCRCPT,RCTRANDA,RCERA,RCLINE) ; Identify suspended EEOB
+1 ;
+2 ; INPUT - RCRCPT - Receipt ien #344
+3 ; - RCTRANDA - Receipt line #344.01
+4 ;
+5 ; OUTPUT - RCEEOB - selected EEOB ien #361.1
+6 ; - RCERA - ERA ien #344.4
+7 ; - RCLINE - ERA line #344.41;
+8 ;
+9 NEW RCEEOB,RCORIG,RCRCZ,RCSPLIT
+10 ; Get ERA from receipt
+11 SET RCERA=$$GET1^DIQ(344,RCRCPT_",",.18,"I")
+12 ; Quit if no ERA
+13 if 'RCERA
QUIT 0
+14 ; Get ERA Scratchpad line
+15 SET RCRCZ=$$GET1^DIQ(344.01,RCTRANDA_","_RCRCPT_",",.27,"I")
+16 ; Quit if ERA scratchpad line missing
+17 if 'RCRCZ
QUIT 0
+18 ; Get the original line sequence number from before the split was performed
+19 SET RCSPLIT=$$GET1^DIQ(344.491,RCRCZ_","_RCERA_",",.01)
SET RCORIG=RCSPLIT\1
+20 ; Convert sequence number into original line IEN
+21 SET RCORIG=$ORDER(^RCY(344.49,RCERA,1,"ASEQ",RCORIG,""))
+22 ; Quit if original scratchpad line not found
+23 if 'RCORIG
QUIT 0
+24 ; Get ERA line from original scratchpad line
+25 SET RCLINE=$$GET1^DIQ(344.491,RCORIG_","_RCERA_",",.09,"I")
+26 ; Quit if ERA line not found
+27 if 'RCLINE
QUIT 0
+28 ; Get EEOB from ERA line
+29 SET RCEEOB=$$GET1^DIQ(344.41,RCLINE_","_RCERA_",",.02,"I")
+30 ; Quit if ERA line pointer to EEOB is missing
+31 if 'RCEEOB
QUIT 0
+32 ; Ignore EEOB if status is not removed - read access to file #361.1 under IA 4051
+33 if $$GET1^DIQ(361.1,RCEEOB_",",102,"I")'=1
QUIT 0
+34 ; Return suspended EEOB IEN
+35 QUIT RCEEOB
+36 ;
+37 ; EP RCDPRPL1 and RCDPLPL3
RESTORE(RCPTDA,RCTRANDA,ORIG,SRC) ; Change bill number on EOB and clear 'removed' status
+1 ;
+2 ; INPUT - RCPTDA - Receipt ien #344
+3 ; - RCTRANDA - Receipt line #344.01
+4 ; - ORIG - EOB ien #361.1
+5 ; - SRC - 'L' - Link Payments 'R' - Receipt Porcessing
+6 ;
+7 if '$$LOCK^IBCEOB4(ORIG)
QUIT
+8 ;
+9 WRITE !,"Updating EEOB...."
+10 ;
+11 NEW NCLAIM,JUST
+12 ; Get new claim IEN from receipt line
+13 SET NCLAIM=$PIECE($$GET1^DIQ(344.01,RCTRANDA_","_RCPTDA_",",.09,"I"),";")
+14 ; Set up justification text
+15 SET JUST="EEOB restored from suspense in "_$SELECT(SRC="L":"Link Payments",SRC="R":"Edit Payments",1:"Other")
+16 ; Update AR comments on 'from claim'
+17 DO AUDIT^RCDPAYER(ORIG,JUST,"W")
+18 ; Change claim number on EOB
+19 DO MOVE^IBCEOB4(ORIG,NCLAIM,DUZ,$$NOW^XLFDT,JUST,"M")
+20 ; Reset EEOB REMOVED status
+21 DO RESTORE^IBCEOB4(ORIG)
+22 ;Unlock EOB
+23 DO UNLOCK^IBCEOB4(ORIG)
+24 ;
+25 HANG 1
WRITE "done"
+26 QUIT