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

BPSNCPD5.m

Go to the documentation of this file.
  1. BPSNCPD5 ;ALB/SS - Pharmacy API part 5 ;10-JAN-08
  1. ;;1.0;E CLAIMS MGMT ENGINE;**7,8,10,11,20**;JUN 2004;Build 27
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ;schedule a reversal for the future
  1. ; BPNEWREQ - By ref to return new BPS REQUEST ien
  1. ; BRXIEN - IEN of Prescription file (#52)
  1. ; BFILL - Fill no
  1. ; DOS - Date of service
  1. ; BWHERE - See comments at the top of BPSNCPD3
  1. ; BILLNDC
  1. ; REVREAS
  1. ; DURREC
  1. ; BPOVRIEN
  1. ; BPSCLARF
  1. ; BPSAUTH
  1. ; IEN59
  1. ; BPCOBIND
  1. ; BPREVREQ - ien of the previous BPS REQUEST
  1. ; BPACTTYP - U - unclaim(reversal request), UC - reversal+resubmit, C - claim request
  1. ; BPSCLS - BPSCLOSE parameter of EN^BPSNCPDP
  1. ;returns:
  1. ; RESPONSE code^CLAMSTAT message^D(display message)^number of seconds to hang^IEN of the new request
  1. ; RESPONSE code = 0 - Submitted through ECME
  1. ; see EN^BPSNCPD4 for other RESPONSE values;
  1. SCHREQ(BPNEWREQ,BRXIEN,BFILL,DOS,BWHERE,BILLNDC,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,IEN59,BPCOBIND,BPREVREQ,BPACTTYP,BPSCLS,BPSRTYPE,BPSPLAN,BPSPRDAT) ;
  1. N RESP,RESPONSE,MOREDATA,BPRETV
  1. N BPUSRMSG
  1. ;populate MOREDATA with basic data
  1. D BASICMOR^BPSOSRX8(BWHERE,DOS,"",REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,.MOREDATA)
  1. I BPCOBIND=2 D MORE4SEC^BPSPRRX2(.MOREDATA,.BPSPRDAT) S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. ; if the user has chosen to close the claim after reversal
  1. ; BPSCLS contains the value of the BPSCLOSE parameter of EN^BPSNCPDP
  1. I $G(BPSCLS("CLOSE AFT REV"))=1 M MOREDATA=BPSCLS
  1. ;
  1. ; Needed for Turn-Around Stats - Do NOT delete/alter!!
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-Before Submit of Reversal")
  1. S BPSTART=$$STTM^BPSNCPD4()
  1. ;schedule a request
  1. S BPRETV=$$REQST^BPSOSRX(BPACTTYP,BRXIEN,BFILL,.MOREDATA,BPCOBIND,IEN59,$G(BILLNDC),1)
  1. S BPNEWREQ=+$P(BPRETV,U,2)
  1. ;if error
  1. I +BPRETV=0 D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,4,.MOREDATA)
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-Create request error: "_$P(BPRETV,U,2)_". Claim Will Not Be submitted.")
  1. . L -^BPST
  1. ;if ok
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-BPS REQUEST: "_BPNEWREQ_" has been created")
  1. ;determine the last request
  1. I +$$NXTREQST^BPSOSRX6(BPREVREQ,BPNEWREQ)=0 D Q $$RSPCLMS^BPSOSRX8("C",4,.MOREDATA)
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-Cannot make "_BPNEWREQ_"as a NEXT REQUEST in "_BPREVREQ)
  1. Q $$RSPCLMS^BPSOSRX8(BPACTTYP,0,.MOREDATA)_U_BPNEWREQ
  1. ;
  1. ;====== Schedule a reversal
  1. ;BPSCLS - BPSCLOSE parameter of EN^BPSNCPDP
  1. REVERSAL(BPNEWREQ,BRXIEN,BFILL,OLDRESP,DOS,BWHERE,BILLNDC,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,IEN59,BPCOBIND,BPJOBFLG,BPACTTYP,BPSTART,BPREQIEN,BPSCLS,BPSRTYPE,BPSPRDAT) ;
  1. N RESP,RESPONSE,MOREDATA,BPRETV
  1. ;populate MOREDATA with basic data
  1. D BASICMOR^BPSOSRX8(BWHERE,DOS,"",REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,.MOREDATA)
  1. I BPCOBIND=2 D MORE4SEC^BPSPRRX2(.MOREDATA,.BPSPRDAT) S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. ; if the user has chosen to close the claim after reversal
  1. ; BPSCLS contains the value of the BPSCLOSE parameter of EN^BPSNCPDP
  1. I $G(BPSCLS("CLOSE AFT REV"))=1 M MOREDATA=BPSCLS
  1. ;
  1. ; Do a reversal for the appropriate actions
  1. ; If override flag is set, prompt for override values - TEST ONLY
  1. ;
  1. I $$CHECK^BPSTEST D GETOVER^BPSTEST(BRXIEN,BFILL,OLDRESP,BWHERE,"R",BPCOBIND)
  1. ;
  1. ; Needed for Turn-Around Stats - Do NOT delete/alter!!
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-Before Submit of Reversal")
  1. S BPSTART=$$STTM^BPSNCPD4()
  1. ;if background job
  1. I BPJOBFLG="B" S BPRETV=$$ACTIVATE^BPSNCPD4(BPREQIEN,"U") Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_$P(BPRETV,U,2)
  1. ;if foreground job then schedule an UNCLAIM request
  1. S BPRETV=$$REQST^BPSOSRX("U",BRXIEN,BFILL,.MOREDATA,BPCOBIND,IEN59,$G(BILLNDC))
  1. S BPNEWREQ=+$P(BPRETV,U,2)
  1. ;if error
  1. I +BPRETV=0 D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,4,.MOREDATA)
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-Create request error: "_$P(BPRETV,U,2)_". Claim Will Not Be submitted.")
  1. . L -^BPST
  1. ;if ok
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-BPS REQUEST: "_BPNEWREQ_" has been created")
  1. ;activate the scheduled request
  1. S BPRETV=$$ACTIVATE^BPSNCPD4(BPNEWREQ,"U")
  1. Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_BPNEWREQ
  1. ;
  1. ;====== Process a brand new RX/RF, which never was processed by ECME yet
  1. ;returns:
  1. ; 0 - Submitted through ECME
  1. ; or
  1. ; RESPONSE code^CLAMSTAT^D(display message)^number of seconds to hang^additional info
  1. ; see EN^BPSNCPD1 for RESPONSE values
  1. NEWCLM(BPNEWREQ,BRXIEN,BFILL,DOS,BWHERE,BILLNDC,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,BPCOBIND,BPJOBFLG,IEN59,BPACTTYP,DFN,BPSTART,BPREQIEN,BPSELIG,BPSRTYPE,BPSPLAN,BPSPRDAT) ;
  1. N BPSITE,BPECMOFF,BPSARRY,MOREDATA,IB,BPRETV,BPZRET,BPCLMST,CERTIEN,BPRESP
  1. I BPJOBFLG'="F",BPJOBFLG'="B" D LOG^BPSOSL(IEN59,$T(+0)_"-Job Flag missing") Q "5^Job Flag missing" ;RESPONSE^CLMSTAT
  1. S BPCLMST=""
  1. I BPACTTYP'="C" Q "1^Prescription not previously billed through ECME. Cannot Reverse claim.^D^2"
  1. S BPSITE=+$$GETSITE^BPSOSRX8(BRXIEN,BFILL)
  1. ;check ECME availability
  1. S BPECMOFF=$$ECMESITE^BPSOSRX5(BPSITE) I +BPECMOFF=1 Q BPECMOFF
  1. ;populate MOREDATA with basic data
  1. D BASICMOR^BPSOSRX8(BWHERE,DOS,BPSITE,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,.MOREDATA)
  1. I BPCOBIND=2 D MORE4SEC^BPSPRRX2(.MOREDATA,.BPSPRDAT) S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. I $G(BPSRTYPE)'="" S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. ;Certification Testing - Sets CERTIEN which is used in BILLABLE
  1. S BPRESP=$$CERTTEST^BPSNCPD4(.CERTIEN) I +BPRESP=1 Q BPRESP
  1. ;Populate BPSARRY
  1. D STARRAY^BPSNCPD1(BRXIEN,BFILL,BWHERE,.BPSARRY,BPSITE,DOS,BILLNDC)
  1. S BPSARRY("RXCOB")=BPCOBIND
  1. S BPSARRY("PLAN")=$G(BPSPLAN),BPSARRY("RTYPE")=$G(BPSRTYPE) ;for secondary and TRICARE/dual eligibility billing, to be used by RX^IBNCPDP
  1. ;Billing determination
  1. S IB=$$BILLABLE^BPSNCPD4(DFN,BWHERE,.MOREDATA,.BPSARRY,CERTIEN,.BPSELIG)
  1. ;if non-billable or no response from IB
  1. I +IB'=1 Q $P(IB,U,2,5)_"^D^"
  1. ;check IB data
  1. S BPRETV=$$IBDATAOK^BPSOSRX8(.MOREDATA,$G(BPSARRY("NO ECME INSURANCE"))) I BPRETV>0 Q BPRETV
  1. ; Needed for Turn-Around Stats - Do NOT delete/alter!!
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-Before submit of claim")
  1. S BPSTART=$$STTM^BPSNCPD4()
  1. ;if background job
  1. I BPJOBFLG="B",+$G(BPREQIEN)=0 D Q "5^BPS REQUEST IEN missing" ;should never happen
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-BPS REQUEST IEN missing for background job. Claim cannot be processed.")
  1. I BPJOBFLG="B" D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_BPREQIEN
  1. . ;Update IB data
  1. . D UPDINSDT^BPSOSRX7(BPREQIEN,.MOREDATA,IEN59) ;
  1. . S BPRETV=$$ACTIVATE^BPSNCPD4(BPREQIEN,"C")
  1. ;if foreground job then schedule a CLAIM request
  1. ;
  1. ; If override flag is set, prompt for override values - TEST ONLY
  1. I $$CHECK^BPSTEST D GETOVER^BPSTEST(BRXIEN,BFILL,"",BWHERE,"S",BPCOBIND)
  1. ;
  1. S BPRETV=$$REQST^BPSOSRX("C",BRXIEN,BFILL,.MOREDATA,BPCOBIND,IEN59,$G(BILLNDC))
  1. S BPNEWREQ=+$P(BPRETV,U,2)
  1. ;if error
  1. I +BPRETV=0 D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,4,.MOREDATA,$P(BPRETV,U,2))
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-Create request error: "_$P(BPRETV,U,2)_". Claim Will Not Be submitted.")
  1. ;if ok
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-BPS REQUEST: "_BPNEWREQ_" has been created")
  1. ;activate the scheduled request
  1. S BPRETV=$$ACTIVATE^BPSNCPD4(BPNEWREQ,"C")
  1. Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_BPNEWREQ
  1. ;
  1. ;Process RX/RF resubmit OR reversal+resubmit for non-payables
  1. ; also process RX/RF resubmit WITHOUT a Reversal no matter the payable status of the claim (bps*1*20)
  1. ;returns:
  1. ; 0 - Submitted through ECME
  1. ; or
  1. ; RESPONSE code^CLAMSTAT^D(display message)^number of seconds to hang^additional info
  1. ; see EN^BPSNCPDP for RESPONSE values
  1. REVRESNP(BPNEWREQ,BRXIEN,BFILL,DOS,BWHERE,BILLNDC,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,BPCOBIND,BPJOBFLG,IEN59,BPACTTYP,DFN,BPSTART,BPREQIEN,OLDRESP,BPSELIG,BPSRTYPE,BPSPLAN,BPSPRDAT) ;
  1. N BPSITE,BPECMOFF,BPSARRY,MOREDATA,IB,BPRETV,BPZRET,BPCLMST,CERTIEN,BPRESP
  1. I BPJOBFLG'="F",BPJOBFLG'="B" D LOG^BPSOSL(IEN59,$T(+0)_"-Job Flag missing") Q "5^Job Flag missing" ;RESPONSE^CLMSTAT
  1. S BPCLMST=""
  1. I BPACTTYP="U" Q "1^Prescription is not payable. Cannot Reverse claim.^D^2"
  1. S BPSITE=+$$GETSITE^BPSOSRX8(BRXIEN,BFILL)
  1. ;check ECME availability
  1. S BPECMOFF=$$ECMESITE^BPSOSRX5(BPSITE) I +BPECMOFF=1 Q BPECMOFF
  1. ;
  1. ;populate MOREDATA with basic data
  1. D BASICMOR^BPSOSRX8(BWHERE,DOS,BPSITE,REVREAS,DURREC,BPOVRIEN,BPSCLARF,BPSAUTH,BPSDELAY,.MOREDATA)
  1. I BPCOBIND=2 D MORE4SEC^BPSPRRX2(.MOREDATA,.BPSPRDAT) S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. I $G(BPSRTYPE)'="" S MOREDATA("RTYPE")=$G(BPSRTYPE)
  1. ;Certification Testing - Sets CERTIEN which is used in BILLABLE
  1. S BPRESP=$$CERTTEST^BPSNCPD4(.CERTIEN) I +BPRESP=1 Q BPRESP
  1. ;Populate BPSARRY
  1. D STARRAY^BPSNCPD1(BRXIEN,BFILL,BWHERE,.BPSARRY,BPSITE,DOS,BILLNDC)
  1. S BPSARRY("RXCOB")=BPCOBIND
  1. S BPSARRY("PLAN")=$G(BPSPLAN),BPSARRY("RTYPE")=$G(BPSRTYPE) ;for secondary and TRICARE/dual eligibility billing, to be used by RX^IBNCPDP
  1. ;set BPSARRY("SC/EI OVR") flag for scheduled requests
  1. I $G(BPJOBFLG)="B",$G(BPREQIEN) S BPSARRY("SC/EI OVR")=$P($G(^BPS(9002313.77,+$G(BPREQIEN),2)),U,9)
  1. ;Billing determination
  1. S IB=$$BILLABLE^BPSNCPD4(DFN,BWHERE,.MOREDATA,.BPSARRY,CERTIEN,.BPSELIG)
  1. ;if non-billable or no response from IB
  1. I +IB'=1 Q $P(IB,U,2,5)_"^D^"
  1. ;check IB data
  1. S BPRETV=$$IBDATAOK^BPSOSRX8(.MOREDATA,$G(BPSARRY("NO ECME INSURANCE"))) I BPRETV>0 Q BPRETV
  1. ; Needed for Turn-Around Stats - Do NOT delete/alter!!
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-Before submit of claim")
  1. S BPSTART=$$STTM^BPSNCPD4()
  1. ;if background job
  1. I BPJOBFLG="B" D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_$P(BPRETV,U,2)
  1. . ;Update IB data
  1. . D UPDINSDT^BPSOSRX7(BPREQIEN,.MOREDATA,IEN59) ;
  1. . S BPRETV=$$ACTIVATE^BPSNCPD4(BPREQIEN,"C")
  1. ;if foreground job then schedule a CLAIM request
  1. ;
  1. ; If override flag is set, prompt for override values - TEST ONLY
  1. I $$CHECK^BPSTEST D GETOVER^BPSTEST(BRXIEN,BFILL,OLDRESP,BWHERE,"S",BPCOBIND)
  1. ;
  1. S BPRETV=$$REQST^BPSOSRX("C",BRXIEN,BFILL,.MOREDATA,BPCOBIND,IEN59,$G(BILLNDC))
  1. S BPNEWREQ=+$P(BPRETV,U,2)
  1. ;if error
  1. I +BPRETV=0 D Q $$RSPCLMS^BPSOSRX8(BPACTTYP,4,.MOREDATA,$P(BPRETV,U,2))
  1. . D LOG^BPSOSL(IEN59,$T(+0)_"-Create request error: "_$P(BPRETV,U,2)_". Claim Will Not Be submitted.")
  1. ;if ok
  1. D LOG^BPSOSL(IEN59,$T(+0)_"-BPS REQUEST: "_BPNEWREQ_" has been created")
  1. ;activate the scheduled request
  1. S BPRETV=$$ACTIVATE^BPSNCPD4(BPNEWREQ,"C")
  1. Q $$RSPCLMS^BPSOSRX8(BPACTTYP,+BPRETV,.MOREDATA)_U_BPNEWREQ
  1. ;