1 | BPS01P5A ;BHAM ISC/BEE - Post-Install for BPS*1*5 (cont) ;13-DEC-06
|
---|
2 | ;;1.0;E CLAIMS MGMT ENGINE;**5**;JUN 2004;Build 45
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | Q
|
---|
6 | ;
|
---|
7 | ; Called by the BPS*1.0*5 Post-Install routine BPS01P5.
|
---|
8 | ;
|
---|
9 | ; This routine will convert or delete the invalid usage of globals
|
---|
10 | ; ^BPSECX and ^BPSECP
|
---|
11 | ; It will also delete several ECME files that are now obsolete
|
---|
12 | ;
|
---|
13 | ; ^BPSECX cleanup - Here are the nodes and what should be done
|
---|
14 | ; "BPSOSRX" is the processing queue - Convert to XTMP and delete
|
---|
15 | ; "R" is the BPS Report Master database (obsolete) and will be
|
---|
16 | ; deleted by BPSO1P5
|
---|
17 | ; "S" is the BPS Statistics database and should not be deleted
|
---|
18 | ; "POS", "BPSOSQ3", and $J were for HL7 packet creation. They
|
---|
19 | ; do not need to be converted and can just be killed.
|
---|
20 | ;
|
---|
21 | ;
|
---|
22 | ; ^BPSECP cleanup - Here are the nodes and what should be done
|
---|
23 | ; "CHECKTIM" - Used for queuing BPSOSQ1. This is no longer
|
---|
24 | ; needed and can just be killed.
|
---|
25 | ; "LOG" - Convert to BPS Log file and then delete.
|
---|
26 | ;
|
---|
27 | EN ;
|
---|
28 | ; Remove XTMP global used for logging errors
|
---|
29 | K ^XTMP("BPS01P5A")
|
---|
30 | ;
|
---|
31 | ; First convert ^BPSECP("BPSOSRX") into XTMP and delete it
|
---|
32 | M ^XTMP("BPS-PROC")=^BPSECP("BPSOSRX")
|
---|
33 | K ^BPSECP("BPSOSRX")
|
---|
34 | ; If the global has been created but the zero node is missing, set it
|
---|
35 | I $D(^XTMP("BPS-PROC")),'$D(^XTMP("BPS-PROC",0)) D
|
---|
36 | . N X,X1,X2
|
---|
37 | . S X1=DT,X2=30 D C^%DTC
|
---|
38 | . S ^XTMP("BPS-PROC",0)=X_U_DT_U_"ECME PROCESSING QUEUE"
|
---|
39 | ;
|
---|
40 | ; Second, kill off unneeded ^BPSECX nodes
|
---|
41 | ; Note that we need to loop because of the $J nodes.
|
---|
42 | N SUB
|
---|
43 | S SUB=""
|
---|
44 | F S SUB=$O(^BPSECX(SUB)) Q:SUB="" I SUB'="S",SUB'="RPT" K ^BPSECX(SUB)
|
---|
45 | ;
|
---|
46 | ; Third, kill ^BPSECP("CHECKTIM")
|
---|
47 | K ^BPSECP("CHECKTIM")
|
---|
48 | ;
|
---|
49 | ; Fourth, convert ^BPSECP("LOG")
|
---|
50 | ; Note that we are only converting the transaction log (pattern match .N1"."5N)
|
---|
51 | ; and purge logs (type=5). Other communication logs are being deleted.
|
---|
52 | N SLOT,TXTIEN,PURGE,LOGIEN,PDT
|
---|
53 | N TXTIEN,TM,TMP,TXT,TXT1,TXT2,PDTM
|
---|
54 | S SLOT=""
|
---|
55 | F S SLOT=$O(^BPSECP("LOG",SLOT)) Q:SLOT="" D
|
---|
56 | . ; Set PURGE equal to whether the SLOT if a Purge Log
|
---|
57 | . S PURGE=$P(SLOT,".",2)=5
|
---|
58 | . ; If not transaction log or purge log, delete it and go on
|
---|
59 | . I SLOT'?.N1"."5N,'PURGE K ^BPSECP("LOG",SLOT) Q
|
---|
60 | . ; Create/find LOG IEN
|
---|
61 | . S LOGIEN=$$LOG(SLOT)
|
---|
62 | . I LOGIEN=-1 Q
|
---|
63 | . S PDT="",PDTM=""
|
---|
64 | . I PURGE S PDT=$P(SLOT,".",1)
|
---|
65 | . S TXTIEN=0 F S TXTIEN=$O(^BPSECP("LOG",SLOT,TXTIEN)) Q:TXTIEN="" D
|
---|
66 | .. ; Get data
|
---|
67 | .. S X=$G(^BPSECP("LOG",SLOT,TXTIEN))
|
---|
68 | .. S TM=$P($$HTFM^XLFDT(+$H_","_$P(X,U,1)),".",2),TXT=$P(X,U,2),TXT1=$$UP(TXT)
|
---|
69 | .. ; If it is a transaction log, get the purge date
|
---|
70 | .. I 'PURGE D
|
---|
71 | ... I TXT1["BEFORE SUBMIT OF CLAIM" S TMP=$P($P(TXT1," - ",2)," BEFORE",1) I TMP?1"30"5N S PDT=TMP
|
---|
72 | ... I TXT1["BEFORE SUBMIT OF REVERSAL" S TMP=$P($P(TXT1," - ",2)," BEFORE",1) I TMP?1"30"5N S PDT=TMP
|
---|
73 | ... I TXT1["START OF CLAIM" S X=$P($P(TXT1,"START OF CLAIM - ",2),"@"),PDT=$$CDT(X,PDT)
|
---|
74 | ... I TXT1["LOG TIME STAMP" D
|
---|
75 | .... S X=$P(TXT1,"LOG TIME STAMP",2)
|
---|
76 | .... I $E(X,1)=" " S X=$E(X,2,999)
|
---|
77 | .... S X=$P($P(X," ",1,2),"@",1),PDT=$$CDT(X,PDT)
|
---|
78 | ... S TXT2=","_$E(TXT1,1,3)_","
|
---|
79 | ... I ",JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,"[TXT2 S X=$P($P(TXT1," ",1,2),"@",1),PDT=$$CDT(X,PDT)
|
---|
80 | .. I PDT="" S ^XTMP("BPS01P5A",1,SLOT,TXTIEN)=TXT Q
|
---|
81 | .. S PDTM=PDT_"."_TM
|
---|
82 | .. D FILE1(LOGIEN,TXTIEN,PDTM,TXT)
|
---|
83 | . I PDTM="" S PDTM=$$NOW^XLFDT(),^XTMP("BPS01P5A",2,SLOT)=PDTM
|
---|
84 | . D FILE2(LOGIEN,PDTM)
|
---|
85 | . K ^BPSECP("LOG",SLOT)
|
---|
86 | ;
|
---|
87 | ; If XTMP("BPS01P5A") global created, add top node with purge date
|
---|
88 | I $D(^XTMP("BPS01P5A")) D
|
---|
89 | . N X,X1,X2
|
---|
90 | . S X1=DT,X2=60 D C^%DTC
|
---|
91 | . S ^XTMP("BPS01P5A",0)=X_U_DT_U_"BPS Log Conversion"
|
---|
92 | ;
|
---|
93 | ; Kill the top node of ^BPSECP if that is all there is left
|
---|
94 | I $D(^BPSECP("LOG"))=1 K ^BPSECP("LOG")
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | LOG(X) ; Create or find slot in BPS LOG
|
---|
98 | N DIC,DLAYGO,Y
|
---|
99 | S DIC=9002313.12,DIC(0)="LBO",DLAYGO=DIC
|
---|
100 | D ^DIC
|
---|
101 | I Y=-1 S ^XTMP("BPS01P5A",3,X)=Y
|
---|
102 | Q +Y
|
---|
103 | ;
|
---|
104 | FILE1(LOGIEN,TXTIEN,PDTM,TXT) ; Create multiple entry
|
---|
105 | N FN,FDA,MSG
|
---|
106 | S FN=9002313.1201
|
---|
107 | S FDA(FN,"+1,"_LOGIEN_",",.01)=PDTM
|
---|
108 | S FDA(FN,"+1,"_LOGIEN_",",1)=$TR($E(TXT,1,200),"^","~")
|
---|
109 | D UPDATE^DIE("","FDA","","MSG")
|
---|
110 | I $D(MSG) S ^XTMP("BPS01P5A",4,LOGIEN,TXTIEN)=PDTM_U_TXT M ^XTMP("BPS01P5A",4,LOGIEN,"MSG")=MSG
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | FILE2(LOGIEN,PDTM) ; Update LAST UPDATE field with the last date
|
---|
114 | N FDA,MSG,FN
|
---|
115 | S FN=9002313.12
|
---|
116 | S FDA(FN,LOGIEN_",",.02)=PDTM
|
---|
117 | D FILE^DIE("","FDA","MSG")
|
---|
118 | I $D(MSG) S ^XTMP("BPS01P5A",5,LOGIEN)=PDTM M ^XTMP("BPS01P5A",5,LOGIEN,"MSG")=MSG
|
---|
119 | Q
|
---|
120 | ;
|
---|
121 | CDT(X,PDT) ; Convert external date to internal
|
---|
122 | ; If date evaluates to -Y, use default date (PDT)
|
---|
123 | N %DT,Y
|
---|
124 | S %DT="" D ^%DT
|
---|
125 | I Y=-1 S Y=PDT
|
---|
126 | Q Y
|
---|
127 | ;
|
---|
128 | UP(X) ; Convert text to uppercase
|
---|
129 | Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
130 | ;
|
---|
131 | ;DELETE OBSOLETE FILES
|
---|
132 | ; For BPSCOMB and BPSEI, we need to delete each node manually
|
---|
133 | ; to prevent global protection errors.
|
---|
134 | ;
|
---|
135 | DEL N DIU,X
|
---|
136 | ;
|
---|
137 | ;Turn global protection off (SACC Exemption has been granted to use $ZU)
|
---|
138 | S X=$ZU(68,28,0)
|
---|
139 | ;
|
---|
140 | ;Remove BPS COMBINED INSURANCE (#9002313.1), which uses an unsubscripted global
|
---|
141 | ;reference to store the data
|
---|
142 | S DIU="^BPSCOMB(",DIU(0)="DS" D EN^DIU2
|
---|
143 | ;
|
---|
144 | ;Remove BPS INSURER (#9002313.4), which uses an unsubscripted global reference to store
|
---|
145 | ;the data
|
---|
146 | S DIU="^BPSEI(",DIU(0)="DS" D EN^DIU2
|
---|
147 | ;
|
---|
148 | ;Turn global protection back on
|
---|
149 | S X=$ZU(68,28,1)
|
---|
150 | ;
|
---|
151 | ;BPS DATA INPUT (#9002313.51)
|
---|
152 | S DIU="^BPS(9002313.51,",DIU(0)="DS" D EN^DIU2
|
---|
153 | ;
|
---|
154 | ;BPS ORIGIN OF INPUT (#9002313.516)
|
---|
155 | S DIU="^BPS(9002313.516,",DIU(0)="DS" D EN^DIU2
|
---|
156 | ;
|
---|
157 | ;BPS DIALOUT (#9002313.55)
|
---|
158 | S DIU="^BPS(9002313.55,",DIU(0)="DS" D EN^DIU2
|
---|
159 | ;
|
---|
160 | ;BPS INPUT USER PREF (#9002313.515)
|
---|
161 | S DIU="^BPS(9002313.515,",DIU(0)="DS" D EN^DIU2
|
---|
162 | ;
|
---|
163 | ;BPS INSURANCE RULES (#9002313.94)
|
---|
164 | S DIU="^BPSF(9002313.94,",DIU(0)="DS" D EN^DIU2
|
---|
165 | ;
|
---|
166 | ;BPS PRICING TABLES (#9002313.53)
|
---|
167 | S DIU="^BPS(9002313.53,",DIU(0)="DS" D EN^DIU2
|
---|
168 | ;
|
---|
169 | ;BPS REPORT MASTER (#9002313.61)
|
---|
170 | S DIU="^BPSECX(""RPT"",",DIU(0)="DS" D EN^DIU2
|
---|
171 | ;
|
---|
172 | ;BPS TRANSLATE (#9002313.81)
|
---|
173 | S DIU="^BPSF(9002313.81,",DIU(0)="DS" D EN^DIU2
|
---|
174 | ;
|
---|
175 | K DIU,X
|
---|
176 | ;
|
---|
177 | Q
|
---|
178 | ;
|
---|
179 | ;BPS SETUP (#9002313.99)
|
---|
180 | 99 N IEN
|
---|
181 | ;
|
---|
182 | S IEN=0 F S IEN=$O(^BPS(9002313.99,IEN)) Q:'IEN D
|
---|
183 | .;
|
---|
184 | .;'2' Node
|
---|
185 | .K ^BPS(9002313.99,IEN,2)
|
---|
186 | .;
|
---|
187 | .;'BPSOS6*' Node
|
---|
188 | .K ^BPS(9002313.99,IEN,"BPSOS6*")
|
---|
189 | .;
|
---|
190 | .;'BPSOSM1' Node
|
---|
191 | .K ^BPS(9002313.99,IEN,"BPSOSM1")
|
---|
192 | .;
|
---|
193 | .;'BPSOSR1' Node
|
---|
194 | .K ^BPS(9002313.99,IEN,"BPSOSR1")
|
---|
195 | .;
|
---|
196 | .;'BPSOSX' Node
|
---|
197 | .K ^BPS(9002313.99,IEN,"BPSOSX")
|
---|
198 | .;
|
---|
199 | .;'A/R INTERFACE' Node
|
---|
200 | .K ^BPS(9002313.99,IEN,"A/R INTERFACE")
|
---|
201 | .;
|
---|
202 | .;'BILLING' Node
|
---|
203 | .K ^BPS(9002313.99,IEN,"BILLING")
|
---|
204 | .;
|
---|
205 | .;'BILLING - NEW' Node
|
---|
206 | .K ^BPS(9002313.99,IEN,"BILLING - NEW")
|
---|
207 | .;
|
---|
208 | .;'BILLING LOG FILE' Node
|
---|
209 | .K ^BPS(9002313.99,IEN,"BILLING LOG FILE")
|
---|
210 | .;
|
---|
211 | .;'CREATING A/R' Node
|
---|
212 | .K ^BPS(9002313.99,IEN,"CREATING A/R")
|
---|
213 | .;
|
---|
214 | .;'DIAL-OUT DEFAULT' Node
|
---|
215 | .K ^BPS(9002313.99,IEN,"DIAL-OUT DEFAULT")
|
---|
216 | .;
|
---|
217 | .;'EOB-SCREEN' Node
|
---|
218 | .K ^BPS(9002313.99,IEN,"EOB-SCREEN")
|
---|
219 | .;
|
---|
220 | .;'FORMS - NCPDP' Node
|
---|
221 | .K ^BPS(9002313.99,IEN,"FORMS - NCPDP")
|
---|
222 | .;
|
---|
223 | .;'FORMS - PREBILL' Node
|
---|
224 | .K ^BPS(9002313.99,IEN,"FORMS - PREBILL")
|
---|
225 | .;
|
---|
226 | .;'INPUT' Node
|
---|
227 | .K ^BPS(9002313.99,IEN,"INPUT")
|
---|
228 | .;
|
---|
229 | .;'INS' Node
|
---|
230 | .K ^BPS(9002313.99,IEN,"INS")
|
---|
231 | .;
|
---|
232 | .;'INS BASE SCORES'
|
---|
233 | .K ^BPS(9002313.99,IEN,"INS BASE SCORES")
|
---|
234 | .;
|
---|
235 | .;'INS RULES' Node
|
---|
236 | .K ^BPS(9002313.99,IEN,"INS RULES")
|
---|
237 | .;
|
---|
238 | .;'NULL FILE' Node
|
---|
239 | .K ^BPS(9002313.99,IEN,"NULL FILE")
|
---|
240 | .;
|
---|
241 | .;'OUTSIDE LINE' Node
|
---|
242 | .K ^BPS(9002313.99,IEN,"OUTSIDE LINE")
|
---|
243 | .;
|
---|
244 | .;'POSTAGE' Node
|
---|
245 | .K ^BPS(9002313.99,IEN,"POSTAGE")
|
---|
246 | .;
|
---|
247 | .;'RX A/R TYPE' Node
|
---|
248 | .K ^BPS(9002313.99,IEN,"RX A/R TYPE")
|
---|
249 | .;
|
---|
250 | .;'RECEIPT' Node
|
---|
251 | .K ^BPS(9002313.99,IEN,"RECEIPT")
|
---|
252 | .;
|
---|
253 | .;'SPECIAL' Node
|
---|
254 | .K ^BPS(9002313.99,IEN,"SPECIAL")
|
---|
255 | .;
|
---|
256 | .;'STARTUP' Node
|
---|
257 | .K ^BPS(9002313.99,IEN,"STARTUP")
|
---|
258 | .;
|
---|
259 | .;'UNBILLABLE NDC #' Node
|
---|
260 | .K ^BPS(9002313.99,IEN,"UNBILLABLE NDC #")
|
---|
261 | .;
|
---|
262 | .;'UNBILLABLE DRUG NAME' Node
|
---|
263 | .K ^BPS(9002313.99,IEN,"UNBILLABLE DRUG NAME")
|
---|
264 | .;
|
---|
265 | .;'UNBILLABLE OTC' Node
|
---|
266 | .K ^BPS(9002313.99,IEN,"UNBILLABLE OTC")
|
---|
267 | .;
|
---|
268 | .;'WRITEOFF-SCREEN' Node
|
---|
269 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN")
|
---|
270 | .;
|
---|
271 | .;'WRITEOFF-SCREEN ARTYPE' Node
|
---|
272 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN ARTYPE")
|
---|
273 | .;
|
---|
274 | .;'WRITEOFF-SCREEN BATCH' Node
|
---|
275 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN BATCH")
|
---|
276 | .;
|
---|
277 | .;'WRITEOFF-SCREEN CLINIC' Node
|
---|
278 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN CLINIC")
|
---|
279 | .;
|
---|
280 | .;'WRITEOFF-SCREEN DIAG' Node
|
---|
281 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN DIAG")
|
---|
282 | .;
|
---|
283 | .;'WRITEOFF-SCREEN INSURER' Node
|
---|
284 | .K ^BPS(9002313.99,IEN,"WRITEOFF-SCREEN INSURER")
|
---|
285 | .;
|
---|
286 | .;'WINNOW' Node
|
---|
287 | .N X
|
---|
288 | .S X=$P($G(^BPS(9002313.99,IEN,"WINNOW")),U)
|
---|
289 | .I X'=0,X'=1 S X=$P($G(^BPS(9002313.99,IEN,"WINNOW TESTING")),U),X=$S(X=1:1,1:0)
|
---|
290 | .S ^BPS(9002313.99,IEN,"WINNOW")=X_"^^365"
|
---|
291 | .K X
|
---|
292 | .;
|
---|
293 | .;'WINNOW TESTING' Node
|
---|
294 | .K ^BPS(9002313.99,IEN,"WINNOW TESTING")
|
---|
295 | .;
|
---|
296 | .;'WINNOW LOG' Node
|
---|
297 | .K ^BPS(9002313.99,IEN,"WINNOW LOG")
|
---|
298 | .;
|
---|
299 | .;'WORKERS COMP' Node
|
---|
300 | .K ^BPS(9002313.99,IEN,"WORKERS COMP")
|
---|
301 | .;
|
---|
302 | .;'WRITE OFF INSURER' Node
|
---|
303 | .K ^BPS(9002313.99,IEN,"WRITE OFF INSURER")
|
---|
304 | .;
|
---|
305 | .;'WRITE OFF SELF PAY' Node
|
---|
306 | .K ^BPS(9002313.99,IEN,"WRITE OFF SELF PAY")
|
---|
307 | .;
|
---|
308 | .;'NCPDP51' Node
|
---|
309 | .K ^BPS(9002313.99,IEN,"NCPDP51")
|
---|
310 | .;
|
---|
311 | .;'WINNOW LOGS' Node
|
---|
312 | .K ^BPS(9002313.99,IEN,"WINNOW LOGS")
|
---|
313 | ;
|
---|
314 | K IEN
|
---|
315 | ;
|
---|
316 | Q
|
---|