Released BPS*1*12 SEQ #11 Extracted from mail message **KIDS**:BPS*1.0*12^ **INSTALL NAME** BPS*1.0*12 "BLD",8687,0) BPS*1.0*12^E CLAIMS MGMT ENGINE^0^3111026^y "BLD",8687,1,0) ^^2^2^3111019^ "BLD",8687,1,1,0) Modify reversal process to get the reversal payer sheet from the pharmacy "BLD",8687,1,2,0) plan. "BLD",8687,4,0) ^9.64PA^^ "BLD",8687,6.3) 2 "BLD",8687,"ABPKG") n "BLD",8687,"KRN",0) ^9.67PA^779.2^20 "BLD",8687,"KRN",.4,0) .4 "BLD",8687,"KRN",.401,0) .401 "BLD",8687,"KRN",.402,0) .402 "BLD",8687,"KRN",.403,0) .403 "BLD",8687,"KRN",.5,0) .5 "BLD",8687,"KRN",.84,0) .84 "BLD",8687,"KRN",3.6,0) 3.6 "BLD",8687,"KRN",3.8,0) 3.8 "BLD",8687,"KRN",9.2,0) 9.2 "BLD",8687,"KRN",9.8,0) 9.8 "BLD",8687,"KRN",9.8,"NM",0) ^9.68A^1^1 "BLD",8687,"KRN",9.8,"NM",1,0) BPSECA8^^0^B28856161 "BLD",8687,"KRN",9.8,"NM","B","BPSECA8",1) "BLD",8687,"KRN",19,0) 19 "BLD",8687,"KRN",19.1,0) 19.1 "BLD",8687,"KRN",101,0) 101 "BLD",8687,"KRN",409.61,0) 409.61 "BLD",8687,"KRN",771,0) 771 "BLD",8687,"KRN",779.2,0) 779.2 "BLD",8687,"KRN",870,0) 870 "BLD",8687,"KRN",8989.51,0) 8989.51 "BLD",8687,"KRN",8989.52,0) 8989.52 "BLD",8687,"KRN",8994,0) 8994 "BLD",8687,"KRN","B",.4,.4) "BLD",8687,"KRN","B",.401,.401) "BLD",8687,"KRN","B",.402,.402) "BLD",8687,"KRN","B",.403,.403) "BLD",8687,"KRN","B",.5,.5) "BLD",8687,"KRN","B",.84,.84) "BLD",8687,"KRN","B",3.6,3.6) "BLD",8687,"KRN","B",3.8,3.8) "BLD",8687,"KRN","B",9.2,9.2) "BLD",8687,"KRN","B",9.8,9.8) "BLD",8687,"KRN","B",19,19) "BLD",8687,"KRN","B",19.1,19.1) "BLD",8687,"KRN","B",101,101) "BLD",8687,"KRN","B",409.61,409.61) "BLD",8687,"KRN","B",771,771) "BLD",8687,"KRN","B",779.2,779.2) "BLD",8687,"KRN","B",870,870) "BLD",8687,"KRN","B",8989.51,8989.51) "BLD",8687,"KRN","B",8989.52,8989.52) "BLD",8687,"KRN","B",8994,8994) "BLD",8687,"QUES",0) ^9.62^^ "BLD",8687,"REQB",0) ^9.611^1^1 "BLD",8687,"REQB",1,0) BPS*1.0*10^2 "BLD",8687,"REQB","B","BPS*1.0*10",1) "MBREQ") 0 "PKG",570,-1) 1^1 "PKG",570,0) E CLAIMS MGMT ENGINE^BPS^ELECTRONIC CLAIMS MGT "PKG",570,20,0) ^9.402P^^ "PKG",570,22,0) ^9.49I^1^1 "PKG",570,22,1,0) 1.0^3041008^3041108^66481 "PKG",570,22,1,"PAH",1,0) 12^3111026 "PKG",570,22,1,"PAH",1,1,0) ^^2^2^3111026 "PKG",570,22,1,"PAH",1,1,1,0) Modify reversal process to get the reversal payer sheet from the pharmacy "PKG",570,22,1,"PAH",1,1,2,0) plan. "QUES","XPF1",0) Y "QUES","XPF1","??") ^D REP^XPDH "QUES","XPF1","A") Shall I write over your |FLAG| File "QUES","XPF1","B") YES "QUES","XPF1","M") D XPF1^XPDIQ "QUES","XPF2",0) Y "QUES","XPF2","??") ^D DTA^XPDH "QUES","XPF2","A") Want my data |FLAG| yours "QUES","XPF2","B") YES "QUES","XPF2","M") D XPF2^XPDIQ "QUES","XPI1",0) YO "QUES","XPI1","??") ^D INHIBIT^XPDH "QUES","XPI1","A") Want KIDS to INHIBIT LOGONs during the install "QUES","XPI1","B") NO "QUES","XPI1","M") D XPI1^XPDIQ "QUES","XPM1",0) PO^VA(200,:EM "QUES","XPM1","??") ^D MG^XPDH "QUES","XPM1","A") Enter the Coordinator for Mail Group '|FLAG|' "QUES","XPM1","B") "QUES","XPM1","M") D XPM1^XPDIQ "QUES","XPO1",0) Y "QUES","XPO1","??") ^D MENU^XPDH "QUES","XPO1","A") Want KIDS to Rebuild Menu Trees Upon Completion of Install "QUES","XPO1","B") NO "QUES","XPO1","M") D XPO1^XPDIQ "QUES","XPZ1",0) Y "QUES","XPZ1","??") ^D OPT^XPDH "QUES","XPZ1","A") Want to DISABLE Scheduled Options, Menu Options, and Protocols "QUES","XPZ1","B") NO "QUES","XPZ1","M") D XPZ1^XPDIQ "QUES","XPZ2",0) Y "QUES","XPZ2","??") ^D RTN^XPDH "QUES","XPZ2","A") Want to MOVE routines to other CPUs "QUES","XPZ2","B") NO "QUES","XPZ2","M") D XPZ2^XPDIQ "RTN") 1 "RTN","BPSECA8") 0^1^B28856161^B20615528 "RTN","BPSECA8",1,0) BPSECA8 ;BHAM ISC/FCS/DRS/VA/DLF - construct a claim reversal ;05/17/04 "RTN","BPSECA8",2,0) ;;1.0;E CLAIMS MGMT ENGINE;**1,5,10,12**;JUN 2004;Build 2 "RTN","BPSECA8",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified. "RTN","BPSECA8",4,0) ; "RTN","BPSECA8",5,0) ;External reference to $$PLANEPS^IBNCPDPU supported by IA 5572 "RTN","BPSECA8",6,0) ; "RTN","BPSECA8",7,0) Q "RTN","BPSECA8",8,0) ; "RTN","BPSECA8",9,0) REVERSE(IEN59) ; "RTN","BPSECA8",10,0) ; Function to build a Reversal claim by copying selected data from the Billing "RTN","BPSECA8",11,0) ; Request into the new Reversal Claim record "RTN","BPSECA8",12,0) ; "RTN","BPSECA8",13,0) ; Input Parameter "RTN","BPSECA8",14,0) ; IEN59 - Transaction number "RTN","BPSECA8",15,0) ; Returns "RTN","BPSECA8",16,0) ; REVIEN (0 if unsuccessful or IEN of the Reversal Claim) "RTN","BPSECA8",17,0) ; "RTN","BPSECA8",18,0) Q:$G(IEN59)="" 0 ; required "RTN","BPSECA8",19,0) ; "RTN","BPSECA8",20,0) N BPS,BPSFORM,C,CLAIM,CLAIMIEN,DA,DIC,DIE,DIQ,DLAYGO,DR,I,L,POS,REVIEN,RXMULT,TMP,UERETVAL "RTN","BPSECA8",21,0) N VERSION,FLD402,X,Y,COB,REC,FN,FDA,MSG,IENS,PLAN,PLANSHT,TRANSHT,SHEETSRC,IEN5902 "RTN","BPSECA8",22,0) ; "RTN","BPSECA8",23,0) S CLAIM=9002313.02,RXMULT=9002313.0201 "RTN","BPSECA8",24,0) ; "RTN","BPSECA8",25,0) ; Needed for Turn-Around Stats - Do NOT delete/alter!! "RTN","BPSECA8",26,0) D LOG^BPSOSL(IEN59,$T(+0)_"-Gathering claim information") "RTN","BPSECA8",27,0) ; "RTN","BPSECA8",28,0) ; Get Claim and multiple POS "RTN","BPSECA8",29,0) S CLAIMIEN=$P(^BPST(IEN59,0),U,4) "RTN","BPSECA8",30,0) I CLAIMIEN="" Q 0 "RTN","BPSECA8",31,0) S POS=$O(^BPSC(CLAIMIEN,400,0)) "RTN","BPSECA8",32,0) I POS="" Q 0 "RTN","BPSECA8",33,0) ; "RTN","BPSECA8",34,0) ; Get the reversal payer sheets from the Pharmacy Plan and the BPS Transaction "RTN","BPSECA8",35,0) S (BPSFORM,PLANSHT,SHEETSRC)="" "RTN","BPSECA8",36,0) S IEN5902=$$GET1^DIQ(9002313.59,IEN59,901,"I") "RTN","BPSECA8",37,0) I 'IEN5902 S IEN5902=1 "RTN","BPSECA8",38,0) S PLAN=$$GET1^DIQ(9002313.59902,IEN5902_","_IEN59_",",".01","I") "RTN","BPSECA8",39,0) I PLAN S PLANSHT=$P($P($$PLANEPS^IBNCPDPU(PLAN),U,2),",",2),BPSFORM=PLANSHT,SHEETSRC="plan" ; IA5572 "RTN","BPSECA8",40,0) S TRANSHT=$$GET1^DIQ(9002313.59902,IEN5902_","_IEN59_",","902.19","I") "RTN","BPSECA8",41,0) ; "RTN","BPSECA8",42,0) ; If the reversal payer sheet is missing from the pharmacy plan or is disabled, use the "RTN","BPSECA8",43,0) ; reversal payer sheet from the transaction record "RTN","BPSECA8",44,0) I 'PLANSHT!($$GET1^DIQ(9002313.92,+PLANSHT_",",1.06,"I")=0) S BPSFORM=TRANSHT,SHEETSRC="transaction" "RTN","BPSECA8",45,0) ; "RTN","BPSECA8",46,0) ; If still no reversal payer sheet, log an error and quit. "RTN","BPSECA8",47,0) I 'BPSFORM D LOG^BPSOSL(IEN59,$T(+0)_"-No Reversal Payer Sheet found") Q 0 "RTN","BPSECA8",48,0) ; "RTN","BPSECA8",49,0) ; Log the payer sheet and the source "RTN","BPSECA8",50,0) D LOG^BPSOSL(IEN59,$T(+0)_"-Reversal payer sheet "_$$GET1^DIQ(9002313.92,BPSFORM_",",.01,"E")_" ("_BPSFORM_") came from the "_SHEETSRC) "RTN","BPSECA8",51,0) ; "RTN","BPSECA8",52,0) ; If the payer sheet is different than what is currently stored in the BPS Transaction, update the BPS Transaction "RTN","BPSECA8",53,0) I BPSFORM'=TRANSHT D "RTN","BPSECA8",54,0) . N DIE,DA,DR,DTOUT "RTN","BPSECA8",55,0) . S DIE="^BPST("_IEN59_",10,",DA(1)=IEN59,DA=IEN5902,DR="902.19////^S X=BPSFORM" "RTN","BPSECA8",56,0) . D ^DIE "RTN","BPSECA8",57,0) . D LOG^BPSOSL(IEN59,$T(+0)_"-Transaction updated with reversal payer sheet "_BPSFORM) "RTN","BPSECA8",58,0) ; "RTN","BPSECA8",59,0) ; Get payer sheet version "RTN","BPSECA8",60,0) S VERSION=$P(^BPSF(9002313.92,BPSFORM,1),"^",2) "RTN","BPSECA8",61,0) I VERSION="" S VERSION="D0" "RTN","BPSECA8",62,0) ; "RTN","BPSECA8",63,0) ; Get data from original claim request "RTN","BPSECA8",64,0) S DR="**",DIQ="TMP",DIQ(0)="I" "RTN","BPSECA8",65,0) D GETS^DIQ(CLAIM,CLAIMIEN,DR,DIQ(0),DIQ) "RTN","BPSECA8",66,0) ; "RTN","BPSECA8",67,0) ; Update CLAIMIEN to match CLAIMIEN format in TMP "RTN","BPSECA8",68,0) S CLAIMIEN=CLAIMIEN_"," "RTN","BPSECA8",69,0) ; "RTN","BPSECA8",70,0) ; Execute special code in reversal payer sheets "RTN","BPSECA8",71,0) D REFORM^BPSOSHR(BPSFORM,CLAIMIEN,POS) "RTN","BPSECA8",72,0) ; "RTN","BPSECA8",73,0) ; Create a new claim record and use function to get the Claim ID "RTN","BPSECA8",74,0) R2 S DIC=CLAIM,DIC(0)="LX",DLAYGO=CLAIM "RTN","BPSECA8",75,0) S X=$$CLAIMID^BPSECX1(IEN59) "RTN","BPSECA8",76,0) I X="" Q 0 "RTN","BPSECA8",77,0) D ^DIC "RTN","BPSECA8",78,0) S REVIEN=+Y "RTN","BPSECA8",79,0) I REVIEN<1 Q 0 "RTN","BPSECA8",80,0) ; "RTN","BPSECA8",81,0) ; Needed for Turn-Around Stats - Do NOT delete/alter!! "RTN","BPSECA8",82,0) D LOG^BPSOSL(IEN59,$T(+0)_"-Created claim ID "_X_" ("_REVIEN_")") "RTN","BPSECA8",83,0) ; "RTN","BPSECA8",84,0) ; Create a new transaction multiple for the claim "RTN","BPSECA8",85,0) R4 S DIC="^BPSC("_REVIEN_",400,",DIC(0)="LX" "RTN","BPSECA8",86,0) S DIC("P")=$P(^DD(CLAIM,400,0),U,2) "RTN","BPSECA8",87,0) S DA(1)=REVIEN,DLAYGO=RXMULT,X=1 "RTN","BPSECA8",88,0) D ^DIC "RTN","BPSECA8",89,0) I +Y'=1 D G:UERETVAL R4 "RTN","BPSECA8",90,0) . S UERETVAL=$$IMPOSS^BPSOSUE("FM,P",,"call to ^DIC","for multiple",,$T(+0)) "RTN","BPSECA8",91,0) ; "RTN","BPSECA8",92,0) ; Update claim with new values "RTN","BPSECA8",93,0) S DIE=CLAIM,DA=REVIEN,DR="",C=0 "RTN","BPSECA8",94,0) F I=.03,.04,1.01,1.04,101,104,110,201,202,301,302,304,305,310,311,331,332,359,401 D "RTN","BPSECA8",95,0) .S C=C+1,$P(DR,";",C)=I_"////"_$G(TMP(CLAIM,CLAIMIEN,I,"I")) "RTN","BPSECA8",96,0) ; "RTN","BPSECA8",97,0) ; Add fields that do not come from the claim "RTN","BPSECA8",98,0) ; Payer sheet is the reversal sheet, Created On is current date/time "RTN","BPSECA8",99,0) ; Transaction Code is B2 and Transaction Count is 1 "RTN","BPSECA8",100,0) S DR=DR_";.02////"_BPSFORM_";.06////"_$$NOWFM^BPSOSU1_";102////"_VERSION_";103////B2;109////1" "RTN","BPSECA8",101,0) D ^DIE "RTN","BPSECA8",102,0) ; "RTN","BPSECA8",103,0) ; Convert the 402-D2 (Prescription/Service Ref Number) to the proper length based on the NCPDP version "RTN","BPSECA8",104,0) S FLD402=$G(TMP(RXMULT,POS_","_CLAIMIEN,402,"I")),L=$S(VERSION=51:6,1:11) "RTN","BPSECA8",105,0) S TMP(RXMULT,POS_","_CLAIMIEN,402,"I")=$E(FLD402,1,2)_$E($E(FLD402,3,99)+1000000000000,13-L,13) "RTN","BPSECA8",106,0) ; "RTN","BPSECA8",107,0) ; Update transaction multiple with values "RTN","BPSECA8",108,0) S DIE="^BPSC("_REVIEN_",400,",DA(1)=REVIEN,DA=1,DR="",C=0 "RTN","BPSECA8",109,0) F I=.03,.04,.05,147,308,337,401,402,403,407,418,430,436,438,455 D "RTN","BPSECA8",110,0) .S C=C+1,$P(DR,";",C)=I_"////"_$G(TMP(RXMULT,POS_","_CLAIMIEN,I,"I")) "RTN","BPSECA8",111,0) D ^DIE "RTN","BPSECA8",112,0) ; "RTN","BPSECA8",113,0) ; Add Submission Clarification Code to the reversal record "RTN","BPSECA8",114,0) ; Note that this is only valid for version 5.1 and 5.1 is a single-value "RTN","BPSECA8",115,0) ; field, so we only need the first occurrence "RTN","BPSECA8",116,0) I VERSION=51,$G(^BPSC(+CLAIMIEN,400,POS,354.01,1,1))]"" D "RTN","BPSECA8",117,0) . K FDA,MSG,IENS "RTN","BPSECA8",118,0) . S FN=9002313.02354,IENS="+1,"_POS_","_REVIEN_",",IENS(1)=1 "RTN","BPSECA8",119,0) . S FDA(FN,IENS,.01)=1 "RTN","BPSECA8",120,0) . S FDA(FN,IENS,420)=^BPSC(+CLAIMIEN,400,POS,354.01,1,1) "RTN","BPSECA8",121,0) . D UPDATE^DIE("","FDA","IENS","MSG") "RTN","BPSECA8",122,0) . I '$D(MSG) S $P(^BPSC(REVIEN,400,POS,350),U,4)="NX"_$$NFF^BPSECFM(1,1) "RTN","BPSECA8",123,0) . I $D(MSG) D "RTN","BPSECA8",124,0) .. D LOG^BPSOSL(IEN59,$T(+0)_"-Clarification fields did not file") "RTN","BPSECA8",125,0) .. D LOG^BPSOSL(IEN59,"REC="_REC) "RTN","BPSECA8",126,0) .. D LOG^BPSOSL(IEN59,"MSG Array:") "RTN","BPSECA8",127,0) .. D LOGARRAY^BPSOSL(IEN59,"MSG") "RTN","BPSECA8",128,0) .. D LOG^BPSOSL(IEN59,"IENS Array:") "RTN","BPSECA8",129,0) .. D LOGARRAY^BPSOSL(IEN59,"IENS") "RTN","BPSECA8",130,0) .. D LOG^BPSOSL(IEN59,"FDA Array:") "RTN","BPSECA8",131,0) .. D LOGARRAY^BPSOSL(IEN59,"FDA") "RTN","BPSECA8",132,0) ; "RTN","BPSECA8",133,0) ; Create COB multiple if it exists in the claim record "RTN","BPSECA8",134,0) S COB=0 "RTN","BPSECA8",135,0) F S COB=$O(^BPSC(+CLAIMIEN,400,POS,337,COB)) Q:'COB D "RTN","BPSECA8",136,0) . S REC=$G(^BPSC(+CLAIMIEN,400,POS,337,COB,0)) "RTN","BPSECA8",137,0) . I $P(REC,U,1)=""!($P(REC,U,2)="") Q "RTN","BPSECA8",138,0) . K FDA,MSG,IENS "RTN","BPSECA8",139,0) . S FN=9002313.0401,IENS="+1,"_POS_","_REVIEN_",",IENS(1)=COB "RTN","BPSECA8",140,0) . S FDA(FN,IENS,.01)=$P(REC,U,1) "RTN","BPSECA8",141,0) . S FDA(FN,IENS,338)=$P(REC,U,2) "RTN","BPSECA8",142,0) . D UPDATE^DIE("","FDA","IENS","MSG") "RTN","BPSECA8",143,0) . I $D(MSG) D "RTN","BPSECA8",144,0) .. D LOG^BPSOSL(IEN59,$T(+0)_"-COB fields did not file, COB="_COB) "RTN","BPSECA8",145,0) .. D LOG^BPSOSL(IEN59,"REC="_REC) "RTN","BPSECA8",146,0) .. D LOG^BPSOSL(IEN59,"MSG Array:") "RTN","BPSECA8",147,0) .. D LOGARRAY^BPSOSL(IEN59,"MSG") "RTN","BPSECA8",148,0) .. D LOG^BPSOSL(IEN59,"IENS Array:") "RTN","BPSECA8",149,0) .. D LOGARRAY^BPSOSL(IEN59,"IENS") "RTN","BPSECA8",150,0) .. D LOG^BPSOSL(IEN59,"FDA Array:") "RTN","BPSECA8",151,0) .. D LOGARRAY^BPSOSL(IEN59,"FDA") "RTN","BPSECA8",152,0) ; "RTN","BPSECA8",153,0) Q REVIEN "RTN","BPSECA8",154,0) ; "VER") 8.0^22.0 "BLD",8687,6) ^11 **END** **END**