Пример #1
0
        /// <summary>
        /// Compares two <see cref="IPresentationImage"/>s.
        /// </summary>
        public override int Compare(IPresentationImage x, IPresentationImage y)
        {
            ISopProvider xProvider = x as ISopProvider;
            ISopProvider yProvider = y as ISopProvider;

            if (ReferenceEquals(xProvider, yProvider))
            {
                return(0);                //same object or both are null
            }
            //at this point, at least one of x or y is non-null and they are not the same object

            if (xProvider == null)
            {
                return(-ReturnValue);                // x > y (because we want x at the end for non-reverse sorting)
            }
            if (yProvider == null)
            {
                return(ReturnValue);                // x < y (because we want y at the end for non-reverse sorting)
            }
            if (ReferenceEquals(xProvider.Sop, yProvider.Sop))
            {
                return(0);
            }

            return(Compare(xProvider.Sop, yProvider.Sop));
        }
Пример #2
0
        /// <summary>
        /// Compares two <see cref="IImageSet"/>s.
        /// </summary>
        public override int Compare(IImageSet x, IImageSet y)
        {
            if (x.DisplaySets.Count == 0 || y.DisplaySets.Count == 0)
            {
                Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly.");
                return(0);
            }

            IDisplaySet displaySet1 = x.DisplaySets[0];
            IDisplaySet displaySet2 = y.DisplaySets[0];

            if (displaySet1.PresentationImages.Count == 0 || displaySet2.PresentationImages.Count == 0)
            {
                Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly.");
                return(0);
            }

            ISopProvider provider1 = displaySet1.PresentationImages[0] as ISopProvider;
            ISopProvider provider2 = displaySet2.PresentationImages[0] as ISopProvider;

            if (provider1 == null)
            {
                if (provider2 == null)
                {
                    return(0);                    // x == y
                }
                else
                {
                    return(-this.ReturnValue);                    // x > y (because we want it at the end for non-reverse sorting)
                }
            }
            else
            {
                if (provider2 == null)
                {
                    return(this.ReturnValue);                    // x < y (because we want it at the end for non-reverse sorting)
                }
            }

            return(Compare(provider1.Sop, provider2.Sop));
        }
Пример #3
0
        private IEnumerable <IComparable> GetCompareValues(IImageSet imageSet)
        {
            DateTime?studyDate = null;
            DateTime?studyTime = null;

            IDicomImageSetDescriptor descriptor = imageSet.Descriptor as IDicomImageSetDescriptor;

            if (descriptor == null)
            {
                if (imageSet.DisplaySets.Count == 0)
                {
                    Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly.");
                }
                else if (imageSet.DisplaySets[0].PresentationImages.Count == 0)
                {
                    Debug.Assert(false, "All image sets being sorted must have at least one display set with at least one image in order for them to be sorted properly.");
                }
                else
                {
                    ISopProvider provider = imageSet.DisplaySets[0].PresentationImages[0] as ISopProvider;
                    if (provider != null)
                    {
                        studyDate = DateParser.Parse(provider.Sop.StudyDate);
                        studyTime = TimeParser.Parse(provider.Sop.StudyTime);
                    }
                }
            }
            else
            {
                studyDate = DateParser.Parse(descriptor.SourceStudy.StudyDate);
                studyTime = TimeParser.Parse(descriptor.SourceStudy.StudyTime);
            }

            yield return(studyDate);

            yield return(studyTime);

            yield return(imageSet.Name);
        }