/// <summary>
        /// Reads all dicom files in a directory.
        /// </summary>
        /// <param name="directoryPath">The directory path.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The collection of DICOM files.</returns>
        /// <exception cref="ArgumentException">directoryPath</exception>
        protected IEnumerable <DicomFile> ReadDicomFiles(string directoryPath, QueueItemBase queueItemBase)
        {
            if (string.IsNullOrWhiteSpace(directoryPath))
            {
                throw new ArgumentException("The directory path is null or white space.", nameof(directoryPath));
            }

            return(ReadDicomFiles(EnumerateFiles(directoryPath, queueItemBase), queueItemBase));
        }
Exemple #2
0
 /// <summary>
 /// Shorthand for creating an association status log entry.
 /// </summary>
 /// <param name="associationStatus">Association status.</param>
 /// <param name="information">Freeform information about log item.</param>
 /// <param name="queueItemBase">Queue item base.</param>
 /// <param name="deleteQueueItem">Delete queue item.</param>
 /// <param name="downloadQueueItem">Download queue item.</param>
 /// <param name="downloadProgress">Download progress.</param>
 /// <param name="downloadError">Download error.</param>
 /// <param name="pushQueueItem">Push queue item.</param>
 /// <param name="uploadQueueItem">Upload queue item.</param>
 /// <param name="segmentationId">Segmentation id.</param>
 /// <param name="modelId">Model id.</param>
 /// <param name="destination">Destination.</param>
 /// <param name="path">Path.</param>
 /// <param name="failedDicomTags">String formatted list of failed DICOM tags.</param>
 /// <param name="dicomDataReceiverProgress">Receiver progress.</param>
 /// <returns>New LogEntry of type SegmentationStatus.</returns>
 public static LogEntry Create(
     AssociationStatus associationStatus,
     string information                  = null,
     QueueItemBase queueItemBase         = null,
     DeleteQueueItem deleteQueueItem     = null,
     DownloadQueueItem downloadQueueItem = null,
     int?downloadProgress                = null,
     string downloadError                = null,
     PushQueueItem pushQueueItem         = null,
     UploadQueueItem uploadQueueItem     = null,
     string segmentationId               = null,
     string modelId = null,
     (string ipAddress, string title, int port)?destination = null,
        /// <summary>
        /// Tries to open a dicom file and returns null if it fails.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The DICOM file or null.</returns>
        protected DicomFile TryOpenDicomFile(string filePath, QueueItemBase queueItemBase)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            try
            {
                return(DicomFile.Open(filePath));
            }
            catch (Exception e)
            {
                LogError(LogEntry.Create(AssociationStatus.BaseOpenDicomFileError,
                                         queueItemBase: queueItemBase,
                                         path: filePath),
                         e);
            }

            return(null);
        }
        /// <summary>
        /// Enumerates all files in a directory.
        /// </summary>
        /// <param name="directoryPath">The directory path.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The collection of file paths in a directory.</returns>
        protected IEnumerable <string> EnumerateFiles(string directoryPath, QueueItemBase queueItemBase)
        {
            if (string.IsNullOrWhiteSpace(directoryPath))
            {
                throw new ArgumentException("The directory path is null or white space.", nameof(directoryPath));
            }

            try
            {
                return(Directory.EnumerateFiles(directoryPath));
            }
            catch (Exception e)
            {
                LogError(LogEntry.Create(AssociationStatus.BaseEnumerateDirectoryError,
                                         queueItemBase: queueItemBase,
                                         path: directoryPath),
                         e);
            }

            return(new string[0]);
        }
        /// <summary>
        /// Tries to open a dicom file and returns null if it fails.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The DICOM file or null.</returns>
        protected DicomFile TryOpenDicomFile(string filePath, QueueItemBase queueItemBase)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            try
            {
                return(DicomFile.Open(filePath));
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception e)
#pragma warning restore CA1031 // Do not catch general exception types
            {
                LogError(LogEntry.Create(AssociationStatus.BaseOpenDicomFileError,
                                         queueItemBase: queueItemBase,
                                         path: filePath),
                         e);
            }

            return(null);
        }
        /// <summary>
        /// Enumerates all files in a directory.
        /// </summary>
        /// <param name="directoryPath">The directory path.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The collection of file paths in a directory.</returns>
        protected IEnumerable <string> EnumerateFiles(string directoryPath, QueueItemBase queueItemBase)
        {
            if (string.IsNullOrWhiteSpace(directoryPath))
            {
                throw new ArgumentException("The directory path is null or white space.", nameof(directoryPath));
            }

            try
            {
                return(Directory.EnumerateFiles(directoryPath));
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception e)
#pragma warning restore CA1031 // Do not catch general exception types
            {
                LogError(LogEntry.Create(AssociationStatus.BaseEnumerateDirectoryError,
                                         queueItemBase: queueItemBase,
                                         path: directoryPath),
                         e);
            }

            return(Array.Empty <string>());
        }
        /// <summary>
        /// Reads all the DICOM files from a collection of file paths.
        /// </summary>
        /// <param name="filePaths">The file paths.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The collection of DICOM files.</returns>
        protected IEnumerable <DicomFile> ReadDicomFiles(IEnumerable <string> filePaths, QueueItemBase queueItemBase)
        {
            filePaths = filePaths ?? throw new ArgumentNullException(nameof(filePaths));

            foreach (var filePath in filePaths)
            {
                var dicomFile = TryOpenDicomFile(filePath, queueItemBase);

                if (dicomFile != null)
                {
                    yield return(dicomFile);
                }
            }
        }
        /// <summary>
        /// Reads all the DICOM files from a collection of file paths.
        /// </summary>
        /// <param name="filePaths">The file paths.</param>
        /// <param name="queueItemBase">Queue item base.</param>
        /// <returns>The collection of DICOM files.</returns>
        protected IEnumerable <DicomFile> ReadDicomFiles(IEnumerable <string> filePaths, QueueItemBase queueItemBase)
        {
            foreach (var filePath in filePaths)
            {
                var dicomFile = TryOpenDicomFile(filePath, queueItemBase);

                if (dicomFile != null)
                {
                    yield return(dicomFile);
                }
            }
        }