339. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 12/5/2017 12:06:48 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.

339.1 Files compared

# Location File Last Modified
1 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\PathologyFederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource\pathology\v6 FederationPathologyDataSourceServiceV6.java Mon Dec 4 21:35:22 2017 UTC
2 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\PathologyFederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource\pathology\v6 FederationPathologyDataSourceServiceV6.java Mon Dec 4 22:05:01 2017 UTC

339.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 3 1120
Changed 2 4
Inserted 0 0
Removed 0 0

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

339.4 Active regular expressions

No regular expressions were active.

339.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: Jun  20, 2012
  6     Site Nam e:  Washin gton OI Fi eld Office , Silver S pring, MD
  7       Developer:          
WERFEJ
  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.fed erationdat asource.pa thology.v6 ;
  27  
  28   import jav a.util.Arr ayList;
  29   import jav a.util.Dat e;
  30   import jav a.util.Lis t;
  31  
  32   import org .apache.lo gging.log4 j.LogManag er;
  33   import org .apache.lo gging.log4 j.Logger;
  34  
  35   import gov .va.med.Pa tientIdent ifier;
  36   import gov .va.med.Ro utingToken ;
  37   import gov .va.med.im aging.arti factsource .ResolvedA rtifactSou rce;
  38   import gov .va.med.im aging.core .interface s.exceptio ns.Connect ionExcepti on;
  39   import gov .va.med.im aging.core .interface s.exceptio ns.MethodE xception;
  40   import gov .va.med.im aging.core .interface s.exceptio ns.Securit yException ;
  41   import gov .va.med.im aging.data source.exc eptions.Un supportedP rotocolExc eption;
  42   import gov .va.med.im aging.exch ange.busin ess.Resolv edSite;
  43   import gov .va.med.im aging.exch ange.busin ess.Site;
  44   import gov .va.med.im aging.fede ration.pro xy.Federat ionProxyUt ilities;
  45   import gov .va.med.im aging.fede rationdata source.Abs tractFeder ationDataS ourceServi ce;
  46   import gov .va.med.im aging.fede rationdata source.Fed erationPat ientArtifa ctDataSour ceServiceV 4;
  47   import gov .va.med.im aging.fede rationdata source.pat hology.Pat hologyFede rationProx yServiceTy pe;
  48   import gov .va.med.im aging.fede rationdata source.pat hology.pro xy.v6.Fede rationRest PathologyP roxyV6;
  49   import gov .va.med.im aging.fede rationdata source.pat hology.pro xy.v6.Fede rationRest PathologyP roxyV6Impl ;
  50   import gov .va.med.im aging.path ology.Abst ractPathol ogySite;
  51   import gov .va.med.im aging.path ology.Path ologyAcqui sitionSite ;
  52   import gov .va.med.im aging.path ology.Path ologyCase;
  53   import gov .va.med.im aging.path ology.Path ologyCaseC onsultatio nURN;
  54   import gov .va.med.im aging.path ology.Path ologyCaseR eportField ;
  55   import gov .va.med.im aging.path ology.Path ologyCaseS pecimen;
  56   import gov .va.med.im aging.path ology.Path ologyCaseS upplementa lReport;
  57   import gov .va.med.im aging.path ology.Path ologyCaseT emplate;
  58   import gov .va.med.im aging.path ology.Path ologyCaseU RN;
  59   import gov .va.med.im aging.path ology.Path ologyCaseU pdateAttri buteResult ;
  60   import gov .va.med.im aging.path ology.Path ologyCptCo de;
  61   import gov .va.med.im aging.path ology.Path ologyCptCo deResult;
  62   import gov .va.med.im aging.path ology.Path ologyField URN;
  63   import gov .va.med.im aging.path ology.Path ologyField Value;
  64   import gov .va.med.im aging.path ology.Path ologyReadi ngSite;
  65   import gov .va.med.im aging.path ology.Path ologySaveC aseReportR esult;
  66   import gov .va.med.im aging.path ology.Path ologySite;
  67   import gov .va.med.im aging.path ology.Path ologySnome dCode;
  68   import gov .va.med.im aging.path ology.data source.Pat hologyData SourceSpi;
  69   import gov .va.med.im aging.path ology.enum s.Patholog yCaseAssis tance;
  70   import gov .va.med.im aging.path ology.enum s.Patholog yCaseConsu ltationUpd ateStatus;
  71   import gov .va.med.im aging.path ology.enum s.Patholog yCaseReser veResult;
  72   import gov .va.med.im aging.path ology.enum s.Patholog yElectroni cSignature Need;
  73   import gov .va.med.im aging.path ology.enum s.Patholog yField;
  74   import gov .va.med.im aging.prox y.services .ProxyServ iceType;
  75   import gov .va.med.im aging.prox y.services .ProxyServ ices;
  76   import gov .va.med.im aging.url. vftp.VftpC onnection;
  77  
  78   /**
  79    * @author         
WERFEJ
  80    *
  81    */
  82   public cla ss Federat ionPatholo gyDataSour ceServiceV 6
  83   extends Ab stractFede rationData SourceServ ice
  84   implements  Pathology DataSource Spi
  85   {
  86           
  87           @S uppressWar nings("unu sed")
  88           pr ivate fina l VftpConn ection fed erationCon nection;
  89           pr ivate Prox yServices  federation ProxyServi ces = null ;
  90           
  91           pr ivate fina l static S tring DATA SOURCE_VER SION = "6" ;
  92           pr ivate Fede rationRest PathologyP roxyV6Impl  proxy = n ull;
  93           pu blic final  static St ring SUPPO RTED_PROTO COL = "vft p";
  94           pr ivate fina l static S tring FEDE RATION_PRO XY_SERVICE _NAME = "F ederation" ;
  95           
  96           pr ivate fina l static L ogger logg er = LogMa nager.getL ogger(Fede rationPati entArtifac tDataSourc eServiceV4 .class);
  97  
  98           pu blic Feder ationPatho logyDataSo urceServic eV6(Resolv edArtifact Source res olvedArtif actSource,  String pr otocol)
  99           th rows Unsup portedOper ationExcep tion
  100           {
  101                    supe r(resolved ArtifactSo urce, prot ocol);
  102                    fede rationConn ection = n ew VftpCon nection(ge tMetadataU rl());
  103  
  104                    if(!  (resolved ArtifactSo urce insta nceof Reso lvedSite)  )
  105                             throw  new Unsupp ortedOpera tionExcept ion("The a rtifact so urce must  be an inst ance of Re solvedSite  and it is  a '" + re solvedArti factSource .getClass( ).getSimpl eName() +  "'.");
  106           }
  107           
  108           pu blic stati c Federati onPatholog yDataSourc eServiceV6  create(Re solvedArti factSource  resolvedA rtifactSou rce, Strin g protocol )
  109           th rows Conne ctionExcep tion, Unsu pportedPro tocolExcep tion
  110           {
  111                    retu rn new Fed erationPat hologyData SourceServ iceV6(reso lvedArtifa ctSource,  protocol);
  112           }
  113           
  114           pr otected Lo gger getLo gger()
  115           {
  116                    retu rn logger;
  117           }
  118           
  119           /* *
  120            *  The artif act source  must be c hecked in  the constr uctor to a ssure that  it is an  instance
  121            *  of Resolv edSite.
  122            *  
  123            *  @return
  124            * /
  125           pr otected Re solvedSite  getResolv edSite()
  126           {
  127                    retu rn (Resolv edSite)get ResolvedAr tifactSour ce();
  128           }
  129           
  130           pr otected Si te getSite ()
  131           {
  132                    retu rn getReso lvedSite() .getSite() ;
  133           }
  134           
  135           pr otected Pr oxyService s getFeder ationProxy Services()
  136           {
  137                    if(f ederationP roxyServic es == null )
  138                    {
  139                             federa tionProxyS ervices = 
  140                                      Federati onProxyUti lities.get Federation ProxyServi ces(getSit e(), 
  141                                                       ge tFederatio nProxyName (), getDat aSourceVer sion());
  142                    }
  143                    retu rn federat ionProxySe rvices;
  144           }
  145           
  146           pr otected St ring getFe derationPr oxyName()
  147           {
  148                    retu rn FEDERAT ION_PROXY_ SERVICE_NA ME;
  149           }
  150           
  151           pu blic Strin g getDataS ourceVersi on() 
  152           {
  153                    retu rn DATASOU RCE_VERSIO N;
  154           }
  155           
  156           pr ivate Fede rationRest PathologyP roxyV6 get Proxy()
  157           th rows Conne ctionExcep tion
  158           {
  159                    if(p roxy == nu ll)
  160                    {
  161                             ProxyS ervices pr oxyService s = getFed erationPro xyServices ();
  162                             if(pro xyServices  == null)
  163                                      throw ne w Connecti onExceptio n("Did not  receive a ny applica ble servic es from ID S service  for site [ " + getSit e().getSit eNumber()  + "]");
  164                             proxy  = new Fede rationRest PathologyP roxyV6Impl (proxyServ ices,
  165                                               getFederat ionConfigu ration());
  166                    }
  167                    retu rn proxy;
  168           }
  169           
  170           @O verride
  171           pu blic boole an isVersi onCompatib le() 
  172           th rows Secur ityExcepti on
  173           {
  174                    if(g etFederati onProxySer vices() ==  null)
  175                             return  false;            
  176                    try
  177                    {
  178                             getLog ger().debu g("Found F ederationP roxyServic es, lookin g for '" +  getProxyS erviceType () + "' se rvice type  at site [ " + getSit e().getSit eNumber()  + "].");
  179                             getFed erationPro xyServices ().getProx yService(g etProxySer viceType() );
  180                             getLog ger().debu g("Found s ervice typ e '" + get ProxyServi ceType() +  "' at sit e [" + get Site().get SiteNumber () + "], r eturning t rue for ve rsion comp atible.");
  181                             return  true;
  182                    }
  183                    catc h(gov.va.m ed.imaging .proxy.exc eptions.Pr oxyService NotFoundEx ception ps nfX)
  184                    {
  185                             getLog ger().warn ("Cannot f ind proxy  service ty pe '" + ge tProxyServ iceType(). toString()  + "' at s ite [" + g etSite().g etSiteNumb er() + "]" );
  186                             return  false;
  187                    }
  188           }
  189                    
  190           pr ivate Prox yServiceTy pe getProx yServiceTy pe()
  191           {
  192                    retu rn new Pat hologyFede rationProx yServiceTy pe();
  193                    //re turn Proxy ServiceTyp e.patholog y;
  194           }
  195  
  196           /*  (non-Java doc)
  197            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#g etCases(go v.va.med.R outingToke n, boolean , int)
  198            * /
  199           @O verride
  200           pu blic List< PathologyC ase> getCa ses(Routin gToken glo balRouting Token,
  201                             boolea n released , int days , String r equestingS iteId) 
  202           th rows Metho dException , Connecti onExceptio n
  203           {
  204                    if(r equestingS iteId == n ull || req uestingSit eId.length () <= 0)
  205                             return  getProxy( ).getCases (globalRou tingToken,  released,  days);
  206                    else
  207                             return  getProxy( ).getCases (globalRou tingToken,  released,  days, req uestingSit eId);
  208           }
  209  
  210           /*  (non-Java doc)
  211            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#g etCaseSpec imens(gov. va.med.ima ging.patho logy.Patho logyCaseUR N)
  212            * /
  213           @O verride
  214           pu blic List< PathologyC aseSpecime n> getCase Specimens(
  215                             Pathol ogyCaseURN  pathology CaseUrn) 
  216           th rows Metho dException , Connecti onExceptio n
  217           {
  218                    retu rn getProx y().getCas eSpecimens (pathology CaseUrn);
  219           }
  220  
  221           /*  (non-Java doc)
  222            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#g etPatientC ases(gov.v a.med.Rout ingToken,  java.lang. String)
  223            * /
  224           @O verride
  225           pu blic List< PathologyC ase> getPa tientCases (RoutingTo ken global RoutingTok en,
  226                             Patien tIdentifie r patientI dentifier,  String re questingSi teId) 
  227           th rows Metho dException , Connecti onExceptio n
  228           {                 
  229                    if(p atientIden tifier.get PatientIde ntifierTyp e().isLoca l())
  230                             throw  new Method Exception( "Cannot us e local pa tient iden tifier to  retrieve r emote pati ent inform ation");
  231                    if(r equestingS iteId == n ull)
  232                             return  getProxy( ).getPatie ntCases(gl obalRoutin gToken, pa tientIdent ifier);
  233                    else
  234                             return  getProxy( ).getPatie ntCases(gl obalRoutin gToken, pa tientIdent ifier, req uestingSit eId);
  235                    //re turn getPr oxy().getP atientCase s(globalRo utingToken , patientI cn);
  236           }
  237  
  238           /*  (non-Java doc)
  239            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#g etSites(go v.va.med.R outingToke n, boolean )
  240            * /
  241           @O verride
  242           pu blic List< AbstractPa thologySit e> getSite s(
  243                             Routin gToken glo balRouting Token, boo lean readi ng)
  244           th rows Metho dException , Connecti onExceptio n
  245           {
  246                    List <AbstractP athologySi te> result  = new Arr ayList<Abs tractPatho logySite>( );
  247                    if(r eading)
  248                    {
  249                             List<P athologyRe adingSite>  readingSi tes = 
  250                                      getProxy ().getRead ingSites(g lobalRouti ngToken);
  251                             result .addAll(re adingSites );
  252                    }
  253                    else
  254                    {
  255                             List<P athologyAc quisitionS ite> acqui sitionSite s = 
  256                                      getProxy ().getAcqu isitionSit es(globalR outingToke n);
  257                             result .addAll(ac quisitionS ites);
  258                    }
  259                    retu rn result;
  260           }
  261  
  262           /*  (non-Java doc)
  263            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#l ockCase(go v.va.med.i maging.pat hology.Pat hologyCase URN, boole an)
  264            * /
  265           @O verride
  266           pu blic Patho logyCaseUp dateAttrib uteResult  lockCase(
  267                             Pathol ogyCaseURN  pathology CaseUrn, b oolean loc k)
  268           th rows Metho dException , Connecti onExceptio n
  269           {
  270                    retu rn getProx y().lockCa se(patholo gyCaseUrn,  lock);
  271           }
  272  
  273           /*  (non-Java doc)
  274            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#a ddCaseAssi stance(gov .va.med.im aging.path ology.Path ologyCaseU RN, gov.va .med.imagi ng.patholo gy.enums.P athologyCa seAssistan ce, java.l ang.String )
  275            * /
  276           @O verride
  277           pu blic Patho logyCaseUp dateAttrib uteResult  addCaseAss istance(
  278                             Pathol ogyCaseURN  pathology CaseUrn,
  279                             Pathol ogyCaseAss istance as sistanceTy pe, String  stationNu mber)
  280           th rows Metho dException , Connecti onExceptio n
  281           {
  282                    retu rn getProx y().addCas eAssistanc e(patholog yCaseUrn,  assistance Type, stat ionNumber) ;
  283           }
  284  
  285           /*  (non-Java doc)
  286            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#g etSiteTemp late(java. util.List)
  287            * /
  288           @O verride
  289           pu blic List< String> ge tSiteTempl ate(Routin gToken glo balRouting Token, Lis t<String>  apSections )
  290           th rows Metho dException , Connecti onExceptio n
  291           {
  292                    retu rn getProx y().getSit eTemplate( globalRout ingToken,  apSections );
  293           }
  294  
  295           /*  (non-Java doc)
  296            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#s aveSiteTem plate(java .lang.Stri ng, java.l ang.String )
  297            * /
  298           @O verride
  299           pu blic void  saveSiteTe mplate(Rou tingToken  globalRout ingToken,  String xml Template,  String apS ection)
  300           th rows Metho dException , Connecti onExceptio n
  301           {
  302                    getP roxy().sav eSiteTempl ate(global RoutingTok en, xmlTem plate, apS ection);
  303           }
  304  
  305           /*  (non-Java doc)
  306            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#u pdateReadi ngSiteList (java.util .List)
  307            * /
  308           @O verride
  309           pu blic void  updateRead ingSite(Ro utingToken  globalRou tingToken,  Pathology ReadingSit e readingS ite, boole an delete)
  310           th rows Metho dException , Connecti onExceptio n
  311           {
  312                    getP roxy().upd ateReading Site(globa lRoutingTo ken, readi ngSite, de lete);
  313           }
  314  
  315           /*  (non-Java doc)
  316            *  @see gov. va.med.ima ging.patho logy.datas ource.Path ologyDataS ourceSpi#u pdateAcqui sitionSite List(java. util.List)
  317            * /
  318           @O verride
  319           pu blic void  updateAcqu isitionSit e(RoutingT oken globa lRoutingTo ken, 
  320                             Pathol ogyAcquisi tionSite a cquisition Site, bool ean delete )
  321           th rows Metho dException , Connecti onExceptio n
  322           {
  323                    getP roxy().upd ateAcquisi tionSite(g lobalRouti ngToken, a cquisition Site, dele te);
  324           }
  325  
  326           @O verride
  327           pu blic Strin g getPatho logyCaseRe port(Patho logyCaseUR N patholog yCaseUrn)
  328           th rows Metho dException , Connecti onExceptio n
  329           {
  330                    retu rn getProx y().getPat hologyCase Report(pat hologyCase Urn);
  331           }
  332  
  333           @O verride
  334           pu blic List< PathologyC aseSupplem entalRepor t> getCase Supplement alReports(
  335                             Pathol ogyCaseURN  pathology CaseUrn) 
  336           th rows Metho dException , Connecti onExceptio n
  337           {
  338                    retu rn getProx y().getCas eSupplemen talReports (pathology CaseUrn);
  339           }
  340  
  341           @O verride
  342           pu blic Patho logyCaseTe mplate get CaseTempla teData(
  343                             Pathol ogyCaseURN  pathology CaseUrn, L ist<String > fields)
  344           th rows Metho dException , Connecti onExceptio n
  345           {
  346                    retu rn getProx y().getCas eTemplateD ata(pathol ogyCaseUrn , fields);
  347           }
  348  
  349           @O verride
  350           pu blic Patho logyCaseRe serveResul t reserveC ase(
  351                             Pathol ogyCaseURN  pathology CaseUrn, b oolean loc k)
  352           th rows Metho dException , Connecti onExceptio n
  353           {
  354                    retu rn getProx y().reserv eCase(path ologyCaseU rn, lock);
  355           }
  356  
  357           @O verride
  358           pu blic Patho logyElectr onicSignat ureNeed ch eckElectro nicSignatu reNeeded(
  359                             Routin gToken rou tingToken,  String ap Section)
  360           th rows Metho dException , Connecti onExceptio n
  361           {
  362                    retu rn getProx y().checkE lectronicS ignatureNe eded(routi ngToken, a pSection);
  363           }
  364  
  365           @O verride
  366           pu blic List< PathologyF ieldValue>  getPathol ogyFields(
  367                             Routin gToken glo balRouting Token, Pat hologyFiel d patholog yField,
  368                             String  searchPar ameter) 
  369           th rows Metho dException , Connecti onExceptio n
  370           {
  371                    retu rn getProx y().getPat hologyFiel ds(globalR outingToke n, patholo gyField, s earchParam eter);
  372           }
  373  
  374           @O verride
  375           pu blic void  updateCons ultationSt atus(
  376                             Pathol ogyCaseCon sultationU RN patholo gyCaseCons ultationUr n,
  377                             Pathol ogyCaseCon sultationU pdateStatu s consulta tionUpdate Status)
  378           th rows Metho dException , Connecti onExceptio n
  379           {
  380                    getP roxy().upd ateConsult ationStatu s(patholog yCaseConsu ltationUrn , consulta tionUpdate Status);             
  381           }
  382  
  383           @O verride
  384           pu blic Patho logySaveCa seReportRe sult saveC aseReportF ields(Path ologyCaseU RN patholo gyCaseUrn,
  385                             List<P athologyCa seReportFi eld> field s) 
  386           th rows Metho dException , Connecti onExceptio n
  387           {
  388                    retu rn getProx y().saveCa seReportFi elds(patho logyCaseUr n, fields) ;                
  389           }
  390  
  391           @O verride
  392           pu blic void  saveCaseSu pplemental Report(Pat hologyCase URN pathol ogyCaseUrn ,
  393                             String  reportCon tents, Dat e date, bo olean veri fied)
  394           th rows Metho dException , Connecti onExceptio n
  395           {
  396                    getP roxy().sav eCaseSuppl ementalRep ort(pathol ogyCaseUrn , reportCo ntents, da te, verifi ed);                 
  397           }
  398  
  399           @O verride
  400           pu blic List< PathologyS ite> getSi tes(Routin gToken glo balRouting Token)
  401           th rows Metho dException , Connecti onExceptio n
  402           {
  403                    retu rn getProx y().getSit es(globalR outingToke n);
  404           }
  405  
  406           @O verride
  407           pu blic Integ er getLock ExpiresMin utes(Routi ngToken gl obalRoutin gToken)
  408           th rows Metho dException , Connecti onExceptio n
  409           {
  410                    retu rn getProx y().getLoc kExpiresMi nutes(glob alRoutingT oken);
  411           }
  412  
  413           @O verride
  414           pu blic void  setLockExp iresMinute s(RoutingT oken globa lRoutingTo ken, int m inutes)
  415           th rows Metho dException , Connecti onExceptio n
  416           {
  417                    getP roxy().set LockExpire sMinutes(g lobalRouti ngToken, m inutes);           
  418           }
  419  
  420           @O verride
  421           pu blic Strin g getPrefe rences(Rou tingToken  globalRout ingToken,
  422                             String  userId, S tring labe l) 
  423           th rows Metho dException , Connecti onExceptio n
  424           {
  425                    if(u serId == n ull || use rId.length () <= 0)
  426                             return  getProxy( ).getPrefe rences(glo balRouting Token, lab el);
  427                    else
  428                             return  getProxy( ).getUserP references (globalRou tingToken,  userId, l abel);
  429           }
  430  
  431           @O verride
  432           pu blic void  savePrefer ences(Rout ingToken g lobalRouti ngToken, S tring user Id,
  433                             String  label, St ring xml) 
  434           th rows Metho dException ,
  435                             Connec tionExcept ion
  436           {
  437                    if(u serId == n ull || use rId.length () <= 0)
  438                             getPro xy().saveP references (globalRou tingToken,  label, xm l);
  439                    else
  440                             getPro xy().saveU serPrefere nces(globa lRoutingTo ken, userI d, label,  xml);
  441           }
  442  
  443           @O verride
  444           pu blic List< PathologyS nomedCode>  getCaseSn omedCodes(
  445                             Pathol ogyCaseURN  pathology CaseUrn) 
  446           th rows Metho dException , Connecti onExceptio n
  447           {
  448                    retu rn getProx y().getCas eSnomedCod es(patholo gyCaseUrn) ;
  449           }
  450  
  451           @O verride
  452           pu blic Strin g saveCase SnomedCode (Pathology CaseURN pa thologyCas eUrn,
  453                             String  tissueId,  Pathology FieldURN p athologyFi eldUrn)
  454           th rows Metho dException , Connecti onExceptio n
  455           {
  456                    retu rn getProx y().saveCa seSnomedCo de(patholo gyCaseUrn,  tissueId,  pathology FieldUrn);
  457           }
  458  
  459           @O verride
  460           pu blic Strin g saveCase EtiologySn omedCodeFo rMorpholog y(
  461                             Pathol ogyCaseURN  pathology CaseUrn, S tring tiss ueId,
  462                             String  morpholog yId, Patho logyFieldU RN etiolog yFieldUrn)
  463           th rows Metho dException , Connecti onExceptio n
  464           {
  465                    retu rn getProx y().saveCa seSnomedCo deForMorph ology(path ologyCaseU rn, tissue Id, morpho logyId, et iologyFiel dUrn);
  466           }
  467  
  468           @O verride
  469           pu blic List< PathologyC ptCodeResu lt> saveCa seCptCodes (Pathology CaseURN pa thologyCas eUrn,
  470                             Pathol ogyFieldUR N location FieldUrn,  List<Strin g> cptCode s)
  471           th rows Metho dException , Connecti onExceptio n
  472           {
  473                    retu rn getProx y().saveCa seCptCodes (pathology CaseUrn, l ocationFie ldUrn, cpt Codes);
  474           }
  475  
  476           @O verride
  477           pu blic List< PathologyC ptCode> ge tCaseCptCo des(
  478                             Pathol ogyCaseURN  pathology CaseUrn) 
  479           th rows Metho dException , Connecti onExceptio n
  480           {
  481                    retu rn getProx y().getCas eCptCodes( pathologyC aseUrn);
  482           }
  483  
  484           @O verride
  485           pu blic List< String> ge tPathology UserKeys(R outingToke n globalRo utingToken )
  486           th rows Metho dException , Connecti onExceptio n
  487           {
  488                    retu rn getProx y().getPat hologyUser Keys(globa lRoutingTo ken);
  489           }
  490  
  491           @O verride
  492           pu blic List< PathologyC ase> getSp ecificCase s(List<Pat hologyCase URN> cases )
  493           th rows Metho dException , Connecti onExceptio n
  494           {
  495                    retu rn getProx y().getSpe cificCases (cases);
  496           }
  497  
  498           @O verride
  499           pu blic Boole an checkPe ndingConsu ltationSta tus(
  500                             Routin gToken glo balRouting Token, Str ing statio nNumber)
  501           th rows Metho dException , Connecti onExceptio n
  502           {
  503                    retu rn getProx y().checkP endingCons ultationSt atus(globa lRoutingTo ken, stati onNumber);
  504           }
  505  
  506           @O verride
  507           pu blic Strin g saveCase Tissue(Pat hologyCase URN pathol ogyCaseUrn ,
  508                             Pathol ogyFieldUR N tissueFi eldUrn) 
  509           th rows Metho dException , Connecti onExceptio n
  510           {
  511                    retu rn getProx y().saveCa seTissues( pathologyC aseUrn, ti ssueFieldU rn);
  512           }
  513  
  514           @O verride
  515           pu blic Patho logyCaseUR N copyCase (RoutingTo ken global RoutingTok en, Pathol ogyCaseURN  pathology CaseUrn) 
  516           th rows Metho dException , Connecti onExceptio n
  517           {
  518                    retu rn getProx y().copyCa se(globalR outingToke n, patholo gyCaseUrn) ;
  519           }
  520  
  521           @O verride
  522           pu blic void  deleteSnom edCode(Pat hologyCase URN pathol ogyCaseUrn ,
  523                             String  tissueId,  String sn omedId, Pa thologyFie ld snomedF ield,
  524                             String  etiologyI d) 
  525           th rows Metho dException , Connecti onExceptio n
  526           {
  527                    if(s nomedId ==  null)
  528                    {                         
  529                             // del ete the ti ssue
  530                             getPro xy().delet eTissue(pa thologyCas eUrn, tiss ueId);
  531                    }
  532                    else  if(etiolo gyId == nu ll)
  533                    {
  534                             // del eting a sn omed code
  535                             if(sno medField = = null)
  536                                      throw ne w MethodEx ception("S nomedField  must be s pecified w hen deleti ng a snome d code");
  537                             // del ete snomed  code
  538                             getPro xy().delet eSnomedCod e(patholog yCaseUrn,  tissueId,  snomedId,  snomedFiel d);
  539                    }
  540                    else
  541                    {
  542                             // del ete etiolo gy
  543                             getPro xy().delet eSnomedEti ologyCode( pathologyC aseUrn, ti ssueId, sn omedId, et iologyId);
  544                    }                 
  545           }
  546  
  547           @O verride
  548           pu blic void  saveCaseNo te(Patholo gyCaseURN  pathologyC aseUrn, St ring note)
  549           th rows Metho dException , Connecti onExceptio n
  550           {
  551                    getP roxy().sav eCaseNote( pathologyC aseUrn, no te);
  552           }
  553  
  554           @O verride
  555           pu blic Strin g getCaseN ote(Pathol ogyCaseURN  pathology CaseUrn)
  556           th rows Metho dException , Connecti onExceptio n
  557           {
  558                    retu rn getProx y().getCas eNote(path ologyCaseU rn);
  559           }
  560  
  561  
  562   }