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