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);
        }
Ejemplo n.º 2
0
 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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        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)
 {
 }