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; }
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; } }