示例#1
0
        private static void FillStoreCommandDefaultSettings(CStoreCommandConfiguration c, StorageAddInsConfiguration settings)
        {
            // Set the default store location

            c.DataSetStorageLocation = settings.StoreAddIn.StorageLocation;
            c.DicomFileExtension     = settings.StoreAddIn.StoreFileExtension;
#if LEADTOOLS_V19_OR_LATER
            // Set the default Hanging Protocol location
            c.HangingProtocolLocation = settings.StoreAddIn.HangingProtocolLocation;
#endif
            // Set the default Overwrite location
            c.OverwriteBackupLocation = settings.StoreAddIn.OverwriteBackupLocation;

            // Set the default Backup location

            // Set the default CStoreFailures location
            //string storeFailuresLocation = Path.Combine(storeLocation, "StoreFailures");
            //settings.StoreAddIn.CStoreFailuresPath = Path.Combine(storeFailuresLocation, serviceName);

            c.DirectoryStructure.CreatePatientFolder = settings.StoreAddIn.DirectoryStructure.CreatePatientFolder;
            c.DirectoryStructure.CreateSeriesFolder  = settings.StoreAddIn.DirectoryStructure.CreateSeriesFolder;
            c.DirectoryStructure.CreateStudyFolder   = settings.StoreAddIn.DirectoryStructure.CreateStudyFolder;
            c.DirectoryStructure.UsePatientName      = settings.StoreAddIn.DirectoryStructure.UsePatientName;
            c.DirectoryStructure.SplitPatientId      = settings.StoreAddIn.DirectoryStructure.SplitPatientId;
            c.SaveThumbnail = settings.StoreAddIn.CreateThumbnailImage;
        }
示例#2
0
        public virtual DicomDataSet GetDicomDataSet(DataRow instanceData, out string referencedFileLocation)
        {
            lock (_lockObject)
            {
                referencedFileLocation = string.Empty;
                DicomDataSet ds = RegisteredDataRows.InstanceInfo.LoadDicomDataSet(instanceData, Flags);
                if (CacheLocal)
                {
                    bool      exists = false;
                    Exception ex     = DefaultCrud.ExistsDicom(instanceData, out exists);
                    if (!exists)
                    {
                        StorageModuleConfigurationManager StorageConfigManager = new StorageModuleConfigurationManager(true);
                        StorageConfigManager.Load(ServiceDirectory);
                        StorageAddInsConfiguration storageSettings = StorageConfigManager.GetStorageAddInsSettings();

                        CStoreCommandConfiguration storeConfig = new CStoreCommandConfiguration();
                        storeConfig.DicomFileExtension = storageSettings.StoreAddIn.StoreFileExtension;
                        FillStoreCommandDefaultSettings(storeConfig, storageSettings);

                        string storageLocation   = CStoreCommand.GetStorageLocation(storeConfig, ds);
                        string sopInstanceUid    = RegisteredDataRows.InstanceInfo.GetElementValue(instanceData, DicomTag.SOPInstanceUID);
                        string dicomInstancePath = Path.Combine(storageLocation, sopInstanceUid + "." + storeConfig.DicomFileExtension);

                        ICrud crud = DefaultInstanceInfo.GetRetrieveCrud(instanceData);
                        if (crud != null)
                        {
                            ex = crud.RetrieveFile(instanceData, dicomInstancePath);
                            if (ex == null)
                            {
                                ExternalStoreAgent.SetReferencedFile(sopInstanceUid, dicomInstancePath);
                                referencedFileLocation = dicomInstancePath;
                            }
                        }
                    }
                }
                return(ds);
            }
        }
示例#3
0
        public void RunThread(IExternalStoreDataAccessAgent externalStoreAgent, IStorageDataAccessAgent storageAgent, DateRange range)
        {
            DicomUtilities.DebugString(DebugStringOptions.ShowCounter, "RestoreProcess.Run");

            lock (_restoreLock)
            {
                ExternalStoreInstance[] instances = externalStoreAgent.GetRestoreList(range);
                string message = string.Format("{0} {1} found to restore", instances.Length, "dataset(s)");
                MatchingParameterCollection mpc = new MatchingParameterCollection();

                Logger.Global.SystemMessage(LogType.Information, message, _serviceName);

                CStoreCommandConfiguration storeConfig = new CStoreCommandConfiguration();
                storeConfig.DicomFileExtension = _storageAddinsConfiguration.StoreAddIn.StoreFileExtension;
                FillStoreCommandDefaultSettings(storeConfig, _storageAddinsConfiguration);

                foreach (ExternalStoreInstance instance in instances)
                {
                    if (_cancelRestore)
                    {
                        _cancelRestore = false;
                        Logger.Global.SystemMessage(LogType.Information, "Cancelling Restore Process", _serviceName);
                        break;
                    }

                    MatchingParameterList mpl = new MatchingParameterList();

                    ICatalogEntity instanceEntity = RegisteredEntities.GetInstanceEntity(instance.SOPInstanceUID);
                    mpl.Add(instanceEntity);
                    mpc.Add(mpl);
                    try
                    {
                        DataSet ds = storageAgent.QueryCompositeInstances(mpc);

                        DataRow[] rows = ds.Tables[DataTableHelper.InstanceTableName].Select();
                        foreach (DataRow row in rows)
                        {
                            // Get the ICrud that the file was originally stored with
                            ICrud crud = DataAccessServiceLocator.Retrieve <ICrud>(instance.ExternalStoreGuid);
                            if (crud != null)
                            {
                                DicomDataSet dicomDataSet = null;
                                Exception    ex           = crud.RetrieveDicom(row, DicomDataSetLoadFlags.None, out dicomDataSet);
                                if (ex == null)
                                {
                                    string storageLocation   = CStoreCommand.GetStorageLocation(storeConfig, dicomDataSet);
                                    string dicomInstancePath = Path.Combine(storageLocation,
                                                                            instance.SOPInstanceUID) + "." + storeConfig.DicomFileExtension;

                                    ex = crud.RetrieveFile(row, dicomInstancePath);
                                    if (ex != null)
                                    {
                                        throw ex;
                                    }

                                    externalStoreAgent.SetReferencedFile(instance.SOPInstanceUID, dicomInstancePath);
                                    Logger.Global.SystemMessage(LogType.Information, string.Format("File Restored: {0} ", dicomInstancePath), _serviceName);
                                }
                            }
                            else
                            {
                                Logger.Global.SystemMessage(LogType.Information, string.Format("Error:  File Not Restored -- Store Token: {0}.  The Addin that for ExternalStoreGuid '{1}' cannot be found.", instance.StoreToken, instance.ExternalStoreGuid), _serviceName);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        message = string.Format("Error ({0}) restoring instance: {1}", e.Message, instance.SOPInstanceUID);
                        Logger.Global.SystemMessage(LogType.Error, message, _serviceName);
                    }
                    finally
                    {
                        mpc.Clear();
                    }
                }
            }
        }
示例#4
0
        private static void FillStoreCommandDefualtSettings(StorageAddInsConfiguration settings, string serviceName)
        {
            CStoreCommandConfiguration defaultStoreConfiguration;


            defaultStoreConfiguration = new CStoreCommandConfiguration();

            //// Default the TifJ2K
            //// This is for the ImagePyramid and automatic generation of instance.json files on store
            //// This speeds access to image in the HTML5 Medical Web Viewer
            //SaveImageFormat defaultFormat = new SaveImageFormat
            //                                   {
            //                                      Format = RasterImageFormat.TifJ2k,
            //                                      Width = 0,
            //                                      Height = 0,
            //                                      QualityFactor = 2
            //                                   };
            //defaultStoreConfiguration.OtherImageFormat.Add(defaultFormat);

            // Set the default store location
            settings.StoreAddIn.StorageLocation = Path.Combine(defaultStoreConfiguration.DataSetStorageLocation, serviceName);
#if (LEADTOOLS_V19_OR_LATER)
            settings.StoreAddIn.HangingProtocolLocation = Path.Combine(defaultStoreConfiguration.HangingProtocolLocation, serviceName);
#endif
            settings.StoreAddIn.StoreFileExtension = defaultStoreConfiguration.DicomFileExtension;

            // Set the default Overwrite location
            settings.StoreAddIn.OverwriteBackupLocation = Path.Combine(defaultStoreConfiguration.OverwriteBackupLocation, serviceName);

            // Set the default Backup location
            string storeLocation        = GetCommonDocumentsFolder();
            string deleteBackupLocation = Path.Combine(storeLocation, "Backup");
            settings.StoreAddIn.DeleteBackupLocation = Path.Combine(deleteBackupLocation, serviceName);

            // Set the default CStoreFailures location
            string storeFailuresLocation = Path.Combine(storeLocation, "StoreFailures");
            settings.StoreAddIn.CStoreFailuresPath = Path.Combine(storeFailuresLocation, serviceName);

            settings.StoreAddIn.DirectoryStructure.CreatePatientFolder = defaultStoreConfiguration.DirectoryStructure.CreatePatientFolder;
            settings.StoreAddIn.DirectoryStructure.CreateSeriesFolder  = defaultStoreConfiguration.DirectoryStructure.CreateSeriesFolder;
            settings.StoreAddIn.DirectoryStructure.CreateStudyFolder   = defaultStoreConfiguration.DirectoryStructure.CreateStudyFolder;
            settings.StoreAddIn.DirectoryStructure.UsePatientName      = defaultStoreConfiguration.DirectoryStructure.UsePatientName;
            settings.StoreAddIn.DirectoryStructure.SplitPatientId      = defaultStoreConfiguration.DirectoryStructure.SplitPatientId;

            foreach (SaveImageFormat imageFormat in defaultStoreConfiguration.OtherImageFormat)
            {
                SaveImageFormatElement saveImageElement;


                saveImageElement = new SaveImageFormatElement( );

                saveImageElement = GetImageFormatElement(imageFormat);

                settings.StoreAddIn.ImagesFormat.Add(saveImageElement);
            }

            settings.StoreAddIn.CreateThumbnailImage = defaultStoreConfiguration.SaveThumbnail;

            if (defaultStoreConfiguration.SaveThumbnail)
            {
                settings.StoreAddIn.ThumbnailFormat = GetImageFormatElement(defaultStoreConfiguration.ThumbnailFormat);
            }
        }