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  Sep 23, 2025@19:20:52                                                                                                                                                                                                    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