22541. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/2/2019 9:49:04 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.

22541.1 Files compared

# Location File Last Modified
1 JLV_JLV 2_7_2_0_0.zip\JLV_Src\VistaDataService\src\main\java\gov\va\med\vds\common AppConfig.java Wed Mar 20 21:45:58 2019 UTC
2 JLV_JLV 2_7_2_0_0.zip\JLV_Src\VistaDataService\src\main\java\gov\va\med\vds\common AppConfig.java Tue Apr 2 13:32:12 2019 UTC

22541.2 Comparison summary

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

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

22541.4 Active regular expressions

No regular expressions were active.

22541.5 Comparison detail

  1   /*
  2    * Janus 4 .0 (c)
  3    * Copyrig ht (c) 201 6 Hawaii R esource Gr oup LLC. A ll Rights  Reserved.
  4    * Develop ed for the  Pacific T elehealth  & Technolo gy Hui and  the Pacif ic Joint I nformation  Technolog y Center
  5    * Contrib utors:
  6    *      Ho norable Se nator Dani el K. Inou ye
  7    *      VA  Pacific I slands Hea lth Care S ystem
  8    *      Tr ipler Army  Medical C enter
  9    */
  10    
  11    
  12   package go v.va.med.v ds.common;
  13  
  14   import gov .va.med.fo undations. utilities. EncryptUti l;
  15   import gov .va.med.rp c.StringUt ils;
  16   import gov .va.med.vh ahon.commo n.Utils;
  17   import org .slf4j.Log ger;
  18   import org .slf4j.Log gerFactory ;
  19  
  20   import jav a.io.FileI nputStream ;
  21   import jav a.io.FileN otFoundExc eption;
  22   import jav a.io.IOExc eption;
  23   import jav a.io.Input Stream;
  24   import jav a.util.Has hSet;
  25   import jav a.util.Pro perties;
  26   import jav a.util.Set ;
  27  
  28   /**
  29    * User:  D N S
  30    * Date: 8 /29/11
  31    * Time: 2 :36 PM
  32    */
  33   public cla ss AppConf ig {
  34       privat e static f inal Logge r LOGGER =  LoggerFac tory.getLo gger(AppCo nfig.class );
  35  
  36       privat e static f inal Strin g AGENCY_V A = "appco nfig.agenc y.va";
  37       privat e static f inal Strin g AGENCY_D OD = "appc onfig.agen cy.dod";
  38       privat e static f inal Strin g LOG4J_PR OPS = "app config.log 4j.props";
  39       privat e static f inal Strin g APP_ENVI RONMENT =  "app.envir onment";
  40       privat e static f inal Strin g APP_VERS ION = "app .version";
  41       privat e static f inal Strin g NON_BSE_ SECURITY_P HRASE = "a ppconfig.a uthenticat ion.nonBse SecurityPh rase";
  42       privat e static f inal Strin g REQUEST_ TIMEOUT_MS  = "appcon fig.reques t.timeout. ms";
  43       privat e static f inal Strin g CONNECTI ON_TIMEOUT _MS = "app config.con nection.ti meout.ms";
  44  
  45       privat e static f inal Strin g VLER_DQ_ URL = "app config.vle r.dq.url";
  46       privat e static f inal Strin g VLER_DR_ URL = "app config.vle r.dr.url";
  47       privat e static f inal Strin g VLER_DQ_ START_DATE _YEAR = "a ppconfig.v ler.dq.sta rtDateYear ";
  48       privat e static f inal Strin g VLER_DQ_ END_DATE_Y EAR_OFFSET  = "appcon fig.vler.d q.endDateY earOffset" ;
  49   //    priv ate static  final Str ing VLER_P D_URL = "a ppconfig.v ler.pd.url ";
  50   //    priv ate static  final Str ing VLER_P A_URL = "a ppconfig.v ler.pa.url ";
  51       privat e static f inal Strin g VLER_DAS _URL = "ap pconfig.vl er.das.url ";
  52       privat e static f inal Strin g VLER_DAS _CALLBACK  = "appconf ig.vler.da s.callback ";
  53       privat e static f inal Strin g VLER_DAS _EMPTY_NAR RATIVES =  "appconfig .vler.das. emptyNarra tives";
  54  
  55       privat e static f inal Strin g EVIX_STU DYQUERY_UR L = "appco nfig.evix. studyquery .url";
  56       privat e static f inal Strin g EVIX_VIX _ENDPOINT  = "appconf ig.evix.vi xEndpoint" ;
  57       privat e static f inal Strin g EVIX_REQ UEST_TIMEO UT = "appc onfig.evix .request.t imeout.ms" ;
  58       privat e static f inal Strin g EVIX_CON NECTION_TI MEOUT = "a ppconfig.e vix.connec tion.timeo ut.ms";
  59       privat e static f inal Strin g EVIX_VAL IDATION_BY PASS = "ap pconfig.ev ix.isVixVa lidationBy pass";
  60  
  61       //cons tants
  62       privat e static f inal Strin g PROTOCOL _RPC = "RP C";
  63       privat e static f inal Strin g PROTOCOL _CACHE = " CACHE";
  64       privat e static f inal Strin g DATASOUR CE = "appc onfig.data source";
  65  
  66       privat e final st atic int R PC_CONNECT ION_THREAD _CORE_POOL _SIZE_DEFA ULT = 200;
  67       privat e final st atic int R PC_CONNECT ION_THREAD _MAX_POOL_ SIZE_DEFAU LT = 600;
  68       privat e final st atic int R PC_CONNECT ION_THREAD _BLOCKING_ QUEUE_SIZE _DEFAULT =  25;
  69  
  70       privat e final st atic int P ARSER_THRE AD_CORE_PO OL_SIZE_DE FAULT = 10 0;
  71       privat e final st atic int P ARSER_THRE AD_MAX_POO L_SIZE_DEF AULT = 300 ;
  72       privat e final st atic int P ARSER_THRE AD_BLOCKIN G_QUEUE_SI ZE_DEFAULT  = 25;
  73  
  74       privat e final st atic int T HREAD_TIME OUT_SECOND S_DEFAULT  = 120;
  75       privat e final st atic int T HREAD_KEEP ALIVE_SECO NDS_DEFAUL T = 60;
  76  
  77       privat e final in t MAX_DATA  = 3000000 0;
  78       privat e final in t EXPECTED _BUFFER_DA TA = 1024;
  79       
  80       privat e static f inal Strin g DISABLE_ CACHED_THR EAD_POOL =  "appconfi g.thread.d isableCach edThreadPo ol";
  81       privat e static f inal Strin g DISABLE_ SINGLE_PAR SE_THREAD_ POOL = "ap pconfig.th read.disab leSinglePa rsePool";
  82       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_USE_MA X_CACHED_P OOL_SIZE =  "appconfi g.rpc.thre ad.useMaxC achedPoolS ize";
  83  
  84       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_CORE_P OOL_SIZE =  "appconfi g.rpc.thre ad.corePoo lSize";
  85       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_MAX_PO OL_SIZE =  "appconfig .rpc.threa d.maxPoolS ize";
  86       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_BLOCKI NG_QUEUE_S IZE = "app config.rpc .thread.bl ockingQueu eSize";
  87       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_TIMEOU T_SECONDS  = "appconf ig.rpc.thr ead.timeou t.seconds" ;
  88       privat e static f inal Strin g RPC_CONN ECTION_THR EAD_POOL_K EEP_ALIVE_ SECONDS =  "appconfig .rpc.threa d.keepaliv e.seconds" ;
  89  
  90       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE  = "appcon fig.parse. thread.cor ePoolSize" ;
  91       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE  = "appconf ig.parse.t hread.maxP oolSize";
  92       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE = "a ppconfig.p arse.threa d.blocking QueueSize" ;
  93       privat e static f inal Strin g PARSER_T HREAD_TIME OUT_SECOND S = "appco nfig.parse .thread.ti meout.seco nds";
  94       privat e static f inal Strin g PARSER_T HREAD_POOL _KEEP_ALIV E_SECONDS  = "appconf ig.parse.t hread.keep alive.seco nds";
  95       privat e static f inal Strin g PARSER_T HREAD_USE_ MAX_CACHED _POOL_SIZE  = "appcon fig.parse. thread.use MaxPoolSiz e";
  96  
  97       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE _ENCOUNTER S = "appco nfig.parse .thread.co rePoolSize .encounter s";
  98       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE_ ENCOUNTERS  = "appcon fig.parse. thread.max PoolSize.e ncounters" ;
  99       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE_ENCO UNTERS = " appconfig. parse.thre ad.blockin gQueueSize .encounter s";
  100       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE _LABS = "a ppconfig.p arse.threa d.corePool Size.labs" ;
  101       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE_ LABS = "ap pconfig.pa rse.thread .maxPoolSi ze.labs";
  102       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE_LABS  = "appcon fig.parse. thread.blo ckingQueue Size.labs" ;
  103       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE _NOTES = " appconfig. parse.thre ad.corePoo lSize.note s";
  104       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE_ NOTES = "a ppconfig.p arse.threa d.maxPoolS ize.notes" ;
  105       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE_NOTE S = "appco nfig.parse .thread.bl ockingQueu eSize.note s";
  106       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE _ORDERS =  "appconfig .parse.thr ead.corePo olSize.ord ers";
  107       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE_ ORDERS = " appconfig. parse.thre ad.maxPool Size.order s";
  108       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE_ORDE RS = "appc onfig.pars e.thread.b lockingQue ueSize.ord ers";
  109       privat e static f inal Strin g PARSER_T HREAD_CORE _POOL_SIZE _MEDS = "a ppconfig.p arse.threa d.corePool Size.meds" ;
  110       privat e static f inal Strin g PARSER_T HREAD_MAX_ POOL_SIZE_ MEDS = "ap pconfig.pa rse.thread .maxPoolSi ze.meds";
  111       privat e static f inal Strin g PARSER_T HREAD_BLOC KING_QUEUE _SIZE_MEDS  = "appcon fig.parse. thread.blo ckingQueue Size.meds" ;
  112       
  113  
  114       privat e static f inal int P ARSER_BATC H_SIZE_DEF AULT = 25;
  115       privat e static f inal Strin g PARSER_B ATCH_SIZE_ ORDERS = " appconfig. parse.batc hSize.orde rs";
  116       privat e static f inal Strin g PARSER_B ATCH_SIZE_ NOTES = "a ppconfig.p arse.batch Size.notes ";
  117       privat e static f inal Strin g PARSER_B ATCH_SIZE_ APPOINTMEN TS = "appc onfig.pars e.batchSiz e.appointm ents";
  118       privat e static f inal Strin g PARSER_B ATCH_SIZE_ ENCOUNTERS  = "appcon fig.parse. batchSize. encounters ";
  119       privat e static f inal Strin g PARSER_B ATCH_SIZE_ ALLERGIES  = "appconf ig.parse.b atchSize.a llergies";
  120       privat e static f inal Strin g PARSER_B ATCH_SIZE_ REMINDERS  = "appconf ig.parse.b atchSize.r eminders";
  121       privat e static f inal Strin g PARSER_B ATCH_SIZE_ IMMUNIZATI ONS = "app config.par se.batchSi ze.immuniz ations";
  122       privat e static f inal Strin g PARSER_B ATCH_SIZE_ INSURANCE  = "appconf ig.parse.b atchSize.i nsurance";
  123       privat e static f inal Strin g PARSER_B ATCH_SIZE_ LAB_PANELS  = "appcon fig.parse. batchSize. lab.panels ";
  124       privat e static f inal Strin g PARSER_B ATCH_SIZE_ LAB_ACCESS IONS = "ap pconfig.pa rse.batchS ize.lab.ac cessions";
  125       privat e static f inal Strin g PARSER_B ATCH_SIZE_ MEDICATION S = "appco nfig.parse .batchSize .medicatio ns";
  126       privat e static f inal Strin g PARSER_B ATCH_SIZE_ PATIENT_FL AGS = "app config.par se.batchSi ze.patient .flags";
  127       privat e static f inal Strin g PARSER_B ATCH_SIZE_ PCE = "app config.par se.batchSi ze.pce";
  128       privat e static f inal Strin g PARSER_B ATCH_SIZE_ RADIOLOGY  = "appconf ig.parse.b atchSize.r adiology";
  129       privat e static f inal Strin g PARSER_B ATCH_SIZE_ VITALS = " appconfig. parse.batc hSize.vita ls";
  130  
  131       //rest  configs
  132       privat e static f inal Strin g REST_CON NECTION_TI MEOUT_MS =  "appconfi g.vler.das .REST_CONN ECTION_TIM EOUT_MS";
  133       privat e static f inal Strin g REST_REA D_TIMEOUT_ MS = "appc onfig.vler .das.REST_ READ_TIMEO UT_MS";
  134       privat e static f inal Strin g IS_DAS_C ACHE_ENABL ED = "appc onfig.vler .das.CACHE _ENABLED";
  135       privat e static f inal Strin g DAS_TEST _PAT = "ap pconfig.vl er.das.tes tpat";
  136       privat e static f inal Strin g DAS_ENAB LE_COMMUNI TY_SUMMARI ES = "appc onfig.vler .das.enabl eHealthSum maries";
  137       privat e static f inal Strin g DAS_DISA BLE_SSL_VE RIFICATION  = "appcon fig.vler.d as.disable SSLVerific ation";
  138  
  139       privat e static f inal Strin g USE_ENHA NCED_DEBUG  = "appcon fig.debug. enhanced";
  140  
  141       privat e static f inal Strin g ENCRYPTI ON_KEY_ARR AY = "appc onfig.encr yption.key .array";
  142  
  143       privat e static f inal Strin g BSE_TOKE N_ENABLED  = "appconf ig.bse.tok en.enabled ";
  144       privat e static f inal Strin g BSE_TOKE N_PHRASE =  "appconfi g.bse.toke n.bseToken Phrase";
  145  
  146       privat e static f inal Strin g HS_ADHOC _CLINICAL_ REMINDER_L IST = "app config.hea lthSummary Adhoc.clin icalRemind er.list";
  147  
  148       privat e static f inal AppCo nfig INSTA NCE = new  AppConfig( );
  149  
  150       privat e Properti es appProp erties;
  151  
  152       privat e AppConfi g() {
  153  
  154           ap pPropertie s = new Pr operties() ;
  155  
  156           lo adAppMetaP roperties( );
  157           lo adAppConfi gPropertie s();
  158       }
  159  
  160       privat e void loa dAppMetaPr operties()  {
  161           St ring prope rtiesFile  = "applica tion.prope rties";
  162  
  163           In putStream  inputStrea m = null;
  164  
  165           Cl assLoader  classLoade r = AppCon fig.class. getClassLo ader();
  166           if  (classLoa der != nul l) {
  167                inputStr eam = clas sLoader.ge tResourceA sStream(pr opertiesFi le);
  168           }
  169  
  170           tr y {
  171                appPrope rties.load (inputStre am);
  172           }  catch (IOE xception e ) {
  173                LOGGER.e rror("Fail ed load ap plication. properties : " + e.ge tMessage() );
  174                throw ne w RuntimeE xception(e );
  175           }  finally {
  176                try {
  177                    if ( inputStrea m != null)  {
  178                         inputStrea m.close();
  179                    }
  180                } catch  (IOExcepti on e) {
  181                    LOGG ER.error(e .getMessag e());
  182                }
  183           }
  184       }
  185  
  186       privat e void loa dAppConfig Properties () {
  187           St ring prope rtiesFile  = "vistada taservice. properties ";
  188  
  189           In putStream  inputStrea m = null;
  190  
  191           Cl assLoader  classLoade r = AppCon fig.class. getClassLo ader();
  192           if  (classLoa der != nul l) {
  193                inputStr eam = clas sLoader.ge tResourceA sStream(pr opertiesFi le);
  194           }
  195  
  196           if  (inputStr eam != nul l) {
  197                try {
  198                    appP roperties. load(input Stream);
  199                } catch  (IOExcepti on e) {
  200                    LOGG ER.error(" Failed loa d appconfi g properti es: " + e. getMessage ());
  201                    thro w new Runt imeExcepti on(e);
  202                } finall y {
  203                    try  {
  204                         inputStrea m.close();
  205                    } ca tch (IOExc eption e)  {
  206                         LOGGER.err or(e.getMe ssage());
  207                    }
  208                }
  209           }
  210  
  211           tr y {
  212  
  213                inputStr eam = new  FileInputS tream(prop ertiesFile );
  214  
  215                try {
  216                    appP roperties. load(input Stream);
  217                } catch  (IOExcepti on e) {
  218                    LOGG ER.error(" Failed loa d appconfi g properti es: " + e. getLocaliz edMessage( ));
  219                    thro w new Runt imeExcepti on(e);
  220                } finall y {
  221                    try  {
  222                         inputStrea m.close();
  223                    } ca tch (IOExc eption e)  {
  224                         LOGGER.err or(e.getMe ssage());
  225                    }
  226                }
  227  
  228           }  catch (Fil eNotFoundE xception e ) {
  229                LOGGER.i nfo("Faile d to load  appconfig  from file  (vistadata service.pr operties)  -"
  230                         + " utiliz ing defaul t appconfi g properti es.");
  231  
  232           }
  233       }
  234  
  235       public  static fi nal AppCon fig getIns tance() {
  236           re turn INSTA NCE;
  237       }
  238  
  239       public  final Str ing getPro tocolRPC()  {
  240           re turn PROTO COL_RPC;
  241       }
  242  
  243       public  final Str ing getPro tocolCache () {
  244           re turn PROTO COL_CACHE;
  245       }
  246  
  247       public  final Str ing getAge ncyVA() {
  248           re turn appPr operties.g etProperty (AGENCY_VA );
  249       }
  250  
  251       public  final Str ing getAge ncyDOD() {
  252           re turn appPr operties.g etProperty (AGENCY_DO D);
  253       }
  254  
  255       public  final Str ing getLog 4jProperti es() {
  256           re turn appPr operties.g etProperty (LOG4J_PRO PS);
  257       }
  258  
  259       public  final Str ing getApp Environmen t() {
  260           re turn appPr operties.g etProperty (APP_ENVIR ONMENT);
  261       }
  262  
  263       public  final Str ing getApp Version()  {
  264           re turn appPr operties.g etProperty (APP_VERSI ON);
  265       }
  266  
  267       public  final Str ing getNon BseSecurit yPhrase()  {
  268           re turn appPr operties.g etProperty (NON_BSE_S ECURITY_PH RASE);
  269       }
  270  
  271       public  final Str ing getBse TokenPhras e(){
  272           re turn Encry ptUtil.dec rypt(appPr operties.g etProperty (BSE_TOKEN _PHRASE));
  273       }
  274  
  275       public  final int  getConnec tionTimeou tMs() {
  276           re turn Integ er.parseIn t(appPrope rties.getP roperty(CO NNECTION_T IMEOUT_MS) );
  277       }
  278  
  279       public  final int  getReques tTimeoutMs () {
  280           re turn Integ er.parseIn t(appPrope rties.getP roperty(RE QUEST_TIME OUT_MS));
  281       }
  282  
  283       public  final Str ing getVLE R_DQ_URL()  {
  284           re turn appPr operties.g etProperty (VLER_DQ_U RL);
  285       }
  286  
  287       public  final Str ing getVLE R_DR_URL()  {
  288           re turn appPr operties.g etProperty (VLER_DR_U RL);
  289       }
  290  
  291       public  final Str ing getVLE R_DAS_URL( ) {
  292           re turn Encry ptUtil.dec rypt(appPr operties.g etProperty (VLER_DAS_ URL));
  293       }
  294  
  295       public  final Str ing getVLE R_DQ_START _DATE_YEAR () {
  296           re turn appPr operties.g etProperty (VLER_DQ_S TART_DATE_ YEAR, "");
  297       }
  298  
  299       public  final Str ing getVLE R_DQ_END_D ATE_YEAR_O FFSET() {
  300           re turn appPr operties.g etProperty (VLER_DQ_E ND_DATE_YE AR_OFFSET,  "");
  301       }
  302  
  303       public  final Str ing getVLE R_DAS_CALL BACK() {
  304           re turn appPr operties.g etProperty (VLER_DAS_ CALLBACK);
  305       }
  306  
  307       public  final Str ing getVLE R_DAS_EMPT Y_NARRATIV ES() {
  308           re turn appPr operties.g etProperty (VLER_DAS_ EMPTY_NARR ATIVES, "< text></tex t>,<text/> ");
  309       }
  310       public  final Str ing getEvi xStudyquer yUrl() { r eturn Encr yptUtil.de crypt(appP roperties. getPropert y(EVIX_STU DYQUERY_UR L));}
  311  
  312       public  final Str ing getEvi xVixEndpoi nt() { ret urn Encryp tUtil.decr ypt(appPro perties.ge tProperty( EVIX_VIX_E NDPOINT)); }
  313  
  314       public  final boo lean isVix Validation Bypass(){
  315           re turn Boole an.valueOf (appProper ties.getPr operty(EVI X_VALIDATI ON_BYPASS,  "false")) ;
  316       }
  317  
  318       public  final int  getEvixRe questTimeo ut() {
  319           re turn Integ er.parseIn t(appPrope rties.getP roperty(EV IX_REQUEST _TIMEOUT)) ;
  320       }
  321  
  322       public  final int  getEvixCo nnectionTi meout() {
  323           re turn Integ er.parseIn t(appPrope rties.getP roperty(EV IX_CONNECT ION_TIMEOU T));
  324       }
  325  
  326       public  final Str ing getDat aSource()  {
  327           re turn Encry ptUtil.dec rypt(appPr operties.g etProperty (DATASOURC E));
  328       }
  329  
  330       public  int getRe stConnecti onTimeoutM S() {
  331           re turn Integ er.parseIn t(appPrope rties.getP roperty(RE ST_CONNECT ION_TIMEOU T_MS));
  332       }
  333  
  334       public  int getRe stReadTime outMS() {
  335           re turn Integ er.parseIn t(appPrope rties.getP roperty(RE ST_READ_TI MEOUT_MS)) ;
  336       }
  337  
  338       public  int getMA X_DATA() {
  339           re turn MAX_D ATA;
  340       }
  341  
  342       public  int getEX PECTED_BUF FER_DATA()  {
  343           re turn EXPEC TED_BUFFER _DATA;
  344       }
  345  
  346       public  Propertie s getPrope rties() {
  347           re turn appPr operties;
  348       }
  349  
  350       public  final boo lean enabl eDASCommun itySummari es(){
  351           re turn Boole an.valueOf (appProper ties.getPr operty(DAS _ENABLE_CO MMUNITY_SU MMARIES));
  352       }
  353  
  354       public  final boo lean disab leDASSSLVe rify(){
  355           re turn Boole an.valueOf (appProper ties.getPr operty(DAS _DISABLE_S SL_VERIFIC ATION, "fa lse"));
  356       }
  357  
  358       public  final Str ing getDas TestPat()  {return ap pPropertie s.getPrope rty(DAS_TE ST_PAT, "" ); }
  359  
  360   //    publ ic final S tring getV LER_PD_URL ()
  361   //    {
  362   //         return app Properties .getProper ty(VLER_PD _URL);
  363   //    }
  364   //
  365   //    publ ic final S tring getV LER_PA_URL ()
  366   //    {
  367   //         return app Properties .getProper ty(VLER_PA _URL);
  368   //    }
  369  
  370       public  final boo lean disab leCachedTh readPool()  {
  371           re turn Boole an.valueOf (appProper ties.getPr operty(DIS ABLE_CACHE D_THREAD_P OOL));
  372       }
  373  
  374       public  final  bo olean disa bleSingleP arsePool()  {
  375           re turn Boole an.valueOf (appProper ties.getPr operty(DIS ABLE_SINGL E_PARSE_TH READ_POOL) );
  376       }
  377  
  378       public  final  bo olean useC onnectionC achedThrea dPoolMaxSi ze() {
  379           re turn Boole an.valueOf (appProper ties.getPr operty(RPC _CONNECTIO N_THREAD_U SE_MAX_CAC HED_POOL_S IZE));
  380       }
  381  
  382       public  final  bo olean useP arseCached ThreadPool MaxSize ()  {
  383           re turn Boole an.valueOf (appProper ties.getPr operty(PAR SER_THREAD _USE_MAX_C ACHED_POOL _SIZE));
  384       }
  385  
  386       public  final int  getRPCCon nectionMax ThreadPool Size() {
  387           in t rtn;
  388           tr y {
  389                rtn = In teger.pars eInt(appPr operties.g etProperty (RPC_CONNE CTION_THRE AD_MAX_POO L_SIZE));
  390           }  catch (Num berFormatE xception n fe) {
  391                rtn = RP C_CONNECTI ON_THREAD_ MAX_POOL_S IZE_DEFAUL T;
  392           }
  393           re turn rtn;
  394       }
  395  
  396       public  final int  getRPCCon nectionThr eadBlockin gQueueSize () {
  397           in t rtn;
  398           tr y {
  399                rtn = In teger.pars eInt(appPr operties.g etProperty (RPC_CONNE CTION_THRE AD_BLOCKIN G_QUEUE_SI ZE));
  400           }  catch (Num berFormatE xception n fe) {
  401                rtn = RP C_CONNECTI ON_THREAD_ BLOCKING_Q UEUE_SIZE_ DEFAULT;
  402           }
  403           re turn rtn;
  404       }
  405  
  406       public  final int  getRPCCon nectionThr eadTimeout Seconds()  {
  407           in t rtn;
  408           tr y {
  409                rtn = In teger.pars eInt(appPr operties.g etProperty (RPC_CONNE CTION_THRE AD_TIMEOUT _SECONDS)) ;
  410           }  catch (Num berFormatE xception n fe) {
  411                rtn = TH READ_TIMEO UT_SECONDS _DEFAULT;
  412           }
  413           re turn rtn;
  414       }
  415  
  416       public  final int  getParser MaxThreadP oolSize()  {
  417           in t rtn;
  418           tr y {
  419                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE)) ;
  420           }  catch (Num berFormatE xception n fe) {
  421                rtn = PA RSER_THREA D_MAX_POOL _SIZE_DEFA ULT;
  422           }
  423           re turn rtn;
  424       }
  425  
  426       public  final int  getParser ThreadBloc kingQueueS ize() {
  427           in t rtn;
  428           tr y {
  429                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE));
  430           }  catch (Num berFormatE xception n fe) {
  431                rtn = PA RSER_THREA D_BLOCKING _QUEUE_SIZ E_DEFAULT;
  432           }
  433           re turn rtn;
  434       }
  435  
  436       public  final int  getParser ThreadTime outSeconds () {
  437           in t rtn;
  438           tr y {
  439                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_TIMEO UT_SECONDS ));
  440           }  catch (Num berFormatE xception n fe) {
  441                rtn = TH READ_TIMEO UT_SECONDS _DEFAULT;
  442           }
  443           re turn rtn;
  444       }
  445  
  446       public  final int  getRpcCor eThreadPoo lSize() {
  447           in t rtn;
  448           tr y {
  449                rtn = In teger.pars eInt(appPr operties.g etProperty (RPC_CONNE CTION_THRE AD_CORE_PO OL_SIZE));
  450           }  catch (Num berFormatE xception n fe) {
  451                rtn = RP C_CONNECTI ON_THREAD_ CORE_POOL_ SIZE_DEFAU LT;
  452           }
  453           re turn rtn;
  454       }
  455  
  456       public  final int  getRpcThr eadPoolKee pAliveSeco nds() {
  457           in t rtn;
  458           tr y {
  459                rtn = In teger.pars eInt(appPr operties.g etProperty (RPC_CONNE CTION_THRE AD_POOL_KE EP_ALIVE_S ECONDS));
  460           }  catch (Num berFormatE xception n fe) {
  461                rtn = TH READ_KEEPA LIVE_SECON DS_DEFAULT ;
  462           }
  463           re turn rtn;
  464       }
  465  
  466       public  final int  getParser CoreThread PoolSize()  {
  467           in t rtn;
  468           tr y {
  469                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE) );
  470           }  catch (Num berFormatE xception n fe) {
  471                rtn = PA RSER_THREA D_CORE_POO L_SIZE_DEF AULT;
  472           }
  473           re turn rtn;
  474       }
  475  
  476       public  final int  getParser ThreadPool KeepAliveS econds() {
  477           in t rtn;
  478           tr y {
  479                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_POOL_ KEEP_ALIVE _SECONDS)) ;
  480           }  catch (Num berFormatE xception n fe) {
  481                rtn = TH READ_KEEPA LIVE_SECON DS_DEFAULT ;
  482           }
  483           re turn rtn;
  484       }
  485  
  486       public  final int  getParser CoreThread PoolSizeEn counters()  {
  487           in t rtn;
  488           tr y {
  489                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE_ ENCOUNTERS ));
  490           }  catch (Num berFormatE xception n fe) {
  491                rtn = ge tParserCor eThreadPoo lSize();
  492           }
  493           re turn rtn;
  494       }
  495       
  496       public  final int  getParser MaxThreadP oolSizeEnc ounters()  {
  497           in t rtn;
  498           tr y {
  499                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE_E NCOUNTERS) );
  500           }  catch (Num berFormatE xception n fe) {
  501                rtn = ge tParserMax ThreadPool Size();
  502           }
  503           re turn rtn;
  504       }
  505  
  506       public  final int  getParser ThreadBloc kingQueueS izeEncount ers() {
  507           in t rtn;
  508           tr y {
  509                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE_ENCOU NTERS));
  510           }  catch (Num berFormatE xception n fe) {
  511                rtn = ge tParserThr eadBlockin gQueueSize ();
  512           }
  513           re turn rtn;
  514       }
  515  
  516       public  final int  getParser CoreThread PoolSizeLa bs() {
  517           in t rtn;
  518           tr y {
  519                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE_ LABS));
  520           }  catch (Num berFormatE xception n fe) {
  521                rtn = ge tParserCor eThreadPoo lSize();
  522           }
  523           re turn rtn;
  524       }
  525  
  526       public  final int  getParser MaxThreadP oolSizeLab s() {
  527           in t rtn;
  528           tr y {
  529                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE_L ABS));
  530           }  catch (Num berFormatE xception n fe) {
  531                rtn = ge tParserMax ThreadPool Size();
  532           }
  533           re turn rtn;
  534       }
  535  
  536       public  final int  getParser ThreadBloc kingQueueS izeLabs()  {
  537           in t rtn;
  538           tr y {
  539                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE_LABS) );
  540           }  catch (Num berFormatE xception n fe) {
  541                rtn = ge tParserThr eadBlockin gQueueSize ();
  542           }
  543           re turn rtn;
  544       }
  545  
  546       public  final int  getParser CoreThread PoolSizeNo tes() {
  547           in t rtn;
  548           tr y {
  549                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE_ NOTES));
  550           }  catch (Num berFormatE xception n fe) {
  551                rtn = ge tParserCor eThreadPoo lSize();
  552           }
  553           re turn rtn;
  554       }
  555  
  556       public  final int  getParser MaxThreadP oolSizeNot es() {
  557           in t rtn;
  558           tr y {
  559                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE_N OTES));
  560           }  catch (Num berFormatE xception n fe) {
  561                rtn = ge tParserMax ThreadPool Size();
  562           }
  563           re turn rtn;
  564       }
  565  
  566       public  final int  getParser ThreadBloc kingQueueS izeNotes()  {
  567           in t rtn;
  568           tr y {
  569                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE_NOTES ));
  570           }  catch (Num berFormatE xception n fe) {
  571                rtn = ge tParserThr eadBlockin gQueueSize ();
  572           }
  573           re turn rtn;
  574       }
  575  
  576       public  final int  getParser CoreThread PoolSizeOr ders() {
  577           in t rtn;
  578           tr y {
  579                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE_ ORDERS));
  580           }  catch (Num berFormatE xception n fe) {
  581                rtn = ge tParserCor eThreadPoo lSize();
  582           }
  583           re turn rtn;
  584       }
  585  
  586       public  final int  getParser MaxThreadP oolSizeOrd ers() {
  587           in t rtn;
  588           tr y {
  589                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE_O RDERS));
  590           }  catch (Num berFormatE xception n fe) {
  591                rtn = ge tParserMax ThreadPool Size();
  592           }
  593           re turn rtn;
  594       }
  595  
  596       public  final int  getParser ThreadBloc kingQueueS izeOrders( ) {
  597           in t rtn;
  598           tr y {
  599                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE_ORDER S));
  600           }  catch (Num berFormatE xception n fe) {
  601                rtn = ge tParserThr eadBlockin gQueueSize ();
  602           }
  603           re turn rtn;
  604       }
  605  
  606       public  final int  getParser CoreThread PoolSizeMe ds() {
  607           in t rtn;
  608           tr y {
  609                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_CORE_ POOL_SIZE_ MEDS));
  610           }  catch (Num berFormatE xception n fe) {
  611                rtn = ge tParserCor eThreadPoo lSize();
  612           }
  613           re turn rtn;
  614       }
  615  
  616       public  final int  getParser MaxThreadP oolSizeMed s() {
  617           in t rtn;
  618           tr y {
  619                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_MAX_P OOL_SIZE_M EDS));
  620           }  catch (Num berFormatE xception n fe) {
  621                rtn = ge tParserMax ThreadPool Size();
  622           }
  623           re turn rtn;
  624       }
  625  
  626       public  final int  getParser ThreadBloc kingQueueS izeMeds()  {
  627           in t rtn;
  628           tr y {
  629                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_TH READ_BLOCK ING_QUEUE_ SIZE_MEDS) );
  630           }  catch (Num berFormatE xception n fe) {
  631                rtn = ge tParserThr eadBlockin gQueueSize ();
  632           }
  633           re turn rtn;
  634       }
  635  
  636       // tru e for runn ing enhanc ed debug c ode
  637       public  final boo lean useEn hancedDebu g() {
  638           re turn Boole an.valueOf (appProper ties.getPr operty(USE _ENHANCED_ DEBUG));
  639       }
  640  
  641       // tru e for runn ing enhanc ed debug c ode
  642       public  final boo lean bseTo kenEnabled () {
  643           re turn Boole an.valueOf (appProper ties.getPr operty(BSE _TOKEN_ENA BLED));
  644       }
  645       
  646       public  static fi nal byte[]  getEmptyB ytes(){
  647           re turn new b yte[16];
  648       }
  649  
  650       public  final byt e[] getEnc ryptionKey () {
  651           if  (!StringU tils.isEmp ty(appProp erties.get Property(E NCRYPTION_ KEY_ARRAY) )) {
  652                return U tils.parse ByteArray1 6(appPrope rties.getP roperty(EN CRYPTION_K EY_ARRAY)) ;
  653           }  else {
  654                return g etEmptyByt es();
  655           }
  656       }
  657  
  658       public  final int  getParser BatchSizeO rders() {
  659           in t rtn;
  660           tr y {
  661                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_O RDERS));
  662           }  catch (Num berFormatE xception n fe) {
  663                try {
  664                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_ORDERS) );
  665                } catch  (NumberFor matExcepti on nfe2) {
  666                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  667                }
  668           }
  669           re turn rtn;
  670       }
  671  
  672       public  final int  getParser BatchSizeN otes() {
  673           in t rtn;
  674           tr y {
  675                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_N OTES));
  676           }  catch (Num berFormatE xception n fe) {
  677                try {
  678                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_NOTES)) ;
  679                } catch  (NumberFor matExcepti on nfe2) {
  680                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  681                }
  682           }
  683           re turn rtn;
  684       }
  685  
  686       public  final int  getParser BatchSizeA ppointment s() {
  687           in t rtn;
  688           tr y {
  689                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_A PPOINTMENT S));
  690           }  catch (Num berFormatE xception n fe) {
  691                try {
  692                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_APPOINT MENTS));
  693                } catch  (NumberFor matExcepti on nfe2) {
  694                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  695                }
  696           }
  697           re turn rtn;
  698       }
  699  
  700       public  final int  getParser BatchSizeE ncounters( ) {
  701           in t rtn;
  702           tr y {
  703                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_E NCOUNTERS) );
  704           }  catch (Num berFormatE xception n fe) {
  705                try {
  706                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_ENCOUNT ERS));
  707                } catch  (NumberFor matExcepti on nfe2) {
  708                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  709                }
  710           }
  711           re turn rtn;
  712       }
  713  
  714       public  final int  getParser BatchSizeA llergies()  {
  715           in t rtn;
  716           tr y {
  717                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_A LLERGIES)) ;
  718           }  catch (Num berFormatE xception n fe) {
  719                try {
  720                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_ALLERGI ES));
  721                } catch  (NumberFor matExcepti on nfe2) {
  722                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  723                }
  724           }
  725           re turn rtn;
  726       }
  727  
  728       public  final int  getParser BatchSizeR eminders()  {
  729           in t rtn;
  730           tr y {
  731                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_R EMINDERS)) ;
  732           }  catch (Num berFormatE xception n fe) {
  733                try {
  734                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_REMINDE RS));
  735                } catch  (NumberFor matExcepti on nfe2) {
  736                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  737                }
  738           }
  739           re turn rtn;
  740       }
  741  
  742       public  final int  getParser BatchSizeI mmunizatio ns() {
  743           in t rtn;
  744           tr y {
  745                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_I MMUNIZATIO NS));
  746           }  catch (Num berFormatE xception n fe) {
  747                try {
  748                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_IMMUNIZ ATIONS));
  749                } catch  (NumberFor matExcepti on nfe2) {
  750                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  751                }
  752           }
  753           re turn rtn;
  754       }
  755  
  756       public  final int  getParser BatchSizeI nsurance()  {
  757           in t rtn;
  758           tr y {
  759                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_I NSURANCE)) ;
  760           }  catch (Num berFormatE xception n fe) {
  761                try {
  762                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_INSURAN CE));
  763                } catch  (NumberFor matExcepti on nfe2) {
  764                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  765                }
  766           }
  767           re turn rtn;
  768       }
  769  
  770       public  final int  getParser BatchSizeL abPanels()  {
  771           in t rtn;
  772           tr y {
  773                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_L AB_PANELS) );
  774           }  catch (Num berFormatE xception n fe) {
  775                try {
  776                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_LAB_PAN ELS));
  777                } catch  (NumberFor matExcepti on nfe2) {
  778                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  779                }
  780           }
  781           re turn rtn;
  782       }
  783  
  784       public  final int  getParser BatchSizeL abAccessio ns() {
  785           in t rtn;
  786           tr y {
  787                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_L AB_ACCESSI ONS));
  788           }  catch (Num berFormatE xception n fe) {
  789                try {
  790                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_LAB_ACC ESSIONS));
  791                } catch  (NumberFor matExcepti on nfe2) {
  792                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  793                }
  794           }
  795           re turn rtn;
  796       }
  797  
  798       public  final int  getParser BatchSizeM edications () {
  799           in t rtn;
  800           tr y {
  801                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_M EDICATIONS ));
  802           }  catch (Num berFormatE xception n fe) {
  803                try {
  804                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_MEDICAT IONS));
  805                } catch  (NumberFor matExcepti on nfe2) {
  806                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  807                }
  808           }
  809           re turn rtn;
  810       }
  811  
  812       public  final int  getParser BatchSizeP atientFlag s() {
  813           in t rtn;
  814           tr y {
  815                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_P ATIENT_FLA GS));
  816           }  catch (Num berFormatE xception n fe) {
  817                try {
  818                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_PATIENT _FLAGS));
  819                } catch  (NumberFor matExcepti on nfe2) {
  820                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  821                }
  822           }
  823           re turn rtn;
  824       }
  825  
  826       public  final int  getParser BatchSizeP CE() {
  827           in t rtn;
  828           tr y {
  829                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_P CE));
  830           }  catch (Num berFormatE xception n fe) {
  831                try {
  832                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_PCE));
  833                } catch  (NumberFor matExcepti on nfe2) {
  834                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  835                }
  836           }
  837           re turn rtn;
  838       }
  839  
  840       public  final int  getParser BatchSizeR adiology()  {
  841           in t rtn;
  842           tr y {
  843                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_R ADIOLOGY)) ;
  844           }  catch (Num berFormatE xception n fe) {
  845                try {
  846                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_RADIOLO GY));
  847                } catch  (NumberFor matExcepti on nfe2) {
  848                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  849                }
  850           }
  851           re turn rtn;
  852       }
  853  
  854       public  final int  getParser BatchSizeV itals() {
  855           in t rtn;
  856           tr y {
  857                rtn = In teger.pars eInt(appPr operties.g etProperty (PARSER_BA TCH_SIZE_V ITALS));
  858           }  catch (Num berFormatE xception n fe) {
  859                try {
  860                    rtn  = Integer. parseInt(a ppProperti es.getProp erty(PARSE R_BATCH_SI ZE_VITALS) );
  861                } catch  (NumberFor matExcepti on nfe2) {
  862                    rtn  = PARSER_B ATCH_SIZE_ DEFAULT;
  863                }
  864           }
  865           re turn rtn;
  866       }
  867  
  868       public  final Set <String> g etClinical ReminderNa meSetUpper Case() {
  869           Ha shSet<Stri ng> rtn =  new HashSe t<>();
  870  
  871           tr y {
  872                String[]  namesArra y = String Utils.spli t(appPrope rties.getP roperty(HS _ADHOC_CLI NICAL_REMI NDER_LIST) , StringUt ils.CARET) ;
  873  
  874                for (Str ing name :  namesArra y) {
  875                    rtn. add(name.t rim().toUp perCase()) ;
  876                }
  877           }  catch (Exc eption e)  {
  878                LOGGER.e rror("Prob lem gettin g VistA Cl inical Rem inder list  from conf ig file: "  + e.getMe ssage());
  879           }
  880  
  881           re turn rtn;
  882       }
  883   }