1 | IBNCPLOG ;BHAM ISC/SS - IB ECME EVNT REPORT ;22-MAR-2006
|
---|
2 | ;;2.0;INTEGRATED BILLING;**342,339,363**;21-MAR-94;Build 35
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;store data related to the IB calls made by ECME package in the file #366.14
|
---|
6 | ;input:
|
---|
7 | ;.IBIBD - (by referrence) IBD array with parameter sent to IB by ECME
|
---|
8 | ;DFN patient's ien
|
---|
9 | ;IBPROC - type of event. i.e. content of CALL such as BILL, REJECT and so on
|
---|
10 | ;IBRESULT - (optional) result of the event processing, format: return_code^message
|
---|
11 | ;IBJOB - (optional) job, default = $J
|
---|
12 | ;IBDTTM - (optional) datetime, default = "NOW"
|
---|
13 | ;IBUSR - (optional) user ID, default = DUZ
|
---|
14 | ;output:
|
---|
15 | ;none
|
---|
16 | LOG(IBIBD,DFN,IBPROC,IBRESULT,IBJOB,IBDTTM,IBUSR) ;Store the data
|
---|
17 | N NDX,Z,REF,IBDATE,IBDTIEN,IBEVNIEN,IBIBDTYP,IBRETV
|
---|
18 | S IBRESULT=$G(IBRESULT)
|
---|
19 | ;
|
---|
20 | I '$G(IBJOB) S IBJOB=$J
|
---|
21 | I '$G(IBDTTM) S IBDTTM=$$NOW^XLFDT()
|
---|
22 | I '$G(IBUSR) S IBUSR=+DUZ
|
---|
23 | ;
|
---|
24 | S IBDATE=DT
|
---|
25 | S IBDTIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
|
---|
26 | L +^IBCNR(366.14):30 E Q
|
---|
27 | I IBDTIEN=0 S IBDTIEN=+$$ADDDATE(IBDATE)
|
---|
28 | ;create an event
|
---|
29 | S IBEVNIEN=$$NEWEVENT(IBDTIEN,IBPROC)
|
---|
30 | L -^IBCNR(366.14)
|
---|
31 | I IBEVNIEN=0 W !,"New event creation Error : LOG^IBNCPLOG",! Q
|
---|
32 | ;
|
---|
33 | I +$$FILLFLDS^IBNCPUT1(366.141,".03",IBEVNIEN_","_IBDTIEN,DFN) ;DFN
|
---|
34 | I +$$FILLFLDS^IBNCPUT1(366.141,".04",IBEVNIEN_","_IBDTIEN,IBJOB) ;JOB
|
---|
35 | I +$$FILLFLDS^IBNCPUT1(366.141,".05",IBEVNIEN_","_IBDTIEN,IBDTTM) ;DATETIME
|
---|
36 | I +$$FILLFLDS^IBNCPUT1(366.141,".06",IBEVNIEN_","_IBDTIEN,DUZ) ;USER
|
---|
37 | I IBRESULT'="" D
|
---|
38 | . S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".07",IBEVNIEN_","_IBDTIEN,+IBRESULT) ;RESULT
|
---|
39 | . S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".08",IBEVNIEN_","_IBDTIEN,$P(IBRESULT,U,2)) ;RESULT MESSAGE
|
---|
40 | ;store IBIBD array
|
---|
41 | S IBIBDTYP=""
|
---|
42 | F S IBIBDTYP=$O(IBIBD(IBIBDTYP)) Q:IBIBDTYP="" D
|
---|
43 | . D IBD(IBDTIEN,IBEVNIEN,IBIBDTYP,$G(IBIBD(IBIBDTYP)),.IBIBD)
|
---|
44 | ;store "INS" node of IBIBD array
|
---|
45 | I $D(IBIBD("INS")) I $$INS(.IBIBD,IBDTIEN,IBEVNIEN)
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | ;store IBD array data
|
---|
49 | ;IBDTIEN - ien on top [DATE] level
|
---|
50 | ;IBRECNO - ien in [EVENTS] multiple
|
---|
51 | ;IBIBDTYP - type subscript in IBD array (BILL, PAID, RESPONSE, etc)
|
---|
52 | ;IBVAL - value to store
|
---|
53 | ;IBIBD - array with data passed by reference (for efficiency)
|
---|
54 | IBD(IBDTIEN,IBRECNO,IBIBDTYP,IBVAL,IBIBD) ;
|
---|
55 | N IBFLDNO
|
---|
56 | ;W !," - ",IBRECNO," ",IBIBDTYP," = ",IBVAL
|
---|
57 | ;free text like "WEBMD: PAID"
|
---|
58 | I IBIBDTYP="AUTH #" S IBFLDNO=".11",IBVAL=$E(IBVAL,1,30) G EDITIBD
|
---|
59 | ;free text like "0504597;3051229"
|
---|
60 | I IBIBDTYP="BCID" S IBFLDNO=".12" G EDITIBD
|
---|
61 | ;7 digits ECME number - identifier (stored as a text - might have leading zeroes)
|
---|
62 | I IBIBDTYP="CLAIMID" S IBFLDNO=".13" G EDITIBD
|
---|
63 | ;pointer to file #2
|
---|
64 | I IBIBDTYP="DFN" S IBFLDNO=".14" G EDITIBD
|
---|
65 | ;pointer to file #40.8
|
---|
66 | I IBIBDTYP="DIVISION" S IBFLDNO=".15" G EDITIBD
|
---|
67 | ;free text
|
---|
68 | I IBIBDTYP="RESPONSE" S IBFLDNO=".16",IBVAL=$E(IBVAL,1,20) G EDITIBD
|
---|
69 | ;free text
|
---|
70 | I IBIBDTYP="REVERSAL REASON" S IBFLDNO=".17",IBVAL=$E(IBVAL,1,40) G EDITIBD
|
---|
71 | ;1 digit number
|
---|
72 | I IBIBDTYP="RTS-DEL" S IBFLDNO=".18" G EDITIBD
|
---|
73 | ;free text
|
---|
74 | I IBIBDTYP="STATUS" S IBFLDNO=".19",IBVAL=$E(IBVAL,1,20) G EDITIBD
|
---|
75 | ;Prescription number as a text, might have alpha characters (external value, this is not IEN)
|
---|
76 | I IBIBDTYP="RX NO" S IBFLDNO=".202",IBVAL=$E(IBVAL,1,20) G EDITIBD
|
---|
77 | ;0 - original, 1,2,3,... - refill number
|
---|
78 | I IBIBDTYP="FILL NUMBER" S IBFLDNO=".203" G EDITIBD
|
---|
79 | ;internal identifier number for a DRUG
|
---|
80 | I IBIBDTYP="DRUG" S IBFLDNO=".204" G EDITIBD
|
---|
81 | I IBIBDTYP="NDC" S IBFLDNO=".205" G EDITIBD
|
---|
82 | I IBIBDTYP="FILL DATE" S IBFLDNO=".206" G EDITIBD
|
---|
83 | I IBIBDTYP="RELEASE DATE" S IBFLDNO=".207" G EDITIBD
|
---|
84 | I IBIBDTYP="QTY" S IBFLDNO=".208" G EDITIBD
|
---|
85 | I IBIBDTYP="DAYS SUPPLY" S IBFLDNO=".209" G EDITIBD
|
---|
86 | I IBIBDTYP="DEA" S IBFLDNO=".21" G EDITIBD
|
---|
87 | I IBIBDTYP="FILLED BY" S IBFLDNO=".211" G EDITIBD
|
---|
88 | ; for environmental indicators:
|
---|
89 | ; if IBIBD("SC/EI OVR")=1 - the user overrides any answers (3)
|
---|
90 | ; if $G(IBIBD("SC/EI NO ANSW")) contains the IBIBDTYP - this question was not answered (2)
|
---|
91 | ; otherwise - use whatever in the IBVAL (0 - NO, 1 -YES)
|
---|
92 | I IBIBDTYP="AO" S IBFLDNO=".401",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
93 | I IBIBDTYP="CV" S IBFLDNO=".402",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
94 | I IBIBDTYP="SWA" S IBFLDNO=".403",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
95 | I IBIBDTYP="IR" S IBFLDNO=".404",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
96 | I IBIBDTYP="MST" S IBFLDNO=".405",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
97 | I IBIBDTYP="HNC" S IBFLDNO=".406",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
98 | I IBIBDTYP="SC" S IBFLDNO=".407",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
99 | I IBIBDTYP="SHAD" S IBFLDNO=".408",IBVAL=$S($G(IBIBD("SC/EI OVR"))=1:3,(","_$G(IBIBD("SC/EI NO ANSW"))_",")[(","_IBIBDTYP_","):2,1:IBVAL) G EDITIBD
|
---|
100 | I IBIBDTYP="BILL" S IBFLDNO=".301" G EDITIBD
|
---|
101 | I IBIBDTYP="BILLED" S IBFLDNO=".302" G EDITIBD
|
---|
102 | I IBIBDTYP="PLAN" S IBFLDNO=".303" G EDITIBD
|
---|
103 | I IBIBDTYP="COST" S IBFLDNO=".304" G EDITIBD
|
---|
104 | I IBIBDTYP="PAID" S IBFLDNO=".305" G EDITIBD
|
---|
105 | I IBIBDTYP="CLOSE COMMENT" S IBFLDNO=".306" G EDITIBD
|
---|
106 | I IBIBDTYP="REOPEN COMMENT" S IBFLDNO=".306" G EDITIBD
|
---|
107 | I IBIBDTYP="CLOSE REASON" S IBFLDNO=".307" G EDITIBD
|
---|
108 | I IBIBDTYP="DROP TO PAPER" S IBFLDNO=".308" G EDITIBD
|
---|
109 | I IBIBDTYP="RELEASE COPAY" S IBFLDNO=".309" G EDITIBD
|
---|
110 | I IBIBDTYP="USER" S IBFLDNO=".31" G EDITIBD
|
---|
111 | I IBIBDTYP="PRESCRIPTION" S IBFLDNO=".201" G EDITIBD
|
---|
112 | I IBIBDTYP="IEN" S IBFLDNO=".212" G EDITIBD
|
---|
113 | I IBIBDTYP="EPHARM" S IBFLDNO=".09" G EDITIBD
|
---|
114 | Q 0
|
---|
115 | EDITIBD ;
|
---|
116 | Q +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
|
---|
117 | ;------
|
---|
118 | ;to store IBD("INS") array data
|
---|
119 | ;input:
|
---|
120 | ;IBDARR - IBD array by reference
|
---|
121 | ;IBDTIEN - ien on top [DATE] level
|
---|
122 | ;IBRECNO - ien in [EVENTS] multiple
|
---|
123 | ;output:
|
---|
124 | ; record number if success
|
---|
125 | ; 0 if failure
|
---|
126 | INS(IBDARR,IBDTIEN,IBRECNO) ;
|
---|
127 | N IBSET1,IBSET2,IBSET3,IBFLDNO,IBINSNO,RECNO,IBVAL
|
---|
128 | S IBINSNO=0
|
---|
129 | F S IBINSNO=$O(IBDARR("INS",IBINSNO)) Q:+IBINSNO=0 D
|
---|
130 | . S IBSET1=$G(IBDARR("INS",IBINSNO,1))
|
---|
131 | . S IBSET2=$G(IBDARR("INS",IBINSNO,2))
|
---|
132 | . S IBSET3=$G(IBDARR("INS",IBINSNO,3))
|
---|
133 | . S RECNO=$$ADDINS(IBDTIEN,IBRECNO)
|
---|
134 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.02,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,1))
|
---|
135 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.03,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,2))
|
---|
136 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.04,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,3))
|
---|
137 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.05,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,4))
|
---|
138 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.06,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,5))
|
---|
139 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.07,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,6))
|
---|
140 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.08,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,7))
|
---|
141 | . ;
|
---|
142 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.101,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,8))
|
---|
143 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.102,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,9))
|
---|
144 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.103,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,10))
|
---|
145 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.104,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,11))
|
---|
146 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.105,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,12))
|
---|
147 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.106,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,13))
|
---|
148 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.107,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,14))
|
---|
149 | . ;
|
---|
150 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.201,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,1))
|
---|
151 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.202,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,2))
|
---|
152 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.203,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,3))
|
---|
153 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.204,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,4))
|
---|
154 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.205,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,5))
|
---|
155 | . ;
|
---|
156 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.301,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,1))
|
---|
157 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.302,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,2))
|
---|
158 | . I +$$FILLFLDS^IBNCPUT1(366.1412,.303,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,3))
|
---|
159 | Q RECNO
|
---|
160 | ;create top level entry in #366.14
|
---|
161 | ;input:
|
---|
162 | ; IBDATE - date in FileMan format
|
---|
163 | ;output
|
---|
164 | ; returns ien created
|
---|
165 | ADDDATE(IBDATE) ;
|
---|
166 | N IBIEN
|
---|
167 | S IBIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
|
---|
168 | I IBIEN>0 Q IBIEN
|
---|
169 | I $$INSITEM^IBNCPUT1(366.14,"",IBDATE,"")
|
---|
170 | Q +$O(^IBCNR(366.14,"B",IBDATE,0))
|
---|
171 | ;
|
---|
172 | ;create EVENT entry in #366.14
|
---|
173 | ;input:
|
---|
174 | ;IBIEN - ien on top [DATE] level
|
---|
175 | ;EVNTTYPE event type (value for .01)
|
---|
176 | ;returns ien for the event
|
---|
177 | ;or 0 if failed
|
---|
178 | NEWEVENT(IBIEN,EVNTTYPE) ;
|
---|
179 | N EVNTRECN
|
---|
180 | S EVNTRECN=$$INSITEM^IBNCPUT1(366.141,IBIEN,$$EXT2INT^IBNCPUT1(EVNTTYPE),"","")
|
---|
181 | I EVNTRECN>0 Q EVNTRECN
|
---|
182 | Q 0
|
---|
183 | ;
|
---|
184 | ;add insurance node
|
---|
185 | ;IBDTIEN - ien on top [DATE] level
|
---|
186 | ;IBEVIEN - ien in [EVENTS] multiple
|
---|
187 | ;returns :
|
---|
188 | ; new ien in INSURANCE multiple
|
---|
189 | ADDINS(IBDTIEN,IBEVIEN) ;
|
---|
190 | N IBX,IBX2
|
---|
191 | F IBX=1:1:99999 I '$D(^IBCNR(366.14,IBDTIEN,1,IBEVIEN,5,IBX)) D Q
|
---|
192 | . S IBX2=$$INSITEM^IBNCPUT1(366.1412,IBEVIEN_","_IBDTIEN,IBX,IBX)
|
---|
193 | Q +$O(^IBCNR(366.14,IBDTIEN,1,IBEVIEN,5,"B",IBX,0))
|
---|
194 | ;
|
---|