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)); } }
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)); } } } }
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)); }
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); } }
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); }
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)); } }
public virtual IEnumerable <IStorageLocation> RetrieveSopInstances(IObjectId query, DicomMediaProperties mediaInfo) { return(StorageService.EnumerateLocation(MediaFactory.Create(query, mediaInfo))); }
public virtual IStorageLocation RetrieveSopInstance(IObjectId query, DicomMediaProperties mediaInfo) { return(StorageService.GetLocation(MediaFactory.Create(query, mediaInfo))); }