1 | IBNCPDP4 ;DALOI/AAT - HANDLE ECME EVENTS ;20-JUN-2003
|
---|
2 | ;;2.0;INTEGRATED BILLING;**276,342**;21-MAR-94;Build 18
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;NCPDP PHASE III
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | CLOSE(DFN,IBD) ; Close Claim Event
|
---|
9 | N IBADT,IBTRKR,IBTRKRN,IBRXN,IBFIL,IBEABD,IBRES,IBLOCK,IBDUZ
|
---|
10 | N IBRXTYP,IBCR,DA,DIE,DR,IBUSR
|
---|
11 | S IBDUZ=.5
|
---|
12 | S IBRES=1,IBLOCK=0
|
---|
13 | ;
|
---|
14 | I 'DFN S IBRES="0^No patient" G CLOSEQ
|
---|
15 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G CLOSEQ
|
---|
16 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G CLOSEQ
|
---|
17 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G CLOSEQ
|
---|
18 | S IBCR=+$G(IBD("CLOSE REASON")) I 'IBCR S IBRES="0^No close reason" G CLOSEQ
|
---|
19 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G CLOSEQ
|
---|
20 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
21 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
22 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
23 | ;
|
---|
24 | ; -- claims tracking info
|
---|
25 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
26 | ; date can't be before parameters
|
---|
27 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
28 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
29 | ;
|
---|
30 | I 'IBTRKRN S IBRES="0^CT record not found" G CLOSEQ
|
---|
31 | ;
|
---|
32 | D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,IBCR,$G(IBD("DROP TO PAPER")),$G(IBD("RELEASE COPAY")),$G(IBD("CLOSE COMMENT")),IBUSR)
|
---|
33 | ;
|
---|
34 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
35 | ; add ECME #,ECME flag, remove total charges
|
---|
36 | S DR="1.1///"_IBD("CLAIMID")_";1.11///2;.29////@"
|
---|
37 | D ^DIE
|
---|
38 | ;
|
---|
39 | S IBRES=1 ; OK
|
---|
40 | CLOSEQ ;
|
---|
41 | D LOG^IBNCPDP2("CLOSE",IBRES)
|
---|
42 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
43 | Q IBRES
|
---|
44 | ;
|
---|
45 | ;
|
---|
46 | RELEASE(DFN,IBD) ;
|
---|
47 | N IBRES,IBADT,IBRXN,IBFIL,IBRDT,IBLOCK,IBLOCK2,IBTRKR,IBTRKRN
|
---|
48 | N IBEABD,IBNBR,DA,DIE,DR,IBUSR
|
---|
49 | S IBLOCK=0
|
---|
50 | I 'DFN S IBRES="0^No patient" G RELQ
|
---|
51 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G RELQ
|
---|
52 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G RELQ
|
---|
53 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G RELQ
|
---|
54 | S IBRDT=+$G(IBD("RELEASE DATE"),-1) I 'IBRDT S IBRES="0^No release date" G RELQ
|
---|
55 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G RELQ
|
---|
56 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
57 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
58 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
59 | ; -- claims tracking info
|
---|
60 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
61 | ; date can't be before parameters
|
---|
62 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
63 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
64 | I 'IBTRKRN S IBRES="0^No CT record found." G RELQ
|
---|
65 | ;
|
---|
66 | ; Remove NBR from CT and set T+60 (if not billed yet)
|
---|
67 | ; Set ECME flags in CT
|
---|
68 | ;
|
---|
69 | L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
|
---|
70 | S DIE="^IBT(356,",DA=IBTRKRN,DR=""
|
---|
71 | S IBNBR=+$P($G(^IBT(356,IBTRKRN,0)),U,19)
|
---|
72 | ; Clean up "Rx not released"
|
---|
73 | I IBNBR,$P($G(^IBE(356.8,IBNBR,0)),U)="PRESCRIPTION NOT RELEASED" S DR=DR_".19////@;",IBNBR=""
|
---|
74 | ;
|
---|
75 | ; Set EABD if no bill and no NBR
|
---|
76 | I '$P($G(^IBT(356,IBTRKRN,0)),U,11),'IBNBR D
|
---|
77 | . S IBEABD=$$EABD^IBTUTL($O(^IBE(356.6,"AC",4,0)),IBADT)
|
---|
78 | . S:'IBEABD IBEABD=DT
|
---|
79 | . S IBEABD=$$FMADD^XLFDT(IBEABD,60)
|
---|
80 | . S DR=DR_".17////^S X=IBEABD;"
|
---|
81 | ;
|
---|
82 | ; Set ECME Flags
|
---|
83 | S DR=DR_"1.1////"_IBD("CLAIMID")_";"
|
---|
84 | ; Reject status will not be set here
|
---|
85 | ;
|
---|
86 | D ^DIE
|
---|
87 | S IBFDA(356,IBTRKRN_",",1.03)=DT ; date last edited
|
---|
88 | S IBFDA(356,IBTRKRN_",",1.04)=IBUSR ; last edited by
|
---|
89 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
90 | I IBLOCK2 L -^IBT(356,IBTRKRN)
|
---|
91 | ;
|
---|
92 | S IBRES=1
|
---|
93 | RELQ ;
|
---|
94 | D LOG^IBNCPDP2("RELEASE",IBRES)
|
---|
95 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
96 | Q IBRES
|
---|
97 | ;
|
---|
98 | SUBMIT(DFN,IBD) ;
|
---|
99 | N IBRES,IBLOCK,IBADT,IBRXN,IBFIL,IBRDT,IBNBR,IBFLAG,IBTRKR,IBTRKRN
|
---|
100 | N IBRESP,DA,DIE,DR,IBUSR
|
---|
101 | S IBLOCK=0
|
---|
102 | I 'DFN S IBRES="0^No patient" G SUBQ
|
---|
103 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G SUBQ
|
---|
104 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G SUBQ
|
---|
105 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G SUBQ
|
---|
106 | S IBRESP=$G(IBD("RESPONSE")) I IBRESP="" S IBRES="0^No response from the payer" G SUBQ
|
---|
107 | S IBRDT=+$G(IBD("RELEASE DATE"),-1)
|
---|
108 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G SUBQ
|
---|
109 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
110 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
111 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
112 | ;
|
---|
113 | ; -- claims tracking info
|
---|
114 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
115 | ; date can't be before parameters
|
---|
116 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
117 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
118 | ;
|
---|
119 | ; If the Rx is not released - set NBR in CT
|
---|
120 | I 'IBRDT,'$P($G(^IBT(356,IBTRKRN,0)),U,19) D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,"PRESCRIPTION NOT RELEASED","","","",IBUSR)
|
---|
121 | ;
|
---|
122 | ; If the Rx is released - clean up NBR in CT
|
---|
123 | I IBRDT,$P($G(^IBE(356.8,+$P($G(^IBT(356,IBTRKRN,0)),U,19),0)),U)="PRESCRIPTION NOT RELEASED" D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,"","","","",IBUSR)
|
---|
124 | ; Set ECME fields in CT
|
---|
125 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
126 | S IBFLAG=$S(IBRESP["REJECT":1,1:0)
|
---|
127 | S DR="1.1///"_IBD("CLAIMID")_";1.11///"_IBFLAG
|
---|
128 | D ^DIE
|
---|
129 | S IBRES=1
|
---|
130 | SUBQ ;
|
---|
131 | D LOG^IBNCPDP2("SUBMIT",IBRES)
|
---|
132 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
133 | Q IBRES
|
---|
134 | ;
|
---|
135 | ;
|
---|
136 | REOPEN(DFN,IBD) ;
|
---|
137 | N IBRES,IBADT,IBRXN,IBFIL,IBRDT,IBLOCK,IBLOCK2,IBTRKRN
|
---|
138 | N IBEABD,IBNBR,DA,DIE,DR,IBUSR,IBEABD
|
---|
139 | S (IBLOCK,IBLOCK2)=0
|
---|
140 | I 'DFN S IBRES="0^No patient" G REOPQ
|
---|
141 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G REOPQ
|
---|
142 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G REOPQ
|
---|
143 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G REOPQ
|
---|
144 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G REOPQ
|
---|
145 | S IBRDT=$$RXRLDT^PSOBPSUT(IBRXN,IBFIL) ; release date (if null is returned then Rx is not released)
|
---|
146 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
147 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
148 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
149 | ;
|
---|
150 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0)) ;get the claim entry associated with the Rx fill (or refill)
|
---|
151 | L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
|
---|
152 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
153 | ;
|
---|
154 | I IBRDT D ; if Rx released assign earliest autobill date
|
---|
155 | . S IBEABD=$$EABD^IBTUTL($O(^IBE(356.6,"AC",4,0)),IBADT)
|
---|
156 | . S:'IBEABD IBEABD=DT
|
---|
157 | . S IBEABD=$$FMADD^XLFDT(IBEABD,60)
|
---|
158 | ;
|
---|
159 | N IBFDA
|
---|
160 | S IBFDA(356,IBTRKRN_",",.19)=$S('IBRDT:$O(^IBE(356.8,"B","PRESCRIPTION NOT RELEASED","")),1:"@") ;non-billable reason
|
---|
161 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
162 | K IBFDA
|
---|
163 | S IBFDA(356,IBTRKRN_",",.17)=$S('IBRDT:"@",1:IBEABD) ; earliest autobill date
|
---|
164 | S IBFDA(356,IBTRKRN_",",1.08)="@" ;additional comments
|
---|
165 | S IBFDA(356,IBTRKRN_",",1.11)=0 ; reject flag - reset to "no"
|
---|
166 | S IBFDA(356,IBTRKRN_",",1.03)=DT ; date last edited
|
---|
167 | S IBFDA(356,IBTRKRN_",",1.04)=IBUSR ; last edited by
|
---|
168 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
169 | ;
|
---|
170 | S IBRES=1
|
---|
171 | REOPQ ;
|
---|
172 | D LOG^IBNCPDP2("REOPEN",IBRES)
|
---|
173 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
174 | I IBLOCK2 L -^IBT(356,IBTRKRN)
|
---|
175 | Q IBRES
|
---|
176 | ;IBNCPDP4
|
---|