| 1 | BPSECA8 ;BHAM ISC/FCS/DRS/VA/DLF - construct a claim reversal ;05/17/04
|
---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | ; REVERSE - The way we build the claim reversal is to take the
|
---|
| 6 | ; source data from the original claim (CLAIMIEN) and position therein (POS).
|
---|
| 7 | ;
|
---|
| 8 | ; Remember, you have two 401 fields - one in header, one in prescription.
|
---|
| 9 | ;
|
---|
| 10 | ; 5.1 Updates
|
---|
| 11 | ; There are new fields to consider in the 5.1 reversal process, in
|
---|
| 12 | ; addition to a new value for the transaction code (B2)
|
---|
| 13 | ;
|
---|
| 14 | ; Input
|
---|
| 15 | ; IEN59 - Transaction number
|
---|
| 16 | ; Returns REVIEN of the reversal claim created
|
---|
| 17 | ;
|
---|
| 18 | REVERSE(IEN59) ;EP - from BPSOSRB
|
---|
| 19 | ;
|
---|
| 20 | ; Variable initialization
|
---|
| 21 | N CLAIM,RXMULT,BPSFORM,BPS,I,TMP
|
---|
| 22 | N DIC,DR,DIQ,DIE,DA,X,DLAYGO,REVIEN,Y,UERETVAL
|
---|
| 23 | S CLAIM=9002313.02,RXMULT=9002313.0201
|
---|
| 24 | ;
|
---|
| 25 | ; Check IEN59
|
---|
| 26 | I $G(IEN59)="" Q 0
|
---|
| 27 | ;
|
---|
| 28 | ; Needed for Turn-Around Stats - Do NOT delete/alter!!
|
---|
| 29 | D LOG^BPSOSL(IEN59,$T(+0)_"-Gathering claim information")
|
---|
| 30 | ;
|
---|
| 31 | ; Get Claim and multiple POS
|
---|
| 32 | N CLAIMIEN,POS
|
---|
| 33 | S CLAIMIEN=$P(^BPST(IEN59,0),U,4)
|
---|
| 34 | I CLAIMIEN="" Q 0
|
---|
| 35 | S POS=$O(^BPSC(CLAIMIEN,400,0))
|
---|
| 36 | I POS="" Q 0
|
---|
| 37 | ;
|
---|
| 38 | ; Get reversal payer sheet. If missing, quit
|
---|
| 39 | S BPSFORM=$$GET1^DIQ(9002313.59902,"1,"_IEN59_",","902.19","I")
|
---|
| 40 | I BPSFORM="" Q 0
|
---|
| 41 | ;
|
---|
| 42 | ; Get data from original claim request
|
---|
| 43 | S DR="**",DIQ="TMP",DIQ(0)="I"
|
---|
| 44 | D GETS^DIQ(CLAIM,CLAIMIEN,DR,DIQ(0),DIQ)
|
---|
| 45 | ;
|
---|
| 46 | ; Update CLAIMIEN to match CLAIMIEN format in TMP
|
---|
| 47 | S CLAIMIEN=CLAIMIEN_","
|
---|
| 48 | ;
|
---|
| 49 | ; Execute special code in reversal payer sheets
|
---|
| 50 | D REFORM^BPSOSHR(BPSFORM,CLAIMIEN,POS)
|
---|
| 51 | ;
|
---|
| 52 | ; Create a new claim record and use function to get the Claim ID
|
---|
| 53 | R2 S DIC=CLAIM,DIC(0)="LX",DLAYGO=CLAIM
|
---|
| 54 | S X=$$CLAIMID^BPSECX1(IEN59)
|
---|
| 55 | I X="" Q 0
|
---|
| 56 | D ^DIC
|
---|
| 57 | S REVIEN=+Y
|
---|
| 58 | I REVIEN<1 Q 0
|
---|
| 59 | ;
|
---|
| 60 | ; Needed for Turn-Around Stats - Do NOT delete/alter!!
|
---|
| 61 | D LOG^BPSOSL(IEN59,$T(+0)_"-Created claim ID "_X_" ("_REVIEN_")")
|
---|
| 62 | ;
|
---|
| 63 | ; Create a new prescription multiple for the claim
|
---|
| 64 | R4 S DIC="^BPSC("_REVIEN_",400,",DIC(0)="LX"
|
---|
| 65 | S DIC("P")=$P(^DD(CLAIM,400,0),U,2)
|
---|
| 66 | S DA(1)=REVIEN,DLAYGO=RXMULT,X=1
|
---|
| 67 | D ^DIC
|
---|
| 68 | I +Y'=1 D G:UERETVAL R4
|
---|
| 69 | . S UERETVAL=$$IMPOSS^BPSOSUE("FM,P",,"call to ^DIC","for multiple",,$T(+0))
|
---|
| 70 | ;
|
---|
| 71 | ; Update claim with new values
|
---|
| 72 | S DIE=CLAIM,DA=REVIEN,DR=""
|
---|
| 73 | F I=.03,.04,1.01,1.04,101,102,104,110,201,202,302,304,305,310,311,331,332,401 D
|
---|
| 74 | . S DR=DR_I_"////"_$G(TMP(CLAIM,CLAIMIEN,I,"I"))_";"
|
---|
| 75 | ; Add fields that do not come from the claim
|
---|
| 76 | ; Payer sheet is the reversal sheet, Created On is current date/time
|
---|
| 77 | ; Transaction Code is B2 and Transaction Count is 1
|
---|
| 78 | S DR=DR_".02////"_BPSFORM_";.06////"_$$NOWFM^BPSOSU1()
|
---|
| 79 | S DR=DR_";103////B2;109////1"
|
---|
| 80 | D ^DIE
|
---|
| 81 | ;
|
---|
| 82 | ; Update multiple with new values
|
---|
| 83 | S DIE="^BPSC("_REVIEN_",400,"
|
---|
| 84 | S DA(1)=REVIEN,DA=1,DR=""
|
---|
| 85 | F I=.03,.04,.05,308,401,402,403,407,418,420,436,438,455 D
|
---|
| 86 | . S DR=DR_I_"////"_$G(TMP(RXMULT,POS_","_CLAIMIEN,I,"I"))_";"
|
---|
| 87 | S DR=$E(DR,1,$L(DR)-1) ; get rid of extra trailing ";"
|
---|
| 88 | D ^DIE
|
---|
| 89 | ;
|
---|
| 90 | Q REVIEN
|
---|