/// <summary> /// Starts execution of script. This method can be called directly from PluginTester or indirectly from Eclipse /// through the Execute method. /// </summary> /// <param name="patient">Opened patient</param> /// <param name="PItemsInScope">Planning Items in scope</param> /// <param name="pItem">Opened Planning Item</param> /// <param name="currentUser">Current user</param> /// <param name="window">WPF window</param> public static void Start(Patient pat, List <PlanningItem> PItemsInScope, PlanningItem pItem, Course course, StructureSet ss, User currentUser, Window window) { if (pat == null || pItem == null) { MessageBox.Show("Please open a plan or plan sum before running this script", "No Active Plan", MessageBoxButton.OK, MessageBoxImage.Error); throw new ApplicationException("Please open a plan or a plan sum before running this script"); } window.Title = "DVH Analysis - " + pat.LastName + ", " + pat.FirstName + " (" + pat.Id + ")"; window.SizeToContent = SizeToContent.WidthAndHeight; DVHViewModel viewModel = new DVHViewModel(pat, pItem, course, ss, currentUser); MainWindow userControl = new MainWindow(viewModel); window.Content = userControl; window.DataContext = viewModel; userControl.PlanInfoListBox.DataContext = viewModel.Plans; userControl.DVHDataGrid.DataContext = viewModel.DVHTable; }
public DVHTableRow(XElement constraint, DVHViewModel viewModel) { _viewModel = viewModel; //set structures Structure = constraint.Parent.Attribute("name").Value; SelectedStructure = GetBestStructureMatch(Structure); //get info from xml ConstraintText = constraint.Attribute("constraint").Value; VariationConstraintText = constraint.Attribute("variation-constraint") == null ? "" : constraint.Attribute("variation-constraint").Value; LimitText = constraint.Attribute("goal").Value == "greater" ? "> " + constraint.Attribute("limit").Value : "< " + constraint.Attribute("limit").Value; VariationLimitText = constraint.Attribute("variation-limit") == null ? "" : constraint.Attribute("goal").Value == "greater" ? "> " + constraint.Attribute("variation-limit").Value : "< " + constraint.Attribute("variation-limit").Value; ConstraintType = GetConstraintType(constraint); Constraint = (ConstraintType == ConstraintType.Dose || ConstraintType == ConstraintType.Volume || ConstraintType == ConstraintType.ColdVolume || ConstraintType == ConstraintType.CI) ? ConstraintParsing.ExtractNumber(constraint.Attribute("constraint").Value) : -1; VariationConstraint = constraint.Attribute("variation-constraint") == null ? -1 : ConstraintParsing.ExtractNumber(constraint.Attribute("variation-constraint").Value); ConstraintUnits = (ConstraintType == ConstraintType.Dose || ConstraintType == ConstraintType.Volume || ConstraintType == ConstraintType.ColdVolume || ConstraintType == ConstraintType.CI) ? ConstraintParsing.ExtractUnits(constraint.Attribute("constraint").Value) : ""; GoalGreaterThan = ConstraintList.GetConstraintGoal(constraint); Limit = ConstraintParsing.ExtractNumber(constraint.Attribute("limit").Value); VariationLimit = constraint.Attribute("variation-limit") == null ? -1 : ConstraintParsing.ExtractNumber(constraint.Attribute("variation-limit").Value); LimitUnits = ConstraintParsing.ExtractUnits(constraint.Attribute("limit").Value); Endpoint = constraint.Attribute("endpoint") == null ? "" : "Endpoint: " + constraint.Attribute("endpoint").Value; Reference = constraint.Attribute("reference") == null ? "" : "Reference: " + constraint.Attribute("reference").Value; if (Endpoint != "" && Reference != "") { Reference += "\n"; } try { //compute results ComputePlanValues(); ComputePlanResult(); } catch { } //only show the selected structure dropdown if it's the first time that it's being listed so far in the table StructureVisibility = viewModel.DVHTable.Where(s => s.Structure == Structure).Count() > 0 ? Visibility.Hidden : Visibility.Visible; }
public MainWindow(DVHViewModel viewModel) { _vm = viewModel; InitializeComponent(); }