1 | IBACUS2 ;ALB/CPM - TRICARE FISCAL INTERMEDIARY RX CLAIMS ;02-AUG-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**52,91,51,240,341,347**;21-MAR-94;Build 24
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | BILL(IBKEY,IBCHTRN) ; Create the TRICARE claim for the Fiscal Intermediary.
|
---|
6 | ; Input: IBKEY -- 1 ; 2, where
|
---|
7 | ; 1 = Pointer to the prescription in file #52
|
---|
8 | ; 2 = Pointer to the refill in file #52.1, or
|
---|
9 | ; 0 for the original fill
|
---|
10 | ; IBCHTRN -- Pointer to the transaction entry in file #351.5
|
---|
11 | ;
|
---|
12 | N IBQUERY
|
---|
13 | S IBY=1 K IBDRX
|
---|
14 | I '$G(IBKEY) G BILLQ
|
---|
15 | I $$FILE^IBRXUTL(+IBKEY,.01)="" G BILLQ
|
---|
16 | S IBAMT=$P($G(^IBA(351.5,+IBCHTRN,2)),"^",5) ; FI portion of charge
|
---|
17 | I 'IBAMT G BILLQ
|
---|
18 | ;
|
---|
19 | ; - derive minimal variables
|
---|
20 | I '$$CHECK^IBECEAU(0) S IBY="-1^IB009" G BILLQ
|
---|
21 | S IBSERV=$P($G(^IBE(350.1,1,0)),"^",4)
|
---|
22 | I '$$SERV^IBARX1(IBSERV) S IBY="-1^IB003" G BILLQ
|
---|
23 | ;
|
---|
24 | ; - establish a stub claim/receivable
|
---|
25 | D SET^IBR I IBY<0 G BILLQ
|
---|
26 | ;
|
---|
27 | ; - set up the following variables for claim establishment:
|
---|
28 | ; .01 BILL #
|
---|
29 | ; .17 ORIG CLAIM
|
---|
30 | ; .2 AUTO?
|
---|
31 | ; .02 DFN
|
---|
32 | ; .06 TIMEFRAME
|
---|
33 | ; .07 RATE TYPE
|
---|
34 | ; .18 SC AT TIME?
|
---|
35 | ; .04 LOCATION (WILL NEED DIVISION THAT DISPENSED)
|
---|
36 | ; .05 BILL CLASSIF (3)
|
---|
37 | ; .03 EVT DATE (FILL DATE)
|
---|
38 | ; 151 BILL FROM
|
---|
39 | ; 152 BILL TO
|
---|
40 | K IB
|
---|
41 | S (IB(.02),DFN,IBDFN)=$$FILE^IBRXUTL(+IBKEY,2)
|
---|
42 | I 'DFN S IBY="-1^IB002" G BILLQ
|
---|
43 | S IB(.07)=$O(^DGCR(399.3,"B","TRICARE",0))
|
---|
44 | I 'IB(.07) S IBY="-1^IB059" G BILLQ
|
---|
45 | I $$TRANS^PSOCPTRI(+IBKEY,+$P(IBKEY,";",2),.IBDRX)<0 S IBY="-1^IB010" G BILLQ
|
---|
46 | ;
|
---|
47 | S IBIFN=PRCASV("ARREC")
|
---|
48 | S IB(.01)=$P(PRCASV("ARBIL"),"-",2)
|
---|
49 | S IB(.17)=""
|
---|
50 | S IB(.2)=0
|
---|
51 | S IB(.06)=1
|
---|
52 | S IB(.18)=$$SC^IBCU3(DFN)
|
---|
53 | S IB(.04)=1 ; how can I get Division? RON...
|
---|
54 | S IB(.05)=3
|
---|
55 | S (IB(.03),IB(151),IB(152))=IBDRX("FDT")
|
---|
56 | ;
|
---|
57 | ; - set 362.4 node to rx#^p50^days sup^fill date^qty^ndc
|
---|
58 | S IB(362.4,+IBKEY,1)=IBDRX("RX#")_"^"_$$FILE^IBRXUTL(+IBKEY,6)_"^"_IBDRX("SUP")_"^"_IBDRX("FDT")_"^"_IBDRX("QTY")_"^"_IBDRX("NDC")
|
---|
59 | ;
|
---|
60 | ; - call the autobiller module to create the claim with a default
|
---|
61 | ; diagnosis and procedure for prescriptions
|
---|
62 | D EN^IBCD3(.IBQUERY)
|
---|
63 | D CLOSE^IBSDU(.IBQUERY)
|
---|
64 | ;
|
---|
65 | ; - add the payor (fiscal intermediary) to the claim
|
---|
66 | S IBCDFN=$$CUS^IBACUS(DFN)
|
---|
67 | I 'IBCDFN S IBY="-1^IB054" G BILLQ
|
---|
68 | S IBINS=+$G(^DPT(DFN,.312,IBCDFN,0))
|
---|
69 | S DIE="^DGCR(399,",DA=IBIFN,DR="112////"_IBCDFN
|
---|
70 | D ^DIE K DA,DR,DIE,DGRVRCAL
|
---|
71 | ;
|
---|
72 | ; - add charge to the claim
|
---|
73 | S IBRVCD=$P($G(^DIC(36,IBINS,0)),"^",15) ; rx refill rev code
|
---|
74 | I IBRVCD="" S IBRVCD=$P($G(^IBE(363.1,+$P($G(^IBE(350.9,1,9)),U,12),0)),U,5) ; CS def rev code
|
---|
75 | I IBRVCD="" S X=250 ; gen'l rx rev code
|
---|
76 | ;
|
---|
77 | S IBBS=$P($G(^IBE(363.1,+$P($G(^IBE(350.9,1,9)),U,12),0)),U,6) ; CS def bedsection
|
---|
78 | S IBUNITS=1 ; one unit
|
---|
79 | S IBCPT=$P($G(^IBE(350.9,1,1)),"^",30) ; def rx refill cpt
|
---|
80 | S IBDIV="" ; division
|
---|
81 | S IBAA=0 ; not auto calc charges
|
---|
82 | S IBTYPE=3 ; rx type
|
---|
83 | S IBITEM="" ; charge item link
|
---|
84 | ;
|
---|
85 | ;
|
---|
86 | S X=$$ADDRC^IBCRBF(IBIFN,IBRVCD,IBBS,IBAMT,IBUNITS,IBCPT,IBDIV,IBAA,IBTYPE,IBITEM)
|
---|
87 | I X<0 S IBY="-1^^Unable to add Revenue Code charge to claim." G BILLQ
|
---|
88 | ;
|
---|
89 | ; - update the authorize/print fields
|
---|
90 | S DIE="^DGCR(399,",DA=IBIFN,DR="9////1" D ^DIE K DA,DR,DIE
|
---|
91 | S DIE="^DGCR(399,",DA=IBIFN,DR="12////"_DT D ^DIE K DA,DR,DIE
|
---|
92 | ;
|
---|
93 | ; - pass the claim to AR
|
---|
94 | D GVAR^IBCBB,ARRAY^IBCBB1,^PRCASVC6,REL^PRCASVC:PRCASV("OKAY")
|
---|
95 | I 'PRCASV("OKAY") S IBY="-1^^Unable to establish receivable in AR." G BILLQ
|
---|
96 | ;
|
---|
97 | ; - update the rx transaction file (#351.5)
|
---|
98 | S DA=IBCHTRN,DIE="^IBA(351.5,",DR=".09////"_IBIFN D ^DIE K DA,DIE,DR
|
---|
99 | ;
|
---|
100 | ; - update the AR status to Active
|
---|
101 | S PRCASV("STATUS")=16
|
---|
102 | D STATUS^PRCASVC1
|
---|
103 | ;
|
---|
104 | BILLQ I IBY<0 D ERRMSG^IBACVA2(1,2)
|
---|
105 | K IBRVCD,IBBS,IBUNITS,IBCPT,IBDIV,IBAA,IBTYPE,IBITEM,IBAMT
|
---|
106 | K IBSERV,IBFAC,IBSITE,IBDRX,IB,IBCDFN,IBINS,IBIDS,IBIFN,IBDFN
|
---|
107 | K PRCASV,PRCAERR
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | ;
|
---|
111 | CANC(IBCHTRN) ; Cancel the claim to the Fiscal Intermediary.
|
---|
112 | ; Input: IBCHTRN -- Pointer to the transaction entry in file #351.5
|
---|
113 | ;
|
---|
114 | S IBIFN=+$P($G(^IBA(351.5,IBCHTRN,0)),"^",9)
|
---|
115 | I 'IBIFN G CANCQ
|
---|
116 | F I=0,"S" S IB(I)=$G(^DGCR(399,IBIFN,I))
|
---|
117 | I IB(0)="" G CANCQ
|
---|
118 | I +$P(IB("S"),U,16),$P(IB("S"),U,17)]"" G CANCQ
|
---|
119 | ;
|
---|
120 | S DA=IBIFN,DR="16////1;19////PRESCRIPTION REVERSED",DIE="^DGCR(399,"
|
---|
121 | D ^DIE K DA,DIE,DR
|
---|
122 | ;
|
---|
123 | ; - decrease out the receivable in AR
|
---|
124 | S DFN=+$P(IB(0),"^",2)
|
---|
125 | S IB("U1")=$G(^DGCR(399,IBIFN,"U1"))
|
---|
126 | S IBIL=$P($G(^PRCA(430,IBIFN,0)),"^")
|
---|
127 | S IBCHG=$S(IB("U1")']"":0,$P(IB("U1"),"^",1)]"":$P(IB("U1"),"^",1),1:0)
|
---|
128 | S IBCRES="TRICARE PRESCRIPTION REVERSED"
|
---|
129 | ;
|
---|
130 | S X="21^"_IBCHG_"^"_IBIL_"^"_$S('DUZ:.5,1:DUZ)_"^"_DT_"^"_IBCRES ; *341
|
---|
131 | D ^PRCASER1
|
---|
132 | I Y<0 S IBY=Y D BULL
|
---|
133 | ;
|
---|
134 | CANCQ K DFN,IBIFN,IB,IBIL,IBCHG,IBCRES,IBY,X,Y
|
---|
135 | Q
|
---|
136 | ;
|
---|
137 | ;
|
---|
138 | BULL ; Generate a bulletin if there is an error in canceling the claim.
|
---|
139 | K IBT S IBPT=$$PT^IBEFUNC(DFN)
|
---|
140 | S XMSUB=$E($P(IBPT,"^"),1,14)_" "_$P(IBPT,"^",3)_" - ERROR ENCOUNTERED"
|
---|
141 | S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
|
---|
142 | S XMY(DUZ)=""
|
---|
143 | S IBGRP=$P($G(^XMB(3.8,+$P($G(^IBE(350.9,1,1)),"^",7),0)),"^")
|
---|
144 | I IBGRP]"" S XMY("G."_IBGRP_"@"_^XMB("NETNAME"))=""
|
---|
145 | ;
|
---|
146 | S IBT(1)="An error occurred while cancelling the Pharmacy claim to the TRICARE"
|
---|
147 | S IBT(2)="fiscal intermediary for the following patient:"
|
---|
148 | S IBT(3)=" " S IBC=3
|
---|
149 | S IBDUZ=DUZ D PAT^IBAERR1
|
---|
150 | S IBC=IBC+1,IBT(IBC)=" Bill #: "_IBIL
|
---|
151 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
152 | S IBC=IBC+1,IBT(IBC)="The following error was encountered:"
|
---|
153 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
154 | D ERR^IBAERR1
|
---|
155 | S IBC=IBC+1,IBT(IBC)=" "
|
---|
156 | S IBC=IBC+1,IBT(IBC)="Please review the circumstances surrounding this error and decrease"
|
---|
157 | S IBC=IBC+1,IBT(IBC)="out this receivable in Accounts Receivable if necessary."
|
---|
158 | ;
|
---|
159 | D ^XMD
|
---|
160 | K IBC,IBDUZ,IBT,IBPT,IBGRP,XMDUZ,XMTEXT,XMSUB,XMY
|
---|
161 | Q
|
---|