Example #1
0
        protected virtual IEnumerable <IStorageLocation> TransformDataset
        (
            DicomDataset dataset,
            string mediaType,
            string instanceTransfer,
            int[] frameList = null
        )
        {
            var mediaProperties = new DicomMediaProperties(mediaType, instanceTransfer);
            var writerParams    = new DicomMediaWriterParameters( )
            {
                Dataset = dataset, MediaInfo = mediaProperties
            };
            var locationProvider = new MemoryStorageProvider( );


            if (null == frameList)
            {
                return(MediaWriterFactory.GetMediaWriter(mediaType).CreateMedia(writerParams, locationProvider));
            }
            else
            {
                return(MediaWriterFactory.GetMediaWriter(mediaType).CreateMedia(writerParams, locationProvider, frameList));
            }
        }
Example #2
0
        public virtual IEnumerable <ObjectRetrieveResult> FindSopInstances
        (
            IObjectId query,
            string mediaType,
            IEnumerable <string> transferSyntaxes,
            string defaultTransfer
        )
        {
            foreach (var transfer in transferSyntaxes)
            {
                string instanceTransfer = (transfer == AnyTransferSyntaxValue) ? defaultTransfer : transfer;

                var mediaProperties = new DicomMediaProperties(mediaType, instanceTransfer);
                var mediaID         = MediaFactory.Create(query, mediaProperties);
                var found           = false;

                foreach (IStorageLocation location in StorageService.EnumerateLocation(mediaID))
                {
                    found = true;

                    yield return(new ObjectRetrieveResult(location, transfer));
                }

                if (found)
                {
                    break;
                }
            }
        }
        public virtual IEnumerable <ObjectRetrieveResult> GetTransformedSopInstances
        (
            IObjectId query,
            string fromMediaType,
            string fromTransferSyntax,
            string toMediaType,
            string toTransferSyntax
        )
        {
            var fromMediaProp = new DicomMediaProperties(fromMediaType, fromTransferSyntax);
            var fromMediaID   = MediaFactory.Create(query, fromMediaProp);
            var frameList     = (null != query.Frame) ? new int[] { query.Frame.Value } : null;


            if (StorageService.Exists(fromMediaID))
            {
                foreach (IStorageLocation location in StorageService.EnumerateLocation(fromMediaID))
                {
                    fo.DicomFile defaultFile = fo.DicomFile.Open(location.GetReadStream( ));

                    foreach (var transformedLocation in  TransformDataset(defaultFile.Dataset, toMediaType, toTransferSyntax, frameList))
                    {
                        yield return(new ObjectRetrieveResult(transformedLocation, toTransferSyntax));
                    }
                }
            }
        }
Example #4
0
        public virtual bool ObjetInstanceExist(IObjectId objectId, string mediaType, string transferSyntax)
        {
            var mediaProperties = new DicomMediaProperties(mediaType, transferSyntax);
            var mediaID         = MediaFactory.Create(objectId, mediaProperties);


            return(StorageService.Exists(mediaID));
        }
Example #5
0
        protected virtual void CreateMedia
        (
            List <DicomMediaLocations> mediaLocations,
            DicomDataset storageDataset,
            DicomMediaProperties mediaInfo
        )
        {
            DicomMediaLocations mediaLocation;
            IDicomMediaWriter   writer;
            string transferSytax = (!string.IsNullOrWhiteSpace(mediaInfo.TransferSyntax)) ? mediaInfo.TransferSyntax : "";

            mediaLocation = new DicomMediaLocations( )
            {
                MediaType = mediaInfo.MediaType, TransferSyntax = transferSytax
            };
            writer = MediaFactory.GetMediaWriter(mediaInfo.MediaType);

            if (null != writer)
            {
                try
                {
                    IList <IStorageLocation> createdMedia = writer.CreateMedia(new DicomMediaWriterParameters( )
                    {
                        Dataset   = storageDataset,
                        MediaInfo = mediaInfo
                    });


                    mediaLocation.Locations = createdMedia.Select(media => new MediaLocationParts {
                        Parts = media.MediaId.GetIdParts( )
                    }).ToList( );

                    mediaLocations.Add(mediaLocation);
                }
                catch (Exception ex)
                {
                    Trace.TraceError("Error creating media: " + ex.ToString( ));

                    throw;
                }
            }
            else
            {
                //TODO: log something
                Trace.TraceWarning("Media writer not found for mediaType: " + mediaInfo);
            }
        }
Example #6
0
        protected virtual DicomDataset RetrieveDicomDataset(IObjectId objectId, DicomMediaProperties mediainfo)
        {
            IStorageLocation location;
            DicomFile        defaultFile;


            location = RetrieveSopInstance(objectId, mediainfo);

            if (location == null)
            {
                return(null);
            }

            defaultFile = DicomFile.Open(location.GetReadStream( ));

            return(defaultFile.Dataset);
        }
Example #7
0
        protected virtual IEnumerable <IStorageLocation> GetLocations(IObjectId request, DicomMediaProperties mediaInfo)
        {
            if (null != request.Frame)
            {
                List <IStorageLocation> result = new List <IStorageLocation> ( );


                result.Add(RetrieveService.RetrieveSopInstance(request, mediaInfo));

                return(result);
            }
            else
            {
                return(RetrieveService.RetrieveSopInstances(request, mediaInfo));
            }
        }
Example #8
0
 public virtual IEnumerable <IStorageLocation> RetrieveSopInstances(IObjectId query, DicomMediaProperties mediaInfo)
 {
     return(StorageService.EnumerateLocation(MediaFactory.Create(query, mediaInfo)));
 }
Example #9
0
 public virtual IStorageLocation RetrieveSopInstance(IObjectId query, DicomMediaProperties mediaInfo)
 {
     return(StorageService.GetLocation(MediaFactory.Create(query, mediaInfo)));
 }