private List <SeriesInformation> GetSeriesForLoading(string dicomDirFile) { List <SeriesInformation> seriesInfo; DicomDirQueryClient client; DicomDataSet[] seriesDataSets; seriesInfo = new List <SeriesInformation> ( ); client = new DicomDirQueryClient(dicomDirFile); seriesDataSets = client.FindSeries(new FindQuery( )); foreach (DicomDataSet sereisDs in seriesDataSets) { SeriesInformation series; series = new SeriesInformation(sereisDs.GetValue <string> (DicomTag.PatientID, string.Empty), sereisDs.GetValue <string> (DicomTag.StudyInstanceUID, string.Empty), sereisDs.GetValue <string> (DicomTag.SeriesInstanceUID, string.Empty), sereisDs.GetValue <string> (DicomTag.SeriesDescription, string.Empty)); seriesInfo.Add(series); sereisDs.Dispose( ); } return(seriesInfo); }
public LkDicomViewer() { InitializeComponent(); seriesInformation = new SeriesInformation(); imageBox.Parent = this; imageBox.MouseDown += Move_OnMouseDown; imageBox.MouseMove += Move_OnMouseMove; imageBox.MouseUp += Move_OnMouseUp; }
private SeriesInformation GetSeriesInformation(StudyInformation studyInfo, ClientQueryDataSet.SeriesRow series) { string patientID = studyInfo.PatientID; string studyInstanceUID = studyInfo.StudyInstanceUID; string seriesInstanceUID = series.SeriesInstanceUID; string seriesDescription = series.IsSeriesDescriptionNull( ) ? string.Empty : series.SeriesDescription; SeriesInformation seriesInfo = new SeriesInformation(patientID, studyInstanceUID, seriesInstanceUID, seriesDescription); seriesInfo.Modality = series.IsModalityNull( ) ? string.Empty : series.Modality; seriesInfo.NumberOfSeriesRelatedInstances = series.IsFrameCountNull( ) ? string.Empty : series.FrameCount; seriesInfo.SeriesDate = series.IsSeriesDateNull( ) ? string.Empty : series.SeriesDate; seriesInfo.SeriesNumber = series.IsSeriesNumberNull( ) ? string.Empty : series.SeriesNumber; seriesInfo.SeriesTime = series.IsSeriesTimeNull( ) ? string.Empty : series.SeriesTime; return(seriesInfo); }
private static void FillSeriesThumbnail(LoadSeriesEventArgs e, SeriesInformation seriesInfo) { if (e.LoadedSeries.Streamer.SeriesCells.Length > 0) { MedicalViewerMultiCell cell = e.LoadedSeries.Streamer.SeriesCells[0]; if (cell.VirtualImage != null) { if (cell.VirtualImage[cell.ActiveSubCell].ImageExist) { using (RasterImage image = cell.VirtualImage[cell.ActiveSubCell].Image.Clone()) { Image thumbImage; if (image.Width != 64 || image.Height != 64) { SizeCommand sizeCommand; sizeCommand = new SizeCommand(64, 64, RasterSizeFlags.None); sizeCommand.Run(image); } if (image.BitsPerPixel != 24) { ColorResolutionCommand colorRes = new ColorResolutionCommand(ColorResolutionCommandMode.InPlace, 24, RasterByteOrder.Bgr, RasterDitheringMethod.None, ColorResolutionCommandPaletteFlags.FastMatch, null); colorRes.Run(image); } thumbImage = RasterImageConverter.ConvertToImage(image, ConvertToImageOptions.InitAlpha); seriesInfo.Thumbnail = thumbImage; } } } } }
public SeriesInformation GetSeriesInfo(int?id = null, string seriesName = null) { SeriesInformation sInfo = new SeriesInformation(); Series theData = null; if (id.HasValue) { theData = database.Serieses .FirstOrDefault(s => s.SeriesID == id); } else if ((seriesName ?? "").Any()) { theData = database.Serieses .FirstOrDefault(s => s.Name == seriesName); } if (theData != null) { sInfo.SeriesID = theData.SeriesID; sInfo.Name = theData.Name; sInfo.Category = theData.Category.Name; sInfo.FeaturedImageFile = theData.FeaturedImageForSize("l16to9"); sInfo.Images = theData.ImageListForSize("m16to9", 3).Select(i => (ImageComboItem)i).ToList(); sInfo.Options = new Dictionary <string, IEnumerable <string> >(); sInfo.Details = new Dictionary <string, IEnumerable <string> >(); foreach (var attr in theData.SeriesOptionAttributes.Select(soa => soa.Attribute).Distinct()) { if (string.Compare(attr.Name, "Pull Options - Style", true) == 0) { sInfo.PullImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.FeaturedPull == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (string.Compare(attr.Name, "Edge Options - Profile", true) == 0) { sInfo.EdgeImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.FeaturedEdge == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (string.Compare(attr.Name, "Finish", true) == 0) { sInfo.FinishImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .OrderBy(soa => soa.ValueID) .Take(5) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.FeaturedFinish == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .ToList(); } else if (string.Compare(attr.Name, "Control Mechanism", true) == 0) { sInfo.ControlMechanisms = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.ControlMechanism == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (string.Compare(attr.Name, "Base Options", true) == 0) { sInfo.TableBaseImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.TableBase == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (string.Compare(attr.Name, "Shape", true) == 0) { sInfo.TableShapeImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.TableShape == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (string.Compare(attr.Name, "Desk Layouts", true) == 0) { sInfo.DeskLayoutImages = theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(soa => new { Name = soa.AttributeOption.Name, Img = database.ImageFiles.FirstOrDefault(i => i.Name == soa.AttributeOption.Name) }) .Select(soa => new ImageForObject() { Name = soa.Name, FeaturedImage = soa.Img != null ? soa.Img.ThumbnailImageData("s16to9") : null }) .OrderBy(i => i.Name) .ToList(); } else if (attr.DetailItem) { sInfo.Details.Add(attr.Name, new List <string>( theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.AttributeOption.Name) )); } else { sInfo.Options.Add(attr.Name, new List <string>( theData.SeriesOptionAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.AttributeOption.Name) )); } } foreach (var attr in theData.SeriesIntAttributes.Select(soa => soa.Attribute).Distinct()) { if (attr.DetailItem) { sInfo.Details.Add(attr.Name, new List <string>( theData.SeriesIntAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.Value.ToString()) )); } else { sInfo.Options.Add(attr.Name, new List <string>( theData.SeriesIntAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.Value.ToString()) )); } } foreach (var attr in theData.SeriesTextAttributes.Select(soa => soa.Attribute).Distinct()) { if (attr.DetailItem) { sInfo.Details.Add(attr.Name, new List <string>( theData.SeriesTextAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.Value) )); } else { sInfo.Options.Add(attr.Name, new List <string>( theData.SeriesTextAttributes .Where(soa => soa.AttributeID == attr.AttributeID) .Select(so => so.Value) )); } } sInfo.RelatedSeries = theData.ChildSerieses .Where(s => s.IsActive) .Select(cs => new SeriesInformation.RelatedSeriesInfo() { SeriesID = cs.SeriesID, Name = cs.Name, ImageFileData = cs.FeaturedImageForSize("m16to9") }) .ToList(); sInfo.Typicals = theData.SeriesTypicals .Where(t => t.Typical.IsPublished) .OrderByDescending(st => st.IsPrimary) .Select(t => new SeriesInformation.TypicalInfoForSeries() { TypicalID = t.TypicalID, Name = t.Typical.Name, ImageFileData = t.Typical.FeaturedImageForSize("m16to9") }) .ToList(); } return(sInfo); }
public SeriesNodeInformation(SeriesInformation seriesInfo) : base(seriesInfo.PatientId, seriesInfo.StudyInstanceUID, seriesInfo.SeriesInstanceUID, seriesInfo.Description) { }