74. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/1/2018 12:13:17 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.

74.1 Files compared

# Location File Last Modified
1 ehealth_xchange_cif.zip\NHIN_adapter\AdapterLIB\src\main\java\gov\va\med\nhin\adapter\datamanager\adapters MVI1305ICNDataAdapter.java Thu Feb 22 14:26:48 2018 UTC
2 ehealth_xchange_cif.zip\NHIN_adapter\AdapterLIB\src\main\java\gov\va\med\nhin\adapter\datamanager\adapters MVI1305ICNDataAdapter.java Tue Feb 27 14:28:29 2018 UTC

74.2 Comparison summary

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

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

74.4 Active regular expressions

No regular expressions were active.

74.5 Comparison detail

  1   package go v.va.med.n hin.adapte r.datamana ger.adapte rs;
  2  
  3   import com .sun.xml.w s.client.B indingProv iderProper ties;
  4  
  5   import gov .va.med.nh in.adapter .datamanag er.DataAda pter;
  6   import gov .va.med.nh in.adapter .datamanag er.DataQue ry;
  7   import gov .va.med.nh in.adapter .mvi.hl7pa rsers.HL7P arser20130 6;
  8   import gov .va.oit.oe d.vaww.VAI dMPort;
  9   import jav a.math.Big Integer;
  10   import jav a.util.Arr ayList;
  11   import jav a.util.Lis t;
  12   import jav a.util.Map ;
  13  
  14   import jav ax.xml.bin d.JAXBElem ent;
  15   import jav ax.xml.ws. BindingPro vider;
  16   import jav ax.xml.ws. WebService Exception;
  17   import jav ax.xml.ws. soap.SOAPF aultExcept ion;
  18  
  19   import org .hl7.v3.CS ;
  20   import org .hl7.v3.II ;
  21   import org .hl7.v3.IN T;
  22   import org .hl7.v3.MC CIMT000300 UV01Acknow ledgement;
  23   import org .hl7.v3.MF MIMT700711 UV01QueryA ck;
  24   import org .hl7.v3.Ob jectFactor y;
  25   import org .hl7.v3.PR PAIN201305 UV02;
  26   import org .hl7.v3.PR PAIN201305 UV02QUQIMT 021001UV01 ControlAct Process;
  27   import org .hl7.v3.PR PAIN201306 UV02;
  28   import org .hl7.v3.PR PAMT201306 UV02Parame terList;
  29   import org .hl7.v3.PR PAMT201306 UV02QueryB yParameter ;
  30   import org .slf4j.Log ger;
  31   import org .slf4j.Log gerFactory ;
  32  
  33   /**
  34    *
  35    * @author   DN S      VAZQUD
  36    */
  37   public cla ss MVI1305 ICNDataAda pter exten ds MVIData Adapter<Ma p<String,  Object>> i mplements  DataAdapte r<Map<Stri ng, Object >>
  38   {
  39           pr ivate stat ic final L ogger logg er = Logge rFactory.g etLogger(M VI1305ICND ataAdapter .class.get Name());
  40  
  41           @O verride
  42           pu blic List< Map<String , Object>>  getData(D ataQuery d ataQuery)
  43           {
  44                    init ializeProp erties(dat aQuery);
  45  
  46                    List <Map<Strin g, Object> > ret = ne w ArrayLis t();
  47  
  48                    Stri ng icn = ( String) da taQuery.ge tParameter ("icn");
  49  
  50                    icn  = this.get WellFormed ICN(icn);
  51  
  52                    int  retriesRem aining = m viRetryLim it;
  53                    whil e(true)
  54                    {
  55                             try
  56                             {
  57                                      PRPAIN20 1305UV02 r equest1305  = createA dapters130 5Request(i cn);
  58                                      VAIdMPor t port = g etVAIdMPor t(wsdlURL) ;
  59                                      Map<Stri ng, Object > requestC ontext = ( (BindingPr ovider) po rt).getReq uestContex t();
  60                                      requestC ontext.put (BindingPr oviderProp erties.REQ UEST_TIMEO UT, mviReq uestTimeou t);
  61                                      requestC ontext.put (BindingPr oviderProp erties.CON NECT_TIMEO UT, mviCon nectTimeou t);
  62                                      PRPAIN20 1306UV02 r esponse130 6 = (PRPAI N201306UV0 2) port.pr paIN201305 UV02(reque st1305);
  63  
  64                                      MCCIMT00 0300UV01Ac knowledgem ent ack =  response13 06.getAckn owledgemen t().get(0) ;
  65                                      MFMIMT70 0711UV01Qu eryAck que ryAck = re sponse1306 .getContro lActProces s().getQue ryAck();
  66                                      logger.i nfo("ack.g etTypeCode ().getCode ():" + ack .getTypeCo de().getCo de());
  67                                      logger.i nfo("query Ack.getQue ryResponse Code().get Code():" +  queryAck. getQueryRe sponseCode ().getCode ());
  68  
  69                                      if(ack.g etTypeCode ().getCode ().equalsI gnoreCase( "AA") && q ueryAck.ge tQueryResp onseCode() .getCode() .equalsIgn oreCase("O K"))
  70                                      {
  71                                               Map<String , Object>  map1306 =  this.build 1306Result sMap(respo nse1306);
  72                                               ret.add(ma p1306);
  73                                      }
  74                                      else
  75                                      {
  76                                               // MVI ret urned with  error cod e.
  77                                               String mvi AckText =  (String) a ck.getAckn owledgemen tDetail(). get(0).get Text().get Content(). get(0);
  78                                               // fix for  fortify i ssue - Pri vacy Viola tion: RTC  ticket #
  79                                               // 162993
  80                                               logger.war n("MVI que ry for ICN  returned  error.  {}  Details:  ", mviAckT ext);
  81                                      }
  82                                      break;
  83                             }
  84                             catch( SOAPFaultE xception s fe)
  85                             {
  86                                      String m sg = sfe.g etMessage( );
  87                                      String s fStr = sfe .getFault( ).getFault String();
  88                                      String s fCode = sf e.getFault ().getFaul tCode();
  89                                      throw ne w DataAdap terExcepti on("SOAPFa ultExcepti on occurre d :" + "Me ssage: " +  msg + ";  " + "Fault String: "  + sfStr +  ";" + "Fau ltCode: "  + sfCode,  sfe);
  90                             }
  91                             catch( WebService Exception  ste)
  92                             {
  93                                      logger.e rror("WebS erviceExce ption conn ecting to  MVI.  Mess age={}", s te.getMess age());
  94                                      // only  execute re tries on t imeout
  95                                      if(ste.g etCause()  instanceof  java.net. SocketTime outExcepti on)
  96                                      {
  97                                               if(--retri esRemainin g == 0)
  98                                               {
  99                                                       th row new Da taAdapterE xception(s te);
  100                                               }
  101                                               else
  102                                               {
  103                                                       lo gger.info( "Retrying  connection  to MVI du e to Socke tTimeoutEx ception. { } retries  remaining. ", retries Remaining) ;
  104                                               }
  105                                      }
  106                                      else
  107                                      {
  108                                               throw new  DataAdapte rException (ste);
  109                                      }
  110                             }
  111                             catch( Throwable  t)
  112                             {
  113                                      logger.e rror("Ther e was an e rror getti ng data fr om MVI.  M essage={}" , t.getMes sage());
  114                                      throw ne w DataAdap terExcepti on("There  was an err or getting  data from  MVI.", t) ;
  115                             }
  116                    }
  117                    retu rn ret;
  118           }
  119  
  120           pr ivate Map< String, Ob ject> buil d1306Resul tsMap(PRPA IN201306UV 02 results 1306)
  121           {
  122                    Map< String, Ob ject> map1 306 = HL7P arser20130 6.extractD emographic s(results1 306);
  123  
  124                    retu rn map1306 ;
  125           }
  126  
  127           /*
  128            *  Build 130 5 request
  129            *  
  130            *  @param St ring ICN
  131            * /
  132           pr ivate PRPA IN201305UV 02 createA dapters130 5Request(S tring icn)
  133           {
  134                    Obje ctFactory  objFactory  = new Obj ectFactory ();
  135                    PRPA IN201305UV 02 adapter 1305Reques t = new PR PAIN201305 UV02();
  136  
  137                    // S et up mess age header  fields
  138                    adap ter1305Req uest.setId (createMes sageId(nul l));
  139  
  140                    adap ter1305Req uest.setCr eationTime (createCre ationTime( ));
  141  
  142                    // S et Process ing Code
  143                    CS p rocessingC ode = new  CS();
  144                    proc essingCode .setCode(p rocessingC odeStr);
  145                    adap ter1305Req uest.setPr ocessingCo de(process ingCode);
  146  
  147                    // S et Acknowl egment Cod e
  148                    CS a cceptAckCo de = new C S();
  149                    acce ptAckCode. setCode("A L");
  150                    adap ter1305Req uest.setAc ceptAckCod e(acceptAc kCode);
  151  
  152                    // S et Sender
  153                    adap ter1305Req uest.setSe nder(creat eSender(mv iSiteKey13 05, VA_OID , mviSiteK ey1305));
  154  
  155                    // S etup Contr olActProce s
  156                    PRPA IN201305UV 02QUQIMT02 1001UV01Co ntrolActPr ocess cont rolActProc ess = new  PRPAIN2013 05UV02QUQI MT021001UV 01ControlA ctProcess( );
  157                    adap ter1305Req uest.setCo ntrolActPr ocess(cont rolActProc ess);
  158  
  159                    // S et DataEnt erer
  160                    cont rolActProc ess.getDat aEnterer() .add(creat eDataEnter er2(null)) ; // expec ts
  161                                                                                                                                                                          // an
  162                                                                                                                                                                          // asser tion
  163  
  164                    // Q ueryByPara mter
  165                    PRPA MT201306UV 02QueryByP arameter q ueryByPara meter = ne w PRPAMT20 1306UV02Qu eryByParam eter();
  166                    JAXB Element<PR PAMT201306 UV02QueryB yParameter > queryByP arameterJA XB = objFa ctory.crea tePRPAIN20 1305UV02QU QIMT021001 UV01Contro lActProces sQueryByPa rameter(qu eryByParam eter);
  167                    cont rolActProc ess.setQue ryByParame ter(queryB yParameter JAXB);
  168  
  169                    CS m odifyCode  = new CS() ;
  170                    modi fyCode.set Code("MVI. COMP1");
  171                    quer yByParamet er.setModi fyCode(mod ifyCode);
  172  
  173                    INT  initQty =  new INT();
  174                    init Qty.setVal ue(BigInte ger.ONE);
  175                    quer yByParamet er.setInit ialQuantit y(initQty) ;
  176  
  177                    // Q uery Param eterList
  178                    PRPA MT201306UV 02Paramete rList para mList = ne w PRPAMT20 1306UV02Pa rameterLis t();
  179                    quer yByParamet er.setPara meterList( paramList) ;
  180  
  181                    II i cnId = new  II();
  182                    icnI d.setExten sion(this. getWellFor medICN(icn ));
  183                    icnI d.setRoot( VA_OID);
  184                    para mList.setI d(icnId);
  185  
  186                    retu rn adapter 1305Reques t;
  187           }
  188  
  189           pr ivate Stri ng getWell FormedICN( String icn )
  190           {
  191                    Stri ng icnValu e = HL7Par ser201306. extractICN Value(icn) ;
  192                    if(i cnValue !=  null)
  193                    {
  194                             icnVal ue = icnVa lue.concat ("^NI");
  195                    }
  196                    retu rn icnValu e;
  197           }
  198  
  199   }