Exemple #1
0
        private void UpdateStructures(PatientGroupViewModel patientGroupItem)
        {
            LocalGeometryResourceManagerClient gmsc1 =
                new LocalGeometryResourceManagerClient();

            var sdcs = from guid in gmsc1.GetStructureResourceIds(patientGroupItem.PatientId)
                       select gmsc1.GetStructure(guid);

            int countSeries = sdcs.Count();

            foreach (var sdc in sdcs)
            {
                var smdc         = gmsc1.GetSurfaceMeshByRelatedStructureId(sdc.Id);
                int meshVertices = smdc != null ? (int)smdc.VertexBuffer.ElementCount : 0;

                Dispatcher.Invoke(() =>
                                  ImageSelectionManager.AddOrUpdate <StructureViewModel>(
                                      _imageSelectionManager._structures,
                                      s => s.ROIName.CompareTo(sdc.ROIName) == 0,
                                      s =>
                {
                    s.ROICount++;
                    s.MeshStatus =
                        (meshVertices > 0)
                                            ? string.Format("Meshed ({0} vertices)", meshVertices)
                                            : "<not meshed>";
                },
                                      () => new StructureViewModel(sdc.Id, sdc.ROIName)
                {
                    FrameOfReferenceUID = sdc.FrameOfReferenceUID,
                    MeshStatus          =
                        (meshVertices > 0)
                                            ? string.Format("Meshed ({0} vertices)", meshVertices)
                                            : "<not meshed>"
                }));
            }

            gmsc1.Close();
        }
        void pv_CurrentChanged(object sender, EventArgs e)
        {
            ICollectionView pv = CollectionViewSource.GetDefaultView(_imageDisplayManager._patientGroups);
            if (pv.CurrentItem == null)
                return;

            var patientGroupItem = (PatientGroupViewModel)pv.CurrentItem;

            _imageDisplayManager._series.Clear();
            _imageDisplayManager._structures.Clear();

            Task.Run(() =>
                {
                    LocalImageResourceManagerClient cmsc1 =
                        new LocalImageResourceManagerClient();

                    cmsc1.ClearPrefetchStack();

                    var idcs = from guid in cmsc1.GetImageResourceIds(patientGroupItem.PatientId)
                                select cmsc1.GetImage(guid);
                    int count = idcs.Count();

                    foreach (var idc in 
                        idcs.Where(thisIdc => thisIdc != null))
                    {
                        var ivdc = cmsc1.GetImageVolumeBySeriesInstanceUID(idc.SeriesInstanceUID);
                        int volumeVoxels = 0;
                        if (ivdc != null)
                        {
                            volumeVoxels = (int)ivdc.PixelBuffer.ElementCount;
                            //cmsc1.PrefetchBuffer(ivdc.PixelBuffer);
                        }
 
                        Dispatcher.Invoke(() =>
                            ImageSelectionManager.AddOrUpdate<ImageSeriesViewModel>(
                                _imageDisplayManager._series,
                                    s => s.SeriesInstanceUID.CompareTo(idc.SeriesInstanceUID) == 0,
                                    s =>
                                    {
                                        s.InstanceCount++;
                                        s.ResampleStatus =
                                            (volumeVoxels > 0)
                                                ? string.Format("Resampled ({0} voxels)", volumeVoxels)
                                                : "<not resampled>";                                        
                                    },
                                    () => 
                                    {
                                        var isvm = ImageSeriesViewModel.Create(idc);
                                        isvm.ResampleStatus = (volumeVoxels > 0)
                                            ? string.Format("Resampled ({0} voxels)", volumeVoxels)
                                            : "<not resampled>";
                                        return isvm;
                                    }));
                    }

                    var ivdcs = from guid in cmsc1.GetImageVolumeResourceIds(patientGroupItem.PatientId)
                               select cmsc1.GetImageVolume(guid);
                    count = ivdcs.Count();

                    foreach (var ivdc in ivdcs)
                    {
                        //int volumeVoxels = 0;
                        //if (ivdc != null)
                        //{
                        //    volumeVoxels = (int)ivdc.PixelBuffer.ElementCount;
                            
                        //    cmsc1.PrefetchBuffer(ivdc.PixelBuffer);
                        //}

                        Dispatcher.Invoke(() =>
                            ImageSelectionManager.AddOrUpdate<ImageSeriesViewModel>(
                                _imageDisplayManager._series,
                                    s => s.SeriesInstanceUID.CompareTo(ivdc.Identity.SeriesInstanceUID) == 0,
                                    s =>
                                    {
                                        s.ResampleStatus =
                                            (ivdc != null)
                                                ? string.Format("Resampled ({0} slices)", ivdc.Depth)
                                                : "<not resampled>";
                                    },
                                    () =>
                                    {
                                        var isvm = ImageSeriesViewModel.Create(ivdc);
                                        isvm.ResampleStatus = (ivdc != null)
                                            ? string.Format("Resampled ({0} slices)", ivdc.Depth)
                                            : "<not resampled>";
                                        return isvm;
                                    }));
                    }

                    cmsc1.Close();
                });

            Task.Run(() =>
                {
                    LocalGeometryResourceManagerClient cmsc1 =
                        new LocalGeometryResourceManagerClient();

                    var sdcs = from guid in cmsc1.GetStructureResourceIds(patientGroupItem.PatientId)
                                select cmsc1.GetStructure(guid);
                    int countSeries = sdcs.Count();

                    foreach (var sdc in sdcs)
                    {
                        var smdc = cmsc1.GetSurfaceMeshByRelatedStructureId(sdc.Id);
                        int meshVertices = smdc != null ? (int)smdc.VertexBuffer.ElementCount : 0;

                        Dispatcher.Invoke(() =>
                            ImageSelectionManager.AddOrUpdate<StructureViewModel>(
                                _imageDisplayManager._structures,
                                    s => s.ROIName.CompareTo(sdc.ROIName) == 0,
                                    s => 
                                    { 
                                        s.ROICount++; 
                                        s.MeshStatus = 
                                            (meshVertices > 0)
                                                ? string.Format("Meshed ({0} vertices)", meshVertices)
                                                : "<not meshed>";
                                    },
                                    () => new StructureViewModel(sdc.Id, sdc.ROIName) 
                                    {
                                        FrameOfReferenceUID = sdc.FrameOfReferenceUID,
                                        MeshStatus = 
                                            (meshVertices > 0)
                                                ? string.Format("Meshed ({0} vertices)", meshVertices)
                                                : "<not meshed>"
                                    }));
                    }

                    cmsc1.Close();
                });
        }