[613] | 1 | BPSNCPD2 ;BHAM ISC/LJE - Continuation of BPSNCPDP (IB Billing Determiation) ;08/01/03
|
---|
| 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 | ;External reference $$RX^IBNCPDP supported by DBIA 4299
|
---|
| 5 | ;
|
---|
| 6 | ;
|
---|
| 7 | ; EN - Call IB Billing Determination. If good to go, update MOREDATA array
|
---|
| 8 | ; Notes about variables
|
---|
| 9 | ;input:
|
---|
| 10 | ; DFN - PATIENT file #2 ien
|
---|
| 11 | ; BWHERE - shows where the code is called from and what needs to be done
|
---|
| 12 | ; the following should be passed by reference:
|
---|
| 13 | ; MOREDATA - Initialized by BPSNCPDP and more data is added here
|
---|
| 14 | ; BPSARRY - Created by STARRAY^BPSNCPD1 and used for IB Determination
|
---|
| 15 | ; IB - Returned to BPSNCPDP
|
---|
| 16 | ; CERTIEN - BPS Certification IEN - Not passed but newed/set in BPSNCPDP
|
---|
| 17 | ;
|
---|
| 18 | EN(DFN,BWHERE,MOREDATA,BPSARRY,IB) ;
|
---|
| 19 | I '$G(CERTIEN) D I IB=2 Q
|
---|
| 20 | . ;
|
---|
| 21 | . ;For NCPDP IB call to see if we need to 3rd Party Bill and if so, get insurance/payer sheet info
|
---|
| 22 | . S MOREDATA("BILL")=$$RX^IBNCPDP(DFN,.BPSARRY) ;IB CALL
|
---|
| 23 | . Q:'$D(MOREDATA("BILL"))
|
---|
| 24 | . ;
|
---|
| 25 | . ; If calling program is the ECME user screen and we can't bill because of NEEDS SC DETERMINATION
|
---|
| 26 | . ; or EI, then prompt the user to see if they want to bill
|
---|
| 27 | . I BWHERE="ERES",$P(MOREDATA("BILL"),U,1)=0,$G(BPSARRY("SC/EI NO ANSW"))]"" D
|
---|
| 28 | .. N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,I,BPEISC
|
---|
| 29 | .. F I=1:1:$L($G(BPSARRY("SC/EI NO ANSW")),",") S BPEISC=$P($G(BPSARRY("SC/EI NO ANSW")),",",I) I BPEISC]"" D
|
---|
| 30 | ... W !,"The prescription is potentially ",BPEISC,"-related and needs ",BPEISC," determination."
|
---|
| 31 | ... W !,"Prescriptions related to ",BPEISC," cannot be billed to Third Party Insurance.",!
|
---|
| 32 | .. S DIR(0)="Y",DIR("A")="Are you sure you want to bill this prescription"
|
---|
| 33 | .. S DIR("B")="NO"
|
---|
| 34 | .. S DIR("?")="If you want to bill this prescription, enter 'Yes' - otherwise, enter 'No'"
|
---|
| 35 | .. W ! D ^DIR K DIR
|
---|
| 36 | .. I '+Y Q
|
---|
| 37 | .. S BPSARRY("SC/EI OVR")=1
|
---|
| 38 | .. S MOREDATA("BILL")=$$RX^IBNCPDP(DFN,.BPSARRY) ;Call IB again
|
---|
| 39 | . ;
|
---|
| 40 | . ; Quit if no response from IB call
|
---|
| 41 | . Q:'$D(MOREDATA("BILL"))
|
---|
| 42 | . I $P(MOREDATA("BILL"),U,1)=0 S IB=2 Q ;IB says not to bill
|
---|
| 43 | . S IB=1
|
---|
| 44 | . M MOREDATA("IBDATA")=BPSARRY("INS")
|
---|
| 45 | . S $P(MOREDATA("BPSDATA",1),U,1)=BPSARRY("QTY")
|
---|
| 46 | . S $P(MOREDATA("BPSDATA",1),U,2)=BPSARRY("COST")
|
---|
| 47 | . S $P(MOREDATA("BPSDATA",1),U,3)=BPSARRY("NDC")
|
---|
| 48 | . S $P(MOREDATA("BPSDATA",1),U,4)=BFILL
|
---|
| 49 | . S $P(MOREDATA("BPSDATA",1),U,5)="" ; Certify Mode
|
---|
| 50 | . S $P(MOREDATA("BPSDATA",1),U,6)="" ; Cert IEN
|
---|
| 51 | . S $P(MOREDATA("BPSDATA",1),U,7)=BPSARRY("UNITS")
|
---|
| 52 | ;
|
---|
| 53 | ; If certification mode on and no IB result (somewhat redundant since IB is not called
|
---|
| 54 | ; for certification), get data from BPS Certification table
|
---|
| 55 | I $G(CERTIEN),'$G(IB) D
|
---|
| 56 | . N NODE,FLD,NFLD,CERTARY
|
---|
| 57 | . S MOREDATA("BILL")=1
|
---|
| 58 | . S MOREDATA("IBDATA",1,1)="",MOREDATA("IBDATA",1,2)="",MOREDATA("BPSDATA",1)=""
|
---|
| 59 | . S $P(MOREDATA("BPSDATA",1),U,5)=1 ;Certify Mode
|
---|
| 60 | . S $P(MOREDATA("BPSDATA",1),U,6)=CERTIEN ;Cert IEN
|
---|
| 61 | . S $P(MOREDATA("IBDATA",1,1),U,1)=1 ;Plan IEN
|
---|
| 62 | . S $P(MOREDATA("IBDATA",1,1),U,4)=$$GET1^DIQ(9002313.31,CERTIEN,.04,"E") ;Payer Sheet
|
---|
| 63 | . S $P(MOREDATA("IBDATA",1,1),U,10)="01" ;Home State Plan
|
---|
| 64 | . S $P(MOREDATA("IBDATA",1,1),U,11)="" ;B2 Payer Sheet (reversal)
|
---|
| 65 | . S $P(MOREDATA("IBDATA",1,1),U,12)="" ;B3 Payer Sheet (rebill)
|
---|
| 66 | . S $P(MOREDATA("IBDATA",1,1),U,14)="" ;Plan Name
|
---|
| 67 | . S $P(MOREDATA("IBDATA",1,2),U,5)=0 ;Admin Fee
|
---|
| 68 | . ;
|
---|
| 69 | . ;Get data from non-mulitple fields and add to MOREDATA
|
---|
| 70 | . K CERTARY D GETS^DIQ(9002313.31,CERTIEN_",","1*","","CERTARY")
|
---|
| 71 | . S NODE="" F S NODE=$O(CERTARY(9002313.311,NODE)) Q:NODE="" D
|
---|
| 72 | .. S FLD="" F S FLD=$O(CERTARY(9002313.311,NODE,FLD)) Q:FLD="" D
|
---|
| 73 | ... I FLD=.01 S NFLD=CERTARY(9002313.311,NODE,FLD) D
|
---|
| 74 | .... I NFLD=101 S $P(MOREDATA("IBDATA",1,1),U,2)=CERTARY(9002313.311,NODE,.02) ;BIN
|
---|
| 75 | .... I NFLD=104 S $P(MOREDATA("IBDATA",1,1),U,3)=CERTARY(9002313.311,NODE,.02) ;PCN
|
---|
| 76 | .... I NFLD=110 S $P(MOREDATA("IBDATA",1,1),U,13)=CERTARY(9002313.311,NODE,.02) ;Certification ID
|
---|
| 77 | . ;
|
---|
| 78 | . ;Get data from mulitple fields and add to MOREDATA
|
---|
| 79 | . K CERTARY D GETS^DIQ(9002313.31,CERTIEN_",","2*","","CERTARY")
|
---|
| 80 | . S NODE="" F S NODE=$O(CERTARY(9002313.3121,NODE)) Q:NODE="" D
|
---|
| 81 | .. S FLD="" F S FLD=$O(CERTARY(9002313.3121,NODE,FLD)) Q:FLD="" D
|
---|
| 82 | ... I FLD=.01 S NFLD=CERTARY(9002313.3121,NODE,FLD) D
|
---|
| 83 | .... I NFLD=301 S $P(MOREDATA("IBDATA",1,1),U,5)=CERTARY(9002313.3121,NODE,.02) ;Group ID
|
---|
| 84 | .... I NFLD=302 S $P(MOREDATA("IBDATA",1,1),U,6)=CERTARY(9002313.3121,NODE,.02) ;Cardholder ID
|
---|
| 85 | .... I NFLD=306 S $P(MOREDATA("IBDATA",1,1),U,7)=CERTARY(9002313.3121,NODE,.02) ;Patient Rel Code
|
---|
| 86 | .... I NFLD=312 S $P(MOREDATA("IBDATA",1,1),U,8)=CERTARY(9002313.3121,NODE,.02) ;Cardholder First Name
|
---|
| 87 | .... I NFLD=313 S $P(MOREDATA("IBDATA",1,1),U,9)=CERTARY(9002313.3121,NODE,.02) ;Cardholder Last Name
|
---|
| 88 | .... I NFLD=412 S $P(MOREDATA("IBDATA",1,2),U,1)=CERTARY(9002313.3121,NODE,.02) ;Dispensing Fee
|
---|
| 89 | .... I NFLD=423 S $P(MOREDATA("IBDATA",1,2),U,2)=CERTARY(9002313.3121,NODE,.02) ;Basis of Cost Determination
|
---|
| 90 | .... I NFLD=426 S $P(MOREDATA("IBDATA",1,2),U,3)=CERTARY(9002313.3121,NODE,.02) ;Usual & Customary - Base Price
|
---|
| 91 | .... I NFLD=430 S $P(MOREDATA("IBDATA",1,2),U,4)=CERTARY(9002313.3121,NODE,.02) ;Gross Amt Due
|
---|
| 92 | .... I NFLD=442 S $P(MOREDATA("BPSDATA",1),U,1)=CERTARY(9002313.3121,NODE,.02) ;Qty
|
---|
| 93 | .... I NFLD=409 S $P(MOREDATA("BPSDATA",1),U,2)=CERTARY(9002313.3121,NODE,.02) ;Unit Cost
|
---|
| 94 | .... I NFLD=407 S $P(MOREDATA("BPSDATA",1),U,3)=CERTARY(9002313.3121,NODE,.02) ;NDC
|
---|
| 95 | .... I NFLD=403 S $P(MOREDATA("BPSDATA",1),U,4)=CERTARY(9002313.3121,NODE,.02) ;Fill #
|
---|
| 96 | .... I NFLD=600 S $P(MOREDATA("BPSDATA",1),U,7)=CERTARY(9002313.3121,NODE,.02) ;Unit of Measure
|
---|
| 97 | . ;
|
---|
| 98 | . ; If Gross Amt Due is missing, use Usual and Customary
|
---|
| 99 | . I $P(MOREDATA("IBDATA",1,2),U,4)="" S $P(MOREDATA("IBDATA",1,2),U,4)=$P(MOREDATA("IBDATA",1,2),U,3)
|
---|
| 100 | ;
|
---|
| 101 | ; The code below checks if Sequence one is missing and move the next number down if needed.
|
---|
| 102 | ; DMB - This is existing code so I am not sure if it is needed or not.
|
---|
| 103 | I '$D(MOREDATA("IBDATA",1)) D
|
---|
| 104 | . N WW
|
---|
| 105 | . S WW=$O(MOREDATA("IBDATA",""))
|
---|
| 106 | . I WW'="" M MOREDATA("IBDATA",1)=MOREDATA("IBDATA",WW) K MOREDATA("IBDATA",WW)
|
---|
| 107 | ;
|
---|
| 108 | ; Uppercase the IBDATA
|
---|
| 109 | ; DMB - Assume this was adding in case any of the BPS Certification data was entered as lowercase
|
---|
| 110 | S MOREDATA("IBDATA",1,1)=$TR(MOREDATA("IBDATA",1,1),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 111 | S MOREDATA("IBDATA",1,2)=$TR(MOREDATA("IBDATA",1,2),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 112 | S MOREDATA("BPSDATA",1)=$TR(MOREDATA("BPSDATA",1),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 113 | ;
|
---|
| 114 | Q
|
---|