BPSOSCC ;BHAM ISC/FCS/DRS/DLF - Set up BPS() ;06/01/2004
;;1.0;E CLAIMS MGMT ENGINE;**1,2,5,8,10,11,19,27,32,33**;JUN 2004;Build 5
;;Per VA Directive 6402, this routine should not be modified.
;
; GETINFO - Create BPS array for non-repeating data
; IEN59 - Pointer to BPS Transactions
; IEN5902 - IEN for Insurance multiple of BPS Transactions
;
; BPS array is shared by all of the BPSOSC* routines, created in BPSOSCA
; VAINFO is created in BPSOSCB
Q
;
GETINFO(IEN59,IEN5902) ; EP - BPSOSCB
; both parameters required
Q:$G(IEN59)=""
Q:$G(IEN5902)=""
;
N BPPAYSEQ,BPSCS,BPSSEX,BPSSIG,BPSRF,BPSRX,DFN,IENS,NPI,SITE,VADM,VAPA,X
;
S BPPAYSEQ=$$COB59^BPSUTIL2(IEN59) ; COB payer sequence
; Setup IENS for transaction multiple
S IENS=IEN5902_","_IEN59_","
; Site Information
S SITE=$P($G(^BPST(IEN59,1)),U,4)
S NPI=$$NPI^BPSNPI("Pharmacy_ID",SITE)
I +NPI=-1 S NPI=""
S BPS("Site","NPI")=$P(NPI,U)
;
; Check for Controlled Substance Drug and if BPS Pharmacy for CS
; has been defined. If so, use NPI for the CS Pharmacy.
S BPSRX=$$GET1^DIQ(9002313.59,IEN59,1.11,"I")
S BPSRF=$$GET1^DIQ(9002313.59,IEN59,9)
S BPSCS=$$CSNPI^BPSUTIL(BPSRX,BPSRF)
I +$P(BPSCS,"^",2) S BPS("Site","NPI")=$P(BPSCS,"^",2)
;
; Get Transaction Code
S BPS("Transaction Code")=$S($P($G(^BPST(IEN59,0)),U,15)="E":"E1",1:"B1")
;
; Transaction Header Data
S BPS("NCPDP","IEN")=$G(VAINFO(9002313.59902,IENS,$S(BPS("Transaction Code")="E1":902.34,1:902.02),"I"))
S BPS("NCPDP","BIN Number")=$G(VAINFO(9002313.59902,IENS,902.03,"I"))
S BPS("NCPDP","PCN")=$G(VAINFO(9002313.59902,IENS,902.04,"I"))
S BPS("NCPDP","Software Vendor/Cert ID")=$G(VAINFO(9002313.59902,IENS,902.18,"I"))
I BPS("NCPDP","IEN")="" D IMPOSS^BPSOSUE("P","TI","Payer Sheet pointer missing from multiple",,1,$T(+0))
I BPS("NCPDP","IEN") S BPS("NCPDP","Version")=$P($G(^BPSF(9002313.92,BPS("NCPDP","IEN"),1)),U,2)
I $G(BPS("NCPDP","Version"))="" D IMPOSS^BPSOSUE("DB","TI","Payer sheet version missing.",,2,$T(+0))
S BPS("NCPDP","# Meds/Claim")=$G(VAINFO(9002313.59902,IENS,902.32,"I"))
I BPS("Transaction Code")="E1"!('BPS("NCPDP","# Meds/Claim")) S BPS("NCPDP","# Meds/Claim")=1
S BPS("NCPDP","DOS")=$$FMTHL7^XLFDT($P($G(^BPST(IEN59,12)),U,2))
;
; Patient Data
S DFN=$P(^BPST(IEN59,0),U,6)
I 'DFN D IMPOSS^BPSOSUE("DB","TI","DFN",,,$T(+0))
I DFN,'$D(^DPT(DFN,0)) D IMPOSS^BPSOSUE("DB","TI","^DPT(DFN)",,,$T(+0))
D DEM^VADPT,ADD^VADPT
S BPS("Patient","IEN")=DFN
S (X,BPS("Patient","Name"))=$G(VADM(1))
D SETNAME^PSOSPMUT(DFN)
S BPS("Patient","Last Name")=$G(PSONAME("LAST"))
S BPS("Patient","First Name")=$G(PSONAME("FIRST"))
S BPS("Patient","Middle Name")=$G(PSONAME("MIDDLE"))
S BPS("Patient","Prefix")=$G(PSONAME("PREFIX"))
S BPS("Patient","Suffix")=$G(PSONAME("SUFFIX"))
S BPSSEX=$P($G(VADM(5)),"^",1) ; SEX, field# .02
S BPSSIG=$P($G(VADM(14,5)),"^",2) ; SELF IDENTIFIED GENDER, field# .024
I BPSSIG'="" S BPS("Patient","Gender Code")=$S(BPSSIG="M":1,BPSSIG="F":2,BPSSIG="N":0,1:3)
E S BPS("Patient","Gender Code")=$S(BPSSEX="M":1,BPSSEX="F":2,1:0)
S X=$P($G(VADM(3)),"^") ; date of birth, FM format
S BPS("Patient","DOB")=($E(X,1,3)+1700)_$E(X,4,7)
S BPS("Patient","SSN")=$P($G(VADM(2)),"^",1)
S BPS("Patient","State")=$P($G(VAPA(5)),"^",1)
I BPS("Patient","State")'="" S BPS("Patient","State")=$P($G(^DIC(5,BPS("Patient","State"),0)),"^",2)
S BPS("Patient","Street Address")=$G(VAPA(1))
S BPS("Patient","Street Address Line 1")=$G(VAPA(1))
S BPS("Patient","Street Address Line 2")=$G(VAPA(2))
S BPS("Patient","City")=$G(VAPA(4))
S BPS("Patient","Zip")=$G(VAPA(6))
S BPS("Patient","Phone #")=$TR($P($G(VAPA(8)),"^",1),"()-/*# ")
S BPS("Patient","Place of Service")=$S($G(BPS("NCPDP","Version"))=51:0,1:1) ; NCPDP field 307-C7 default to 1 for vD.0
S BPS("Patient","Patient Residence")=1 ; NCPDP field 384-4X, 1 for "Home"
S BPS("Patient","Patient E-Mail Address")=$$GET1^DIQ(2,DFN,.133) ; NCPDP field 350-HN
;
; Insurer Data
S BPS("Insurer","IEN")=$G(VAINFO(9002313.59902,IENS,.01,"I"))
S BPS("Patient","Primary Care Prov Location Code")=$G(VAINFO(9002313.59902,IENS,902.11,"I"))
S BPS("Insurer","Relationship")=$G(VAINFO(9002313.59902,IENS,902.07,"I"))
S:BPS("Insurer","Relationship")="" BPS("Insurer","Relationship")=0 ; if null set to unspecified
S BPS("Insurer","Person Code")=$G(VAINFO(9002313.59902,IENS,902.1,"I"))
;
; If 303-C3 Person Code has no value from patient insurance policy field, then continue to
; calculate the value based upon the 306-C6 Patient Relationship Code field
I BPS("Insurer","Person Code")="" D
. N REL S REL=BPS("Insurer","Relationship")
. S BPS("Insurer","Person Code")=$S(REL=1:"01",REL=2:"02",REL=3:"03",1:"")
. Q
;
S BPS("Insurer","Plan ID")=$G(VAINFO(9002313.59902,IENS,902.24,"I"))
S BPS("Insurer","Group #")=$G(VAINFO(9002313.59902,IENS,902.05,"I"))
S BPS("Insurer","Policy #")=$G(VAINFO(9002313.59902,IENS,902.06,"I")) ;CARDHOLDER ID
S BPS("Insurer","Full Policy #")=BPS("Insurer","Policy #")
S BPS("Insurer","Percent Sales Tax Rate Sub")="" ; 483-HE Percentage Sales Tax Rate Submitted
S BPS("Insurer","Percent Sales Tax Basis Sub")="" ; 484-JE Percentage Sales Tax Basis Submitted
S BPS("Insurer","Percentage Sales Tax Amt Sub")=0 ; 482-GE Percentage Sales Tax Amount Submitted
S BPS("Insurer","Flat Sales Tax Amount Sub")=0 ; 481-HA Flat Sales Tax Amount Submitted
;
; Cardholder Data
S BPS("Cardholder","First Name")=$G(VAINFO(9002313.59902,IENS,902.08,"I"))
S BPS("Cardholder","Last Name")=$G(VAINFO(9002313.59902,IENS,902.09,"I"))
S BPS("Home Plan")=$G(VAINFO(9002313.59902,IENS,902.11,"I"))
;
; set additional fields for secondary claim
S:BPPAYSEQ>1 BPS("Patient","Other Coverage Code")=$P($G(^BPST(IEN59,12)),U,5) ; NCPDP field 308-C8 Other Coverage Code
;
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HBPSOSCC 5896 printed Jun 11, 2024@21:37:07 Page 2
BPSOSCC ;BHAM ISC/FCS/DRS/DLF - Set up BPS() ;06/01/2004
+1 ;;1.0;E CLAIMS MGMT ENGINE;**1,2,5,8,10,11,19,27,32,33**;JUN 2004;Build 5
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;
+4 ; GETINFO - Create BPS array for non-repeating data
+5 ; IEN59 - Pointer to BPS Transactions
+6 ; IEN5902 - IEN for Insurance multiple of BPS Transactions
+7 ;
+8 ; BPS array is shared by all of the BPSOSC* routines, created in BPSOSCA
+9 ; VAINFO is created in BPSOSCB
+10 QUIT
+11 ;
GETINFO(IEN59,IEN5902) ; EP - BPSOSCB
+1 ; both parameters required
+2 if $GET(IEN59)=""
QUIT
+3 if $GET(IEN5902)=""
QUIT
+4 ;
+5 NEW BPPAYSEQ,BPSCS,BPSSEX,BPSSIG,BPSRF,BPSRX,DFN,IENS,NPI,SITE,VADM,VAPA,X
+6 ;
+7 ; COB payer sequence
SET BPPAYSEQ=$$COB59^BPSUTIL2(IEN59)
+8 ; Setup IENS for transaction multiple
+9 SET IENS=IEN5902_","_IEN59_","
+10 ; Site Information
+11 SET SITE=$PIECE($GET(^BPST(IEN59,1)),U,4)
+12 SET NPI=$$NPI^BPSNPI("Pharmacy_ID",SITE)
+13 IF +NPI=-1
SET NPI=""
+14 SET BPS("Site","NPI")=$PIECE(NPI,U)
+15 ;
+16 ; Check for Controlled Substance Drug and if BPS Pharmacy for CS
+17 ; has been defined. If so, use NPI for the CS Pharmacy.
+18 SET BPSRX=$$GET1^DIQ(9002313.59,IEN59,1.11,"I")
+19 SET BPSRF=$$GET1^DIQ(9002313.59,IEN59,9)
+20 SET BPSCS=$$CSNPI^BPSUTIL(BPSRX,BPSRF)
+21 IF +$PIECE(BPSCS,"^",2)
SET BPS("Site","NPI")=$PIECE(BPSCS,"^",2)
+22 ;
+23 ; Get Transaction Code
+24 SET BPS("Transaction Code")=$SELECT($PIECE($GET(^BPST(IEN59,0)),U,15)="E":"E1",1:"B1")
+25 ;
+26 ; Transaction Header Data
+27 SET BPS("NCPDP","IEN")=$GET(VAINFO(9002313.59902,IENS,$SELECT(BPS("Transaction Code")="E1":902.34,1:902.02),"I"))
+28 SET BPS("NCPDP","BIN Number")=$GET(VAINFO(9002313.59902,IENS,902.03,"I"))
+29 SET BPS("NCPDP","PCN")=$GET(VAINFO(9002313.59902,IENS,902.04,"I"))
+30 SET BPS("NCPDP","Software Vendor/Cert ID")=$GET(VAINFO(9002313.59902,IENS,902.18,"I"))
+31 IF BPS("NCPDP","IEN")=""
DO IMPOSS^BPSOSUE("P","TI","Payer Sheet pointer missing from multiple",,1,$TEXT(+0))
+32 IF BPS("NCPDP","IEN")
SET BPS("NCPDP","Version")=$PIECE($GET(^BPSF(9002313.92,BPS("NCPDP","IEN"),1)),U,2)
+33 IF $GET(BPS("NCPDP","Version"))=""
DO IMPOSS^BPSOSUE("DB","TI","Payer sheet version missing.",,2,$TEXT(+0))
+34 SET BPS("NCPDP","# Meds/Claim")=$GET(VAINFO(9002313.59902,IENS,902.32,"I"))
+35 IF BPS("Transaction Code")="E1"!('BPS("NCPDP","# Meds/Claim"))
SET BPS("NCPDP","# Meds/Claim")=1
+36 SET BPS("NCPDP","DOS")=$$FMTHL7^XLFDT($PIECE($GET(^BPST(IEN59,12)),U,2))
+37 ;
+38 ; Patient Data
+39 SET DFN=$PIECE(^BPST(IEN59,0),U,6)
+40 IF 'DFN
DO IMPOSS^BPSOSUE("DB","TI","DFN",,,$TEXT(+0))
+41 IF DFN
IF '$DATA(^DPT(DFN,0))
DO IMPOSS^BPSOSUE("DB","TI","^DPT(DFN)",,,$TEXT(+0))
+42 DO DEM^VADPT
DO ADD^VADPT
+43 SET BPS("Patient","IEN")=DFN
+44 SET (X,BPS("Patient","Name"))=$GET(VADM(1))
+45 DO SETNAME^PSOSPMUT(DFN)
+46 SET BPS("Patient","Last Name")=$GET(PSONAME("LAST"))
+47 SET BPS("Patient","First Name")=$GET(PSONAME("FIRST"))
+48 SET BPS("Patient","Middle Name")=$GET(PSONAME("MIDDLE"))
+49 SET BPS("Patient","Prefix")=$GET(PSONAME("PREFIX"))
+50 SET BPS("Patient","Suffix")=$GET(PSONAME("SUFFIX"))
+51 ; SEX, field# .02
SET BPSSEX=$PIECE($GET(VADM(5)),"^",1)
+52 ; SELF IDENTIFIED GENDER, field# .024
SET BPSSIG=$PIECE($GET(VADM(14,5)),"^",2)
+53 IF BPSSIG'=""
SET BPS("Patient","Gender Code")=$SELECT(BPSSIG="M":1,BPSSIG="F":2,BPSSIG="N":0,1:3)
+54 IF '$TEST
SET BPS("Patient","Gender Code")=$SELECT(BPSSEX="M":1,BPSSEX="F":2,1:0)
+55 ; date of birth, FM format
SET X=$PIECE($GET(VADM(3)),"^")
+56 SET BPS("Patient","DOB")=($EXTRACT(X,1,3)+1700)_$EXTRACT(X,4,7)
+57 SET BPS("Patient","SSN")=$PIECE($GET(VADM(2)),"^",1)
+58 SET BPS("Patient","State")=$PIECE($GET(VAPA(5)),"^",1)
+59 IF BPS("Patient","State")'=""
SET BPS("Patient","State")=$PIECE($GET(^DIC(5,BPS("Patient","State"),0)),"^",2)
+60 SET BPS("Patient","Street Address")=$GET(VAPA(1))
+61 SET BPS("Patient","Street Address Line 1")=$GET(VAPA(1))
+62 SET BPS("Patient","Street Address Line 2")=$GET(VAPA(2))
+63 SET BPS("Patient","City")=$GET(VAPA(4))
+64 SET BPS("Patient","Zip")=$GET(VAPA(6))
+65 SET BPS("Patient","Phone #")=$TRANSLATE($PIECE($GET(VAPA(8)),"^",1),"()-/*# ")
+66 ; NCPDP field 307-C7 default to 1 for vD.0
SET BPS("Patient","Place of Service")=$SELECT($GET(BPS("NCPDP","Version"))=51:0,1:1)
+67 ; NCPDP field 384-4X, 1 for "Home"
SET BPS("Patient","Patient Residence")=1
+68 ; NCPDP field 350-HN
SET BPS("Patient","Patient E-Mail Address")=$$GET1^DIQ(2,DFN,.133)
+69 ;
+70 ; Insurer Data
+71 SET BPS("Insurer","IEN")=$GET(VAINFO(9002313.59902,IENS,.01,"I"))
+72 SET BPS("Patient","Primary Care Prov Location Code")=$GET(VAINFO(9002313.59902,IENS,902.11,"I"))
+73 SET BPS("Insurer","Relationship")=$GET(VAINFO(9002313.59902,IENS,902.07,"I"))
+74 ; if null set to unspecified
if BPS("Insurer","Relationship")=""
SET BPS("Insurer","Relationship")=0
+75 SET BPS("Insurer","Person Code")=$GET(VAINFO(9002313.59902,IENS,902.1,"I"))
+76 ;
+77 ; If 303-C3 Person Code has no value from patient insurance policy field, then continue to
+78 ; calculate the value based upon the 306-C6 Patient Relationship Code field
+79 IF BPS("Insurer","Person Code")=""
Begin DoDot:1
+80 NEW REL
SET REL=BPS("Insurer","Relationship")
+81 SET BPS("Insurer","Person Code")=$SELECT(REL=1:"01",REL=2:"02",REL=3:"03",1:"")
+82 QUIT
End DoDot:1
+83 ;
+84 SET BPS("Insurer","Plan ID")=$GET(VAINFO(9002313.59902,IENS,902.24,"I"))
+85 SET BPS("Insurer","Group #")=$GET(VAINFO(9002313.59902,IENS,902.05,"I"))
+86 ;CARDHOLDER ID
SET BPS("Insurer","Policy #")=$GET(VAINFO(9002313.59902,IENS,902.06,"I"))
+87 SET BPS("Insurer","Full Policy #")=BPS("Insurer","Policy #")
+88 ; 483-HE Percentage Sales Tax Rate Submitted
SET BPS("Insurer","Percent Sales Tax Rate Sub")=""
+89 ; 484-JE Percentage Sales Tax Basis Submitted
SET BPS("Insurer","Percent Sales Tax Basis Sub")=""
+90 ; 482-GE Percentage Sales Tax Amount Submitted
SET BPS("Insurer","Percentage Sales Tax Amt Sub")=0
+91 ; 481-HA Flat Sales Tax Amount Submitted
SET BPS("Insurer","Flat Sales Tax Amount Sub")=0
+92 ;
+93 ; Cardholder Data
+94 SET BPS("Cardholder","First Name")=$GET(VAINFO(9002313.59902,IENS,902.08,"I"))
+95 SET BPS("Cardholder","Last Name")=$GET(VAINFO(9002313.59902,IENS,902.09,"I"))
+96 SET BPS("Home Plan")=$GET(VAINFO(9002313.59902,IENS,902.11,"I"))
+97 ;
+98 ; set additional fields for secondary claim
+99 ; NCPDP field 308-C8 Other Coverage Code
if BPPAYSEQ>1
SET BPS("Patient","Other Coverage Code")=$PIECE($GET(^BPST(IEN59,12)),U,5)
+100 ;
+101 QUIT
+102 ;