コード例 #1
0
ファイル: LogicActionGoup.cs プロジェクト: jume2003/SK800
        //生成组合
        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();
        }
コード例 #2
0
ファイル: LogicActionGoup.cs プロジェクト: jume2003/SK800
        //是否融合
        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);
        }