Beispiel #1
0
        /// <summary>
        /// 保存时限规则条件
        /// xlb 2013-01-07
        /// </summary>
        private void SaveCondition()
        {
            try
            {
                if (_qcCondition == null)
                {
                    return;
                }
                string message = "";
                bool   result  = ValidateInfo(ref message);
                if (!result)
                {
                    MessageBox.Show(message);
                    return;
                }
                _qcCondition.Code            = this.textEditConditionCode.Text.Trim();
                _qcCondition.Description     = this.textEditConditonDes.Text.Trim();
                _qcCondition.TableName       = this.textEditConditionTable.Text.Trim();
                _qcCondition.ColumnName      = this.textEditConditionColumn.Text.Trim();
                _qcCondition.ColumnValue     = this.textEditColumnValue.Text.Trim();
                _qcCondition.TimeColumnName  = this.textEditTimeColumn.Text.Trim();
                _qcCondition.TimeRange       = TimesToSeconds(textEditTimeRange.Text.Trim());
                _qcCondition.PatNoColumnName = this.textEditPatColumn.Text.Trim();
                _qcCondition.Memo            = textEditMemo.Text.Trim();
                _qcCondition.DBLink          = comboBoxEditDBLink.SelectedItem.ToString();

                //质控条件集合
                List <QCCondition> qcConditionList = gridControlCondition.DataSource as List <QCCondition>;
                if (qcConditionList == null)
                {
                    qcConditionList = new List <QCCondition>();
                }

                if (_editState == EditState.Add)
                {
                    QCCondition.InsertCondition(_qcCondition);
                    MessageBox.Show("添加成功");
                    //集合中插入新增数据行 便于 定位焦点在新增行上
                    qcConditionList.Add(_qcCondition);
                }
                else
                {
                    QCCondition.UpdateCondition(_qcCondition);
                    MessageBox.Show("修改成功");
                }

                //绑定数据源
                gridControlCondition.DataSource = new List <QCCondition>(qcConditionList);
                //定位焦点在最后一行
                gridViewCondition.MoveBy(qcConditionList.Count - 1);
                DS_Common.ClearControl(groupControl1);
                SetEditState(false, false);
                _qcCondition = new QCCondition();
                gridViewCondition.FocusedRowHandle = (gridControlCondition.DataSource as List <QCCondition>).Count;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
0
        ///// <summary>
        ///// 遍历清除文本框内容
        ///// 2013-01-10
        ///// </summary>
        ///// <param name="gc"></param>
        //private void ClearText(GroupControl gc)
        //{
        //    try
        //    {
        //        foreach (Control ctl in gc.Controls)
        //        {
        //            Type type = ctl.GetType();
        //            if (type == typeof(TextEdit))
        //            {
        //                TextEdit textEdit = ctl as TextEdit;
        //                if (textEdit != null)
        //                {
        //                    textEdit.Text = string.Empty;
        //                }
        //            }
        //            else if (type == typeof(ComboBoxEdit))
        //            {
        //                ComboBoxEdit cmbEdit = ctl as ComboBoxEdit;
        //                if (cmbEdit != null)
        //                {
        //                    cmbEdit.SelectedIndex = -1;
        //                }
        //            }
        //            else if (type == typeof(LookUpEdit))
        //            {
        //                LookUpEdit lookUpEdit = ctl as LookUpEdit;
        //                if (lookUpEdit != null)
        //                {
        //                    lookUpEdit.EditValue = string.Empty;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //}
        #endregion

        /// <summary>
        /// 保存方法
        /// xlb 2013-01-06
        /// </summary>
        private void SaveCurrentRule()
        {
            try
            {
                string message = "";
                bool   result  = Validate(ref message);
                if (!result)
                {
                    MessageBox.Show(message);
                    return;
                }
                QCRule       qcRule       = new QCRule();
                RuleCategory ruleCategory = new RuleCategory();
                QCCondition  qcCondition  = new QCCondition();
                qcRule.RuleCode    = textBoxRuleId.Text.Trim();
                qcCondition.Code   = lookUpEditConditionName.EditValue.ToString();
                qcRule.TimeLimit   = TimesToSeconds(textBoxRuleTime.Text);
                qcRule.Description = textBoxRuleName.Text.Trim();

                qcRule.DoctorLevel = (DoctorGrade)Enum.Parse(typeof(DoctorGrade), lookUpEditDoctorLevel.EditValue.ToString());
                qcRule.Reminder    = textBoxTipInfo.Text.Trim();
                qcRule.FoulMessage = textBoxWarningInfo.Text.Trim();
                if (comboBoxOpMode.SelectedIndex >= 0)
                {
                    qcRule.MARK = (OperationType)comboBoxOpMode.SelectedIndex;
                }
                else
                {
                    qcRule.MARK = OperationType.OnlyOne;
                }
                qcRule.CycleTimes    = int.Parse(textEditLooptimes.Text == "" ? "0" : textEditLooptimes.Text.Trim());
                qcRule.CycleInterval = TimesToSeconds(textEditLoopinterval.Text == "" ? "0" : textEditLoopinterval.Text.Trim());
                qcRule.DelayTime     = int.Parse(spinEditDelayTime.Value.ToString());
                qcRule.Sorce         = double.Parse(spinEditScore.Text == "" ? "0" : spinEditScore.Text.Trim());
                qcRule.QCCode        = lookUpEditQcCode.EditValue.ToString();
                qcRule.Memo          = textEditRuleMemo.Text.Trim();
                ruleCategory.Code    = lookUpEditRuleGroup.EditValue.ToString();
                qcRule.Valid         = checkEditValid.Checked ? "1" : "0";
                if (editstate == EditSate.Edit)
                {
                    QCRule.UpdateQcRule(qcRule, qcCondition, ruleCategory);
                    MessageBox.Show("修改成功");
                }
                else if (editstate == EditSate.Add)
                {
                    QCRule.InsertQcRule(qcRule, qcCondition, ruleCategory);
                    MessageBox.Show("添加成功");
                }
                InitDataRule();
                SetRuleEditState(false, false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #3
0
        private ITrigger CreateCVTrigger(WorkflowStepData param)
        {
            WorkflowStepTrigger trigger   = m_Instantiator.Instantiate <WorkflowStepTrigger>();
            QCCondition         condition = m_Instantiator.Instantiate <QCCondition>();

            condition.triggerId = param.triggerId;
            trigger.AddCondition(condition, true);
            trigger.advance = true;
            trigger.mode    = ConditionMode.and;
            m_DisposalService.Register(trigger, param.id);
            m_DisposalService.Register(condition, param.id);
            return(trigger);
        }
Beispiel #4
0
 /// <summary>
 /// 初始化时限条件集合数据
 /// xlb 2013-01-06
 /// </summary>
 private void InitDataConditon()
 {
     try
     {
         _qcCondition  = new QCCondition();
         conditionList = QCCondition.getAllConditions(_qcCondition);
         gridControlCondition.DataSource = conditionList;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Beispiel #5
0
 /// <summary>
 /// 取消事件
 /// xlb 2013-01-07
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnCancel_Click(object sender, EventArgs e)
 {
     try
     {
         DS_Common.ClearControl(groupControl1);
         SetEditState(false, false);
         _qcCondition = new QCCondition();
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(1, ex);
     }
 }
Beispiel #6
0
        /// <summary>
        /// 时限规则条件信息
        /// xlb 2013-01-06
        /// </summary>
        /// <param name="_qcCondition"></param>
        private void ShowCondition(QCCondition _qcCondition)
        {
            try
            {
                if (_qcCondition == null)
                {
                    throw new Exception("没有数据");
                }
                textEditConditionCode.Text   = _qcCondition.Code;
                textEditConditonDes.Text     = _qcCondition.Description;
                textEditConditionTable.Text  = _qcCondition.TableName;
                textEditConditionColumn.Text = _qcCondition.ColumnName;
                textEditColumnValue.Text     = _qcCondition.ColumnValue;
                textEditTimeColumn.Text      = _qcCondition.TimeColumnName;
                int      time  = _qcCondition.TimeRange;
                TimeSpan times = new TimeSpan(0, 0, 0, time);
                textEditTimeRange.Text = DS_Common.TimeSpanToLocal(times);
                textEditPatColumn.Text = _qcCondition.PatNoColumnName;
                textEditMemo.Text      = _qcCondition.Memo;
                if (_qcCondition.DBLink == "EMRDB")
                {
                    comboBoxEditDBLink.SelectedIndex = 0;
                }
                else
                {
                    comboBoxEditDBLink.SelectedIndex = 1;
                }

                string timeRange = Convert.ToString((int)_qcCondition.TimeRange / 60 / 60 / 24);
                if (timeRange != "" && timeRange != "" && timeRange != "0")
                {
                    textEditSql.Text = string.Format("select * from {0} where {1} {2} and {3}> sysdate-{4}",
                                                     _qcCondition.TableName,
                                                     _qcCondition.ColumnName,
                                                     _qcCondition.ColumnValue,
                                                     _qcCondition.TimeColumnName,
                                                     timeRange);
                }
                else
                {
                    textEditSql.Text = string.Format("select * from {0} where {1} {2}",
                                                     _qcCondition.TableName,
                                                     _qcCondition.ColumnName,
                                                     _qcCondition.ColumnValue);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #7
0
        /// <summary>
        /// 删除事件
        /// by xlb 2013-01-06
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDeleteCondition_Click(object sender, EventArgs e)
        {
            try
            {
                if (gridViewCondition.FocusedRowHandle < 0)
                {
                    MessageBox.Show("没有数据");
                    return;
                }
                int rowHandel = gridViewCondition.FocusedRowHandle;
                _qcCondition = gridViewCondition.GetRow(rowHandel) as QCCondition;
                int count = QCRule.QcRuleCountByConditionCode(_qcCondition.Code);
                if (count > 0)
                {
                    MessageBox.Show("该条件已匹配了规则,无法删除");
                    return;
                }

                if (MyMessageBox.Show("您确定删除数据吗?", "提示", MyMessageBoxButtons.OkCancel) == DialogResult.Cancel)
                {
                    return;
                }
                #region           ======注销 by xlb 2013-02-29=======
                //DataTable dtRuleTable = QCRule.GetAllQCRules();
                //if (dtRuleTable == null || dtRuleTable.Rows.Count <= 0)
                //{
                //    return;
                //}
                //foreach (DataRow dr in dtRuleTable.Rows)
                //{
                //    if (dr["CONDITIONCODE"].ToString() == _qcCondition.Code)
                //    {
                //        MessageBox.Show("该条件已匹配了规则,无法删除");
                //        return;
                //    }
                //}
                #endregion
                QCCondition.DeleteCondition(_qcCondition);
                MessageBox.Show("删除成功");
                InitDataConditon();
                DS_Common.ClearControl(groupControl1);
                gridViewCondition.MoveBy(rowHandel);//焦点定位到下一行
            }
            catch (Exception ex)
            {
                MyMessageBox.Show(1, ex);
            }
        }
Beispiel #8
0
        /// <summary>
        /// 初始化时限规则数据集
        /// by xlb 2013-01-05
        /// </summary>
        private void InitDataRule()
        {
            try
            {
                Dictionary <string, QCCondition>  dictQCCondition  = QCCondition.GetAllQCCondition();
                Dictionary <string, RuleCategory> dictRuleCategory = RuleCategory.GetAllRuleCategory();
                IList <QCRule> listRule = QCRule.GetRuleList(dictQCCondition, dictRuleCategory);

                gridControlRule.DataSource = listRule;
                gridViewRule.ExpandAllGroups();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #9
0
 /// <summary>
 /// 新增时限条件事件
 /// by xlb 2013-01-06
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnAddConditon_Click(object sender, EventArgs e)
 {
     try
     {
         SetEditState(true, true);
         DS_Common.ClearControl(groupControl1);
         _qcCondition = new QCCondition();
         _editState   = EditState.Add;
         this.textEditConditionCode.Text = (CalMaxQcConditionID() + 1).ToString();
         textEditConditonDes.Focus();
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(1, ex);
     }
 }
        /// <summary>
        /// 处理每一条时限规则
        /// </summary>
        /// <param name="rule"></param>
        void Process1QCRule(QCRule rule)
        {
            try
            {
                QCCondition condition = rule.Condition;

                //通过QCCondition表中的配置获得相应表中的结果集, 存在病人流水号时,需要将其转换为首页序号
                DataTable dtConfigResult = QCCondition.GetConfigDataResult(condition);

                foreach (DataRow dr in dtConfigResult.Rows)
                {
                    //通过首页序号NOOFINPAT + RULECODE 在QCRecord表中获取对应的记录
                    string          noofinpat    = dr[condition.PatNoColumnName].ToString();
                    string          rulecode     = rule.RuleCode;
                    List <QCRecord> listQCRecord = (from QCRecord rec in m_ListQCRecord
                                                    where rec.NoOfInpat == noofinpat && rec.Rule.RuleCode == rulecode
                                                    select rec).ToList <QCRecord>();

                    //无记录则插入初始化的数据
                    if (listQCRecord.Count() == 0)
                    {
                        QCRecord.InsertInitData(noofinpat, rule, dr);
                        continue;
                    }

                    //通过时间比较是否存在相同的
                    DateTime timeValue = Convert.ToDateTime(dr[condition.TimeColumnName].ToString());
                    var      qcRecords = from QCRecord record in listQCRecord
                                         where record.ConditionTime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)
                                         == timeValue.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture)
                                         select record;

                    //表示已经处理过,所以不对其再次处理
                    if (qcRecords.Count() > 0)
                    {
                        continue;
                    }

                    //针对不同的操作方式进行不同的处理,确保 listQCRecord.count() > 0
                    Process1QCRuleMark(rule, dr, listQCRecord);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 /// <summary>
 /// 初始化数据
 /// </summary>
 private void InitData()
 {
     try
     {
         m_DictQCCondition = QCCondition.GetAllQCCondition();
         m_DictQCCategory  = RuleCategory.GetAllRuleCategory();
         //获得所有QCRule,包括有效和无效
         m_DictQCRuleAll = QCRule.GetAllQCRule(m_DictQCCondition, m_DictQCCategory);
         m_ListQCRecord  = QCRecord.GetAllQCRecord(m_DictQCRuleAll, m_DictQCCondition, m_DictQCCategory);
         //获得所有有效的QCRule
         m_DictQCRuleValid = QCRule.GetAllQCRuleValid(m_DictQCCondition, m_DictQCCategory);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Beispiel #12
0
 /// <summary>
 ///选择行变化触发的事件
 ///xlb 2013-01-06
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gridViewCondition_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
 {
     try
     {
         if (e.FocusedRowHandle < 0)
         {
             return;
         }
         _qcCondition = gridViewCondition.GetRow(e.FocusedRowHandle) as QCCondition;
         DS_Common.ClearControl(groupControl1);
         ShowCondition(_qcCondition);
         SetEditState(false, false);
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(1, ex);
     }
 }
Beispiel #13
0
 /// <summary>
 /// 单击GridControl事件
 /// xlb 2013-01-09
 /// 应对focusedrowchanged失效时使用
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gridViewCondition_Click(object sender, EventArgs e)
 {
     try
     {
         if (gridViewCondition.FocusedRowHandle < 0)
         {
             return;
         }
         _qcCondition = gridViewCondition.GetRow(gridViewCondition.FocusedRowHandle) as QCCondition;
         DS_Common.ClearControl(groupControl1);
         ShowCondition(_qcCondition);
         SetEditState(false, false);
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(1, ex);
     }
 }
Beispiel #14
0
        /// <summary>
        /// 查询方法
        /// by xlb 2013-01-06
        /// </summary>
        private void Search()
        {
            try
            {
                _qcCondition             = new QCCondition();
                _qcCondition.Code        = this.textEditCode.Text.Trim();
                _qcCondition.Description = this.textEditName.Text.Trim();
                List <QCCondition> getQcCondition = QCCondition.getAllConditions(_qcCondition);
                gridControlCondition.DataSource = getQcCondition;

                #region ---------------注销by xlb 2013-02-02--同时操作取不到最新数据集-------
                //List<QCCondition> qcConditionList = conditionList.FindAll(s =>
                //(s.Code.Contains(this.textEditCode.Text.Trim())
                //&& s.Description.Contains(textEditName.Text.Trim())))
                //as List<QCCondition>;
                //gridControlCondition.DataSource = qcConditionList;
                #endregion
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #15
0
 /// <summary>
 /// 产生时限规则条件最大编号
 /// by xlb 2013-01-07
 /// </summary>
 /// <returns></returns>
 private int CalMaxQcConditionID()
 {
     try
     {
         int       maxid          = 0;
         DataTable dtAllCondition = QCCondition.GetAllQCConditions();
         if (dtAllCondition == null || dtAllCondition.Rows.Count <= 0)
         {
             return(maxid);
         }
         foreach (DataRow dr in dtAllCondition.Rows)
         {
             if (int.Parse(dr["CODE"].ToString()) > maxid)
             {
                 maxid = int.Parse(dr["CODE"].ToString());
             }
         }
         return(maxid);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }