public ObservableCollection <PQMSummaryViewModel> AddPQMSummary(ObservableCollection <PQMSummaryViewModel> PqmSummaries, ConstraintViewModel constraintPath, PlanningItemViewModel planningItem, Patient patient) { StructureSet structureSet = planningItem.PlanningItemStructureSet; Structure evalStructure; var calculator = new PQMSummaryCalculator(); if (planningItem.PlanningItemObject is PlanSum) { var waitWindowPQM = new WaitWindowPQM(); PlanSum plansum = (PlanSum)planningItem.PlanningItemObject; if (plansum.IsDoseValid() == true) { waitWindowPQM.Show(); foreach (PQMSummaryViewModel pqm in PqmSummaries) { evalStructure = calculator.FindStructureFromAlias(structureSet, pqm.TemplateId, pqm.TemplateAliases, pqm.TemplateCodes); if (evalStructure != null) { var pqmSummary = calculator.GetObjectiveProperties(pqm, planningItem, structureSet, new StructureViewModel(evalStructure)); pqm.Achieved_Comparison = pqmSummary.Achieved; pqm.AchievedColor_Comparison = pqmSummary.AchievedColor; pqm.AchievedPercentageOfGoal_Comparison = pqmSummary.AchievedPercentageOfGoal; pqm.Met_Comparison = pqmSummary.Met; } } waitWindowPQM.Close(); } } else //is plansetup { var waitWindowPQM = new WaitWindowPQM(); PlanSetup planSetup = (PlanSetup)planningItem.PlanningItemObject; if (planSetup.IsDoseValid() == true) { waitWindowPQM.Show(); foreach (PQMSummaryViewModel pqm in PqmSummaries) { evalStructure = calculator.FindStructureFromAlias(structureSet, pqm.TemplateId, pqm.TemplateAliases, pqm.TemplateCodes); if (evalStructure != null) { if (evalStructure.Id.Contains("PTV") == true) { foreach (Structure s in structureSet.Structures) { if (s.Id == planSetup.TargetVolumeID) { evalStructure = s; } } } var pqmSummary = calculator.GetObjectiveProperties(pqm, planningItem, structureSet, new StructureViewModel(evalStructure)); pqm.Achieved_Comparison = pqmSummary.Achieved; } } waitWindowPQM.Close(); } } return(PqmSummaries); }
public ObservableCollection <PlanSelectDetailViewModel> Calculate(ObservableCollection <PlanningItemViewModel> planningItemList) { var PlanningItemSummaries = new ObservableCollection <PlanSelectDetailViewModel>(); var PlanSummary = new ObservableCollection <PlanSelectDetailViewModel>(); foreach (PlanningItemViewModel planningItem in planningItemList) { if (planningItem.PlanningItemObject is PlanSum) { PlanSum planSum = (PlanSum)planningItem.PlanningItemObject; int sumOfFractions = 0; double sumOfPlanSetupDoses = 0; foreach (PlanSetup planSetup in planSum.PlanSetups.OrderBy(x => x.CreationDateTime)) { sumOfFractions += planSetup.NumberOfFractions.Value; sumOfPlanSetupDoses += planSetup.TotalDose.Dose; } var PlanningItemSummary = new PlanSelectDetailViewModel { ActivePlanningItem = new PlanningItemViewModel(planSum), PlanningItemIdWithCourse = planSum.Course + "/" + planSum.Id, ApprovalStatus = "PlanSum", PlanName = planSum.Course + "/" + planSum.Id, PlanStructureSet = planSum.StructureSet.Id, IsPlanSum = true, PlanCreated = planSum.CreationDateTime.ToString(), PlanFractions = sumOfFractions.ToString(), PlanTotalDose = sumOfPlanSetupDoses.ToString(), IsDoseValid = planSum.IsDoseValid() }; PlanningItemSummaries.Add(PlanningItemSummary); } else { PlanSetup planSetup = (PlanSetup)planningItem.PlanningItemObject; string planTarget; if (planSetup.TargetVolumeID != null) { planTarget = planSetup.TargetVolumeID; } else { planTarget = "No target selected"; } var PlanningItemSummary = new PlanSelectDetailViewModel { ActivePlanningItem = new PlanningItemViewModel(planSetup), PlanningItemIdWithCourse = planSetup.Course + "/" + planSetup.Id, ApprovalStatus = planSetup.ApprovalStatus.ToString(), PlanName = planSetup.Course + "/" + planSetup.Id, IsPlanSum = false, PlanStructureSet = planSetup.StructureSet.Id, PlanNumFields = planSetup.Beams.Count().ToString(), PlanningItemObject = planningItem.PlanningItemObject, PlanCreated = planSetup.CreationDateTime.ToString(), PlanFxDose = planSetup.DosePerFraction.Dose.ToString(), PlanFractions = planSetup.NumberOfFractions.ToString(), PlanTotalDose = planSetup.TotalDose.Dose.ToString(), PlanTarget = planTarget, IsDoseValid = planSetup.IsDoseValid() }; PlanningItemSummaries.Add(PlanningItemSummary); } } return(PlanningItemSummaries); }
public void GetPQMSummaries(ConstraintViewModel constraintPath, PlanningItemViewModel planningItem, Patient patient) { PqmSummaries = new ObservableCollection <PQMSummaryViewModel>(); StructureSet structureSet = planningItem.PlanningItemStructureSet; Structure evalStructure; ObservableCollection <PQMSummaryViewModel> pqmSummaries = new ObservableCollection <PQMSummaryViewModel>(); ObservableCollection <StructureViewModel> foundStructureList = new ObservableCollection <StructureViewModel>(); var calculator = new PQMSummaryCalculator(); Objectives = calculator.GetObjectives(constraintPath); if (planningItem.PlanningItemObject is PlanSum) { var waitWindowPQM = new WaitWindowPQM(); PlanSum plansum = (PlanSum)planningItem.PlanningItemObject; if (plansum.IsDoseValid() == true) { waitWindowPQM.Show(); foreach (PQMSummaryViewModel objective in Objectives) { evalStructure = calculator.FindStructureFromAlias(structureSet, objective.TemplateId, objective.TemplateAliases, objective.TemplateCodes); if (evalStructure != null) { var evalStructureVM = new StructureViewModel(evalStructure); var obj = calculator.GetObjectiveProperties(objective, planningItem, structureSet, evalStructureVM); PqmSummaries.Add(obj); NotifyPropertyChanged("Structure"); } } waitWindowPQM.Close(); } } if (planningItem.PlanningItemObject is PlanSetup) //is plansetup { var waitWindowPQM = new WaitWindowPQM(); PlanSetup planSetup = (PlanSetup)planningItem.PlanningItemObject; if (planSetup.IsDoseValid() == true) { waitWindowPQM.Show(); foreach (PQMSummaryViewModel objective in Objectives) { evalStructure = calculator.FindStructureFromAlias(structureSet, objective.TemplateId, objective.TemplateAliases, objective.TemplateCodes); if (evalStructure != null) { if (evalStructure.Id.Contains("PTV") == true) { foreach (Structure s in structureSet.Structures) { if (s.Id == planSetup.TargetVolumeID) { evalStructure = s; } } } var evalStructureVM = new StructureViewModel(evalStructure); var obj = calculator.GetObjectiveProperties(objective, planningItem, structureSet, evalStructureVM); PqmSummaries.Add(obj); NotifyPropertyChanged("Structure"); } } waitWindowPQM.Close(); } } }