45. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/29/2017 4:53:21 PM Eastern 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.

45.1 Files compared

# Location File Last Modified
1 CTT-DM CIF Submission.zip\code\ISAAC\hl7-messaging\src\test\java\gov\vha\isaac\ochre\deployment\hapi\extension\hl7\message TestHL7Messaging.java Fri Mar 3 16:20:19 2017 UTC
2 CTT-DM CIF Submission.zip\code\ISAAC\hl7-messaging\src\test\java\gov\vha\isaac\ochre\deployment\hapi\extension\hl7\message TestHL7Messaging.java Wed Mar 29 15:09:05 2017 UTC

45.2 Comparison summary

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

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

45.4 Active regular expressions

No regular expressions were active.

45.5 Comparison detail

  1   /**
  2    * Copyrig ht Notice
  3    *
  4    * This is  a work of  the U.S.  Government  and is no t subject  to copyrig ht
  5    * protect ion in the  United St ates. Fore ign copyri ghts may a pply.
  6    *
  7    * License d under th e Apache L icense, Ve rsion 2.0  (the "Lice nse");
  8    * you may  not use t his file e xcept in c ompliance  with the L icense.
  9    * You may  obtain a  copy of th e License  at
  10    *
  11    * http:// www.apache .org/licen ses/LICENS E-2.0
  12    *
  13    * Unless  required b y applicab le law or  agreed to  in writing , software
  14    * distrib uted under  the Licen se is dist ributed on  an "AS IS " BASIS,
  15    * WITHOUT  WARRANTIE S OR CONDI TIONS OF A NY KIND, e ither expr ess or imp lied.
  16    * See the  License f or the spe cific lang uage gover ning permi ssions and
  17    * limitat ions under  the Licen se.
  18    */
  19   package go v.vha.isaa c.ochre.de ployment.h api.extens ion.hl7.me ssage;
  20  
  21   import jav a.util.Arr ayList;
  22   import jav a.util.Lis t;
  23  
  24   import org .apache.lo gging.log4 j.LogManag er;
  25   import org .apache.lo gging.log4 j.Logger;
  26   import org .junit.Aft erClass;
  27   import org .junit.Ass ert;
  28   import org .junit.Bef oreClass;
  29   import org .junit.Tes t;
  30  
  31   import ca. uhn.hl7v2. model.Mess age;
  32   import ca. uhn.hl7v2. parser.Pip eParser;
  33   import gov .vha.isaac .ochre.acc ess.maint. deployment .dto.Publi shMessage;
  34   import gov .vha.isaac .ochre.acc ess.maint. deployment .dto.Publi shMessageD TO;
  35   import gov .vha.isaac .ochre.acc ess.maint. deployment .dto.Site;
  36   import gov .vha.isaac .ochre.acc ess.maint. deployment .dto.SiteD TO;
  37   import gov .vha.isaac .ochre.acc ess.maint. deployment .dto.SiteD iscovery;
  38   import gov .vha.isaac .ochre.api .LookupSer vice;
  39   import gov .vha.isaac .ochre.dep loyment.li stener.par ser.Checks umVersionP arser;
  40   import gov .vha.isaac .ochre.dep loyment.li stener.par ser.SiteDi scoveryPar ser;
  41   import gov .vha.isaac .ochre.ser vices.dto. publish.Ap plicationP roperties;
  42   import gov .vha.isaac .ochre.ser vices.dto. publish.HL 7Applicati onProperti es;
  43   import gov .vha.isaac .ochre.ser vices.dto. publish.HL 7MessagePr operties;
  44   import gov .vha.isaac .ochre.ser vices.dto. publish.Me ssagePrope rties;
  45   import jav afx.beans. value.Chan geListener ;
  46   import jav afx.beans. value.Obse rvableValu e;
  47   import jav afx.concur rent.Task;
  48  
  49   /**
  50    * Various  units tes ts for HL7  messaging  module.
  51    *
  52    * {@link  TestHL7Mes saging}
  53    *
  54    * @author  <a href=" mailto:nma rques@west coastinfor matics.com ">Nuno Mar ques</a>
  55    */
  56   public cla ss TestHL7 Messaging
  57   {
  58           pr ivate stat ic final L ogger LOG  = LogManag er.getLogg er(TestHL7 Messaging. class);
  59           pr ivate stat ic Applica tionProper ties appli cationProp erties_ =  getDefault ServerProp erties();
  60  
  61           @B eforeClass
  62           pu blic stati c void ini tialize()  throws Exc eption {
  63                    HL7M essaging.e nableListe ner(applic ationPrope rties_);
  64           }
  65  
  66           @A fterClass
  67           pu blic stati c void fin ish() thro ws Excepti on {
  68                    Look upService. shutdownSy stem();
  69           }
  70  
  71           @T est
  72           pu blic void  testSiteDi scoveryPar ser() thro ws Excepti on {
  73  
  74                    Stri ng test =  "MSH^~|\\& ^VETS UPDA TE^660DEV2 ^XUMF UPDA TE^^200805 09095700.0 00-0600^^M FN~M01^^^2 .4^^^AL^AL ^USA\r"
  75                                      + "MFI^S tandard Te rminology~ ~ERT^^MUP^ 2008050909 5700.000-0 600^200805 09095700.0 00-0600^NE \r"
  76                                      + "MFE^M UP^^^Order  Status@45 00659\r" +  "ZRT^Term ^ACTIVE\r"  + "ZRT^Vi stA_Short_ Name^actv\ r"
  77                                      + "ZRT^V istA_Abbre viation^a\ r"
  78                                      + "ZRT^V istA_Descr iption^Ord ers that a re active  or have be en accepte d by the s ervice for  processin g.  e.g.,  Dietetic o rders are  active upo n being or dered, Pha rmacy orde rs are act ive when t he order i s verified , Lab orde rs are act ive when t he sample  has been c ollected,  Radiology  orders are  active up on registr ation.\r"
  79                                      + "ZRT^S tatus^1\r"  + "MFE^MU P^^^Order  Status@450 1011\r" +  "ZRT^Term^ CANCELLED\ r"
  80                                      + "ZRT^V istA_Short _Name^canc \r" + "ZRT ^VistA_Abb reviation^ x\r"
  81                                      + "ZRT^V istA_Descr iption^Ord ers that h ave been r ejected by  the ancil lary servi ce without  being act ed on, or  terminated  while sti ll delayed .\r"
  82                                      + "ZRT^S tatus^1\r"  + "MFE^MU P^^^Order  Status@450 1088\r" +  "ZRT^Term^ COMPLETE\r "
  83                                      + "ZRT^V istA_Short _Name^comp \r" + "ZRT ^VistA_Abb reviation^ c\r"
  84                                      + "ZRT^V istA_Descr iption^Ord ers that r equire no  further ac tion by th e ancillar y service.   e.g., La b orders a re complet ed when re sults are  available,  Radiology  orders ar e complete  when resu lts are av ailable.\r "
  85                                      + "ZRT^S tatus^1\r" ;
  86  
  87                    // p arse the t ext into a n HL7 mess age.
  88                    Pipe Parser par ser = new  PipeParser ();
  89                    Mess age messag e = parser .parse(tes t);
  90  
  91                    // p arse the H L7 message  into Site Discovery  object
  92                    Site DiscoveryP arser site DiscoveryP arser = ne w SiteDisc overyParse r();
  93                    Site Discovery  siteDiscov ery = site DiscoveryP arser.pars eMessage(m essage);
  94  
  95                    // v alidate st ring
  96                    Asse rt.assertE quals("Ord er Status" , siteDisc overy.getR efset());
  97                    Asse rt.assertE quals(site Discovery. getHeaders ().size(),  6);
  98                    Asse rt.assertE quals(site Discovery. getValues( ).size(),  3); // lik e rows
  99                                                                                                                                                        // o f values
  100                    for  (ArrayList <String> r ow : siteD iscovery.g etValues() ) {
  101                             // eac h row has  6 values,  same as he ader
  102                             Assert .assertEqu als(row.si ze(), 6);
  103                    }
  104  
  105           }
  106           
  107           @T est
  108           pu blic void  testChecks umVersionP arser()
  109           {
  110                    Stri ng test =  ";CHECKSUM :4bdb6ba42 2ce1121652 9bb9b085eb 54f;VERSIO N:25;";
  111                    
  112                    Asse rt.assertE quals("4bd b6ba422ce1 1216529bb9 b085eb54f" , Checksum VersionPar ser.getVal ueFromToke nizedStrin g("CHECKSU M", test)) ;
  113                    Asse rt.assertE quals("25" , Checksum VersionPar ser.getVal ueFromToke nizedStrin g("VERSION ", test));
  114                    
  115           }
  116  
  117           @T est(expect ed = Excep tion.class )
  118           pu blic void  testSendCh ecksumMess ageEmpty()  throws Th rowable {
  119                    // 1 . Fail if  no message .
  120                    LOG. info("1. F ail if no  message.") ;
  121  
  122                    Stri ng hl7Mess age = "";
  123  
  124                    Site  site = ne w SiteDTO( );
  125                    site .setId(1);
  126                    site .setVaSite Id("950");
  127                    site .setGroupN ame("");
  128                    site .setName(" STLVETSDEV ");
  129                    site .setType(" ");
  130                    site .setMessag eType("T") ;
  131  
  132                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  133  
  134                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  135                    publ ishMessage s.add(publ ishMessage );
  136  
  137                    Task <Void> t =  HL7Messag ing.checks um(publish Messages,  getDefault MessagePro perties()) .get(0);
  138                    task Log(t);
  139                    // u nit test d oes not se nd message  to server , the resu lt is null .
  140                    Asse rt.assertN ull(t.get( ));
  141  
  142           }
  143  
  144           @T est // (ex pected = E xception.c lass)
  145           pu blic void  testSendCh ecksumMess ageNoSite( ) throws T hrowable {
  146                    // 2 . Fail if  no site.
  147                    LOG. info("2. F ail if no  site.");
  148  
  149                    Stri ng hl7Mess age = "Rad iology Pro cedures";
  150  
  151                    Site  site = ne w SiteDTO( );
  152  
  153                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  154  
  155                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  156                    publ ishMessage s.add(publ ishMessage );
  157  
  158                    Task <Void> t =  HL7Messag ing.checks um(publish Messages,  getDefault MessagePro perties()) .get(0);
  159                    task Log(t);
  160                    // u nit test d oes not se nd message  to server , the resu lt is null .
  161                    Asse rt.assertN ull(t.get( ));
  162           }
  163  
  164           @T est
  165           pu blic void  testSendCh ecksumMess ageBadSite () throws  Throwable  {
  166                    // 3 . Fail if  site is ga rbage.
  167                    LOG. info("3. F ail if sit e is garba ge.");
  168  
  169                    Stri ng hl7Mess age = "Rad iology Pro cedures";
  170  
  171                    Site  site = ne w SiteDTO( );
  172                    site .setId(1);
  173                    site .setVaSite Id("AA");
  174                    site .setGroupN ame("");
  175                    site .setName(" BB");
  176                    site .setType(" ");
  177                    site .setMessag eType("T") ;
  178  
  179                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  180  
  181                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  182                    publ ishMessage s.add(publ ishMessage );
  183  
  184                    Task <Void> t =  HL7Messag ing.checks um(publish Messages,  getDefault MessagePro perties()) .get(0);
  185                    task Log(t);
  186                    // u nit test d oes not se nd message  to server , the resu lt is null .
  187                    Asse rt.assertN ull(t.get( ));
  188  
  189           }
  190  
  191           @T est
  192           pu blic void  testSendCh ecksumMess ageGood()  throws Thr owable {
  193                    // 4 . Success  if message  and site  are OK.
  194                    LOG. info("4. S uccess if  message an d site are  OK.");
  195  
  196                    Stri ng hl7Mess age = "Rad iology Pro cedures";
  197  
  198                    Site  site = ne w SiteDTO( );
  199                    site .setId(1);
  200                    site .setVaSite Id("950");
  201                    site .setGroupN ame("");
  202                    site .setName(" STLVETSDEV ");
  203                    site .setType(" ");
  204                    site .setMessag eType("T") ;
  205  
  206                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  207  
  208                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  209                    publ ishMessage s.add(publ ishMessage );
  210  
  211                    Task <Void> t =  HL7Messag ing.checks um(publish Messages,  getDefault MessagePro perties()) .get(0);
  212                    task Log(t);
  213                    // u nit test d oes not se nd message  to server , the resu lt is null .
  214                    Asse rt.assertN ull(t.get( ));
  215  
  216           }
  217  
  218           @T est(expect ed = Excep tion.class )
  219           pu blic void  testSendSi teDataMess ageEmpty()  throws Th rowable {
  220  
  221                    // 1 . Fail if  no message .
  222                    LOG. info("1. F ail if no  message.") ;
  223  
  224                    Stri ng hl7Mess age = "";
  225  
  226                    Site  site = ne w SiteDTO( );
  227                    site .setId(1);
  228                    site .setVaSite Id("950");
  229                    site .setGroupN ame("");
  230                    site .setName(" STLVETSDEV ");
  231                    site .setType(" ");
  232                    site .setMessag eType("T") ;
  233  
  234                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  235  
  236                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  237                    publ ishMessage s.add(publ ishMessage );
  238  
  239                    Task <Void> t =  HL7Messag ing.discov ery(publis hMessages,  getDefaul tMessagePr operties() ).get(0);
  240                    task Log(t);
  241                    // u nit test d oes not se nd message  to server , the resu lt is null .
  242                    Asse rt.assertN ull(t.get( ));
  243  
  244           }
  245  
  246           @T est // (ex pected = E xception.c lass)
  247           pu blic void  testSendSi teDataMess ageNoSite( ) throws T hrowable {
  248                    // 2 . Fail if  no site.
  249                    LOG. info("2. F ail if no  site.");
  250  
  251                    Stri ng hl7Mess age = "Vit al Qualifi ers";
  252  
  253                    Site  site = ne w SiteDTO( );
  254  
  255                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  256  
  257                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  258                    publ ishMessage s.add(publ ishMessage );
  259  
  260                    Task <Void> t =  HL7Messag ing.discov ery(publis hMessages,  getDefaul tMessagePr operties() ).get(0);
  261                    task Log(t);
  262                    // u nit test d oes not se nd message  to server , the resu lt is null .
  263                    Asse rt.assertN ull(t.get( ));
  264           }
  265  
  266           @T est
  267           pu blic void  testSendSi teDataMess ageBadSite () throws  Throwable  {
  268                    // 3 . Fail if  site is ga rbage.
  269                    LOG. info("3. F ail if sit e is garba ge.");
  270  
  271                    Stri ng hl7Mess age = "Vit al Qualifi ers";
  272  
  273                    Site  site = ne w SiteDTO( );
  274                    site .setId(1);
  275                    site .setVaSite Id("AA");
  276                    site .setGroupN ame("");
  277                    site .setName(" BB");
  278                    site .setType(" ");
  279                    site .setMessag eType("T") ;
  280  
  281                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  282  
  283                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  284                    publ ishMessage s.add(publ ishMessage );
  285  
  286                    Task <Void> t =  HL7Messag ing.discov ery(publis hMessages,  getDefaul tMessagePr operties() ).get(0);
  287                    task Log(t);
  288                    // u nit test d oes not se nd message  to server , the resu lt is null .
  289                    Asse rt.assertN ull(t.get( ));
  290  
  291           }
  292  
  293           @T est
  294           pu blic void  testSendSi teDataMess ageGood()  throws Thr owable {
  295                    // 4 . Success  if message  and site  are OK.
  296                    LOG. info("4. S uccess if  message an d site are  OK.");
  297  
  298                    Stri ng hl7Mess age = "Vit al Qualifi ers";
  299  
  300                    Site  site = ne w SiteDTO( );
  301                    site .setId(1);
  302                    site .setVaSite Id("950");
  303                    site .setGroupN ame("");
  304                    site .setName(" STLVETSDEV ");
  305                    site .setType(" ");
  306                    site .setMessag eType("T") ;
  307  
  308                    Publ ishMessage  publishMe ssage = ne w PublishM essageDTO( 1, site, h l7Message) ;
  309  
  310                    List <PublishMe ssage> pub lishMessag es = new A rrayList<P ublishMess age>();
  311                    publ ishMessage s.add(publ ishMessage );
  312  
  313                    Task <Void> t =  HL7Messag ing.discov ery(publis hMessages,  getDefaul tMessagePr operties() ).get(0);
  314                    task Log(t);
  315                    // u nit test d oes not se nd message  to server , the resu lt is null .
  316                    Asse rt.assertN ull(t.get( ));
  317  
  318           }
  319  
  320           pr ivate stat ic Applica tionProper ties getDe faultServe rPropertie s() {
  321  
  322                    Appl icationPro perties ap pProp = ne w HL7Appli cationProp erties();
  323  
  324                    // A pplication  Server Me ssage Stri ng
  325                    appP rop.setApp licationSe rverName(" ISAAC");
  326                    appP rop.setApp licationVe rsion("8.4 .0.0");
  327  
  328                    // L istener Po rt
  329                    appP rop.setLis tenerPort( 49990);
  330  
  331                    // S ending Fac ility Site  ID
  332                    appP rop.setSen dingFacili tyNamespac eId("200ET 1");
  333  
  334                    // T arget Vitr ia Interfa ce Engine
  335                    appP rop.setInt erfaceEngi neURL(
  336                                       "http:// DNS . DNS     : PORT /Framework Client-1.1 /Framework 2ServletHT TPtoChanne l");
  337  
  338                    // E ncoding ty pe
  339                    appP rop.setHl7 EncodingTy pe("VB");
  340  
  341                    appP rop.setUse InterfaceE ngine(fals e);
  342  
  343                    retu rn appProp ;
  344  
  345           }
  346  
  347           pr ivate stat ic Message Properties  getDefaul tMessagePr operties()  {
  348  
  349                    Mess agePropert ies messag ePropertie s = new HL 7MessagePr operties() ;
  350  
  351                    // S ettings us ed by the  converter  to configu re the sen ding appli cation.
  352                    mess agePropert ies.setSen dingApplic ationNames paceIdUpda te("VETS U PDATE");
  353                    mess agePropert ies.setSen dingApplic ationNames paceIdMD5( "VETS MD5" );
  354                    mess agePropert ies.setSen dingApplic ationNames paceIdSite Data("VETS  DATA");
  355  
  356                    // T arget Appl ication at  VistA sit es
  357                    mess agePropert ies.setRec eivingAppl icationNam espaceIdUp date("XUMF  UPDATE");
  358                    mess agePropert ies.setRec eivingAppl icationNam espaceIdMD 5("XUMFMD5 ");
  359                    mess agePropert ies.setRec eivingAppl icationNam espaceIdSi teData("XU MF DATA");
  360  
  361                    // M essage Ver sion ID
  362                    mess agePropert ies.setVer sionId("2. 4");
  363  
  364                    // a cceptAckno wledgement Type
  365                    mess agePropert ies.setAcc eptAcknowl edgementTy pe("AL");
  366                    mess agePropert ies.setApp licationAc knowledgem entType("A L");
  367  
  368                    mess agePropert ies.setCou ntryCode(" USA");
  369  
  370                    // M FI field v alues
  371                    mess agePropert ies.setMas terFileIde ntifier("S tandard Te rminology" );
  372                    mess agePropert ies.setNam eOfCodingS ystem("ERT ");
  373                    mess agePropert ies.setFil eLevelEven tCode("MUP ");
  374                    mess agePropert ies.setRes ponseLevel Code("NE") ;
  375  
  376                    // M FE field v alues
  377                    mess agePropert ies.setRec ordLevelEv entCode("N E");
  378  
  379                    // Q RD field v alues
  380                    mess agePropert ies.setQue ryFormatCo de("R");
  381                    mess agePropert ies.setQue ryPriority ("I");
  382                    mess agePropert ies.setQue ryId("Stan dard Termi nology Que ry");
  383                    mess agePropert ies.setQue ryLimitedR equestQuan tity(99999 );
  384                    // a ppProp.set QueryLimit edRequestU nits();
  385  
  386                    mess agePropert ies.setQue ryWhoSubje ctFilterId Number("AL L");
  387                    mess agePropert ies.setQue ryWhatDepa rtmentData CodeIdenti fier("VA") ;
  388  
  389                    // C E static f ield value s
  390                    mess agePropert ies.setSub FieldSepar ator("@");
  391  
  392                    retu rn message Properties ;
  393  
  394           }
  395  
  396           pr ivate void  taskLog(T ask<?> t)  {
  397  
  398                    t.me ssagePrope rty().addL istener(ne w ChangeLi stener<Str ing>()
  399                    {
  400                             @Overr ide
  401                             public  void chan ged(Observ ableValue< ? extends  String> ob servable,  String old Value, Str ing newVal ue)
  402                             {
  403                                      LOG.info ("Message:  " + newVa lue);
  404                             }
  405                    });
  406  
  407           }
  408   }