1 | IBNCPDP3 ;OAK/ELZ - STORES NDC/AWP UPDATES ;20-JUN-2003
|
---|
2 | ;;2.0;INTEGRATED BILLING;**223,276,342,363**;21-MAR-94;Build 35
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;
|
---|
6 | UPAWP(IBNDC,IBAWP,IBADT) ; updates AWP prices for NDCs
|
---|
7 | ;
|
---|
8 | N IBITEM,IBCS
|
---|
9 | ;
|
---|
10 | ;
|
---|
11 | S IBCS=$P($G(^IBE(350.9,1,9)),"^",12)
|
---|
12 | I 'IBCS Q "0^Unable to find Charge Set"
|
---|
13 | ;
|
---|
14 | S IBNDC=$$NDC^IBNCPDPU(IBNDC)
|
---|
15 | ;
|
---|
16 | S IBITEM=+$$ADDBI^IBCREF("NDC",IBNDC) I IBITEM Q "0^Unable to add item"
|
---|
17 | ;
|
---|
18 | I '$$ADDCI^IBCREF(IBCS,IBITEM,IBADT,IBAWP) Q "0^Unable to add charge"
|
---|
19 | ;
|
---|
20 | Q 1
|
---|
21 | ;
|
---|
22 | ;
|
---|
23 | ;
|
---|
24 | ;
|
---|
25 | REVERSE(DFN,IBD,IBAUTO) ;process reversed claims
|
---|
26 | N IBIFN,I,IB,IBIL,IBCHG,IBCRES,IBY,X,Y,DA,DIE,DR,IBADT,IBLOCK,IBLDT
|
---|
27 | N IBNOW,IBDUZ,IBCR,IBRELC,IBCC,IBPAP,IBRXN,IBFIL,IBRTS,IBARES,IBUSR
|
---|
28 | S IBDUZ=.5
|
---|
29 | ;
|
---|
30 | S IBLOCK=0
|
---|
31 | ; find bill number
|
---|
32 | I 'DFN S IBY="0^No patient" G REVQ
|
---|
33 | I '$L($G(IBD("CLAIMID"))) S IBY="0^Missing ECME Number" G REVQ
|
---|
34 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBY="0^Missing Fill Date" G REVQ
|
---|
35 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBY="0^No Rx IEN" G REVQ
|
---|
36 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBY="0^No fill number" G REVQ
|
---|
37 | I $E($G(IBD("RESPONSE")),1)="R" D G REVQ:+'$G(IBRTS)
|
---|
38 | . S IBY="0^REVERSAL rejected by payer"
|
---|
39 | . S IBRTS=$$RTS(IBD("REVERSAL REASON"))
|
---|
40 | ;
|
---|
41 | S IBD("BCID")=(+IBD("CLAIMID"))_";"_IBADT ; BC ID Number
|
---|
42 | L +^DGCR(399,"AG",IBD("BCID")):15 E S IBY="0^Cannot lock ECME number" G REVQ
|
---|
43 | S IBLOCK=1
|
---|
44 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
45 | I $D(^DGCR(399,"AG",IBD("BCID"))) S ^(IBD("BCID"))=""
|
---|
46 | S IBIFN=$$MATCH^IBNCPDP2(IBD("BCID"))
|
---|
47 | I $D(IBD("CLOSE REASON")),'$D(IBD("DROP TO PAPER")) S IBD("DROP TO PAPER")=""
|
---|
48 | S IBCR=+$G(IBD("CLOSE REASON"))
|
---|
49 | S IBPAP=$G(IBD("DROP TO PAPER"))
|
---|
50 | S IBRELC=$G(IBD("RELEASE COPAY"))
|
---|
51 | S IBCC=$G(IBD("CLOSE COMMENT"))
|
---|
52 | D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,IBCR,IBPAP,IBRELC,IBCC,IBUSR)
|
---|
53 | I 'IBIFN S IBY="0^"_$S(IBPAP:"Dropped to paper",IBCR>1:"Set non-billable reason in CT",1:"Cannot find the bill to reverse") G REVQ
|
---|
54 | ;
|
---|
55 | F I=0,"S" S IB(I)=$G(^DGCR(399,IBIFN,I))
|
---|
56 | I IB(0)="" S IBY="0^No data in bill" G REVQ
|
---|
57 | I +$P(IB("S"),U,16),$P(IB("S"),U,17)]"" S IBY="0^Bill already cancelled" G REVQ
|
---|
58 | ;
|
---|
59 | S:'$D(IBCRES) IBCRES="ECME PRESCRIPTION REVERSED"
|
---|
60 | S DA=IBIFN,DR="16////1;19////"_IBCRES,DIE="^DGCR(399,"
|
---|
61 | D ^DIE K DA,DIE,DR
|
---|
62 | ;
|
---|
63 | ; - decrease out the receivable in AR
|
---|
64 | S IB("U1")=$G(^DGCR(399,IBIFN,"U1"))
|
---|
65 | S IBIL=$P($G(^PRCA(430,IBIFN,0)),"^")
|
---|
66 | S IBCHG=$S(IB("U1")']"":0,$P(IB("U1"),"^",1)]"":$P(IB("U1"),"^",1),1:0)
|
---|
67 | ;
|
---|
68 | S X="21^"_IBCHG_"^"_IBIL_"^"_IBDUZ_"^"_DT_"^"_IBCRES
|
---|
69 | D ^PRCASER1
|
---|
70 | S IBARES=Y
|
---|
71 | I IBARES<0 S IBY=IBARES D BULL
|
---|
72 | ;
|
---|
73 | S IBY=$S(IBARES<0:"0^"_$P(IBARES,"^",2),1:1)
|
---|
74 | ;
|
---|
75 | I IBDUZ'=DUZ D ; set the real user
|
---|
76 | . N IBI,IBT S IBI=18,IBT(399,IBIFN_",",IBI)=IBDUZ D FILE^DIE("","IBT")
|
---|
77 | ;
|
---|
78 | REVQ ; perform end of job tasks
|
---|
79 | D LOG^IBNCPDP2($S($G(IBAUTO)=1:"AUTO REVERSE",$G(IBAUTO)=2:"BILL CANCELLED",1:"REVERSE"),IBY)
|
---|
80 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
81 | I IBY=1,$G(IBIFN) S IBY=+IBIFN
|
---|
82 | Q IBY
|
---|
83 | ;
|
---|
84 | RTS(IBRR) ; Return to Stock processing on Released Rx
|
---|
85 | ; input - IBRR = reversal reason
|
---|
86 | ; IBCRSN = passed in by reference
|
---|
87 | ; output - 0 = reversal not due to a Rx RETURN TO STOCK or Rx DELETE
|
---|
88 | ; 1 = reversal due to a Rx RETURN TO STOCK or Rx DELETE
|
---|
89 | ; IBCRSN = charge removal reason
|
---|
90 | I IBRR'="RX RETURNED TO STOCK"&(IBRR'="RX DELETED") Q 0
|
---|
91 | N IBTRKRN,IBLOCK2,IBCMT,DA,DIE,DR
|
---|
92 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
93 | I 'IBTRKRN Q 0 ; CT record does not exist
|
---|
94 | I '$P($G(^IBT(356,IBTRKRN,0)),U,11) Q 0 ; BILL does not exist
|
---|
95 | S IBCRES=$$GETRSN(DFN,IBRXN,IBFIL) ; recorded in file 399 entry
|
---|
96 | L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
|
---|
97 | S DIE="^IBT(356,",DA=IBTRKRN,IBCMT="Rx RTS - May Need Refund"
|
---|
98 | S DR="1.08////"_IBCMT
|
---|
99 | D ^DIE
|
---|
100 | I IBLOCK2 L -^IBT(356,IBTRKRN)
|
---|
101 | Q 1
|
---|
102 | ;
|
---|
103 | BULL ; Generate a bulletin if there is an error in cancelling the claim.
|
---|
104 | N IBC,IBT,IBPT,IBGRP,XMDUZ,XMTEXT,XMSUB,XMY
|
---|
105 | ;
|
---|
106 | S IBPT=$$PT^IBEFUNC(DFN)
|
---|
107 | S XMSUB=$E($P(IBPT,"^"),1,14)_" "_$P(IBPT,"^",3)_" - ERROR ENCOUNTERED"
|
---|
108 | S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
|
---|
109 | S XMY(IBDUZ)=""
|
---|
110 | S XMY("G.IBCNR EPHARM")=""
|
---|
111 | ;
|
---|
112 | S IBT(1)="An error occurred while cancelling the Pharmacy claim from ECME"
|
---|
113 | S IBT(2)="fiscal intermediary for the following patient:"
|
---|
114 | S IBT(3)=" " S IBC=3
|
---|
115 | D PAT^IBAERR1 ; Accepts IBDUZ
|
---|
116 | S IBC=IBC+1,IBT(IBC)=" Bill #: "_IBIL
|
---|
117 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
118 | S IBC=IBC+1,IBT(IBC)="The following error was encountered:"
|
---|
119 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
120 | D ERR^IBAERR1
|
---|
121 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
122 | S IBC=IBC+1,IBT(IBC)="Please review the circumstances surrounding this error and decrease"
|
---|
123 | S IBC=IBC+1,IBT(IBC)="out this receivable in Accounts Receivable if necessary."
|
---|
124 | D ^XMD
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | GETRSN(DFN,IBRXN,IBFIL) ;
|
---|
128 | ; retrieve charge removal reason from file 354.71
|
---|
129 | ; input - DFN,IBRXN=Rx ien,IBFIL=fill number
|
---|
130 | ; output - charge removal reason
|
---|
131 | N IBDT,IBDA,IBXRSN,IBRXFIL,IB0
|
---|
132 | S (IBDT,IBDA)=0,IBXRSN=""
|
---|
133 | S IBRXFIL=$S('IBFIL:IBRXN,1:IBRXN_";"_IBFIL)
|
---|
134 | F S IBDT=$O(^IBAM(354.71,"AD",DFN,IBDT)) Q:'IBDT Q:IBXRSN]"" D
|
---|
135 | . F S IBDA=$O(^IBAM(354.71,"AD",DFN,IBDT,IBDA)) Q:'IBDA Q:IBXRSN]"" D
|
---|
136 | . . S IB0=^IBAM(354.71,IBDA,0)
|
---|
137 | . . Q:$P(IB0,"^",6)'[IBRXFIL
|
---|
138 | . . S IBXRSN=$$GET1^DIQ(354.71,IBDA_",",.19)
|
---|
139 | S:IBXRSN']"" IBXRSN="CHARGE REMOVAL REASON NOT FOUND"
|
---|
140 | Q "Reversal Rej, no pymt due<>"_IBXRSN
|
---|
141 | ;
|
---|
142 | ;IBNCPDP3
|
---|