Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BPSSCRL1

BPSSCRL1.m

Go to the documentation of this file.
  1. BPSSCRL1 ;AITC/CKB - ECME LOGINFO ;06/01/2017
  1. ;;1.0;E CLAIMS MGMT ENGINE;**22,24,28,37**;JUN 2004;Build 16
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ; Reference to $$NCPDPQTY^PSSBPSUT in ICR #4992
  1. ; Moved from BPSSCRLG
  1. Q
  1. ;
  1. PREPINFO(BPLN,BPDFN,BP36,BP59) ;
  1. ;input:
  1. ; BPDFN: patient ien #2
  1. ; BP36: insurance ien #36
  1. ; BP59: ptr to #9002313.59
  1. ; returns # of lines
  1. N BPSECME
  1. I '$G(BP59) Q 0
  1. I '$G(BP36) Q 0
  1. I '$G(BPDFN) Q 0
  1. N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
  1. N BPX,BPRXIEN,BPRXN,BPREF,BP1,BPLSTCLM,BPLSTRSP,BPDAT59,BPUSR,BPSTRT,BPHIST,BPQ
  1. N BPDT,BPLN0,BPCNT,DFN,VADM
  1. S DFN=BPDFN D DEM^VADPT
  1. S BP1=$$RXREF^BPSSCRU2(BP59)
  1. S BPRXIEN=$P(BP1,U,1)
  1. S BPRXN=$$RXNUM^BPSSCRU2(+BPRXIEN)
  1. S BPREF=$P(BP1,U,2)
  1. S BPDAT59(0)=$G(^BPST(BP59,0))
  1. ;create history
  1. D MKHIST^BPSSCRU5(BP59,.BPHIST)
  1. ;
  1. S BPLN0=BPLN
  1. D SETLINE^BPSSCRLG(.BPLN,"Pharmacy ECME Log")
  1. D SETLINE^BPSSCRLG(.BPLN,"")
  1. S BPX=$$RJ^BPSSCR02("Rx #: ",20)_BPRXN_"/"_BPREF
  1. S BPSECME=$$ECMENUM^BPSSCRU2(BP59)
  1. S BPX=BPX_$$RJ^BPSSCR02("ECME #: ",20)_BPSECME
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Drug: ",20)_$$DRGNAM^BPSSCRU2($$GETDRG59^BPSSCRU2(BP59))
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Patient: ",20)
  1. S BPX=BPX_$$LJ^BPSSCR02($$PATNAME^BPSSCRU2(BPDFN)_" "_$$SSN4^BPSSCRU2(BPDFN),27)
  1. S BPX=BPX_$$LJ^BPSSCR02("DOB: "_$P($G(VADM(3)),"^",2)_"("_$G(VADM(4))_")",20)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Birth Sex: ",20)_$$LJ^BPSSCR02($P($G(VADM(5)),"^",1),10)
  1. S BPX=BPX_"Self-Identified Gender: "_$P($G(VADM(14,5)),"^",1)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Transaction Number: ",20)
  1. S BPX=BPX_$P($G(^BPST(BP59,0)),U,1)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Last Submitted: ",20)
  1. S BPSTRT=$P(BPDAT59(0),U,11) ;@# need to check with analyst if this is a START DATE
  1. I BPSTRT]"" S BPX=BPX_$$DATETIME^BPSSCRU5(BPSTRT)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX=$$RJ^BPSSCR02("Last Submitted By: ",20)
  1. S BPUSR=$P(BPDAT59(0),U,10)
  1. I BPUSR]"" S BPX=BPX_$$GETUSRNM^BPSSCRU1(BPUSR)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. ;
  1. ;latest claim
  1. S BP1=+$O(BPHIST("C",99999999),-1)
  1. I BP1=0 D SETLINE^BPSSCRLG(.BPLN,""),SETLINE^BPSSCRLG(.BPLN,"------ No electronic claims ------") Q BPLN
  1. S BP1=+$O(BPHIST("C",BP1,0))
  1. S BPX=$$RJ^BPSSCR02("Last VA Claim #: ",20)_$P($G(^BPSC(+BP1,0)),U,1)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE^BPSSCRLG(.BPLN,"")
  1. ;process history
  1. N BPTYPE,BPIEN,BPIENRS
  1. S BPDT=99999999
  1. F S BPDT=$O(BPHIST("C",BPDT),-1) Q:+BPDT=0 D
  1. . S BPIEN=+$O(BPHIST("C",BPDT,0)) Q:BPIEN=""
  1. . D DISPCLM(.BPLN,BP59,BPIEN,+BPHIST("C",BPDT,BPIEN),$P(BPHIST("C",BPDT,BPIEN),U,2),BPDT)
  1. . S BPIENRS=0
  1. . F S BPIENRS=$O(BPHIST("C",BPDT,BPIEN,"R",BPIENRS)) Q:+BPIENRS=0 D
  1. . . D DISPRSP(.BPLN,BP59,BPIENRS,+BPHIST("C",BPDT,BPIEN,"R",BPIENRS),$P(BPHIST("C",BPDT,BPIEN,"R",BPIENRS),U,2),BPDT)
  1. . . D DISPPYR^BPSSCRLG(.BPLN,BPIENRS)
  1. Q BPLN
  1. ;
  1. ;display claim record
  1. DISPCLM(BPLN,BP59,BPIEN02,BP57,BPSTYPE,BPSDTALT) ;
  1. N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
  1. N BPX,BPLN0,BPCNT,BPSTR1,BPSTYP2,BPNFLDT,BPUNITS
  1. ;
  1. S BPLN0=BPLN
  1. S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"")
  1. S BPSTR1="Transmission Information ("_BPSTYP2_")(#"_BPIEN02_")"
  1. D SETLINE^BPSSCRLG(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-"))
  1. D SETLINE^BPSSCRLG(.BPLN,"Created on: "_$$CREATEDT^BPSSCRLG(BPIEN02,BPSDTALT))
  1. D SETLINE^BPSSCRLG(.BPLN,"VA Claim ID: "_$P($G(^BPSC(+BPIEN02,0)),U,1))
  1. D SETLINE^BPSSCRLG(.BPLN,"Submitted By: "_$$SUBMTBY^BPSSCRLG(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Transaction Type: "_$$TRTYPE^BPSSCRU5($$TRCODE^BPSSCRLG(BPIEN02)))
  1. D SETLINE^BPSSCRLG(.BPLN,"Date of Service: "_$$DOSCLM^BPSSCRLG(BPIEN02))
  1. ;Display Next Available Fill Date - BPS*1.0*15
  1. S BPNFLDT=$$NFLDT^BPSBUTL(BPRXIEN,BPREF,$$RXCOB57^BPSSCRLG(BP57))
  1. D:BPNFLDT SETLINE^BPSSCRLG(.BPLN,"Next Available Fill Date: "_$$FMTE^XLFDT(BPNFLDT,"2ZM"))
  1. D SETLINE^BPSSCRLG(.BPLN,"NDC Code: "_$$LNDC^BPSSCRU5(BPIEN02))
  1. ;
  1. S BPUNITS=$$UNITS^BPSSCRLG(BPIEN02)
  1. ; if BPUNITS is null get the BPUNITS from the PRESCRIPTION file (#52)
  1. I BPUNITS="( )" S BPUNITS=$$GETUNIT(BPRXIEN,$G(BPREF))
  1. D SETLINE^BPSSCRLG(.BPLN,"Quantity Submitted on Claim: "_$$QTY^BPSSCRLG(BPIEN02)_" "_BPUNITS)
  1. ;
  1. D SETLINE^BPSSCRLG(.BPLN,"Days Supply: "_$$DAYSSUPL^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Division: "_$$DIV^BPSSCRLG(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"NPI#: "_$$NPI^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Prescriber DEA Number: "_$$PDEA^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"ECME Pharmacy: "_$$DIVNAME^BPSSCRDS($$LDIV^BPSSCRLG(BP57)))
  1. D SETLINE^BPSSCRLG(.BPLN,"Patient Gender Code: "_$$GET1^DIQ(9002313.02,BPIEN02,305,"E"))
  1. D SETLINE^BPSSCRLG(.BPLN,"Total Prescribed Quantity Remaining: "_$$TOTPQR^BPSSCRLG(BPIEN02))
  1. S BPX="Rx Qty: "_$$BILLQTY^BPSSCRLG(BP57)_" "_$$BILLUNT^BPSSCRLG(BP57)
  1. S BPX=BPX_" Unit Cost: "_$$UNTPRICE^BPSSCRLG(BP57)
  1. S BPX=BPX_" Gross Amt Due: "_$$TOTPRICE^BPSSCRLG(BPIEN02)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX="Ingredient Cost: "_$$INGRCST^BPSSCRLG(BPIEN02)
  1. S BPX=BPX_" Dispensing Fee: "_$$DISPFEE^BPSSCRLG(BPIEN02)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. S BPX="U&C Charge: "_$$UCCHRG^BPSSCRLG(BPIEN02)
  1. S BPX=BPX_" Admin Fee: "_$$ADMNFEE^BPSSCRLG(BPIEN02)
  1. D SETLINE^BPSSCRLG(.BPLN,BPX)
  1. D SETLINE^BPSSCRLG(.BPLN,"")
  1. D SETLINE^BPSSCRLG(.BPLN,"Insurance Name: "_$$INSUR57^BPSSCRLG(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Group Name: "_$$GRPNM^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Rx Coordination of Benefits: "_$$RXCOB57^BPSSCRLG(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Pharmacy Plan ID: "_$$PHPLANID^BPSSCRLG(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"BIN: "_$$BIN^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"PCN: "_$$PCN^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"NCPDP Version: "_$$GETVER^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Group ID: "_$$GRPID^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Cardholder ID: "_$$CRDHLDID^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Patient Relationship Code: "_$$PATRELSH^BPSSCRLG(BPIEN02))
  1. D SETLINE^BPSSCRLG(.BPLN,"Cardholder First Name: "_$$CRDHLDFN^BPSSCRLG(BPIEN02,BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Cardholder Last Name: "_$$CRDHLDLN^BPSSCRLG(BPIEN02,BP57))
  1. ; BPS*1*22
  1. D SETLINE^BPSSCRLG(.BPLN,"Facility ID Qualifier: "_$$FACIDQ^BPSSCRLG(BPIEN02))
  1. F BPCNT=BPLN:1:BPLN0+BPSCRLNS D SETLINE^BPSSCRLG(.BPLN,"")
  1. S BPLN0=BPLN
  1. D SETLINE^BPSSCRLG(.BPLN,"Billing Request Payer Sheet: "_$$B1PYRIEN^BPSSCRU5(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Reversal Payer Sheet: "_$$B2PYRIEN^BPSSCRU5(BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"VA Claim ID: "_$P($G(^BPSC(+BPIEN02,0)),U,1))
  1. D SETLINE^BPSSCRLG(.BPLN,"")
  1. Q
  1. ;
  1. GETUNIT(BPRXIEN,BPREF) ; Return the NCPDP Dispense Unit
  1. ; Input: (r) BPRXIEN - Quantity dispensed from the PRESCRIPTION file (#52)
  1. ; BPREF - Rx Refill
  1. ;0utput: BPUNITS - Billing Quantity (3 decimal places)^NCPDP Dispense Unit (EA, GM or ML)
  1. ;
  1. N BPDRUG,BPQTY,BPUNITS,Z
  1. ;
  1. ; Find NCPDP Dispense Unit from PRESCRIPTION file (#52)
  1. S BPDRUG=$$GET1^DIQ(52,BPRXIEN,6,"I")
  1. S BPQTY=$S($G(BPREF)="":$$GET1^DIQ(52,BPRXIEN,7,"I"),1:$$GET1^DIQ(52.1,BPREF_","_BPRXIEN,1))/1
  1. S Z=$$NCPDPQTY^PSSBPSUT(BPDRUG,BPQTY)
  1. S BPUNITS=$P(Z,"^",2)
  1. Q "("_BPUNITS_")"
  1. ;
  1. ;display response record
  1. DISPRSP(BPLN,BP59,BPIEN03,BP57,BPSTYPE,BPSDTALT) ;
  1. N BPSCRLNS S BPSCRLNS=17 ;(see "BPS LSTMN LOG" LM template: Bottom=21, Top = 4, 21-4=17)
  1. N BPX,BPLN0,BPCNT,BPRJCDS,BPRJ,BPSTR1,BPSTYP2,BDUR,BMSG,PTRESP
  1. S BPLN0=BPLN
  1. S BPSTYP2=$S(BPSTYPE="C":"CLAIM REQUEST",BPSTYPE="R":"REVERSAL",1:"")
  1. S BPSTR1="Response Information ("_BPSTYP2_")(#"_BPIEN03_")"
  1. D SETLINE^BPSSCRLG(.BPLN,BPSTR1_$$LINE^BPSSCRU3(79-$L(BPSTR1),"-"))
  1. D SETLINE^BPSSCRLG(.BPLN,"Response Received: "_$$RESPREC^BPSSCRLG(BPIEN03,BPSDTALT))
  1. D SETLINE^BPSSCRLG(.BPLN,"Date of Service: "_$$DOSRSP^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Transaction Response Status: "_$$RESPSTAT^BPSSCRU5(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Total Amount Paid: $"_$$TOTAMNT^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Ingredient Cost Paid: $"_$$ICPAID^BPSSCRLG(BPIEN03)_" Dispensing Fee Paid: $"_$$DFPAID^BPSSCRLG(BPIEN03))
  1. S PTRESP=$$PTRESP^BPSSCRLG(BPIEN03) S PTRESP=$S(PTRESP="":"$",PTRESP="0.00":"$0",1:"($"_PTRESP_")")
  1. D SETLINE^BPSSCRLG(.BPLN,"Patient Resp (INS): "_PTRESP)
  1. ; BPS*1*22
  1. D SETLINE^BPSSCRLG(.BPLN,"Reconciliation ID: "_$$RECONID^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Reject code(s): ")
  1. D REJCODES^BPSSCRU5(BPIEN03,.BPRJCDS)
  1. S BPRJ=""
  1. F S BPRJ=$O(BPRJCDS(BPRJ)) Q:BPRJ="" D
  1. . D SETLINE^BPSSCRLG(.BPLN," "_$$GETRJNAM^BPSSCRU3(BPRJ))
  1. D WRAPLN^BPSSCRU5(.BPLN,$$MESSAGE^BPSSCRLG(BPIEN03),76,"Payer Message: ",5)
  1. D ADDMESS^BPSSCRLG(BPIEN03,1,.BPADDMSG)
  1. S BMSG="" F S BMSG=$O(BPADDMSG(BMSG)) Q:BMSG="" D
  1. . D WRAPLN^BPSSCRU5(.BPLN,BPADDMSG(BMSG),76,$S(BMSG=1:"Payer Additional Message: ",1:" "),5)
  1. D SETLINE^BPSSCRLG(.BPLN,"Reason for Service Code: "_$$DURREAS^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR Text: "_$$DURTEXT^BPSSCRLG(BPIEN03))
  1. D WRAPLN^BPSSCRU5(.BPLN,$$DURADD^BPSSCRLG(BPIEN03),76,"DUR Additional Text: ",5)
  1. ; BPS*1*18: Print Claim Log [BPS PRTCL USRSCR CLAIM LOG] (when included in the incoming response)
  1. D SETLINE^BPSSCRLG(.BPLN,"HPID/OEID: "_$$HPID^BPSSCRLG(BPIEN03,BP57))
  1. D SETLINE^BPSSCRLG(.BPLN,"Invalid Provider Data Source: "_$$INVPROV^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Formulary Alternative Eff Date: "_$$FAEDT^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Co-Agent Description: "_$$DCADES^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Unit of Prior Dispensed Quantity: "_$$UPDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Pharmacy ID Qualifier: "_$$OPIDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Pharmacy Name: "_$$OPNAM^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Pharmacy Telephone: "_$$OPTELE^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Prescriber Last Name: "_$$OPLNAM^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Prescriber ID Qualifier: "_$$OPRIDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Prescriber ID: "_$$OPRID^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"Other Prescriber Phone Number: "_$$OPRPH^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Compound Product ID: "_$$CMPPID^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Compound Product ID Qualifier: "_$$CMPPIDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Maximum Daily Dose Quantity: "_$$MAXDDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Maximum Daily Dose Unit: "_$$MAXDDU^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Minimum Daily Dose Quantity: "_$$MINDDQ^BPSSCRLG(BPIEN03))
  1. D SETLINE^BPSSCRLG(.BPLN,"DUR/DUE Minimum Daily Dose Unit: "_$$MINDDU^BPSSCRLG(BPIEN03))
  1. ;
  1. F BPCNT=1:1:2 D SETLINE^BPSSCRLG(.BPLN,"")
  1. Q
  1. ;