[613] | 1 | BPSUTIL ;BHAM ISC/FLS/SS - General Utility functions ;06/01/2004
|
---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,3,2,5**;JUN 2004;Build 45
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q
|
---|
| 6 | ;
|
---|
| 7 | ; ECMEON
|
---|
| 8 | ; Input:
|
---|
| 9 | ; SITE - Pointer to Outpatient Site file (#59)
|
---|
| 10 | ; Output
|
---|
| 11 | ; 1 - ECME is turned ON for the Outpatient Site
|
---|
| 12 | ; 0 - ECME is not turned ON for the Outpatient Site.
|
---|
| 13 | ; Note that ON means that the Outpatient site is linked to an active
|
---|
| 14 | ; BPS Pharmacy that has a Pharmacy ID.
|
---|
| 15 | ECMEON(SITE) ;
|
---|
| 16 | I '$G(SITE) Q 0
|
---|
| 17 | N BPSPHARM,FACID
|
---|
| 18 | S FACID=0
|
---|
| 19 | S BPSPHARM=$$GETPHARM(SITE)
|
---|
| 20 | I BPSPHARM="" Q 0
|
---|
| 21 | S FACID=$$GET1^DIQ(9002313.56,BPSPHARM_",",41.01)
|
---|
| 22 | I FACID="",'$$NPIREQ^BPSNPI(DT) S FACID=$$GET1^DIQ(9002313.56,BPSPHARM_",",.02)
|
---|
| 23 | Q $S(FACID:1,1:0)
|
---|
| 24 | ;
|
---|
| 25 | CMOPON(SITE) ; - Returns 1 if CMOP is turned ON for ECME or 0 if not
|
---|
| 26 | ; SITE - Pointer to #59 (OUTPATIENT SITE)
|
---|
| 27 | Q:'$G(SITE) 0
|
---|
| 28 | N PHRM S PHRM=$O(^BPS(9002313.56,"C",SITE,0)) I 'PHRM Q 0
|
---|
| 29 | Q $$GET1^DIQ(9002313.56,PHRM,1,"I")
|
---|
| 30 | ;
|
---|
| 31 | ;Function returns STATUS flag from BPS PHARMACIES (file #56)
|
---|
| 32 | ; Returns '1' for active or '0' for inactive BPS Pharmacy
|
---|
| 33 | BPSACTV(BPSPHARM) ;
|
---|
| 34 | Q:'$G(BPSPHARM) 0
|
---|
| 35 | Q +$P($G(^BPS(9002313.56,BPSPHARM,0)),U,10)
|
---|
| 36 | ;
|
---|
| 37 | BPSPLN(RXI,RXR) ; - Returns the insurance PLAN NAME (902.24) field from BPS TRANSACTION
|
---|
| 38 | ;
|
---|
| 39 | ; Input variables -> RXI - Internal Prescription File IEN
|
---|
| 40 | ; RXR - Refill Number
|
---|
| 41 | ;
|
---|
| 42 | I '$G(RXI) Q ""
|
---|
| 43 | I '$G(RXR) S RXR=0
|
---|
| 44 | N IEN59 S IEN59=$$IEN59^BPSOSRX(RXI,RXR) Q:IEN59="" ""
|
---|
| 45 | N CINS S CINS=$$GET1^DIQ(9002313.59,IEN59,901) Q:'CINS ""
|
---|
| 46 | Q $$GET1^DIQ(9002313.59902,CINS_","_IEN59,902.24)
|
---|
| 47 | ;
|
---|
| 48 | ;API for IB (IA #4146) to select BPS PHARMACY
|
---|
| 49 | ;returns results as a local array BPPHARM
|
---|
| 50 | ; Select the ECME Pharmacy or Pharmacies
|
---|
| 51 | ;
|
---|
| 52 | ; Input Variable -> BPSPHAR is passed by reference to get the result of user's selection
|
---|
| 53 | ; BPPHARM = 1 One or More Pharmacies Selected
|
---|
| 54 | ; = 0 User Entered 'ALL'
|
---|
| 55 | ; If BPSPHAR = 1 then the BPSPHAR array will be defined where:
|
---|
| 56 | ; BPSPHAR(ptr) = ptr ^ BPS PHARMACY NAME and
|
---|
| 57 | ; ptr = Internal Pointer to BPS PHARMACIES file (#9002313.56)
|
---|
| 58 | ;
|
---|
| 59 | ; Return Value -> "" = Valid Entry or Entries Selected
|
---|
| 60 | ; ^ = Exit
|
---|
| 61 | SELPHARM(BPSPHAR) ;
|
---|
| 62 | N BPRET,BPPHARM
|
---|
| 63 | S BPRET=$$SELPHARM^BPSRPT3()
|
---|
| 64 | M BPSPHAR=BPPHARM
|
---|
| 65 | Q BPRET
|
---|
| 66 | ;
|
---|
| 67 | ;
|
---|
| 68 | ;API for IB (IA #4146) to determine whether is one or more BPS PHARMACIES in the system
|
---|
| 69 | ;Function returns
|
---|
| 70 | ;1 - if the site has more than one record in the file #9002313.56
|
---|
| 71 | ;0 - if there are no any divisions
|
---|
| 72 | ;0^NAME OF THE EPHARM - if only one division return 0 and its name
|
---|
| 73 | ; to use in the header of the report
|
---|
| 74 | MULTPHRM() ;
|
---|
| 75 | N IBX
|
---|
| 76 | S IBX=+$O(^BPS(9002313.56,0))
|
---|
| 77 | I IBX=0 Q 0
|
---|
| 78 | I $O(^BPS(9002313.56,IBX))>0 Q 1
|
---|
| 79 | Q "0^"_$$GET1^DIQ(9002313.56,IBX,.01,"E")
|
---|
| 80 | ;
|
---|
| 81 | ; Function for IB (IA #4146) to return site linked to pharmacy
|
---|
| 82 | ; Input
|
---|
| 83 | ; BPSDIV - Outpatient Site
|
---|
| 84 | ; Returns
|
---|
| 85 | ; BPSPHARM - BPS Pharmacy IEN
|
---|
| 86 | GETPHARM(BPSDIV) ;
|
---|
| 87 | N BPSPHARM
|
---|
| 88 | I $G(BPSDIV)="" Q ""
|
---|
| 89 | S BPSPHARM=$O(^BPS(9002313.56,"C",BPSDIV,0)) I 'BPSPHARM Q ""
|
---|
| 90 | Q:'$$BPSACTV^BPSUTIL(BPSPHARM) ""
|
---|
| 91 | Q BPSPHARM
|
---|
| 92 | ;
|
---|
| 93 | ;API for the IB package (IA#4146)
|
---|
| 94 | ;Input parameters:
|
---|
| 95 | ; BPSRX - Rx ien (file #52)
|
---|
| 96 | ; BPSREFNO - refill number
|
---|
| 97 | ;Returned value:
|
---|
| 98 | ; 1st piece:
|
---|
| 99 | ; 0 - status "non-payable" OR there is no response from the payer for whatever reason OR wasn't submitted OR invalid parameters
|
---|
| 100 | ; 1- status "payable"
|
---|
| 101 | ; 2nd piece:
|
---|
| 102 | ; amount the payer agreed to pay
|
---|
| 103 | ; 3rd piece:
|
---|
| 104 | ; Date of Service
|
---|
| 105 | ;
|
---|
| 106 | PAIDAMNT(BPSRX,BPSREFNO) ;
|
---|
| 107 | I ($G(BPSRX)="")!($G(BPSREFNO)="") Q "0^"
|
---|
| 108 | N BPSTAT,BPSRET,IEN59,BPSRESP,BPDOS
|
---|
| 109 | S BPSTAT=$$STATUS^BPSOSRX(BPSRX,BPSREFNO)
|
---|
| 110 | ;The status of the claim should be "payable" in order to get amount of the 3rd party payment
|
---|
| 111 | ;If it was an attempt to reverse the payable claim AND reversal was rejected
|
---|
| 112 | ;then the claim still is considered as "payable" and we still can get the amount paid by the 3rd party.
|
---|
| 113 | ;In this case we return 1 (payable) in first piece and the amount paid in the 2nd piece of the returned value.
|
---|
| 114 | ;All other statuses mean that we cannot get amount paid so we return 0 = "non payable"
|
---|
| 115 | I $P(BPSTAT,U)'="E PAYABLE",$P(BPSTAT,U)'="E REVERSAL REJECTED",$P(BPSTAT,U)'="E DUPLICATE" Q "0^"
|
---|
| 116 | ;get ien for BPS TRANSACTION file
|
---|
| 117 | S IEN59=+$$IEN59^BPSOSRX(BPSRX,BPSREFNO)
|
---|
| 118 | I IEN59="" Q "0^" ;BPS Transaction IEN could not be calculated
|
---|
| 119 | S BPSRESP=+$P($G(^BPST(IEN59,0)),U,5)
|
---|
| 120 | ;response from the payer was not found - either claim was never submitted OR there
|
---|
| 121 | ;is no response for some reason - either way - we cannot provide the amount paid, so return "0"
|
---|
| 122 | I BPSRESP=0 Q "0^"
|
---|
| 123 | S BPDOS=+$P($G(^BPST(IEN59,12)),U,2)
|
---|
| 124 | S BPSRET=+$$INSPAID^BPSOS03(BPSRESP)
|
---|
| 125 | Q "1^"_BPSRET_U_BPDOS
|
---|
| 126 | ;
|
---|
| 127 | ; NPIEXTR
|
---|
| 128 | ; This API was written for the NPI extract (XUSNPIX2) and returns
|
---|
| 129 | ; the NCPDP and STATUS of the associated BPS Pharmacy
|
---|
| 130 | ; Input:
|
---|
| 131 | ; SITE - Pointer to Outpatient Site file (#59)
|
---|
| 132 | ; Output
|
---|
| 133 | ; NCPDP^STATUS (0 - inactive, 1 - active)
|
---|
| 134 | ; "" if no SITE passed in or no linkage
|
---|
| 135 | NPIEXTR(SITE) ;
|
---|
| 136 | I '$G(SITE) Q ""
|
---|
| 137 | N BPSPHARM,NCPDP,STATUS
|
---|
| 138 | S BPSPHARM=$O(^BPS(9002313.56,"C",SITE,0))
|
---|
| 139 | I 'BPSPHARM Q ""
|
---|
| 140 | S STATUS=$$BPSACTV^BPSUTIL(BPSPHARM)
|
---|
| 141 | S NCPDP=$$GET1^DIQ(9002313.56,BPSPHARM_",",.02)
|
---|
| 142 | Q NCPDP_"^"_STATUS
|
---|