60. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/5/2017 4:21:46 PM Central Daylight 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.

60.1 Files compared

# Location File Last Modified
1 C:\working_scrub\Unredacted\eHX Code Base\eHX_Bld2_Source Code_CIF_2017-02-14\NHIN_adapter\AdapterLIB\src\archive\java\gov\va\med\nhin\adapter\datamanager\adapters MPIDataAdapter.java Fri Feb 10 15:41:44 2017 UTC
2 eHX-CIF.zip\eHX-CIF\eHX Code Base\eHX_Bld2_Source Code_CIF_2017-02-14\NHIN_adapter\AdapterLIB\src\archive\java\gov\va\med\nhin\adapter\datamanager\adapters MPIDataAdapter.java Mon Apr 3 14:24:56 2017 UTC

60.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 7 806
Changed 6 18
Inserted 0 0
Removed 0 0

60.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

60.4 Active regular expressions

No regular expressions were active.

60.5 Comparison detail

  1   package go v.va.med.n hin.adapte r.datamana ger.adapte rs;
  2  
  3   import jav a.io.IOExc eption;
  4   import jav a.util.Arr ayList;
  5   import jav a.util.Has hMap;
  6   import jav a.util.Lis t;
  7   import jav a.util.Map ;
  8   import jav a.util.Pro perties;
  9  
  10   import org .slf4j.Log ger;
  11   import org .slf4j.Log gerFactory ;
  12  
  13   import gov .va.med.nh in.adapter .datamanag er.DataAda pter;
  14   import gov .va.med.nh in.adapter .datamanag er.DataMan agerExcept ion;
  15   import gov .va.med.nh in.adapter .datamanag er.DataQue ry;
  16   import gov .va.med.nh in.adapter .utils.dat asharing.m essaging.t ransceiver .HL7DCLLPT ransceiver ;
  17   import gov .va.med.nh in.adapter .utils.dat asharing.m essaging.t ransceiver .MessageLL PException ;
  18   import gov .va.med.nh in.adapter .utils.dat asharing.m essaging.t ransceiver .SocketTra nsceiver;
  19   import gov .va.med.nh in.adapter .utils.dat asharing.s ervices.pe rson.vo.Pe rsonIdenti tyVO;
  20   import gov .va.med.nh in.adapter .utils.dat asharing.s ystem.Date TimeUtilit y;
  21  
  22   /**
  23    *
  24    * @author  SPAWAR Ne w Orleans
  25    */
  26   public cla ss MPIData Adapter im plements D ataAdapter
  27   {
  28           pu blic stati c final Lo gger logge r = Logger Factory.ge tLogger(MP IDataAdapt er.class.g etName());
  29  
  30           /* *
  31            *  getData
  32            *
  33            *  @param da taResults
  34            *  @throws g ov.va.med. nhin.adapt er.dataman ager.DataM anagerExce ption
  35            *
  36            *               gathers  the neces sary conne ction info rmation fr om the
  37            *               dataMan agerConfig .xml build s a Person IdentityVO  object wi th
  38            *               demogra phics for  the dataQu ery either  find or m atch will  be
  39            *               called  based on t he findTyp e property
  40            *
  41            *
  42            * /
  43           pu blic List  getData(Da taQuery da taQuery)
  44           {
  45                    // C CR 177986
  46                    logg er.debug(g etClass(). getName()  + "{}", "g etData");
  47  
  48                    try
  49                    {
  50                             Proper ties servi ceProperti es = new P roperties( );
  51  
  52                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_HOS T, dataQue ry.getProp erty("PROP _HOST"));
  53                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_POR T, dataQue ry.getProp erty("PROP _PORT"));
  54                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_TOU T, dataQue ry.getProp erty("PROP _TOUT"));
  55                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_SFA C, dataQue ry.getProp erty("PROP _SFAC"));
  56                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_RFA C, dataQue ry.getProp erty("PROP _RFAC"));
  57                             servic ePropertie s.setPrope rty(Socket Transceive r.PROP_LAT T, dataQue ry.getProp erty("PROP _LATT"));
  58  
  59                             Person IdentityVO  pi1 = new  PersonIde ntityVO();
  60  
  61                             MPIReq uests mpi  = new MPIR equests(se rvicePrope rties);
  62  
  63                             String  df = (Str ing) dataQ uery.getPa rameter("f irstName") ;
  64                             if(df  != null)
  65                             {
  66                                      pi1.setF irstName(d f);
  67                             }
  68                             df = ( String) da taQuery.ge tParameter ("middleIn itial");
  69                             if(df  != null)
  70                             {
  71                                      pi1.setM iddleIniti al(df);
  72                             }
  73                             df = ( String) da taQuery.ge tParameter ("lastName ");
  74                             if(df  != null)
  75                             {
  76                                      pi1.setL astName(df );
  77                             }
  78                             df = ( String) da taQuery.ge tParameter ("sex");
  79                             if(df  != null)
  80                             {
  81                                      pi1.setS ex(df);
  82                             }
  83                             df = ( String) da taQuery.ge tParameter ("ssn");
  84                             if(df  != null)
  85                             {
  86                                      pi1.setS SN(df);
  87                             }
  88                             df = ( String) da taQuery.ge tParameter ("dob");
  89                             if(df  != null)
  90                             {
  91                                      pi1.setD OB(df);
  92                             }
  93                             df = ( String) da taQuery.ge tParameter ("prefix") ;
  94                             if(df  != null)
  95                             {
  96                                      pi1.setP refixName( df);
  97                             }
  98                             df = ( String) da taQuery.ge tParameter ("suffix") ;
  99                             if(df  != null)
  100                             {
  101                                      pi1.setS uffixName( df);
  102                             }
  103                             String  findType  = "EXACT_M ATCH_QUERY ";
  104                             df = ( String) da taQuery.ge tParameter ("findType ");
  105                             if(df  != null)
  106                             {
  107                                      findType  = df;
  108                             }
  109                             if(fin dType.equa lsIgnoreCa se("EXACT_ MATCH_QUER Y"))
  110                             {
  111                                      return m pi.findMat ch(pi1, fi ndType);
  112                             }
  113                             else
  114                             {
  115                                      return m pi.findCan didates(pi 1, findTyp e);
  116                             }
  117                    }
  118                    // C CR 179231
  119                    catc h(MessageL LPExceptio n e)
  120                    {
  121                             throw  new DataMa nagerExcep tion("An e rror occur red when g etting dat a.", e);
  122                    }
  123                    catc h(Exceptio n e)
  124                    {
  125                             throw  new DataMa nagerExcep tion("An e rror occur red when g etting dat a.", e);
  126                    }
  127           }
  128  
  129           pu blic class  MPIReques ts
  130           {
  131  
  132                    priv ate HL7DCL LPTranscei ver llpTra ns;
  133                    bool ean aFlag;
  134                    Stri ngBuffer r equestBuff er;
  135  
  136                    /**
  137                     * M PIrequests
  138                     *
  139                     * @ param prop erties
  140                     * @ param drs
  141                     */
  142                    publ ic MPIRequ ests(Prope rties prop erties)
  143                    {
  144                             llpTra ns = new H L7DCLLPTra nsceiver(p roperties) ;
  145                              // host:  IP             test1 -  IP             test2 -  IP                 prod
  146                             // por t: 15500 t est 5500 p rod
  147                              //  IP             test1 -  IP                 prod -  IP           test2
  148                              // Bay Pin es TLMPI  IP           
  149                             //
  150                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ HOST,
  151                              // " IP           ");
  152                             // /*  15500 test  5500 prod  */
  153                             // /*  5005 for f ind ???? * /
  154                             // /*  5500 for a dd ???? */
  155                             // /*  15000 or 1 5500 Bay P ines*/
  156                             //
  157                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ PORT,
  158                             // Int eger.toStr ing(15500) );
  159                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ TOUT,
  160                             // Lon g.toString (300000L)) ;
  161                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ SFAC,
  162                              // "200HD. D N
S           URL          ");
  163                              // prod=MP I-AUSTIN URL          ,
  164                              // test=TL MPI. D N
S           URL         
  165                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ RFAC,
  166                              // "TLMPI. D N
S           URL          ");
  167                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ RFAC,
  168                              // "DEVMPI . D N
S           URL          ");
  169                             // ser viceProper ties.setPr operty(Soc ketTransce iver.PROP_ LATT, "NT" );
  170  
  171                    }
  172  
  173                    /**
  174                     * f indCandida tes
  175                     *
  176                     * @ param pi
  177                     * @ param type
  178                     * @ throws gov .va.med.da tasharing. messaging. transceive r.
  179                     *               MessageLL PException
  180                     * @ throws gov .va.med.nh in.adapter .datamanag er.DataMan agerExcept ion
  181                     *
  182                     *               can find  multiple m atches to  parameters  like (las tname +
  183                     *               firstname  + dob )
  184                     */
  185                    publ ic List fi ndCandidat es(PersonI dentityVO  pi, String  type) thr ows Messag eLLPExcept ion, DataM anagerExce ption
  186                    {
  187                             try
  188                             {
  189                                      String r eq = creat eFindReque st(pi, typ e); // "VT Q_PID_ICN_ NO_LOAD"
  190                                      return l lpFind(req );
  191                             }
  192                             // CCR  179231- U pdate for  Exception  handling
  193                             catch( Exception  e)
  194                             {
  195                                      throw ne w DataMana gerExcepti on("An err or occurre d in MPIRe quests.fin dCandidate s.", e);
  196                             }
  197                    }
  198  
  199                    /**
  200                     * f indMatch
  201                     *
  202                     * @ param pi
  203                     * @ param type
  204                     * @ throws gov .va.med.da tasharing. messaging. transceive r.
  205                     *               MessageLL PException
  206                     * @ throws gov .va.med.nh in.adapter .datamanag er.DataMan agerExcept ion
  207                     *
  208                     *               this is a n exact ma tch
  209                     *
  210                     */
  211                    publ ic List fi ndMatch(Pe rsonIdenti tyVO pi, S tring type ) throws M essageLLPE xception,  DataManage rException
  212                    {
  213                             try
  214                             {
  215                                      String r eq = creat eFindReque st(pi, typ e); // "EX ACT_MATCH_ QUERY"
  216                                      return l lpFind(req );
  217                             }
  218                             // CCR  179231- U pdate for  Exception  handling
  219                             catch( Exception  e)
  220                             {
  221                                      throw ne w DataMana gerExcepti on("An err or occurre d in MPIRe quests.fin dMatch.",  e);
  222                             }
  223                    }
  224  
  225                    /**
  226                     * l lpFind
  227                     *
  228                     * @ param data Query
  229                     * @ throws gov .va.med.da tasharing. messaging. transceive r.
  230                     *               MessageLL PException
  231                     * @ throws gov .va.med.nh in.adapter .datamanag er.DataMan agerExcept ion
  232                     *
  233                     *               parse the  HL7 retur n message  for result s
  234                     *
  235                     */
  236                    publ ic List ll pFind(Stri ng query)  throws Mes sageLLPExc eption, Da taManagerE xception,  IOExceptio n {
  237                             // Sys tem.out.pr intln("\n  Query: \n"  + dataQue ry + "\n") ;
  238                             ArrayL ist<Map> r et = new A rrayList<M ap>();
  239  
  240                             String  mpiQuery  = (String)  llpTrans. transceive (query);
  241                             // Sys tem.out.pr intln("mpi query:\n"  + mpiQuery );
  242                             // par se respons e
  243                             // MSH |^~&|MPI|M PI|MPI_LOA D|200M|200 5041314114 6.327-0400 ||ACK^Q02| 1113415906 327|P|2.3
  244                             // MSA |AA|111341 5906327
  245                             // QAK |111341590 6327|OK
  246                             // RDF |14|@00108 .1^ST^20~@ 00108.2^ST ^20~@00108 .3^ST^16~@ 00122^ST^9 ~@00110^ST ^8~@00111^ ST^1~@0075 6^ST^3~@00 105^ST^19~ @00740^ST^ 8~@00126.1 ^ST^30~@00 126.2^ST^3 ~@00108.5^ ST^15~@001 08.4^ST^10 ~@00109.1^ ST^20
  247                             // RDT |XXXXX|XXX XXX|W|0273 65224|1947 1012|M|516 |999999999 9V275041|| HYANNIS|MA |||
  248                             // RDT |XXXXX|XXX XXX1|N|027 367096|194 71021|M|52 3|99999999 99V836733| 19970921|B ROCKTON|MA |||
  249  
  250                             String  lines[] =  mpiQuery. split("\r" );
  251                             try
  252                             {
  253                                      for(int  i = 4; i <  lines.len gth; i++)
  254                                      {
  255                                               HashMap<St ring, Stri ng> dataRe sult = new  HashMap<S tring, Str ing>();
  256  
  257                                               // System. out.printl n(lines[i] );
  258                                               String rec ords[] = l ines[i].sp lit("\\|") ;
  259                                               for(int r  = 1; r < r ecords.len gth; r++)
  260                                               {
  261                                                       da taResult.p ut(Integer .toString( r), record s[r]);
  262                                                       /*
  263                                                        *  switch (r ) { case 1 : dataResu lt.setData ("lastName ",
  264                                                        *  records[r ]); //1 br eak; case  2:
  265                                                        *  dataResul t.setData( "firstName ", records [r]); //2
  266                                                        *  break; ca se 3: data Result.set Data("midd leName",
  267                                                        *  records[r ]); // mid dle break;  case 4:
  268                                                        *  dataResul t.setData( "ssn", rec ords[r]);  //4 break;
  269                                                        *  case 5: d ataResult. setData("D OB", recor ds[r]); // 5
  270                                                        *  break; ca se 6: data Result.set Data("sex" , records[ r]);
  271                                                        *  //6 break ; case 7:  dataResult .setData(" ICN",
  272                                                        *  records[r ]); //7 br eak; case  12:
  273                                                        *  dataResul t.setData( "prefix",r ecords[r]) ; // 12 pr efix
  274                                                        *  break; ca se 13: dat aResult.se tData("suf fix",
  275                                                        *  records[r ]); // 13  suffix bre ak; defaul t: break;  }
  276                                                        * /
  277                                               }
  278                                               ret.add(da taResult);
  279                                      }
  280                             }
  281                             // CCR  179231- U pdate for  Exception  handling
  282                             catch( Exception  e)
  283                             {
  284                                      throw ne w DataMana gerExcepti on("An err or occurre d in MPIRe quests.llp find.", e) ;
  285                             }
  286  
  287                             return  ret;
  288                    }
  289  
  290                    // p rivate Per sonIdentit yVO getRes ultItem(in t index) {
  291                    // i f (results  == null | | index <  0 || index  >= result s.size())  {
  292                    // r eturn null ;
  293                    // }
  294                    // S tring[] ra  = ((Strin g) ((Vecto r) results ).get(inde x)).split( "\\|");
  295                    // P ersonIdent ityVO rp =  new Perso nIdentityV O();
  296                    // i nt ral = r a.length;
  297                    // r p.setLastN ame(ra[1]) ;
  298                    // r p.setFirst Name(ra[2] );
  299                    // r p.setMiddl eInitial(r a[3]);
  300                    // r p.setSSN(r a[4]);
  301                    // r p.setDOB(r a[5]);
  302                    // r p.setSex(r a[6]);
  303                    // r p.setVAID( ra[7]);
  304                    // i f (ral > 1 5) {
  305                    // r p.setPCF(r a[8]);
  306                    // r p.setAddre ss1(ra[9]) ;
  307                    // r p.setAddre ss2(ra[9]) ; //city
  308                    // r p.setAddre ss3(ra[10] ); //state
  309                    // r p.setPrefi xName(ra[1 2]);
  310                    // r p.setSuffi xName(ra[1 3]);
  311                    // r p.setSites (ra[15]);
  312                    // }
  313                    // r eturn rp;
  314                    // }
  315                    //
  316                    // V ector getR esultItems () {
  317                    // V ector rv =  new Vecto r();
  318                    // f or (int i  = 0; i < r esults.siz e(); i++)  {
  319                    // r v.add(getR esultItem( i));
  320                    // }
  321                    // r eturn rv;
  322                    // }
  323  
  324                    /**
  325                     * c reateFindR equest
  326                     *
  327                     * @ param pi
  328                     * @ param data Query
  329                     * @ return
  330                     *
  331                     *                build th e HL7 mess age using  the VQQ^Q0 2 find can didate
  332                     * 
  333                     */
  334                    Stri ng createF indRequest (PersonIde ntityVO pi , String q uery)
  335                    {
  336  
  337                             aFlag  = false;
  338                             reques tBuffer =  new String Buffer(100 );
  339                             reques tBuffer.ap pend("MSH| ^~&|MPI_LO AD|200M|MP I-ICN|");
  340                             reques tBuffer.ap pend("|" +  DateTimeU tility.get CurrentTim e());
  341                             reques tBuffer.ap pend("||VQ Q^Q02|");
  342                             reques tBuffer.ap pend(Syste m.currentT imeMillis( ) + "");
  343                             reques tBuffer.ap pend("|T|2 .4|||AL|NE |");
  344                             reques tBuffer.ap pend("\r") ;
  345  
  346                             reques tBuffer.ap pend("VTQ| ");
  347                             reques tBuffer.ap pend(Syste m.currentT imeMillis( ) + "");
  348                             reques tBuffer.ap pend("|T|"  + query +  "|ICN|");
  349                             addSea rchProp("@ 00108.1^EQ ^", pi.get LastName() ); // EQ e quals CT
  350                                                                                                                                               //  contains
  351                             addSea rchProp("@ 00108.2^EQ ^", pi.get FirstName( ));
  352                             addSea rchProp("@ 00108.3^EQ ^", pi.get MiddleInit ial());
  353                             addSea rchProp("@ 00110^EQ^" , pi.getDO B_VA_Forma t());
  354                             addSea rchProp("@ 00111^EQ^" , pi.getSe x());
  355                             addSea rchProp("@ 00122^EQ^" , pi.getSS N());
  356                             addSea rchProp("@ 00108.4^EQ ^", pi.get SuffixName ());
  357                             addSea rchProp("@ 00108.5^EQ ^", pi.get PrefixName ());
  358                             reques tBuffer.ap pend("\r") ;
  359  
  360                             reques tBuffer.ap pend("RDF| 15|@00108. 1^ST^20~@0 0108.2^ST^ 20~@00108. 3^ST^16~@0 0122^ST^9~ @00110^ST^ 8~@00111^S T^1~@00105 ^ST^19~@00 756^ST^3~@ 00740^ST^8 ~@00126.1^ ST^30~@001 26.2^ST^3~ @00108.5^S T^15~@0010 8.4^ST^10~ @00109.1^S T^20~@0016 9^ST^1000~ @00109.1^S T^20~@POW~ @00114.1^S T^20~@0011 4.2^ST^20~ @00114.3^S T^20~@0011 4.4^ST^20~ @00114.5^S T^20~@0011 4.6^ST^20~ @00114.7^S T^20");
  361                             // 1-l ast 2-firs t 3-middle  4-ssn 5-d ob 6-sex 7 -ICN 8-PCS  9-DOD
  362                             // 10- BPC
  363                             // 11- BPS 12-pre fix 13-suf fix 14-mai den 15-Tre ating faci lites
  364                             // 16- Maiden Nam e 17-Pow 1 8- street  address1 1 9- street  address2 2 0-
  365                             // str eet addres s3
  366                             // 21- City 22-St ate 23-Zip  24-Phone  number
  367                             reques tBuffer.ap pend("\r") ;
  368  
  369                             return  requestBu ffer.toStr ing();
  370  
  371                             // * =  input, +  = output
  372                             // *+  7 ;;@00105 ;ICN;0;1;. 01
  373                             // *+  4 ;;@00122 ;SSN;0;14; 13
  374                             // *+  1 ;;@00108 .1;LAST NA ME;0;2;1
  375                             // *+  2 ;;@00108 .2;FIRST N AME;0;3;2
  376                             // *+  3 ;;@00108 .3;MIDDLE; 0;4;3
  377                             // + 1 3 ;;@00108 .4;NAME SU FFIX;0;6;5
  378                             // + 1 2 ;;@00108 .5;NAME PR EFIX;0;5;4
  379                             // + 1 0 ;;@00126 .1;BIRTH P LACE CITY; 0;9;8
  380                             // + 1 1 ;;@00126 .2;BIRTH P LACE STATE ;0;10;9;P;
  381                             // + 1 4 ;;@00109 .1;MOTHER' S MAIDEN N AME;0;7;6
  382                             // *+  6 ;;@00111 ;SEX;0;13; 12
  383                             // + 8  ;;@00756; PRIMARY CA RE SITE;1; 2;16;P;^DI C(4,
  384                             // + 9  ;;@00740; DATE OF DE ATH;0;11;1 0;D
  385                             // *+  5 ;;@00110 ;DOB;0;8;7 ;D
  386                             // + 1 6 ;;@00109 ;MA'S MAID EN NAME;0; 7;6
  387                             // + 1 5 ;;@00169 ;TREATING  FACILITY ( MULTIPLE-- FILE 985.5 );;;;
  388                             // ;;@ ZEL6;CLAIM  NUMBER;1; 1;15
  389                             // ;;@ 00112.1;AL IAS LAST N AME;985.02 ;1;.01
  390                             // ;;@ 00112.2;AL IAS FIRST  NAME;985.0 2;2;1
  391                             // ;;@ 00112.3;AL IAS MIDDLE  NAME;985. 02;3;2
  392                             // ;;@ 00112.4;AL IAS SUFFIX ;985.02;5; 4
  393                             // ;;@ 00112.5;AL IAS PREFIX ;985.02;4; 3
  394                             // 17  ;;@POW;POW  STATUS;2; 9;38
  395                             // ;;@ 00127;MULI TPLE BIRTH ;2;10;39
  396                    }
  397  
  398                    void  addSearch Prop(Strin g t, Strin g p)
  399                    {
  400                             if(p ! = null &&  p.length()  > 0)
  401                             {
  402                                      if(aFlag )
  403                                      {
  404                                               requestBuf fer.append ("^AND~");
  405                                      }
  406                                      requestB uffer.appe nd(t);
  407                                      requestB uffer.appe nd(p);
  408                                      aFlag =  true;
  409                             }
  410                    }
  411           }
  412   }