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(); }); }