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
|
---|