示例#1
0
        public void Initialize(AdvancedSettings advancedSettings, ServerSettings Settings, string ServerDirectory)
        {
            _AdvancedSettings = advancedSettings;
            _Settings         = Settings;

            try
            {
                IOptionsDataAccessAgent      optionsAgent;
                IAeManagementDataAccessAgent aeManagementAgent;


                if (!DataAccessServices.IsDataAccessServiceRegistered <IOptionsDataAccessAgent> ( ))
                {
                    optionsAgent = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(ServerDirectory), null, Settings.ServiceName)).CreateDataAccessAgent <IOptionsDataAccessAgent>();

                    DataAccessServices.RegisterDataAccessService <IOptionsDataAccessAgent>(optionsAgent);
                }

                if (!DataAccessServices.IsDataAccessServiceRegistered <IAeManagementDataAccessAgent> ( ))
                {
                    aeManagementAgent = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(ServerDirectory), null, Settings.ServiceName)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();

                    DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(aeManagementAgent);
                }


                _patientUpdaterDlg       = new ConfigureDialog( );
                _patientUpdaterPresenter = new PatientUpdaterPresenter( );

                _patientUpdaterPresenter.RunView(_patientUpdaterDlg.PatientUpdaterConfigurationView, ServerDirectory);
            }
            catch (Exception e)
            {
                Logger.Global.Exception(Module.Source, e);
            }
        }
示例#2
0
        public static ConnectionStringSettings GetConnectionSettings()
        {
            Configuration configPacs = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

            return(GetConnectionString(configPacs, new StorageDataAccessConfigurationView(configPacs, DicomDemoSettingsManager.ProductNameStorageServer, null).DataAccessSettingsSectionName, DicomDemoSettingsManager.ProductNameStorageServer));
        }
示例#3
0
        public override void Load(string serviceDirectory, string displayName)
        {
            System.Configuration.Configuration configuration;
            DicomServer server = ServiceLocator.Retrieve <DicomServer>();

            ServiceDirectory = serviceDirectory;
            ServiceName      = server.Name;
            ServerAE         = server.AETitle;

            server.ServerSettingsChanged += new EventHandler(server_ServerSettingsChanged);
            StorageConfigManager          = new StorageModuleConfigurationManager(true);
            StorageConfigManager.Load(serviceDirectory);

            configuration = DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(serviceDirectory);
            if (!DataAccessServices.IsDataAccessServiceRegistered <IStorageDataAccessAgent>())
            {
                StorageAgent = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView(configuration, null, displayName)).CreateDataAccessAgent <IStorageDataAccessAgent>();
                DataAccessServices.RegisterDataAccessService <IStorageDataAccessAgent>(StorageAgent);
            }
            else
            {
                StorageAgent = DataAccessServices.GetDataAccessService <IStorageDataAccessAgent>();
            }

            try
            {
                AdvancedSettings settings = AdvancedSettings.Open(ServiceDirectory);
                string           name     = Assembly.GetExecutingAssembly().GetName().Name;

                RegisterServerEvents(settings);
                Options = settings.GetAddInCustomData <PatientUpdaterOptions>(_AddIn, _Name);
                if (Options == null)
                {
                    Options = new PatientUpdaterOptions();
                }

                if (Options.EnableAutoUpdate)
                {
                    UpdateQueue = new AutoUpdateQueue(Options.AutoUpdateThreads);
                    UpdateQueue.InitializeDatabase();
                }
            }
            catch (Exception e)
            {
                if (Options == null)
                {
                    Options = new PatientUpdaterOptions();
                }

                Logger.Global.Error(Source, e.Message);
            }

            if (Options.EnableRetry)
            {
                if (string.IsNullOrEmpty(Module.Options.RetryDirectory))
                {
                    Module.Options.RetryDirectory = Path.Combine(ServiceDirectory, @"AutoUpdate\");
                }

                RetryProcessor = new AutoRetryProcessor(Options.RetryDirectory);
                RetryProcessor.Start(Options.RetrySeconds, Options.RetryDays);
            }
        }
示例#4
0
        private void SetPermissions()
        {
            IPermissionManagementDataAccessAgent agent = DataAccessFactory.GetInstance(new PermissionManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IPermissionManagementDataAccessAgent>();

            _RolesView.SetPermissions(agent.GetPermissions());
        }
示例#5
0
        public void Initialize(AdvancedSettings advancedSettings, ServerSettings Settings, string ServerDirectory)
        {
            _AdvancedSettings = advancedSettings;
            _Settings         = Settings;

            if (Settings != null)
            {
                Module.ServiceName = Settings.ServiceName;
            }

            try
            {
                IAeManagementDataAccessAgent aeManagementAgent;

                if (!DataAccessServices.IsDataAccessServiceRegistered <IAeManagementDataAccessAgent>())
                {
                    aeManagementAgent = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(ServerDirectory), null, Settings.ServiceName)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();

                    DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(aeManagementAgent);
                }
                else
                {
                    aeManagementAgent = DataAccessServices.GetDataAccessService <IAeManagementDataAccessAgent>();
                }


                _autoCopyDlg       = new ConfigureDialog( );
                _autoCopyPresenter = new AutoCopyPresenter( );

                _autoCopyPresenter.RunView(_autoCopyDlg.AutoCopyView, advancedSettings);
            }
            catch (Exception e)
            {
                Logger.Global.Exception(Module.Source, e);
            }
        }
示例#6
0
        void dlgPassword_ValidatePassword(object sender, ValidatePasswordEventArgs e)
        {
            IOptionsDataAccessAgent agent;
            PasswordOptions         options;
            string message;

            agent   = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IOptionsDataAccessAgent>();
            options = agent.Get <PasswordOptions>(PasswordOptionsPresenter.PasswordOptions, new PasswordOptions());
            if (!PasswordValidator.Validate(e.Password, e.ConfirmPassword, options, out message))
            {
                e.Valid = false;
                Messager.ShowError(null, message);
            }
            else
            {
                e.Valid = true;
                if (UserManager.IsPreviousPassword(View.UsersAccounts.SelectedUser, e.Password.ToSecureString()))
                {
                    e.Valid = false;
                    Messager.ShowError(sender as Form, "The password chosen has already been used.  Please choose a new password.");
                }
            }
        }
示例#7
0
        void UsersAccounts_PasswordRequest(object sender, PasswordRequestEventArgs e)
        {
            PasswordDialog dlgPassword = new PasswordDialog();

            dlgPassword.ValidatePassword += new EventHandler <ValidatePasswordEventArgs>(dlgPassword_ValidatePassword);
            e.Cancel = dlgPassword.ShowDialog() == DialogResult.Cancel;
            if (!e.Cancel)
            {
                IOptionsDataAccessAgent agent;
                PasswordOptions         options;

                agent      = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IOptionsDataAccessAgent>();
                options    = agent.Get <PasswordOptions>(PasswordOptionsPresenter.PasswordOptions, new PasswordOptions());
                e.Password = dlgPassword.Password;
                if (options.DaysToExpire > 0)
                {
                    e.Expires = DateTime.Now.AddDays(options.DaysToExpire);
                }
                View_SettingsChanged(sender, e);
            }
        }
示例#8
0
        private void RegisterDataAccessLayers( )
        {
#if (LEADTOOLS_V19_OR_LATER && !TUTORIAL_CUSTOM_DATABASE)
            IStorageDataAccessAgent3 storageAgent;
#else
            IStorageDataAccessAgent storageAgent;
#endif
            ILoggingDataAccessAgent2 loggingAgent;
            //IOptionsDataAccessAgent              optionsAgent ;
            IAeManagementDataAccessAgent         aeManagementAgent;
            IPermissionManagementDataAccessAgent permissionManagementAgent;
            IForwardDataAccessAgent forwardManagementAgent;

#if (LEADTOOLS_V19_OR_LATER_MEDICAL_EXTERNAL_STORE) || (LEADTOOLS_V19_OR_LATER)
            IExternalStoreDataAccessAgent externalStoreAgent;
#endif

#if (LEADTOOLS_V20_OR_LATER)
            IPatientRightsDataAccessAgent2 patientRightsAgent;
#endif


            System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

#if TUTORIAL_CUSTOM_DATABASE
            // To use a custom database schema, you must create a data access configuration view that implements IDataAccessConfigurationView.
            // This helper class is used to create your custom data access agent.
            // For more details, see the "Changing the LEAD Medical Storage Server to use a different database schema" tutorial.

            storageAgent = DataAccessFactory.GetInstance(new MyStorageDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IStorageDataAccessAgent> ( );
#elif (LEADTOOLS_V19_OR_LATER)
            storageAgent = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IStorageDataAccessAgent3> ( );
#else
            storageAgent = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IStorageDataAccessAgent> ( );
#endif

            loggingAgent = DataAccessFactory.GetInstance(new LoggingDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <ILoggingDataAccessAgent2>();
            //optionsAgent = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent<IOptionsDataAccessAgent>();
            aeManagementAgent         = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();
            permissionManagementAgent = DataAccessFactory.GetInstance(new AePermissionManagementDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IPermissionManagementDataAccessAgent>();
            forwardManagementAgent    = DataAccessFactory.GetInstance(new ForwardDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IForwardDataAccessAgent>();
#if (LEADTOOLS_V19_OR_LATER_MEDICAL_EXTERNAL_STORE) || (LEADTOOLS_V19_OR_LATER)
            externalStoreAgent = DataAccessFactory.GetInstance(new ExternalStoreDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IExternalStoreDataAccessAgent>();
#endif

#if (LEADTOOLS_V20_OR_LATER)
            patientRightsAgent = DataAccessFactory.GetInstance(new PatientRightsDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IPatientRightsDataAccessAgent2>();
#endif

            DataAccessServices.RegisterDataAccessService <IStorageDataAccessAgent> (storageAgent);
            DataAccessServices.RegisterDataAccessService <ILoggingDataAccessAgent2> (loggingAgent);
            //DataAccessServices.RegisterDataAccessService<IOptionsDataAccessAgent>(optionsAgent);
            DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(aeManagementAgent);
            DataAccessServices.RegisterDataAccessService <IPermissionManagementDataAccessAgent>(permissionManagementAgent);
            DataAccessServices.RegisterDataAccessService <IForwardDataAccessAgent>(forwardManagementAgent);

#if (LEADTOOLS_V19_OR_LATER_MEDICAL_EXTERNAL_STORE) || (LEADTOOLS_V19_OR_LATER)
            DataAccessServices.RegisterDataAccessService <IExternalStoreDataAccessAgent>(externalStoreAgent);
#endif

#if (LEADTOOLS_V20_OR_LATER)
            DataAccessServices.RegisterDataAccessService <IPatientRightsDataAccessAgent2>(patientRightsAgent);
#endif
        }
示例#9
0
        /// <summary>
        /// Initiates the forward process.
        /// </summary>
        private void Forward(string destinationAE)
        {
            try
            {
                IForwardDataAccessAgent      forwardAgent;
                IAeManagementDataAccessAgent aeAgent;

                System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(Module.ServiceDirectory);

                if (!DataAccessServices.IsDataAccessServiceRegistered <IForwardDataAccessAgent>())
                {
                    forwardAgent = DataAccessFactory.GetInstance(new ForwardDataAccessConfigurationView(configuration, null, Module.ServiceName)).CreateDataAccessAgent <IForwardDataAccessAgent>();
                    DataAccessServices.RegisterDataAccessService <IForwardDataAccessAgent>(forwardAgent);
                }
                else
                {
                    forwardAgent = DataAccessServices.GetDataAccessService <IForwardDataAccessAgent>();
                }

                if (!DataAccessServices.IsDataAccessServiceRegistered <IAeManagementDataAccessAgent>())
                {
                    aeAgent = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(configuration, null, Module.ServiceName)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();
                    DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(aeAgent);
                }
                else
                {
                    aeAgent = DataAccessServices.GetDataAccessService <IAeManagementDataAccessAgent>();
                }

                if (forwardAgent != null && aeAgent != null)
                {
                    AeInfoExtended ae = aeAgent.GetAeTitle(destinationAE);

                    if (ae != null)
                    {
#if LEADTOOLS_V20_OR_LATER
                        // Update dbo.AeInfo.LastAccessDate to Date.Now
                        ae.LastAccessDate = DateTime.Now;
                        aeAgent.Update(ae.AETitle, ae);
#endif

                        DicomScp  scp     = null;
                        IPAddress address = IPAddress.None;

                        if (!IPAddress.TryParse(ae.Address, out address))
                        {
                            IPHostEntry host = Dns.GetHostEntry(ae.Address);

                            if (host.AddressList.Length > 0)
                            {
                                address = host.AddressList[0];
                            }
                        }

                        if (address != IPAddress.None)
                        {
                            scp = new DicomScp(address, ae.AETitle, ae.Port)
                            {
                                Timeout = Module.Timeout
                            };

                            new ForwardProcess(Module.Options, Module.ServerAE).Run(scp, forwardAgent);
                        }
                        else
                        {
                            string message = string.Format("[Forwarder] Could resolve host name ({0}) not found on server", ae.Address);

                            Logger.Global.SystemMessage(LogType.Error, message, Module.ServerAE);
                        }
                    }
                    else
                    {
                        string message = string.Format("[Forwarder] AE title ({0}) not found on server", destinationAE);

                        Logger.Global.SystemMessage(LogType.Warning, message, Module.ServerAE);
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Global.SystemMessage(LogType.Error, e.Message, Module.ServerAE);
            }
        }
示例#10
0
 public void InitializeDatabase()
 {
     _ConfigView  = new AeManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(Module.ServiceDirectory), null, Module.ServiceName);
     _AccessAgent = DataAccessFactory.GetInstance(_ConfigView).CreateDataAccessAgent <IAeManagementDataAccessAgent>();
 }
示例#11
0
        static void Main()
        {
            // Still want to let this application run with an expired license (as this is an enterprise level application), but in very a limited mode
            // For example, the user should be able to view the log
            //Support.SetLicense();
            //if (Support.KernelExpired)
            //   return;
            InitializeLicense();

            if (ProcessChecker.IsOnlyProcess(Shell.storageServerName))
            {
#if (LEADTOOLS_V20_OR_LATER)
                if (DemosGlobal.IsDotNet45OrLaterInstalled() == false)
                {
                    MessageBox.Show("To run this application, you must first install Microsoft .NET Framework 4.5 or later.",
                                    "Microsoft .NET Framework 4.5 or later Required",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return;
                }
#endif
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                PacsProduct.ProductName = DicomDemoSettingsManager.ProductNameStorageServer;

                bool ok;

                string exeName = Path.GetFileNameWithoutExtension(Application.ExecutablePath);

                if (Demos.DemosGlobal.Is64Process( ))
                {
                    exeName += "64";
                }
                else
                {
                    exeName += "32";
                }

                Mutex m = new Mutex(true, exeName, out ok);

#if !TUTORIAL_CUSTOM_DATABASE && !LEADTOOLS_V19_OR_LATER_MEDICAL_EXTERNAL_STORE
                CheckPacsConfigDemo();
#endif

                string globalPacsConfigPath = DicomDemoSettingsManager.GlobalPacsConfigFullFileName;
                if (File.Exists(globalPacsConfigPath))
                {
                    try
                    {
                        if (false == UpgradeConfigFiles())
                        {
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        string msg = string.Format("Upgrade Failed!\n\n{0}", ex.Message);
                        MessageBox.Show(msg, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }

                try
                {
                    string   message         = string.Empty;
                    string[] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameStorageServer };
                    bool     dbConfigured    = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out message);

#if TUTORIAL_CUSTOM_DATABASE
                    // When manually configuring the storage server to use a different database schema, the helper funciton 'IsDbComponentsConfigured'
                    // will incorrectly detect that the database has not been configured.  In this case, set 'dbConfigured' to true.
                    // For more details, see the "Changing the LEAD Medical Storage Server to use a different database schema" tutorial.
                    dbConfigured = true;
#endif

                    if (!dbConfigured &&
                        !RequestUserToConfigureDbSucess(message))
                    {
                        return;
                    }


#if !TUTORIAL_CUSTOM_DATABASE
                    if (!GlobalPacsUpdater.IsProductDatabaseUpTodate(DicomDemoSettingsManager.ProductNameStorageServer) &&
                        !RequestUserToUpgradeDbSucess( ))
                    {
                        return;
                    }
#endif

                    IOptionsDataAccessAgent            optionsAgent;
                    System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

                    if (!ok)
                    {
                        return;
                    }

                    optionsAgent = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IOptionsDataAccessAgent>();
                    DataAccessServices.RegisterDataAccessService <IOptionsDataAccessAgent>(optionsAgent);

                    if (Login(string.Empty, false))
                    {
//#if !DEBUG
                        SplashForm.ShowSplash();
// #endif
                        Shell shell = new Shell( );

                        shell.Run( );
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("The program failed to run with the following error:\n\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
#if LEADTOOLS_V19_OR_LATER
                    ProducerConsumerQueue.Instance.Shutdown(true);
#endif
                    m.Close( );
                }
            }
        }
示例#12
0
        static bool SilentConfigure()
        {
            bool success = true;

            try
            {
                if (_commandLineOptions.DatabaseType == DatabaseTypeEnum.New)
                {
                    DicomStorageServerSqlInstaller.InstallDatabase(_commandLineOptions.GetConnectionString());
                }

                MainForm.ConfigMachine           = MainForm.GetConfiguration();
                MainForm.GlobalPacsAlreadyExists = MainForm.VerifyAlreadyExistGlobalPacsConfig();
                MainForm.ConfigGlobalPacs        = DicomDemoSettingsManager.GetGlobalPacsConfiguration();
                MainForm.ConfigSource            = MainForm.GetConfigurationSource();

                if (MainForm.ConfigGlobalPacs != null)
                {
                    GlobalPacsUpdater.BackupFile(MainForm.ConfigGlobalPacs.FilePath);
                }

                List <ConnectionStringSettings> connectionStringSettingList = new List <ConnectionStringSettings>();

                ConnectionStringSettings storageServerConnectionStringSetting =
                    new ConnectionStringSettings(_commandLineOptions.DatabaseName, _commandLineOptions.GetConnectionString(), ConnectionProviders.SqlServerProvider.Name);
                connectionStringSettingList.Add(storageServerConnectionStringSetting);
                MainForm.StoreConnectionStringsCommandLine(connectionStringSettingList);

                MainForm.RegisterConfigSectionsCommandLine();

                if (_commandLineOptions.DatabaseType == DatabaseTypeEnum.Existing)
                {
                    // Get DICOM listening service name from options database table
                    // Update globalpacs.config to include service name for each DataAccesLayer entry

                    AddDicomServiceNameToGlobalPacsConfig();
                }

                if (_commandLineOptions.DatabaseType == DatabaseTypeEnum.New)
                {
                    //if (databaseOptions1.WorklistDbSelected)
                    //{
                    //   // FillModalityWorklistDummyData ( ) ;
                    //}

                    //if (databaseOptions1.UserManagementDbSelected)
                    //{
                    //   InsertWorkstationUser();
                    //}
                }

                if (_commandLineOptions.DatabaseType == DatabaseTypeEnum.New)
                {
                    bool storageServerDbSelected = true;
                    if (storageServerDbSelected)
                    {
                        MainForm.InsertStorageServerUser(_commandLineOptions.DicomServerUsername, _commandLineOptions.DicomServerPassword);

                        if (Program.IsToolkitDemo == true)
                        {
                            // Program.AddDefaultImages(MainForm.ConfigGlobalPacs);
                        }
                        MainForm.AddDefaultIodClasses();
                    }
                }
            }
            catch (Exception ex)
            {
                success = false;
                MyShowError(ex.Message);
            }
            return(success);
        }
示例#13
0
        public static bool AddDicomServiceNameToGlobalPacsConfig()
        {
            bool success = true;

            try
            {
                OptionsDataAccessConfigurationView optionsConfigView = new OptionsDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null);
                IOptionsDataAccessAgent            optionsAgent      = DataAccessFactory.GetInstance(optionsConfigView).CreateDataAccessAgent <IOptionsDataAccessAgent>();
                if (optionsAgent != null)
                {
                    StorageServerInformation serverInfo = null;
                    string name = typeof(StorageServerInformation).Name;

                    if (optionsAgent.OptionExits(name))
                    {
                        serverInfo = optionsAgent.Get <StorageServerInformation>(name, null, new Type[0]);
                        if (serverInfo != null && !string.IsNullOrEmpty(serverInfo.ServiceName))
                        {
                            GlobalPacsUpdater.ModifyGlobalPacsConfiguration(DicomDemoSettingsManager.ProductNameStorageServer, serverInfo.ServiceName, GlobalPacsUpdater.ModifyConfigurationType.Add);
                        }
                    }
                }
            }
            catch (Exception)
            {
                success = false;
            }
            return(success);
        }
示例#14
0
        public void Configure(DicomServer server)
        {
            ServiceDirectory = server.ServerDirectory;
            DisplayName      = server.Name;

            try
            {
                AeManagementDataAccessConfigurationView configView = new AeManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(server.ServerDirectory), null, server.Name);
                IAeManagementDataAccessAgent            aeAgent    = DataAccessFactory.GetInstance(configView).CreateDataAccessAgent <IAeManagementDataAccessAgent>();

                ServiceLocator.Register <IAETitle>(new AeTitle(aeAgent));
            }
            catch (Exception e)
            {
                Logger.Global.Exception("AE Configuration", e);
            }
        }
        static int Main(string[] args)
        {
            if (!DicomDemoSettingsManager.Is64Process())
            {
                _demoName = "LEADTOOLS PACS Configuration Demo  (32 bit)";
            }
            else
            {
                _demoName = "LEADTOOLS PACS Configuration Demo  (64 bit)";
            }

            if (DemosGlobal.MustRestartElevated())
            {
                DemosGlobal.TryRestartElevated(args);
                return(0);
            }

            ReadCommandLine(args);
            MySettings mySettings = new MySettings();

            if (_bInitialize)
            {
#if !FOR_DOTNET4
                if (false == DemosGlobal.IsDotNet35Installed())
                {
                    return(0);
                }
#endif

                MyUtils.RemoveConfigurationFiles();
                MyUtils.RemoveGlobalPacsConfig();
                mySettings.Save();
                return(0);
            }

            bool showUI = !_bUninstall && !_bInitialize;

#if !FOR_DOTNET4
            bool dotNet35Installed = DemosGlobal.IsDotNet35Installed();
            if (showUI && !dotNet35Installed)
            {
                Messager.ShowWarning(null, ".NET Framework 3.5 could not be found on this machine.\n\nPlease install the .NET Framework 3.5 runtime and try again. This program will now exit.");
            }
            if (!dotNet35Installed)
            {
                return(0);
            }
#endif

            mySettings.Load();

#if LEADTOOLS_V19_OR_LATER
            if (showUI)
            {
                if (!Support.SetLicense())
                {
                    return(-1);
                }
            }
#endif

            // If calling with the /uninstall flag, do not display the nag message
            if (_bUninstall == false)
            {
                if (RasterSupport.KernelExpired)
                {
                    return(-1);
                }
            }

#if LEADTOOLS_V175_OR_LATER
            if (showUI)
            {
                if (RasterSupport.IsLocked(RasterSupportType.DicomCommunication))
                {
                    MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.DicomCommunication.ToString()), "Warning");
                    return(-1);
                }
            }
#else
            if (RasterSupport.IsLocked(RasterSupportType.MedicalNet))
            {
                MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.MedicalNet.ToString()), "Warning");
                return(-1);
            }

            if (RasterSupport.IsLocked(RasterSupportType.MedicalServer))
            {
                MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.MedicalServer.ToString()), "Warning");
                return(-1);
            }
#endif

            //_admin = new ServiceAdministrator(_baseDir);
            //_admin.Unlock(Support.MedicalServerKey);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

#if (LEADTOOLS_V20_OR_LATER)
            if (DemosGlobal.IsDotNet45OrLaterInstalled() == false)
            {
                MessageBox.Show("To run this application, you must first install Microsoft .NET Framework 4.5 or later.",
                                "Microsoft .NET Framework 4.5 or later Required",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
                return(-1);
            }
#endif

            //Utils.EngineStartup();
            DicomEngine.Startup();

            if (_bUninstall)
            {
                try
                {
                    using (ServiceAdministrator serviceAdmin = CreateServiceAdministrator())
                    {
                        MyUtils.UninstallAllDicomServersSilent(serviceAdmin);
                        MyUtils.RemoveConfigurationFiles();
                    }
                }
                catch (Exception)
                {
                }
            }
            else
            {
                string       missingDbComponents;
                DialogResult result = DialogResult.Yes;
                Messager.Caption = _demoName;
                string platform = "32-bit";
                if (DicomDemoSettingsManager.Is64Process())
                {
                    platform = "64-bit";
                }

                string [] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameDemoServer, DicomDemoSettingsManager.ProductNameWorkstation, DicomDemoSettingsManager.ProductNameStorageServer };

                bool isDbConfigured = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out missingDbComponents);
                if (!isDbConfigured) // databases not configured
                {
                    string message = "The following databases are not configured:\n\n{0}\nRun the {1} CSPacsDatabaseConfigurationDemo to configure the missing databases then run this demo again.\n\nDo you want to run the {2} CSPacsDatabaseConfigurationDemo wizard now?";
                    message = string.Format(message, missingDbComponents, platform, platform);

                    result = Messager.ShowQuestion(null, message, MessageBoxButtons.YesNo);
                    if (DialogResult.Yes == result)
                    {
                        RunDatabaseConfigurationDemo();
                    }
                }

                mySettings._settings.FirstRun = false;
                mySettings.Save();

                // Add event handler for handling UI thread exceptions to the event
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

                // Set the unhandled exception mode to force all Windows Forms errors to go through our handler.
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

                // Add the event handler for handling non-UI thread exceptions to the event.
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                try
                {
                    Application.Run(new MainForm());
                }
                catch (FileNotFoundException ex)
                {
                    MessageBox.Show("File not found exception.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            DicomEngine.Shutdown();
            return(0);
        }
示例#16
0
 public string GetSettingsFilename()
 {
     return(DicomDemoSettingsManager.GetSettingsFilename("CSPrintToPacsDemo"));
 }
示例#17
0
        private void LoadSettings( )
        {
            _mySettings = DicomDemoSettingsManager.LoadSettings(_demoName);
            if (_mySettings == null)
            {
                _mySettings          = new DicomDemoSettings();
                _mySettings.FirstRun = false;
                DicomDemoSettingsManager.SaveSettings(_demoName, _mySettings);
            }

            RegistryKey user     = Registry.CurrentUser;
            RegistryKey settings = user.OpenSubKey(_settingsLocation, true);

            if (settings == null)
            {
                //
                // We haven't saved any setting yet.  Will use the default
                //  settings.
                return;
            }

            _useTls = Convert.ToBoolean(settings.GetValue("UseTls", false));

            if (_useTls)
            {
                if (Utils.VerifyOpensslVersion(this) == false)
                {
                    _useTls = false;
                }
            }

            server.AETitle = Convert.ToString(settings.GetValue("ServerAE"));
            server.Port    = Convert.ToInt32(settings.GetValue("ServerPort", 104));
            string sValue = Convert.ToString(settings.GetValue("ServerIpType"));

            if (string.IsNullOrEmpty(sValue))
            {
                server.IpType = DicomNetIpTypeFlags.Ipv4;
            }
            else
            {
                server.IpType = (DicomNetIpTypeFlags)DemosGlobal.StringToEnum(typeof(DicomNetIpTypeFlags), sValue);
            }
            _ipType        = server.IpType;
            server.Address = IPAddress.Parse(Convert.ToString(settings.GetValue("ServerAddress", "127.0.0.1")));
            server.Timeout = Convert.ToInt32(settings.GetValue("ServerTimeout", 0));

            AETitle                 = Convert.ToString(settings.GetValue("ClientAE"));
            disableLogging          = Convert.ToBoolean(settings.GetValue("DisableLogging"));
            GroupLengthDataElements = Convert.ToBoolean(settings.GetValue("GroupLengthDataElements", false));


            _presentationContextType = Convert.ToInt32(settings.GetValue("PresentationContextType"));
            _cstoreCompressionType   = (DicomImageCompressionType)Enum.Parse(typeof(DicomImageCompressionType), Convert.ToString(settings.GetValue("Compression")));

            if (cstore != null)
            {
                cstore.PresentationContextType = _presentationContextType;
                cstore.Compression             = _cstoreCompressionType;
            }
        }
示例#18
0
        public void Initialize(AdvancedSettings advancedSettings, ServerSettings Settings, string ServerDirectory)
        {
            _AdvancedSettings = advancedSettings;
            _Settings         = Settings;

            if (!DataAccessServices.IsDataAccessServiceRegistered <IAeManagementDataAccessAgent>())
            {
                _AccessAgent = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(ServerDirectory), null, Settings.ServiceName)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();

                DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(_AccessAgent);
            }

            _ConfigureDialog = new ConfigureDialog();
            _Presenter       = new ForwardManagerPresenter();
            _Presenter.RunView(_ConfigureDialog.View, _AdvancedSettings);
        }
示例#19
0
        void UsersAccounts_EditUserPermissions(object sender, EditUserPermissionsEventArgs e)
        {
            PermissionsDialog permissionDialog         = new PermissionsDialog();
            IPermissionManagementDataAccessAgent agent = DataAccessFactory.GetInstance(new PermissionManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IPermissionManagementDataAccessAgent>();

            Permission[] permissions = agent.GetPermissions();

            permissionDialog.Username = e.Username;
            permissionDialog.SetPermissions(permissions, e.Permissions);
            permissionDialog.SetRoles(RoleManager.GetAllRoles(), RoleManager.GetUserRoles(e.Username));
            if (permissionDialog.ShowDialog() == DialogResult.OK)
            {
                View.UsersAccounts.SetUserPermissions(permissionDialog.SelectedPermissions);
                RoleManager.SetUserRoles(e.Username, permissionDialog.Roles);
                View_SettingsChanged(sender, e);
            }
        }
示例#20
0
 static RoleManager()
 {
     _BuiltInRoles.Add(Admin);
     permissionsAgent = GetDataAccess <IPermissionManagementDataAccessAgent2>(new PermissionManagementDataAccessConfigurationView(DicomDemoSettingsManager.GetGlobalPacsConfiguration(), DicomDemoSettingsManager.ProductNameStorageServer, null));
 }
示例#21
0
        internal static void RegisterServices(string serviceName)
        {
            if (!DataAccessServices.IsDataAccessServiceRegistered <IMediaCreationDataAccessAgent> ( ))
            {
                IMediaCreationDataAccessAgent mediaCreationService;

                System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

                mediaCreationService = DataAccessFactory.GetInstance(new MediaCreationDataAccessConfigurationView(configuration, null, serviceName)).CreateDataAccessAgent <IMediaCreationDataAccessAgent> ( );

                DataAccessServices.RegisterDataAccessService <IMediaCreationDataAccessAgent> (mediaCreationService);
            }

            IStorageDataAccessAgent storageService;

            if (!DataAccessServices.IsDataAccessServiceRegistered <IStorageDataAccessAgent> ( ))
            {
                System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

                storageService = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView(configuration, null, serviceName)).CreateDataAccessAgent <IStorageDataAccessAgent>();

                DataAccessServices.RegisterDataAccessService <IStorageDataAccessAgent> (storageService);
            }
            else
            {
                storageService = DataAccessServices.GetDataAccessService <IStorageDataAccessAgent> ( );
            }

            if (!CommandRequestValidationManager.IsRegistered <CommandRequestDataSetValidator> ( ))
            {
                CommandRequestValidationManager.AddValidator(new CommandRequestDataSetValidator( ));
            }

            if (!CommandRequestValidationManager.IsRegistered <MediaCreationReferencedSopsValidator> ( ))
            {
                MediaCreationReferencedSopsValidator validator = new MediaCreationReferencedSopsValidator(storageService);


                validator.Enabled = AddInConfiguration.ValidateReferencedSopInstances;

                CommandRequestValidationManager.AddValidator(validator);
            }

            if (!DicomCommandFactory.IsCommandServiceRegistered(typeof(MediaNCreateCommand)))
            {
                DicomCommandFactory.RegisterCommandInitializationService(typeof(MediaNCreateCommand),
                                                                         new MediaNCreateCommandInitializationService( ));
            }

            if (!ServiceLocator.IsRegistered <MediaServicesState> ( ))
            {
                MediaServicesState servicesState;


                servicesState = new MediaServicesState( );

                servicesState.AutoCreationServiceEnabled     = MediaAutoCreationConfiguration.EnableAutoMediaCreation;
                servicesState.MediaMaintenanceServiceEnabled = MaintenanceConfiguration.Enabled;

                servicesState.AutoCreationServiceStateChanged     += new EventHandler(servicesState_AutoCreationServiceStateChanged);
                servicesState.MediaMaintenanceServiceStateChanged += new EventHandler(servicesState_MediaMaintenanceServiceStateChanged);

                ServiceLocator.Register <MediaServicesState> (servicesState);
            }

            if (!ServiceLocator.IsRegistered <SettingsChangedNotifier> ( ))
            {
                SettingsChangedNotifier configChangedNotifier = new SettingsChangedNotifier(_settings);

                configChangedNotifier.SettingsChanged += new EventHandler(configChangedNotifier_SettingsChanged);

                configChangedNotifier.Enabled = true;

                ServiceLocator.Register <SettingsChangedNotifier> (configChangedNotifier);
            }
        }
示例#22
0
        public override void Load(string serviceDirectory, string displayName)
        {
            IForwardDataAccessAgent      forwardAgent;
            IAeManagementDataAccessAgent aeAgent;
            IStorageDataAccessAgent      storageAgent;
            AdvancedSettings             settings = AdvancedSettings.Open(serviceDirectory);

            RegisterServerEvents(settings);
            _serviceDirectory = serviceDirectory;

            DicomServer server = ServiceLocator.Retrieve <DicomServer>();

            ServiceName = server.Name;
            _Timeout    = server.ClientTimeout <= 0 ? 30 : server.ClientTimeout;

            try
            {
                Options = settings.GetAddInCustomData <ForwardOptions>(ForwardManagerPresenter._addinName, "ForwardOptions");
                if (Options == null)
                {
                    Options = new ForwardOptions();
                }
            }
            catch (Exception e)
            {
                if (Options == null)
                {
                    Options = new ForwardOptions();
                }

                Logger.Global.Error(Source, e.Message);
            }

            StorageConfigManager = new StorageModuleConfigurationManager(true);
            StorageConfigManager.Load(ServiceDirectory);
            System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(serviceDirectory);
            if (!DataAccessServices.IsDataAccessServiceRegistered <IForwardDataAccessAgent>())
            {
                forwardAgent = DataAccessFactory.GetInstance(new ForwardDataAccessConfigurationView(configuration, null, displayName)).CreateDataAccessAgent <IForwardDataAccessAgent>();
                DataAccessServices.RegisterDataAccessService <IForwardDataAccessAgent>(forwardAgent);
            }
            else
            {
                forwardAgent = DataAccessServices.GetDataAccessService <IForwardDataAccessAgent>();
            }

            if (!DataAccessServices.IsDataAccessServiceRegistered <IAeManagementDataAccessAgent>())
            {
                aeAgent = DataAccessFactory.GetInstance(new AeManagementDataAccessConfigurationView(configuration, null, displayName)).CreateDataAccessAgent <IAeManagementDataAccessAgent>();
                DataAccessServices.RegisterDataAccessService <IAeManagementDataAccessAgent>(aeAgent);
            }
            else
            {
                aeAgent = DataAccessServices.GetDataAccessService <IAeManagementDataAccessAgent>();
            }

            _aeManagementAgent = aeAgent;

            if (!DataAccessServices.IsDataAccessServiceRegistered <IStorageDataAccessAgent>())
            {
                storageAgent = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView(configuration, null, displayName)).CreateDataAccessAgent <IStorageDataAccessAgent>();
                DataAccessServices.RegisterDataAccessService <IStorageDataAccessAgent>(storageAgent);
            }
            else
            {
                storageAgent = DataAccessServices.GetDataAccessService <IStorageDataAccessAgent>();
            }

            JobManager          = new JobManager(Options, forwardAgent, aeAgent, storageAgent);
            JobManager.ServerAE = _ServerAE;
            if (IsLicenseValid())
            {
                JobManager.Start();
            }
        }
        private void ConfigureServerInfoConrol(ServerInformationControl serverInfoControl)
        {
            ConnectionStringSettings logging;
            ConnectionStringSettings storage;
            ConnectionStringSettings options;
            ConnectionStringSettings userManagement;
            ConnectionStringSettings userPermissions;
            ConnectionStringSettings aeManagement;
            ConnectionStringSettings aePermissions;
            ConnectionStringSettings forwarding;

            System.Configuration.Configuration configPacs = DicomDemoSettingsManager.GetGlobalPacsConfiguration();

            // Machine.config file
            System.Configuration.Configuration configMachine = ConfigurationManager.OpenMachineConfiguration();

#if TUTORIAL_CUSTOM_DATABASE
            // To use a custom database schema with the Database Manager, you must define a connection string in the 'globalPacs.config' for your database.
            // You must use your 'MyStorageDataAccessConfigurationView' class to retrieve the connection string.
            // For more details, see the "Changing the LEAD Medical Storage Server to use a different database schema" tutorial.

            storage = GetConnectionString(configPacs, configMachine, new MyStorageDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
#else
            storage = GetConnectionString(configPacs, configMachine, new StorageDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
#endif
            logging         = GetConnectionString(configPacs, configMachine, new LoggingDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
            options         = GetConnectionString(configPacs, configMachine, new OptionsDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
            userManagement  = GetConnectionString(configPacs, configMachine, new UserManagementDataAccessConfigurationView(configPacs, ProductName, null).DataAccessSettingsSectionName);
            userPermissions = GetConnectionString(configPacs, configMachine, new PermissionManagementDataAccessConfigurationView(configPacs, ProductName, null).DataAccessSettingsSectionName);
            aeManagement    = GetConnectionString(configPacs, configMachine, new AeManagementDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
            aePermissions   = GetConnectionString(configPacs, configMachine, new AePermissionManagementDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);
            forwarding      = GetConnectionString(configPacs, configMachine, new ForwardDataAccessConfigurationView(configPacs, PacsProduct.ProductName, null).DataAccessSettingsSectionName);


            Dictionary <string, string> connections = new Dictionary <string, string>();
            string storageDatabaseName = "Storage Database";
            connections.Add(storageDatabaseName, storage.ConnectionString);
            connections.Add("Logging Database", logging.ConnectionString);
            connections.Add("Server Configuration Database", options.ConnectionString);
            connections.Add("User Management Database", userManagement.ConnectionString);
            connections.Add("User Permissions Database", userPermissions.ConnectionString);
            connections.Add("Client Management Database", aeManagement.ConnectionString);
            connections.Add("Client Permissions Database", aePermissions.ConnectionString);
            connections.Add("Forwarding Database", forwarding.ConnectionString);

            serverInfoControl.SqlDatabaseList                      = connections;
            serverInfoControl.StorageDatabaseName                  = storageDatabaseName;
            serverInfoControl.MaximumClientConnectionCount         = ServerState.Instance.ServerService == null?5:ServerState.Instance.ServerService.Settings.MaxClients;
            serverInfoControl.RequestCurrentClientConnectionCount += new EventHandler <CurrentClientConnectionCountEventArgs>(serverInfoControl_RequestCurrentClientConnectionCount);
            serverInfoControl.ServiceName      = ServerState.Instance.ServerService == null ? string.Empty : ServerState.Instance.ServiceName;
            _serverInfoControl                 = serverInfoControl;
            _serverInfoControl.HideUserDetails = Program.ShouldHideUserDetails();

            if (ServerState.Instance.ServerService != null)
            {
                ServerState.Instance.ServerService.Message      += new EventHandler <Leadtools.Dicom.Server.Admin.MessageEventArgs>(ServerService_Message);
                ServerState.Instance.ServerService.StatusChange += new EventHandler(ServerService_StatusChange);
                if (ServerState.Instance.ServerService.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    _serverInfoControl.SetStartTime();
                }
            }

            ServerState.Instance.ServerServiceChanged += new EventHandler(Instance_ServerServiceChanged);
            EventBroker.Instance.Subscribe <ServerSettingsAppliedEventArgs>(new EventHandler <ServerSettingsAppliedEventArgs>(OnSettingsChanged));
        }
示例#24
0
        public MyAppSettings( )
        {
            ConfigureStorageServer    = true;
            ConfigureWorklistServer   = true;
            ConfigureDemoServer       = true;
            ConfigureWSServer         = true;
            ConfigureMainClient       = true;
            ConfigureWSClient         = true;
            ResetClientConfigurations = true;
            ShowHelpOnStart           = true;
            FirstRun = true;

#if LEADTOOLS_V175_OR_LATER
            InstallBrokerHost = true;
#endif

            if (!DicomDemoSettingsManager.Is64Process())
            {
#if LTV17_CONFIG
                ServerAE   = "L17_SERVER_32";
                ServerPort = 204;
                ClientAE   = "L17_CLIENT_32";
                ClientPort = 1000;

                WsServerAE   = "L17_WS_SERVER_32";
                WsServerPort = 205;
                WsClientAE   = "L17_WS_CLIENT_32";
                WsClientPort = 1001;

                RoutingServerAE   = "L17_ROUTER_32";
                RoutingServerPort = 206;
#elif LTV175_CONFIG
                ServerAE   = "L175_SERVER32";
                ServerPort = 304;
                ClientAE   = "L175_CLIENT32";
                ClientPort = 1000;

                StorageServerAE   = "L175_PACS_SCP32";
                StorageServerPort = 504;

                WorklistServerAE   = "L175_MWL_SCP32";
                WorklistServerPort = 604;

                WsServerAE   = "L175_WS_SERVER32";
                WsServerPort = 305;
                WsClientAE   = "L175_WS_CLIENT32";
                WsClientPort = 1001;

                //RoutingServerAE = "L175_ROUTER32";
                //RoutingServerPort = 306;
                BrokerHostPort = 8731;
#elif LTV18_CONFIG
                ServerAE   = "L18_SERVER32";
                ServerPort = 304;
                ClientAE   = "L18_CLIENT32";
                ClientPort = 1000;

                StorageServerAE   = "L18_PACS_SCP32";
                StorageServerPort = 504;

                WorklistServerAE   = "L18_MWL_SCP32";
                WorklistServerPort = 604;

                WsServerAE   = "L18_WS_SERVER32";
                WsServerPort = 305;
                WsClientAE   = "L18_WS_CLIENT32";
                WsClientPort = 1001;

                //RoutingServerAE = "L18_ROUTER32";
                //RoutingServerPort = 306;
                BrokerHostPort = 8731;
#elif LTV19_CONFIG
                ServerAE   = "L19_SERVER32";
                ServerPort = 324;
                ClientAE   = "L19_CLIENT32";
                ClientPort = 1020;

                StorageServerAE   = "L19_PACS_SCP32";
                StorageServerPort = 524;

                WorklistServerAE   = "L19_MWL_SCP32";
                WorklistServerPort = 624;

                WsServerAE   = "L19_WS_SERVER32";
                WsServerPort = 325;
                WsClientAE   = "L19_WS_CLIENT32";
                WsClientPort = 1021;

                //RoutingServerAE = "L19_ROUTER32";
                //RoutingServerPort = 306;
                BrokerHostPort = 8751;
#elif LTV20_CONFIG
                ServerAE   = "L20_SERVER32";
                ServerPort = 324;
                ClientAE   = "L20_CLIENT32";
                ClientPort = 1020;

                StorageServerAE   = "L20_PACS_SCP32";
                StorageServerPort = 524;

                WorklistServerAE   = "L20_MWL_SCP32";
                WorklistServerPort = 624;

                WsServerAE   = "L20_WS_SERVER32";
                WsServerPort = 325;
                WsClientAE   = "L20_WS_CLIENT32";
                WsClientPort = 1021;

                //RoutingServerAE = "L20_ROUTER32";
                //RoutingServerPort = 306;
                BrokerHostPort = 8751;
#endif
                StartServer         = true;
                StorageStartServer  = true;
                WsStartServer       = true;
                WorklistStartServer = true;
                // RoutingStartServer = true;
            }
            else
            {
#if LTV17_CONFIG
                ServerAE   = "L17_SERVER_64";
                ServerPort = 214;
                ClientAE   = "L17_CLIENT_64";
                ClientPort = 1010;

                WsServerAE   = "L17_WS_SERVER_64";
                WsServerPort = 215;
                WsClientAE   = "L17_WS_CLIENT_64";
                WsClientPort = 1011;

                RoutingServerAE   = "L17_ROUTER_64";
                RoutingServerPort = 216;
#elif LTV175_CONFIG
                ServerAE   = "L175_SERVER64";
                ServerPort = 314;
                ClientAE   = "L175_CLIENT64";
                ClientPort = 1010;

                StorageServerAE   = "L175_PACS_SCP64";
                StorageServerPort = 514;

                WorklistServerAE   = "L175_MWL_SCP_64";
                WorklistServerPort = 614;

                WsServerAE   = "L175_WS_SERVER64";
                WsServerPort = 315;
                WsClientAE   = "L175_WS_CLIENT64";
                WsClientPort = 1011;

                // RoutingServerAE = "L175_ROUTER64";
                // RoutingServerPort = 316;
#elif LTV18_CONFIG
                ServerAE   = "L18_SERVER64";
                ServerPort = 314;
                ClientAE   = "L18_CLIENT64";
                ClientPort = 1010;

                StorageServerAE   = "L18_PACS_SCP64";
                StorageServerPort = 514;

                WorklistServerAE   = "L18_MWL_SCP_64";
                WorklistServerPort = 614;

                WsServerAE   = "L18_WS_SERVER64";
                WsServerPort = 315;
                WsClientAE   = "L18_WS_CLIENT64";
                WsClientPort = 1011;

                // RoutingServerAE = "L18_ROUTER64";
                // RoutingServerPort = 316;
#elif LTV19_CONFIG
                ServerAE   = "L19_SERVER64";
                ServerPort = 334;
                ClientAE   = "L19_CLIENT64";
                ClientPort = 1030;

                StorageServerAE   = "L19_PACS_SCP64";
                StorageServerPort = 534;

                WorklistServerAE   = "L19_MWL_SCP_64";
                WorklistServerPort = 634;

                WsServerAE   = "L19_WS_SERVER64";
                WsServerPort = 335;
                WsClientAE   = "L19_WS_CLIENT64";
                WsClientPort = 1031;

                // RoutingServerAE = "L19_ROUTER64";
                // RoutingServerPort = 316;
                BrokerHostPort = 8761;
#elif LTV20_CONFIG
                ServerAE   = "L20_SERVER64";
                ServerPort = 334;
                ClientAE   = "L20_CLIENT64";
                ClientPort = 1030;

                StorageServerAE   = "L20_PACS_SCP64";
                StorageServerPort = 534;

                WorklistServerAE   = "L20_MWL_SCP64";
                WorklistServerPort = 634;

                WsServerAE   = "L20_WS_SERVER64";
                WsServerPort = 335;
                WsClientAE   = "L20_WS_CLIENT64";
                WsClientPort = 1031;

                // RoutingServerAE = "L20_ROUTER64";
                // RoutingServerPort = 316;
                BrokerHostPort = 8761;
#endif

                StartServer         = true;
                StorageStartServer  = true;
                WsStartServer       = true;
                WorklistStartServer = true;
                // RoutingStartServer = true;

#if LEADTOOLS_V175_OR_LATER
                BrokerHostPort = 8800;
#endif
            }
        }