Produced by Araxis Merge on 1/17/2019 1:51:43 PM Central Standard Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
# | Location | File | Last Modified |
---|---|---|---|
1 | C:\AraxisMergeCompare\Pri_un\ccra\ccra_HSIE_IC\SEOC\Maintenance | Process.cls | Thu Jan 10 13:20:00 2019 UTC |
2 | C:\AraxisMergeCompare\Pri_re\ccra\ccra_HSIE_IC\SEOC\Maintenance | Process.cls | Thu Jan 10 16:31:30 2019 UTC |
Description | Between Files 1 and 2 |
|
---|---|---|
Text Blocks | Lines | |
Unchanged | 2 | 848 |
Changed | 1 | 2 |
Inserted | 0 | 0 |
Removed | 0 | 0 |
Whitespace | |
---|---|
Character case | Differences in character case are significant |
Line endings | Differences in line endings (CR and LF characters) are ignored |
CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
1 | Class SEOC .Maintenan ce.Process Extends E ns.Busines sProcess [ ClassType = persist ent ] | |
2 | { | |
3 | ||
4 | Property F ieldDelimi ter As %St ring(MAXLE N = 2) [ I nitialExpr ession = " ," ]; | |
5 | ||
6 | Property H eaderRowCo unt As %In teger [ In itialExpre ssion = 2 ]; | |
7 | ||
8 | Property S EOCNumberC ol As %Int eger [ Ini tialExpres sion = 2 ] ; | |
9 | ||
10 | Property S erviceLine Col As %In teger [ In itialExpre ssion = 3 ]; | |
11 | ||
12 | Property C ategoryCar eCol As %I nteger [ I nitialExpr ession = 4 ]; | |
13 | ||
14 | Property S EOCNameCol As %Integ er [ Initi alExpressi on = 5 ]; | |
15 | ||
16 | Property C MSTaxonomy CodeCol As %Integer [ InitialE xpression = 6 ]; | |
17 | ||
18 | Property C linicalSer viceCol As %Integer [ InitialE xpression = 6 ]; | |
19 | ||
20 | Property V ersionCol As %Intege r [ Initia lExpressio n = 7 ]; | |
21 | ||
22 | Property E ffectiveSt artDateCol As %Integ er [ Initi alExpressi on = 8 ]; | |
23 | ||
24 | Property E ffectiveEn dDateCol A s %Integer [ Initial Expression = 9 ]; | |
25 | ||
26 | Property P ALSEOCCol As %Intege r [ Initia lExpressio n = 10 ]; | |
27 | ||
28 | Property P reCertSEOC Col As %In teger [ In itialExpre ssion = 11 ]; | |
29 | ||
30 | Property S erviceNumb erCol As % Integer [ InitialExp ression = 12 ]; | |
31 | ||
32 | Property S erviceRequ estedCol A s %Integer [ Initial Expression = 13 ]; | |
33 | ||
34 | Property D urationCol As %Integ er [ Initi alExpressi on = 14 ]; | |
35 | ||
36 | Property A uthVisitsC ol As %Int eger [ Ini tialExpres sion = 15 ]; | |
37 | ||
38 | Property C PTCodeCol As %Intege r [ Initia lExpressio n = 16 ]; | |
39 | ||
40 | Property D isclaimerC ol As %Int eger [ Ini tialExpres sion = 17 ]; | |
41 | ||
42 | Property S EOCWSClien t As Ens.D ataType.Co nfigName [ InitialEx pression = "HSRM.SEO C.WS.Clien t" ]; | |
43 | ||
44 | Parameter SETTINGS = "FieldDel imiter,Hea derRowCoun t,SEOCNumb erCol,Serv iceLineCol ,CategoryC areCol,SEO CNameCol,C linicalSer viceCol,Ve rsionCol,E ffectiveSt artDateCol ,Effective EndDateCol ,PALSEOCCo l,PreCertS EOCCol,Ser viceNumber Col,Servic eRequested Col,Durati onCol,Auth VisitsCol, CPTCodeCol ,Disclaime rCol,SEOCW SClient"; | |
45 | ||
46 | Method OnR equest(pRe quest As E ns.StreamC ontainer, Output pRe sponse As Ens.Respon se) As %St atus | |
47 | { | |
48 | #d im tSC As %Status = $$$OK | |
49 | #d im tProces sSEOCStatu s As %Stat us = $$$OK | |
50 | #d im e As %E xception.A bstractExc eption | |
51 | #d im tSEOCSt ream As %S tream.File Binary | |
52 | #d im tLineSe p As %Stri ng = $c(13 )_$c(10) | |
53 | #d im tColSep As %Strin g = "," | |
54 | #d im tChunkS ize As %It erator = 3 2000 | |
55 | ||
56 | tr y { | |
57 | ||
58 | /* | |
59 | Loca l Debuggin g | |
60 | set tPath = "C:\User s\ DNS colbym\Doc uments\SEO C\" | |
61 | set tFilename = "HSRM SE OC Taxonom y_Build 1 Approved S tructure_U pdated 2.2 6 EH_CSV.c sv" | |
62 | set tFile = ## class(%Str eam.FileBi nary).%New () | |
63 | $$$T hrowOnErro r(tFile.Li nkToFile(t Path_tFile name)) | |
64 | w tF ile.Size | |
65 | ||
66 | ||
67 | set tStream = ##class(%S tream.Glob alBinary). %New() | |
68 | set tStream.Li neTerminat or = $char (13,10) | |
69 | $$$T hrowOnErro r(tStream. CopyFrom(t File)) | |
70 | */ | |
71 | ||
72 | if ( pRequest.S tream.Size <1) { | |
73 | $$$Thr owOnError( $$$ERROR($ $$GeneralE rror,"SEOC File: "_p Request.Or iginalFile name_" is empty. Not hing to Pr ocess")) | |
74 | } | |
75 | set tStream = ##Class(%S tream.Glob alBinary). %New() | |
76 | $$$T hrowOnErro r(tStream. CopyFrom(p Request.St ream)) | |
77 | //Re wind Strea m - just t o be certa in we are at the beg inning | |
78 | $$$T hrowOnErro r(tStream. Rewind()) | |
79 | set tStream.Li neTerminat or = $c(13 ,10) | |
80 | ||
81 | // T he SEOC so urce file is exporte d from Exc el in a st andard CSV format. | |
82 | // T he default CSV expor t will hav e $c(13,10 ) as the l ine termin ator (used for each row) | |
83 | // T he default CSV expor t will wra p cell (fi eld) data with doubl e-quotes | |
84 | // if the c ell contai ns | |
85 | // embedded L F characte rs - $c(10 ) | |
86 | // or | |
87 | // if the cel l contains embedded commas. | |
88 | // T he SEOC so urce file contains a ll the SEO Cs | |
89 | // E ach SEOC i s identifi ed by the SEOC Id | |
90 | // A SEOC cont ains many rows (1 fo r each Ser vice Proce dure) | |
91 | // A SEOC cont ains 16 Co lumns (a c olumn's da ta maybe w rapped in quotes and within th e quotes c ontain "," ) | |
92 | ||
93 | // N avigate pa st the Hea der Rows | |
94 | set tStream.Li neTerminat or = $c(13 ,10) | |
95 | for i=1:1:..He aderRowCou nt { | |
96 | d tStr eam.ReadLi ne() | |
97 | } | |
98 | ||
99 | //Be gin SEOC R ow Process ing | |
100 | set tSEOCRow = tStream.R eadLine() | |
101 | set tSEOCId = $p(tSEOCRo w,",",..SE OCNumberCo l) | |
102 | set tCurrentSE OCId = tSE OCId | |
103 | set tSEOCRowNu mber = 1 | |
104 | ||
105 | do { | |
106 | ||
107 | // For Each SEOC | |
108 | // The SEOC row will be pa rsed into a the Fiel d List glo bal | |
109 | // The Field Lis t Global h as the fol lowing str ucture: | |
110 | // ^FieldList (<SEOCId>, <Row Numbe r>,<FieldN umber>)=Fi eldValue | |
111 | ||
112 | if '(t SEOCId = t CurrentSEO CId) { | |
113 | ||
114 | //Proces s Current SEOC | |
115 | k tSEOCO bj | |
116 | set tSEO CProcessed SC = ..Pro cessSEOC(. tFieldList ) | |
117 | if $$$IS ERR(tSEOCP rocessedSC ) { | |
118 | set tWarni ngMsg = "S EOC Proces sing faile d for SEOC : " _ tCur rentSEOCId _ " Err or: "_ $$$ StatusDisp layString( tSEOCProce ssedSC,$C( 13,10,43,1 3,10)) | |
119 | $$$LOGWARN ING(tWarni ngMsg) | |
120 | } else { | |
121 | $$$LOGINFO ("SEOC: " _ tCurrent SEOCId _ " processed successfu lly.") | |
122 | } | |
123 | q:tStrea m.AtEnd | |
124 | ||
125 | //Begin new SEOC | |
126 | if '(tSE OCId = "") { | |
127 | set tCurre ntSEOCId = tSEOCId | |
128 | set tSEOCR owNumber = 1 | |
129 | k tFieldLi st | |
130 | $$$ThrowOn Error(..Pa rseSEOCRow (tSEOCId,t SEOCRowNum ber,tSEOCR ow,.tField List)) | |
131 | set tSEOCR owNumber = tSEOCRowN umber+1 | |
132 | } else { | |
133 | quit | |
134 | } | |
135 | ||
136 | } else { | |
137 | ||
138 | //q:((tS EOCId="")| |(tSEOCRow ="")) | |
139 | $$$Throw OnError(.. ParseSEOCR ow(tSEOCId ,tSEOCRowN umber,tSEO CRow,.tFie ldList)) | |
140 | set tSEO CRowNumber = tSEOCRo wNumber+1 | |
141 | } | |
142 | ||
143 | set tS EOCRow = t Stream.Rea dLine() | |
144 | set tS EOCId = $p (tSEOCRow, ",",..SEOC NumberCol) q:(tSEOCI d="") | |
145 | ||
146 | ||
147 | } wh ile 1 | |
148 | ||
149 | } catch e { | |
150 | ||
151 | set tSC = e.As Status() | |
152 | ||
153 | } | |
154 | ||
155 | qu it tSC | |
156 | } | |
157 | ||
158 | Method Par seSEOCRow( pSEOCId As %String, pSEOCRowNu mber As %I nteger, pS EOCRow As %String, B yRef pFiel dList) As %Status | |
159 | { | |
160 | #d im tSC As %Status = $$$OK | |
161 | #d im e As %E xception.A bstractExc eption | |
162 | ||
163 | tr y { | |
164 | ||
165 | set tCommaCnt = $LENGTH( pSEOCRow," ,") | |
166 | set tFieldCnt = 0 | |
167 | for i=1:1:tCom maCnt { | |
168 | ||
169 | set tP iece = $p( pSEOCRow," ,",i) | |
170 | if $FI ND(tPiece, """") { | |
171 | //The pi ece contai ns a doubl e-quote - does it co ntain the end-quote? | |
172 | if $LENG TH(tPiece, """")>2 { | |
173 | //piece co ntains bot h beginnin g and endi ng quote | |
174 | set tField Value = tP iece | |
175 | } else { | |
176 | //piece on ly contain s the begi nning quot e | |
177 | //incremen t with $p until the end quote is located . | |
178 | //concaten ate all th e pieces | |
179 | set tField Value = tP iece_"," | |
180 | do { | |
181 | se t i=i+1 | |
182 | se t tPiece = $p(pSEOCR ow,",",i) | |
183 | if $FIND(tPi ece,"""") { | |
184 | set tFieldValu e = tField Value_tPie ce | |
185 | quit | |
186 | } else { | |
187 | set tFieldValu e = tField Value_tPie ce_"," | |
188 | } | |
189 | ||
190 | } while 1 | |
191 | } | |
192 | ||
193 | } else { | |
194 | ||
195 | set tFie ldValue = tPiece | |
196 | } | |
197 | ||
198 | set tF ieldCnt = tFieldCnt+ 1 | |
199 | set pF ieldList(p SEOCId,pSE OCRowNumbe r,tFieldCn t)=tFieldV alue | |
200 | ||
201 | } | |
202 | ||
203 | } catch e { | |
204 | ||
205 | set tSC = e.As Status() | |
206 | ||
207 | } | |
208 | ||
209 | qu it tSC | |
210 | } | |
211 | ||
212 | Method Pro cessSEOC(B yRef pFiel dList) As %Status | |
213 | { | |
214 | #d im tSC As %Status = $$$OK | |
215 | #d im e As %E xception.A bstractExc eption | |
216 | ||
217 | tr y { | |
218 | ||
219 | set tSEOCIdKey = $ORDER( pFieldList ("")) | |
220 | set objSEOC = ##class(SE OC.Mainten ance.s0.SE OCData).%N ew() | |
221 | if ' (objSEOC=$ $$NULLOREF ) { | |
222 | set ob jSEOC.SEOC IDNumber = tSEOCIdKe y | |
223 | set ob jSEOC.Serv iceLine = pFieldList (tSEOCIdKe y,1,..Serv iceLineCol ) | |
224 | set ob jSEOC.Cate goryOfCare = pFieldL ist(tSEOCI dKey,1,..C ategoryCar eCol) | |
225 | set ob jSEOC.SEOC Name = pFi eldList(tS EOCIdKey,1 ,..SEOCNam eCol) | |
226 | //MKC -2018/06/1 9 - Defect #759122 | |
227 | //Clin ical Servi ce may be alphanumer ic The Cli nical Serv ice will b e received | |
228 | //in t he format "<code> - <descripti on". | |
229 | //Use $p to extr act the co de. | |
230 | set ob jSEOC.Clin icalServic e = $p(pFi eldList(tS EOCIdKey,1 ,..Clinica lServiceCo l),"-",1) | |
231 | set ob jSEOC.Vers ion = pFie ldList(tSE OCIdKey,1, ..VersionC ol) | |
232 | set ob jSEOC.Effe ctiveStart Date = pFi eldList(tS EOCIdKey,1 ,..Effecti veStartDat eCol) | |
233 | set ob jSEOC.Effe ctiveEndDa te = pFiel dList(tSEO CIdKey,1,. .Effective EndDateCol ) | |
234 | set ob jSEOC.PALS EOC = pFie ldList(tSE OCIdKey,1, ..PALSEOCC ol) | |
235 | set ob jSEOC.PreC ertSEOC = pFieldList (tSEOCIdKe y,1,..PreC ertSEOCCol ) | |
236 | set ob jSEOC.Disc laimer = $ZSTRIP(pF ieldList(t SEOCIdKey, 1,..Discla imerCol)," <>","""") | |
237 | //MKC -2018/06/1 9 - Defect #759122 | |
238 | //CMS Taxonomy c ode may be alphanume ric The CM S Taxonomy Code will be receiv ed | |
239 | //in t he format "<code> - <descripti on". | |
240 | //Remo ve $FNUMBE R to extra ct the cod e. | |
241 | //set tCMSCode = $FNUMBER( $p(pFieldL ist(tSEOCI dKey,1,..C MSTaxonomy CodeCol)," -",1)) | |
242 | set tC MSCode = $ p(pFieldLi st(tSEOCId Key,1,..CM STaxonomyC odeCol),"- ",1) | |
243 | //MKC - 2018/02/ 27 per Ema il (Anthon y P. - CMS Taxonomy Codes are required - do not pr ocess SEOC s with a m issing CMS Code) | |
244 | if (tC MSCode = " ") { | |
245 | set tErr orMsg = "C MS Taxonom y Code is missing." | |
246 | $$$Throw OnError($$ $ERROR($$$ GeneralErr or,tErrorM sg)) | |
247 | } else { | |
248 | set objS EOC.CMSTax onomyCode = tCMSCode | |
249 | } | |
250 | set ob jSEOC.Dura tion = pFi eldList(tS EOCIdKey,1 ,..Duratio nCol) | |
251 | } | |
252 | ||
253 | set tRowKey="" | |
254 | do { | |
255 | ||
256 | set tR owKey=$ORD ER(pFieldL ist(tSEOCI dKey,tRowK ey)) q:(tRowKey ="") | |
257 | ||
258 | set ob jSEOCServi ce = ##cla ss(SEOC.Ma intenance. s0.SEOCSer vice).%New () | |
259 | if '(o bjSEOCServ ice=$$$NUL LOREF) { | |
260 | set objS EOCService .NoOfServi ce = pFiel dList(tSEO CIdKey,tRo wKey,..Ser viceNumber Col) | |
261 | set objS EOCService .ServiceCa reRequeste d = pField List(tSEOC IdKey,tRow Key,..Serv iceRequest edCol) | |
262 | //MKC - 02/28/2018 per Email (Anthony P. - Autho rized No V isits that non-numer ical or 0 must be | |
263 | //set to NULL ("") | |
264 | if (+pFi eldList(tS EOCIdKey,t RowKey,..A uthVisitsC ol) = 0) { | |
265 | set objSEO CService.A uthorizedN oOfVisits = "" | |
266 | } else { | |
267 | set objSEO CService.A uthorizedN oOfVisits = pFieldLi st(tSEOCId Key,tRowKe y,..AuthVi sitsCol) | |
268 | } | |
269 | //MKC - 02/28/2018 per Email (Anthony P. - CPT C odes are r equired - do not pro cess SEOCs with miss ing CPT Co des) | |
270 | if pFiel dList(tSEO CIdKey,tRo wKey,..CPT CodeCol)=" " { | |
271 | set tError Msg = "CPT Codes mis sing for S ervice/Car e Requeste d: "_objSE OCService. ServiceCar eRequested | |
272 | $$$ThrowOn Error($$$E RROR($$$Ge neralError ,tErrorMsg )) | |
273 | } else { | |
274 | ||
275 | //MKC - 03 /15/2018 - | |
276 | //CPT code s = "TBD" do not pro cess. | |
277 | //CPT code s = "NA" p rocess wit h "" | |
278 | //CPT code s = comma- delimited string, pr ocess | |
279 | if pFieldL ist(tSEOCI dKey,tRowK ey,..CPTCo deCol)="TB D" { | |
280 | se t tErrorMs g = "CPT C odes to-be -determine d for Serv ice/Care R equested: "_objSEOCS ervice.Ser viceCareRe quested | |
281 | $$ $ThrowOnEr ror($$$ERR OR($$$Gene ralError,t ErrorMsg)) | |
282 | } elseif p FieldList( tSEOCIdKey ,tRowKey,. .CPTCodeCo l)="NA" { | |
283 | se t objSEOCS ervice.CPT Codes = pF ieldList(t SEOCIdKey, tRowKey,.. CPTCodeCol ) | |
284 | } else { | |
285 | se t objSEOCS ervice.CPT Codes = pF ieldList(t SEOCIdKey, tRowKey,.. CPTCodeCol ) | |
286 | } | |
287 | } | |
288 | $$$Throw OnError(ob jSEOC.Serv ices.Inser t(objSEOCS ervice)) | |
289 | } | |
290 | ||
291 | } wh ile 1 | |
292 | ||
293 | /*Us er for loc al debuggi ng | |
294 | w !, "SEOC: ",o bjSEOC.SEO CIDNumber, ! | |
295 | zw o bjSEOC | |
296 | */ | |
297 | ||
298 | set tSEOCUploa dRequest = ##class(S EOC.Mainte nance.Mess age.MainRe quest).%Ne w() | |
299 | set tSEOCUploa dRequest.S EOCData = objSEOC | |
300 | $$$T hrowOnErro r(..SendRe questSync( ..SEOCWSCl ient,tSEOC UploadRequ est,.tSEOC UploadResp onse,15)) | |
301 | ||
302 | } catch e { | |
303 | ||
304 | set tSC = e.As Status() | |
305 | ||
306 | } | |
307 | ||
308 | qu it tSC | |
309 | } | |
310 | ||
311 | Storage De fault | |
312 | { | |
313 | <Data name ="ProcessD efaultData "> | |
314 | <Subscript >"Process" </Subscrip t> | |
315 | <Value nam e="1"> | |
316 | <Value>Fie ldDelimite r</Value> | |
317 | </Value> | |
318 | <Value nam e="2"> | |
319 | <Value>Pac kCodeColum n</Value> | |
320 | </Value> | |
321 | <Value nam e="3"> | |
322 | <Value>Pac kDescripti onColumn</ Value> | |
323 | </Value> | |
324 | <Value nam e="4"> | |
325 | <Value>Pac kDateFromC olumn</Val ue> | |
326 | </Value> | |
327 | <Value nam e="5"> | |
328 | <Value>Pac kDateToCol umn</Value > | |
329 | </Value> | |
330 | <Value nam e="6"> | |
331 | <Value>Ser viceLineCo lumn</Valu e> | |
332 | </Value> | |
333 | <Value nam e="7"> | |
334 | <Value>Ser viceLineDe scColumn</ Value> | |
335 | </Value> | |
336 | <Value nam e="8"> | |
337 | <Value>Dur ationLocat on</Value> | |
338 | </Value> | |
339 | <Value nam e="9"> | |
340 | <Value>CPT AuthNumber VisitsColu mn</Value> | |
341 | </Value> | |
342 | <Value nam e="10"> | |
343 | <Value>CPT CodesColum n</Value> | |
344 | </Value> | |
345 | <Value nam e="11"> | |
346 | <Value>CMS CodeForSpe cialtyColu mn</Value> | |
347 | </Value> | |
348 | <Value nam e="12"> | |
349 | <Value>Pac kMultipleE pisode</Va lue> | |
350 | </Value> | |
351 | <Value nam e="13"> | |
352 | <Value>Pac kSelection Method</Va lue> | |
353 | </Value> | |
354 | <Value nam e="14"> | |
355 | <Value>CPT CodeErrors </Value> | |
356 | </Value> | |
357 | <Value nam e="15"> | |
358 | <Value>Ver ifiedCPTCo des</Value > | |
359 | </Value> | |
360 | <Value nam e="16"> | |
361 | <Value>SEO CId</Value > | |
362 | </Value> | |
363 | <Value nam e="17"> | |
364 | <Value>Hea derRowCoun t</Value> | |
365 | </Value> | |
366 | <Value nam e="18"> | |
367 | <Value>SEO CNumberCol </Value> | |
368 | </Value> | |
369 | <Value nam e="19"> | |
370 | <Value>Ser viceLineCo l</Value> | |
371 | </Value> | |
372 | <Value nam e="20"> | |
373 | <Value>Cat egoryCareC ol</Value> | |
374 | </Value> | |
375 | <Value nam e="21"> | |
376 | <Value>SEO CNameCol</ Value> | |
377 | </Value> | |
378 | <Value nam e="22"> | |
379 | <Value>CMS TaxonomyCo deCol</Val ue> | |
380 | </Value> | |
381 | <Value nam e="23"> | |
382 | <Value>Cli nicalServi ceCol</Val ue> | |
383 | </Value> | |
384 | <Value nam e="24"> | |
385 | <Value>Ver sionCol</V alue> | |
386 | </Value> | |
387 | <Value nam e="25"> | |
388 | <Value>Eff ectiveStar tDateCol</ Value> | |
389 | </Value> | |
390 | <Value nam e="26"> | |
391 | <Value>Eff ectiveEndD ateCol</Va lue> | |
392 | </Value> | |
393 | <Value nam e="27"> | |
394 | <Value>PAL SEOCCol</V alue> | |
395 | </Value> | |
396 | <Value nam e="28"> | |
397 | <Value>Pre CertSEOCCo l</Value> | |
398 | </Value> | |
399 | <Value nam e="29"> | |
400 | <Value>Dis claimerCol </Value> | |
401 | </Value> | |
402 | <Value nam e="30"> | |
403 | <Value>Dur ationCol</ Value> | |
404 | </Value> | |
405 | <Value nam e="31"> | |
406 | <Value>Ser viceNumber Col</Value > | |
407 | </Value> | |
408 | <Value nam e="32"> | |
409 | <Value>Ser viceReques tedCol</Va lue> | |
410 | </Value> | |
411 | <Value nam e="33"> | |
412 | <Value>CPT CodeCol</V alue> | |
413 | </Value> | |
414 | <Value nam e="34"> | |
415 | <Value>Aut hVisitsCol </Value> | |
416 | </Value> | |
417 | <Value nam e="35"> | |
418 | <Value>SEO CWSClient< /Value> | |
419 | </Value> | |
420 | </Data> | |
421 | <DefaultDa ta>Process DefaultDat a</Default Data> | |
422 | <Type>%Lib rary.Cache Storage</T ype> | |
423 | } | |
424 | ||
425 | } |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.