Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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();
                }
            }
        }