//生成组合 public void MakeGroup(List <LogicActionUnity> act_list, LogicActionGoupEnum group_type) { LogicActionGoup group = null; if (act_list[0] is LogicActionGoup) { group = (LogicActionGoup)act_list[0]; group.GroupType = group_type; for (int i = 1; i < act_list.Count; i++) { group.AddAction(act_list[i]); action_group.Remove(act_list[i]); } } else { int index = action_group.FindIndex(item => item == act_list[0]); group = new LogicActionGoup(); group.GroupType = group_type; action_group.Insert(index, group); for (int i = 0; i < act_list.Count; i++) { group.AddAction(act_list[i]); action_group.Remove(act_list[i]); } } group.UpdataOneTube(); }
//是否融合 public bool IsCombination(LogicActionUnity action) { var last_action = GetLastAction(); int maxinj_count = Engine.getInstance().injectorDevice.GetMaxInjCount(); //int group_max_count = action.GetExperPackage().is_crossmatching&& GroupType == LogicActionGoupEnum.CrossmatchingSlys? 64 : 12; int group_max_count = action.GetExperPackage().is_crossmatching? 64 : 12; if (action_group.Count < group_max_count && last_action != null && last_action.GetGelStep().StepClass == TestStepEnum.FPYT && action.GetGelStep().StepClass == TestStepEnum.FPYT) { var exp = action.GetExperPackage(); var liquidinfo = action.GetGelStep().GetLiquidInfo(); var fpytinfo = action.GetGelStep().GetFpytInfo(); var samplecode = exp.GetSampleCode(action.GetGelStep().SampleIndex); var last_exp = last_action.GetExperPackage(); var last_liquidinfo = last_action.GetGelStep().GetLiquidInfo(); var last_fpytinfo = last_action.GetGelStep().GetFpytInfo(); var last_samplecode = last_exp.GetSampleCode(last_action.GetGelStep().SampleIndex); string liquidtype = liquidinfo.LiquidType; string last_liquidtype = last_liquidinfo.LiquidType; if (exp.is_crossmatching && last_exp.is_crossmatching) { liquidtype = liquidtype.Replace("病人", ""); liquidtype = liquidtype.Replace("献血员", ""); last_liquidtype = last_liquidtype.Replace("病人", ""); last_liquidtype = last_liquidtype.Replace("献血员", ""); } if (liquidtype == last_liquidtype && exp.gel_test_id == last_exp.gel_test_id) { //试剂 if (liquidinfo.IsAgentia && last_liquidinfo.IsAgentia) { ExeActionCount = 2; GroupType = LogicActionGoupEnum.Agentia; return(true); } //交叉配血 else if (exp.is_crossmatching && last_exp.is_crossmatching && liquidinfo.IsSlys == last_liquidinfo.IsSlys && liquidinfo.IsAgentia == last_liquidinfo.IsAgentia) { ExeActionCount = maxinj_count; bool is_bingren = fpytinfo.FindLiquidType("病人*"); bool is_xueqing = liquidinfo.LiquidType.IndexOf("清") != -1; bool is_hongxibao = liquidinfo.LiquidType.IndexOf("红") != -1; if (liquidinfo.IsSlys) { GroupType = LogicActionGoupEnum.CrossmatchingSlys; } else if (is_xueqing) { GroupType = LogicActionGoupEnum.CrossmatchingXueQing; } else if (is_hongxibao) { GroupType = LogicActionGoupEnum.CrossmatchingHxb; } return(true); } //生理盐水 else if (liquidinfo.IsSlys && last_liquidinfo.IsSlys) { ExeActionCount = maxinj_count; GroupType = LogicActionGoupEnum.Slys; return(true); } //默认 else if (samplecode != last_samplecode) { ExeActionCount = maxinj_count; GroupType = LogicActionGoupEnum.Define; return(true); } } } return(false); }