135. EPMO Open Source Coordination Office Redaction File Detail Report

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.

135.1 Files compared

# 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

135.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 848
Changed 1 2
Inserted 0 0
Removed 0 0

135.3 Comparison options

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

135.4 Active regular expressions

No regular expressions were active.

135.5 Comparison detail

  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    }