107 lines
7.4 KiB
C#
107 lines
7.4 KiB
C#
using System.IO;
|
|
using System.Windows;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using Livia.Models;
|
|
using Livia.Utility.DependencyInjection;
|
|
using Livia.ViewModels;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace SiemensCereflow.ViewModels;
|
|
|
|
public class SiemensCereFlowControlViewModel : ObservableRecipient, ILiviaControlViewModel
|
|
{
|
|
public ImageRotationViewerControlViewModel BrainLobesImageRotationViewerControlViewModel { get; }
|
|
public ImageRotationViewerControlViewModel ArterialTerritoriesImageRotationViewerControlViewModel { get; }
|
|
public ImageRotationViewerControlViewModel LimbicSystemImageRotationViewerControlViewModel { get; }
|
|
|
|
public PerfusionDataGridControlViewModel CerebrumCerebellumPerfusionDataGridControlViewModel { get; }
|
|
public PerfusionDataGridControlViewModel BrainLobesPerfusionDataGridControlViewModel { get; }
|
|
public PerfusionDataGridControlViewModel ArterialTerritoriesPerfusionDataGridControlViewModel { get; }
|
|
public PerfusionDataGridControlViewModel LimbicSystemPerfusionDataGridControlViewModel { get; }
|
|
|
|
public MosaicImageGroupControlViewModel MosaicImageGroupViewModel { get; }
|
|
public IDataBlockLoader DataBlockLoader { get; }
|
|
|
|
public SiemensCereFlowControlViewModel(IDataBlockLoader dataBlockLoader)
|
|
{
|
|
DataBlockLoader = dataBlockLoader;
|
|
|
|
BrainLobesImageRotationViewerControlViewModel = ActivatorUtilities.CreateInstance<ImageRotationViewerControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
BrainLobesImageRotationViewerControlViewModel.DisplayName = (string)Application.Current.TryFindResource("BrainLobesRotationViewerName");
|
|
BrainLobesImageRotationViewerControlViewModel.AtlasMaskLoadPath = @"atlas\AnImage_BrainLobes\mask";
|
|
BrainLobesImageRotationViewerControlViewModel.StructLoadPath = "structure";
|
|
BrainLobesImageRotationViewerControlViewModel.StructDataType = ImageRotationViewerDataType.Dicom2D;
|
|
BrainLobesImageRotationViewerControlViewModel.AtlasId = "AnImage_BrainLobes";
|
|
BrainLobesImageRotationViewerControlViewModel.ImageIndexSyncKey = "structure";
|
|
dataBlockLoader.AddViewModel(BrainLobesImageRotationViewerControlViewModel);
|
|
|
|
ArterialTerritoriesImageRotationViewerControlViewModel = ActivatorUtilities.CreateInstance<ImageRotationViewerControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.DisplayName = (string)Application.Current.TryFindResource("ArterialTerritoriesRotationViewerName");
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.AtlasMaskLoadPath = @"atlas\AnImage_ArterialTerritories\mask";
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.StructLoadPath = "structure";
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.StructDataType = ImageRotationViewerDataType.Dicom2D;
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.AtlasId = "AnImage_ArterialTerritories";
|
|
ArterialTerritoriesImageRotationViewerControlViewModel.ImageIndexSyncKey = "structure";
|
|
dataBlockLoader.AddViewModel(ArterialTerritoriesImageRotationViewerControlViewModel);
|
|
|
|
LimbicSystemImageRotationViewerControlViewModel = ActivatorUtilities.CreateInstance<ImageRotationViewerControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
LimbicSystemImageRotationViewerControlViewModel.DisplayName = (string)Application.Current.TryFindResource("LimbicSystemRotationViewerName");
|
|
LimbicSystemImageRotationViewerControlViewModel.AtlasMaskLoadPath = @"atlas\LimbicSystem\mask";
|
|
LimbicSystemImageRotationViewerControlViewModel.StructLoadPath = "structure";
|
|
LimbicSystemImageRotationViewerControlViewModel.StructDataType = ImageRotationViewerDataType.Dicom2D;
|
|
LimbicSystemImageRotationViewerControlViewModel.AtlasId = "LimbicSystem";
|
|
LimbicSystemImageRotationViewerControlViewModel.ImageIndexSyncKey = "structure";
|
|
dataBlockLoader.AddViewModel(LimbicSystemImageRotationViewerControlViewModel);
|
|
|
|
CerebrumCerebellumPerfusionDataGridControlViewModel = ActivatorUtilities.CreateInstance<PerfusionDataGridControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
CerebrumCerebellumPerfusionDataGridControlViewModel.LoadPath = Path.Combine("atlas", "AnImage_CerebrumCerebellum", "cbf.json");
|
|
dataBlockLoader.AddViewModel(CerebrumCerebellumPerfusionDataGridControlViewModel);
|
|
|
|
BrainLobesPerfusionDataGridControlViewModel = ActivatorUtilities.CreateInstance<PerfusionDataGridControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
BrainLobesPerfusionDataGridControlViewModel.LoadPath = Path.Combine("atlas", "AnImage_BrainLobes", "cbf.json");
|
|
dataBlockLoader.AddViewModel(BrainLobesPerfusionDataGridControlViewModel);
|
|
|
|
ArterialTerritoriesPerfusionDataGridControlViewModel = ActivatorUtilities.CreateInstance<PerfusionDataGridControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
ArterialTerritoriesPerfusionDataGridControlViewModel.LoadPath = Path.Combine("atlas", "AnImage_ArterialTerritories", "cbf.json");
|
|
dataBlockLoader.AddViewModel(ArterialTerritoriesPerfusionDataGridControlViewModel);
|
|
|
|
LimbicSystemPerfusionDataGridControlViewModel = ActivatorUtilities.CreateInstance<PerfusionDataGridControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
LimbicSystemPerfusionDataGridControlViewModel.LoadPath = Path.Combine("atlas", "LimbicSystem", "cbf.json");
|
|
dataBlockLoader.AddViewModel(LimbicSystemPerfusionDataGridControlViewModel);
|
|
|
|
MosaicImageGroupViewModel = ActivatorUtilities.CreateInstance<MosaicImageGroupControlViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
dataBlockLoader.AddDeferredLoadingModuleViewModel(MosaicImageGroupViewModel);
|
|
|
|
dataBlockLoader.Init();
|
|
}
|
|
|
|
public List<ReportModuleExpanderViewModel> GenerateReportModuleGroups()
|
|
{
|
|
List<ReportModuleItemViewModel> atlasItems =
|
|
[
|
|
new ReportModuleItemViewModel(
|
|
(string)Application.Current.TryFindResource("CerebrumCerebellumPerfusionDataGridName"),
|
|
"AnImage_CerebrumCerebellum"),
|
|
new ReportModuleItemViewModel((string)Application.Current.TryFindResource("BrainLobesRotationViewerName"),
|
|
"AnImage_BrainLobes"),
|
|
new ReportModuleItemViewModel(
|
|
(string)Application.Current.TryFindResource("ArterialTerritoriesRotationViewerName"),
|
|
"AnImage_ArterialTerritories"),
|
|
new ReportModuleItemViewModel((string)Application.Current.TryFindResource("LimbicSystemRotationViewerName"),
|
|
"LimbicSystem")
|
|
];
|
|
|
|
//TODO::maybe cache it when loading data is better. No need to check colorMap
|
|
List<ReportModuleItemViewModel> colorImageItems = (from viewModel in MosaicImageGroupViewModel.MosaicImageCollection where viewModel.UseColorBar select new ReportModuleItemViewModel(viewModel.DisplayName, viewModel.DisplayName)).ToList();
|
|
colorImageItems.Add(new ReportModuleItemViewModel((string)Application.Current.TryFindResource("ReportModuleFocus"), "Focus"));
|
|
|
|
List<ReportModuleExpanderViewModel> result =
|
|
[
|
|
new ReportModuleExpanderViewModel((string)Application.Current.TryFindResource("ReportModuleAtlas"), "atlas",
|
|
atlasItems),
|
|
new ReportModuleExpanderViewModel((string)Application.Current.TryFindResource("ReportModuleColorImage"),
|
|
"colorImage", colorImageItems)
|
|
];
|
|
return result;
|
|
}
|
|
} |