| 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
 | 
|---|