Ejemplo n.º 1
0
        public FieldModel(Beam _oneField)
        {
            BeamId = _oneField.Id;

            // 摆位野
            if (_oneField.IsSetupField)
            {
                // 判断CBCT或者0/90
                if (Math.Abs(Math.Abs(_oneField.ControlPoints[0].JawPositions.X1) - 50.0) < 0.1) // -5 5 -5 5
                {
                    RecommendId = "CBCT";
                    if (RecommendId.ToLower().Equals(_oneField.Id.ToLower()))
                    {
                        IsConsistent     = true;
                        IsAllDatainished = true;
                        return;
                    }
                }
                // 判断0 / 90
                else if (_oneField.ControlPoints[0].GantryAngle.Equals(0))
                {
                    RecommendId = "0";
                    if (RecommendId.ToLower().Equals(_oneField.Id.ToLower()))
                    {
                        IsAllDatainished = true;
                        IsConsistent     = true;
                        return;
                    }
                }
                else if (_oneField.ControlPoints[0].GantryAngle.Equals(90))
                {
                    RecommendId = "90";
                    if (RecommendId.ToLower().Equals(_oneField.Id.ToLower()))
                    {
                        IsAllDatainished = true;
                        IsConsistent     = true;
                        return;
                    }
                }
                else
                {
                    RecommendId      = "Wrong Setup Beam Angle";
                    IsAllDatainished = true;
                    IsConsistent     = false;
                    return;
                }
            }

            bool isStatic = _oneField.Technique.Id.ToLower().Equals("static");
            bool isArc    = _oneField.Technique.Id.ToLower().Equals("arc");

            if (!isStatic && !isArc ||
                isStatic && isArc)
            {
                IsConsistent     = false;
                RecommendId      = "Not supported beam technique";
                IsAllDatainished = true;
                return;
            }

            if (isStatic)
            {
                int beamAngle = (int)_oneField.ControlPoints[0].GantryAngle;
                RecommendId = $"{_oneField.Id[0]}{_oneField.Id[1]}{beamAngle}";
                if (RecommendId.ToLower().Equals(_oneField.Id.ToLower()))
                {
                    IsConsistent     = true;
                    IsAllDatainished = true;
                    return;
                }
            }

            if (isArc)
            {
                int beginAngle = (int)_oneField.ControlPoints[0].GantryAngle;
                int endAngle   = (int)_oneField.ControlPoints[index : _oneField.ControlPoints.Count - 1].GantryAngle;

                RecommendId = $"{_oneField.Id[0]}{_oneField.Id[1]}G{beginAngle}-{endAngle}";
                if (RecommendId.ToLower().Equals(_oneField.Id.ToLower()))
                {
                    IsConsistent     = true;
                    IsAllDatainished = true;
                    return;
                }
            }

            IsConsistent = false;
            // RecommendId = "Others";
            IsAllDatainished = true;
            return;
        }
Ejemplo n.º 2
0
        public PlanModel(PlanSetup _planSetup)
        {
            if (null == _planSetup)
            {
                return;
            }
            PlanId                   = _planSetup.Id;
            IsTreated                = _planSetup.IsTreated;
            PlanningApprover         = _planSetup.PlanningApprover;
            TreatmentApprover        = _planSetup.TreatmentApprover;
            TreatmentApproveDateTime = _planSetup.TreatmentApprovalDate;

            FieldModels = new ObservableCollection <FieldModel>();

            // 现阶段暂时无法利用ESAPI获取计划的程数或者是部位信息
            // 假定现阶段的程数和部位都是正确的
            // TODO 查找确定程数和部位的方法

            // 获取Plan的命名
            ApprovalStatus = Enum.GetName(typeof(PlanSetupApprovalStatus), _planSetup.ApprovalStatus);

            bool isArcPlan    = false;
            int  treatBeamNum = 0;

            foreach (Beam planSetupBeam in _planSetup.Beams)
            {
                FieldModel fm = new FieldModel(planSetupBeam);
                FieldModels.Add(fm);
                if (!planSetupBeam.IsSetupField)
                {
                    treatBeamNum++;
                    if (planSetupBeam.Technique.Id.ToLower().Equals("arc"))
                    {
                        isArcPlan = true;
                    }
                }
            }

            // 生成命名
            if (0 == treatBeamNum)
            {
                RecommendId = PlanId;
                if (RecommendId.ToLower().Equals(PlanId.ToLower()))
                {
                    IsAllDatainished = true;
                    IsConsistent     = true;
                    return;
                }
            }
            RecommendId = $"{PlanId[0]}{treatBeamNum}{(isArcPlan ? "VMAT" : "IMRT")}a";
            if (RecommendId.ToLower().Equals(PlanId.ToLower()))
            {
                IsAllDatainished = true;
                IsConsistent     = true;
                return;
            }
            else
            {
                IsAllDatainished = true;
                IsConsistent     = false;
                return;
            }
        }