7. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 6/5/2018 10:24:06 AM 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.

7.1 Files compared

# Location File Last Modified
1 patch_205_build_9.zip\Java\AwivClientWebApp\main\src\java\gov\va\med\imaging\awiv\client AwivHelper.java Wed May 30 14:35:24 2018 UTC
2 patch_205_build_9.zip\Java\AwivClientWebApp\main\src\java\gov\va\med\imaging\awiv\client AwivHelper.java Thu May 31 21:29:41 2018 UTC

7.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 5 732
Changed 4 8
Inserted 0 0
Removed 0 0

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

7.4 Active regular expressions

No regular expressions were active.

7.5 Comparison detail

  1   /**
  2    * 
  3     Package:  MAG - Vis tA Imaging
  4     WARNING:  Per VHA D irective 2 004-038, t his routin e should n ot be modi fied.
  5     Date Cre ated: Jan  19, 2012
  6     Site Nam e:  Washin gton OI Fi eld Office , Silver S pring, MD
  7       Developer:     PI I
  8     Descript ion: 
  9  
  10           ;;  +-------- ---------- ---------- ---------- ---------- ---------- ---------- +
  11           ;;  Property  of the US  Government .
  12           ;;  No permis sion to co py or redi stribute t his softwa re is give n.
  13           ;;  Use of un released v ersions of  this soft ware requi res the us er
  14           ;;   to execu te a writt en test ag reement wi th the Vis tA Imaging
  15           ;;   Developm ent Office  of the De partment o f Veterans  Affairs,
  16           ;;   telephon e (301) 73 4-0100.
  17           ;;
  18           ;;  The Food  and Drug A dministrat ion classi fies this  software a s
  19           ;;  a Class I I medical  device.  A s such, it  may not b e changed
  20           ;;  in any wa y.  Modifi cations to  this soft ware may r esult in a n
  21           ;;  adulterat ed medical  device un der 21CFR8 20, the us e of which
  22           ;;  is consid ered to be  a violati on of US F ederal Sta tutes.
  23           ;;  +-------- ---------- ---------- ---------- ---------- ---------- ---------- +
  24  
  25    */
  26   package go v.va.med.i maging.awi v.client;
  27  
  28   import jav a.util.Dat e;
  29   import jav a.util.log ging.Level ;
  30   import jav a.util.log ging.Logge r;
  31  
  32   import com .google.gw t.user.cli ent.Cookie s;
  33   import com .google.gw t.user.cli ent.Window ;
  34   import com .google.gw t.user.cli ent.Window .Location;
  35   import com .google.gw t.user.cli ent.rpc.As yncCallbac k;
  36   import com .smartgwt. client.uti l.SC;
  37  
  38   import gov .va.med.im aging.awiv .business. AwivServer Informatio n;
  39   import gov .va.med.im aging.awiv .business. AwivTimer;
  40   import gov .va.med.im aging.awiv .business. AwivUserIn formation;
  41   import gov .va.med.im aging.awiv .client.ev ents.AwivT imerRunEve nt;
  42   import gov .va.med.im aging.awiv .client.ui .widgets.A wivConstan ts;
  43   import gov .va.med.im aging.awiv .client.ui .widgets.A wivExcepti onHandler;
  44   import gov .va.med.im aging.awiv .client.ui .widgets.A wivViewerM anager;
  45   import gov .va.med.im aging.awiv .client.ui .widgets.J a DN S     iptMethods ;
  46   import gov .va.med.im aging.awiv .client.ui .widgets.d ialogs.Ses sionExpire dDialog;
  47   import gov .va.med.im aging.awiv .client.ui .widgets.d ialogs.Tim eoutWarnin gDialog;
  48  
  49   /**
  50    * @author   PI I
  51    *
  52    */
  53   public cla ss AwivHel per
  54   {
  55           pr ivate stat ic Logger  logger = L ogger.getL ogger("");
  56           pr ivate stat ic AwivSer verInforma tion awivS erverInfor mation = n ull;
  57           
  58           /* *
  59            *  This is t he proper  way to rel oad the AW IV and for ce the use r to authe nticate ag ain. 
  60            *  This ensu res the AW IV is clos ed before  refreshing  the page
  61            * /
  62           pu blic stati c void rel oadAwiv()
  63           {
  64                    Awiv ViewerMana ger.closeA wivViewer( );
  65                     Ja DN S     iptMethods .reloadPag e();
  66           }
  67           
  68           // private st atic Timer  sessionTi mer = null ;
  69           pr ivate stat ic AwivTim er session Timer = nu ll;
  70           
  71           pr ivate stat ic void st artSession Timer()
  72           {
  73                    /*
  74                    sess ionTimer =  new Timer ()
  75                    {
  76                             @Overr ide
  77                             public  void run( )
  78                             {
  79                                      TimeoutW arningDial og.show();                               
  80                             }
  81                    };*/
  82                    sess ionTimer =  new AwivT imer(new A wivTimerRu nEvent()
  83                    {
  84                             
  85                             @Overr ide
  86                             public  void OnTi merRun()
  87                             {
  88                                      TimeoutW arningDial og.show();
  89                             }
  90                    });
  91                    
  92                    int  timeout =  1000 * 60  * getSessi onTimeout( );
  93                    logg er.info("R estarting  session ti mer to '"  + timeout  + "' ms");
  94                    sess ionTimer.s cheduleRep eating(tim eout); 
  95           }
  96           
  97           pu blic stati c void res etSessionT imer()
  98           {
  99                    stop SessionTim er();
  100                    star tSessionTi mer();
  101           }
  102           
  103           pu blic stati c void sto pSessionTi mer()
  104           {
  105                    if(s essionTime r != null)
  106                    {
  107                             sessio nTimer.can cel();
  108                    }
  109                    sess ionTimer =  null;
  110           }
  111           
  112           /* *
  113            *  This term inates the  session o n the serv er forcing  a re-auth entication
  114            * /
  115           pu blic stati c void log out()
  116           {                 
  117                    Awiv ViewerMana ger.closeA wivViewer( );
  118                    // c all servic e to inval idate the  session
  119                    clea rUserCooki e();               
  120                    User SessionSer viceAsync  userServic e = UserSe ssionServi ce.Util.ge tInstance( );
  121                    user Service.lo gout(new A syncCallba ck<Boolean >()
  122                    {
  123                             @Overr ide
  124                             public  void onFa ilure(Thro wable arg0 )
  125                             {
  126                                      //Window .alert("Er ror callin g logout o n server,  " + arg0.g etMessage( ));
  127                                      // don't  do anythi ng, just f orce a log out
  128                                      stopSess ionTimer() ;
  129                                      reloadAw iv();
  130                             }
  131  
  132                             @Overr ide
  133                             public  void onSu ccess(Bool ean result )
  134                             {
  135                                      // logou t was succ essful
  136                                      stopSess ionTimer() ;
  137                                      reloadAw iv();
  138                             }                                           
  139                    });
  140           }
  141           
  142           pu blic stati c void cle arUserCook ie()
  143           {
  144                    //Co okies.remo veCookie(A wivConstan ts.userCoo kieName);
  145                    // s et the coo kie with n o value an d expired  in 1970
  146                    Cook ies.setCoo kie(AwivCo nstants.us erCookieNa me, "", ne w Date(0),  null, "/A wiv", fals e);
  147           }
  148           
  149           /* *
  150            *  This meth od pings t he server  to keep th e session  alive
  151            *  @deprecat ed This me thod is no  longer ne eded becau se session s are no l onger used
  152            * /
  153           pu blic stati c void pin gServer()
  154           {
  155                    User SessionSer viceAsync  userServic e = UserSe ssionServi ce.Util.ge tInstance( );
  156                    Awiv Helper.res etSessionT imer();
  157                    user Service.is SessionSti llActive(n ew AsyncCa llback<Boo lean>()
  158                    {
  159                             @Overr ide
  160                             public  void onFa ilure(Thro wable arg0 )
  161                             {
  162                                      if(!Awiv ExceptionH andler.han dleService Exception( arg0))
  163                                      {
  164                                               logger.sev ere("Error  determini ng if sess ion is sti ll active,  " + arg0. getMessage ());
  165                                               //Window.a lert("Erro r determin ing if ses sion is st ill active , " + arg0 .getMessag e());
  166                                               stopSessio nTimer();
  167                                               AwivViewer Manager.cl oseAwivVie wer();
  168                                               SessionExp iredDialog .DisplaySe ssionExpir edDialog() ;
  169                                      }
  170                             }
  171  
  172                             @Overr ide
  173                             public  void onSu ccess(Bool ean result )
  174                             {
  175                                      if(resul t)
  176                                      {
  177                                               // all is  fine, do n othing
  178                                      }
  179                                      else
  180                                      {
  181                                               stopSessio nTimer();
  182                                               AwivViewer Manager.cl oseAwivVie wer();
  183                                               SessionExp iredDialog .DisplaySe ssionExpir edDialog() ;
  184                                      }                                                   
  185                             }                                           
  186                    });
  187           }
  188           
  189           pu blic stati c boolean  isDebugMod e()
  190           {
  191                    Stri ng debugPa rameter =  Window.Loc ation.getP arameter(" debug");
  192                    bool ean debugE nabled = ( debugParam eter != nu ll && "tru e".equalsI gnoreCase( debugParam eter));
  193                    retu rn debugEn abled;
  194           }
  195           
  196           /* *
  197            *  Determine  if the us er has the  necessary  keys/perm ission to  view patie nt images.  
  198            *  @param aw ivUserInfo rmation
  199            *  @return
  200            * /
  201           pu blic stati c boolean  canUserVie wPatients( AwivUserIn formation  awivUserIn formation)
  202           {
  203                    if(a wivUserInf ormation ! = null)
  204                    {
  205                             if(awi vUserInfor mation.isC laimsAuthe ntication( ))
  206                             {
  207                                      logger.i nfo("User  is authent icated to  the CLAIMS  system, a llowed to  view patie nt without  security  keys");
  208                                      return t rue;
  209                             }
  210                             
  211                             // if  the user h as the MAG  SYSTEM ke y they can  view imag es regardl ess of the  photo ID  key
  212                             if(awi vUserInfor mation.isI magingSyst emUser())
  213                                      return t rue;
  214                             
  215                             // if  the user h as this ke y then the y can only  view the  photo ID i mage
  216                             if(awi vUserInfor mation.use rHasKey(Aw ivConstant s.magPatPh otoOnlySec urityKey))
  217                             {                                  
  218                                      // user  has the ke y
  219                                      logger.i nfo("User  has the '"  + AwivCon stants.mag PatPhotoOn lySecurity Key + "',  cannot vie w patient  images");
  220                                      return f alse;
  221                             }
  222                             return  true;
  223                    }
  224                    logg er.log(Lev el.INFO, " Null user  informatio n when det ermining i f user can  view pati ent - not  sure how t hat happen ed.");
  225                    retu rn false;
  226           }
  227  
  228           /* *
  229            *  Get the t imeout for  the sessi on
  230            *  @return
  231            * /
  232           pu blic stati c int getS essionTime out()
  233           {
  234                    if(a wivServerI nformation  == null)
  235                             return  AwivConst ants.idleT imeout;
  236                    retu rn awivSer verInforma tion.getId leTimeoutM inutes();
  237           }
  238           
  239           pu blic stati c void set AwivServer Informatio n(AwivServ erInformat ion awivSe rverInform ation)
  240           {
  241                    Awiv Helper.awi vServerInf ormation =  awivServe rInformati on;
  242                    logg er.info("I dle timeou t set to ' " + AwivHe lper.awivS erverInfor mation.get IdleTimeou tMinutes()  + "' minu tes.");
  243           }
  244           
  245           /* *
  246            *  Determine  if the us er is usin g an IE br owser
  247            *  @return
  248            * /
  249           pu blic stati c boolean  isBrowserI E()
  250           {
  251                    Stri ng userAge nt = JavaS criptMetho ds.getUser Agent();
  252                    if(u serAgent.c ontains(Aw ivConstant s.ieUserAg ent))
  253                    {
  254                             return  true;
  255                    }
  256                    retu rn false;
  257           }
  258           
  259           /* *
  260            *  Warning m essage to  show to th e user whe n they try  to view a  study wit h an unsup ported bro wser 
  261            * /
  262           pu blic stati c void dis playUnsupp ortedBrows erWarning( )
  263           {
  264                    Stri ng userAge nt = JavaS criptMetho ds.getUser Agent();
  265                    SC.s ay("Unsupp orted Brow ser",
  266                                      "Your br owser <i>"  + userAge nt + "</i>  is not su pported fo r viewing  images, on ly Microso ft Interne t Explorer  is suppor ted");
  267           }
  268           
  269           /* *
  270            *  Warning m essage to  display to  users who  are not a llowed to  view a spe cific stud y
  271            * /
  272           pu blic stati c void dis playUnallo wedToViewS tudyWarnin g()
  273           {
  274                    SC.s ay("Cannot  View Imag es",
  275                             "You a re not aut horized to  view thes e images.< br>Clinica l images r equire the  <i>MAGDIS P CLIN</i>  key.<br>" );
  276           }
  277           
  278           /* *
  279            *  Get the U RL of the  AWIV using  SSL (to u se with re direction)
  280            *  @return
  281            * /
  282           pu blic stati c String g etSslUrl()
  283           {
  284                    Stri ngBuilder  url = new  StringBuil der();
  285                    url. append(Awi vConstants .sslHttpPr otocol);
  286                    url. append("// ");
  287                    url. append(Loc ation.getH ostName()) ;
  288                    url. append(":" );
  289                    url. append(get SslPort()) ;
  290                    url. append(Loc ation.getP ath());          
  291                    retu rn url.toS tring();
  292           }
  293           
  294           pr ivate stat ic String  getSslPort ()
  295           {
  296                    Stri ng sslPort  = Cookies .getCookie (AwivConst ants.sslPo rtCookieNa me);
  297                    if(s slPort ==  null || ss lPort.leng th() <= 0)
  298                             sslPor t = AwivCo nstants.de faultSslPo rt;
  299                    retu rn sslPort ;
  300           }
  301           
  302           pu blic stati c String g etInsuffic ientPermis sionsWarni ngMessage( )
  303           {
  304                    Stri ngBuilder  sb = new S tringBuild er();
  305                    sb.a ppend("You  do not ha ve suffici ent permis sions to a ccess pati ent data t hrough the  AWIV<br>" );
  306                    sb.a ppend("You  must meet  one of th e followin g:");
  307                    sb.a ppend("<ul >");
  308                    sb.a ppend("<li >Have the  MAGDISP CL IN securit y key</li> ");
  309                    sb.a ppend("<li >Have the  MAGDISP AD MIN securi ty key</li >");
  310                    sb.a ppend("<li >Have the  MAG PAT PH OTO ONLY s ecurity ke y</li>");
  311                    sb.a ppend("<li >Be a CLAI MS user</l i>");
  312                    sb.a ppend("</u l>");     
  313                    
  314                    retu rn sb.toSt ring();
  315           }
  316           
  317           pu blic stati c String g etUserView ableImageC lass(AwivU serInforma tion awivU serInforma tion)
  318           {
  319                    Stri ng result  = "";
  320                    if(a wivUserInf ormation.i sClaimsAut henticatio n())
  321                             return  result; / / everythi ng
  322                    /*
  323                    if(a wivUserInf ormation.u serHasKey( AwivConsta nts.magSys temSecurit yKey))
  324                             return  result; / / everythi ng
  325                             */
  326                    // J MW 3/6/201 2 - the MA G SYSTEM k ey does NO T allow a  user to vi ew everyth ing (based  on 
  327                    // h ow Clinica l Display  works).
  328                    if(a wivUserInf ormation.u serHasKey( AwivConsta nts.magDis pAdminSecu rityKey) &
  329                                      awivUser Informatio n.userHasK ey(AwivCon stants.mag DispClinSe curityKey) )
  330                    {
  331                             // use r has both  keys, sho w them eve rything
  332                             return  result;
  333                    }
  334                                      
  335                    if(a wivUserInf ormation.u serHasKey( AwivConsta nts.magDis pAdminSecu rityKey))
  336                    {
  337                             result  = "ADMIN, ADMIN/CLIN ,CLIN/ADMI N";
  338                    }
  339                    else  if(awivUs erInformat ion.userHa sKey(AwivC onstants.m agDispClin SecurityKe y))
  340                    {
  341                             result  = "CLIN,C LIN/ADMIN, ADMIN/CLIN ";
  342                    }
  343                    retu rn result;
  344           }
  345           
  346           /* *
  347            *  Display t he error m essage in  a warning  dialog
  348            *  @param er rorDescrip tion Descr iption of  the proble m
  349            *  @param t  The except ion that c aused the  error
  350            * /
  351           pu blic stati c void dis playErrorM essage(Str ing errorD escription , Throwabl e t)
  352           {
  353                    Stri ngBuilder  error = ne w StringBu ilder();
  354                    erro r.append(e rrorDescri ption);
  355                    erro r.append(" , please t ry again.  If the err or persist s contact  your admin istrator<h r><b>Error  Details:< /b><br> "  + t.getMes sage());
  356                    SC.w arn(error. toString() );
  357           }
  358           
  359           /* *
  360            *  Determine  if the us er has the  necessary  keys to o verride a  'Needs Rev iew' study  and view  it
  361            *  
  362            *  @param aw ivUserInfo rmation
  363            *  @return
  364            * /
  365           pu blic stati c boolean  canUserVie wNeedsRevi ewStudies( AwivUserIn formation  awivUserIn formation)
  366           {
  367                    retu rn (awivUs erInformat ion.userHa sKey(AwivC onstants.m agSystemSe curityKey)  || 
  368                                      awivUser Informatio n.userHasK ey(AwivCon stants.mag EditSecuri tyKey));
  369           }
  370   }