using AIMSBLL; using AIMSModel; using DevComponents.DotNetBar; using DrawGraph; using AIMSExtension; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Windows.Forms; using DataDictionary; namespace AIMS.OperationAanesthesia { public partial class frmBloodGasAnalysisNew : Form { public frmBloodGasAnalysisNew() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.FixedSingle; } /// /// 图表控件 /// public DrawGraph.ZedGraphControl zgcAnaesRecord; public DrawGraph.OperationRecord _record; /// /// 血气分析对象 /// FactBloodGasAnalysis Analysis; private EditState CurrentState; /// /// 窗体加载 /// /// /// private void frmAnalysis_Load(object sender, EventArgs e) { ControlExtension.ClearControl(panel1); //ControlExtension.EnabledControl(panel1, false); radioButton1.Checked = true; this.Text = "血气分析"; dgvAnalysis.AutoGenerateColumns = false; BindBloodListDict(); BindDgv(); dgvAnalysis.PaintEnhancedSelection = false; this.AnalysisBeginTime.Value = DateTime.Now; } /// /// 绑定血气分析字典 /// private void BindBloodListDict() { List bloodGasAnalysisDicts = BBloodGasAnalysisDict.Select(" IsValid=1 and isShow=1 order by orderby asc ", null, RecursiveType.None, 0); int y = -30; int x = 0; for (int i = 0; i < bloodGasAnalysisDicts.Count; i++) { if (i % 8 == 0) { y += 35; x = 0; } x += 5; System.Windows.Forms.Label lab = new System.Windows.Forms.Label(); //lab.AutoSize = true; lab.Font = new System.Drawing.Font("微软雅黑", 10f); lab.Location = new System.Drawing.Point(x, y); lab.Size = new System.Drawing.Size(80, 26); lab.TextAlign = ContentAlignment.MiddleCenter; lab.Text = bloodGasAnalysisDicts[i].ShowName.ToString().Trim(); panel2.Controls.Add(lab); x += 82; TextBox lb = new TextBox(); lb.Tag = bloodGasAnalysisDicts[i]; //设定位置 lb.Size = new System.Drawing.Size(55, 26); lb.Font = new System.Drawing.Font("微软雅黑", 10.5f); lb.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtPH_KeyDown); lb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dgvTxt_KeyPress); lb.Leave += lb_Leave; lb.Location = new Point(x, y); panel2.Controls.Add(lb); x += 55; System.Windows.Forms.DataGridViewTextBoxColumn colum = new System.Windows.Forms.DataGridViewTextBoxColumn(); colum.HeaderText = bloodGasAnalysisDicts[i].ShowName; colum.Name = bloodGasAnalysisDicts[i].ShowName; colum.Width = 80; this.dgvAnalysis.Columns.Add(colum); } System.Windows.Forms.DataGridViewTextBoxColumn columouthe = new System.Windows.Forms.DataGridViewTextBoxColumn(); columouthe.DataPropertyName = "AnalysisResult"; columouthe.HeaderText = "分析结果"; columouthe.Name = "value"; columouthe.Width = 120; this.dgvAnalysis.Columns.Add(columouthe); } void lb_Leave(object sender, EventArgs e) { TextBox t = sender as TextBox; if (t.Text == "") { return; } BloodGasAnalysisDict bg = t.Tag as BloodGasAnalysisDict; if (decimal.Parse(t.Text) < bg.LowLimit || decimal.Parse(t.Text) > bg.HighLimit) { t.Font = new Font(t.Font, t.Font.Style | FontStyle.Bold); t.ForeColor = Color.Red; } else { t.ForeColor = Color.Black; } } /// /// 绑定数据到Datagridview /// private void BindDgv() { List list = BFactBloodGasAnalysis.Select(" OperationRecordId=@OperationRecordId", new ParameterList("@OperationRecordId", _record.Id), RecursiveType.None, 0); dgvAnalysis.DataSource = list; foreach (DataGridViewRow item in dgvAnalysis.Rows) { FactBloodGasAnalysis bloodGasAnalysis = _record.FactBloodGasAnalysisList.Where((a) => a.Id.ToString() == item.Cells[0].Value.ToString()).ToList()[0]; if (bloodGasAnalysis.FactBloodGasAnalysisDataList != null) { foreach (var dicval in bloodGasAnalysis.FactBloodGasAnalysisDataList) { if (dicval.Value != null) { try {//To:item.Cells[dicval.Name] 会报错;FactBloodGasAnalysis字段名称没有FactBloodGasAnalysisData Name值 最优解决办法:sql 查询数据表字段名称返回字段集合去过滤 //Date:20220228 By:Leftyer //Detail: 解决方法最简单的使用了异常捕获;抛异常后继续执行 item.Cells[dicval.Name].Value = double.Parse(dicval.Value.ToString()); //if (dicval.DictRef.LowLimit != null && dicval.DictRef.HighLimit != null) //{ // if (dicval.DictRef.LowLimit.ToString() != "" && dicval.DictRef.HighLimit.ToString() != "") // { // if (dicval.Value < dicval.DictRef.LowLimit || dicval.Value > dicval.DictRef.HighLimit) // { // item.Cells[dicval.Name].Style.ForeColor = Color.Red; // item.Cells[dicval.Name].Style.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); // } // } //} } catch (Exception ex) {// PublicMethod.WriteLog(ex); continue; } } } } } dgvAnalysis.ClearSelection(); } /// /// 添加 /// /// /// private void tsbAddAnalysis_Click(object sender, EventArgs e) { CurrentState = EditState.ADD; //tsbCancel_Click(null, null); ControlExtension.EnabledControl(panel1, true); AnalysisBeginTime.Value = DateTime.Now; } /// /// 血气分析 /// /// private void setDateAnalysis() { //if (txtPH.Text != "") Analysis.PH = Decimal.Parse(txtPH.Text); Analysis.BloodGasType = radioButton1.Checked == true ? Analysis.BloodGasType = "动脉血气" : "静脉血气"; Analysis.AnalysisResult = txtBloodResult.Text.Trim() == null ? "" : txtBloodResult.Text.Trim(); Analysis.RecordTime = AnalysisBeginTime.Value; Analysis.OperationRecordId = _record.Id; Analysis.OperatorId = PublicMethod.OperatorId; Analysis.OperatorTime = DateTime.Now; } /// /// 修改 /// /// /// private void tsbModifyAnalysis_Click(object sender, EventArgs e) { if (!(dgvAnalysis.SelectedRows.Count > 0)) { MessageBox.Show("请选择列表中的一项"); return; } CurrentState = EditState.EDIT; ControlExtension.EnabledControl(panel1, true); this.Text = "修改血气分析"; Analysis = _record.FactBloodGasAnalysisList.Where(c => c.Id == Convert.ToInt32(dgvAnalysis.SelectedRows[0].Cells["Id"].Value)).ToList()[0]; if (Analysis.BloodGasType == "动脉血气") { radioButton1.Checked = true; } else { radioButton2.Checked = true; } AnalysisBeginTime.Text = Analysis.RecordTime.Value.ToString(); txtBloodResult.Text = Analysis.AnalysisResult; foreach (Control ctrl in panel2.Controls) { if (ctrl is TextBox) { TextBox textBox = (ctrl as TextBox); if (textBox.Tag != null) { try { BloodGasAnalysisDict dict = (BloodGasAnalysisDict)textBox.Tag; List recordData = Analysis.FactBloodGasAnalysisDataList.Where(a => a.DictId == dict.Id).ToList(); if (recordData != null && recordData.Count > 0) textBox.Text = double.Parse(recordData[0].Value.ToString()).ToString(); } catch (Exception) { continue; } } } } } /// /// 取消 /// /// /// private void tsbCancel_Click(object sender, EventArgs e) { CurrentState = EditState.BROWSE; ControlExtension.ClearControl(panel1); ControlExtension.EnabledControl(panel1, false); } /// /// 关闭 /// /// /// private void tsbExit_Click(object sender, EventArgs e) { this.Close(); } /// /// 保存 /// /// /// private void tsbSave_Click(object sender, EventArgs e) { if (!InputValid()) return; if (Analysis == null) Analysis = new FactBloodGasAnalysis(); Analysis.OperationRecordId = _record.Id; if (Analysis.Id == null) { setDateAnalysis(); Analysis.Id = BFactBloodGasAnalysis.Insert(Analysis); _record.FactBloodGasAnalysisList.Add(Analysis); } else { BFactBloodGasAnalysisData.Delete(" RecordId=" + Analysis.Id, null); if(zgcAnaesRecord != null) Analysis.clearAddObj(zgcAnaesRecord); setDateAnalysis(); BFactBloodGasAnalysis.Update(Analysis); } if (Analysis.Id != null) { Analysis.FactBloodGasAnalysisDataList = new List(); foreach (Control ctrl in panel2.Controls) { if (ctrl is TextBox) { TextBox textBox = (ctrl as TextBox); if (textBox.Tag != null) { try { BloodGasAnalysisDict dict = (BloodGasAnalysisDict)textBox.Tag; FactBloodGasAnalysisData recordData = new FactBloodGasAnalysisData(); recordData.RecordId = Analysis.Id; recordData.DictId = dict.Id; recordData.Name = dict.ShowName; recordData.Value = Convert.ToDecimal(textBox.Text); recordData.Id = BFactBloodGasAnalysisData.Insert(recordData); recordData.DictRef = dict; Analysis.FactBloodGasAnalysisDataList.Add(recordData); //if (dict.IsWarning == 1 && dict.LowLimit != null && dict.HighLimit != null) // if (recordData.Value < dict.LowLimit || recordData.Value > dict.HighLimit) // { // message += " " + dict.Name + "的值:" + recordData.Value + " 超出报警范围(" + dict.LowLimit + "~" + dict.HighLimit + ") \n\r"; // } } catch (Exception) { continue; } } } } } //if (message != "") //{ // MessageBox.Show(message + "请注意!", "系统提示"); //} CurrentState = EditState.BROWSE; ControlExtension.ClearControl(panel1); //ControlExtension.EnabledControl(panel1, false); Analysis = null; BindDgv(); } /// /// 输入验证 /// /// private bool InputValid() { bool b = true; foreach (Control ctrl in panel2.Controls) { if (ctrl is TextBox) { TextBox textBox = (ctrl as TextBox); if (textBox.Tag != null) { try { string Value = textBox.Text; if (Value != null && Value != "" && Value.Trim() != "" && Value.Trim() != "-") { double douValue; if (double.TryParse(Value, out douValue) == false) { MessageBox.Show("请输入正确的数值!", "系统提示"); textBox.Focus(); b = false; } } } catch (Exception) { continue; } } } } return b; } /// /// 删除血气分析 /// /// /// private void tsbDelConsumable_Click(object sender, EventArgs e) { if (dgvAnalysis.SelectedRows.Count <= 0) { MessageBox.Show("请选择要删除的血气分析信息", "删除血气分析信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } DialogResult dr = MessageBox.Show("确定要删除该血气分析信息吗?", "删除血气分析信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { try { FactBloodGasAnalysis Blood = _record.FactBloodGasAnalysisList.Where(c => c.Id == Convert.ToInt32(dgvAnalysis.SelectedRows[0].Cells["ID"].Value)).ToList()[0]; BFactBloodGasAnalysisData.Delete(" RecordId=" + Blood.Id, null); BFactBloodGasAnalysis.Delete(Blood); if (zgcAnaesRecord != null) Blood.clearAddObj(zgcAnaesRecord); _record.FactBloodGasAnalysisList.Remove(Blood); ControlExtension.ClearControl(panel1); CurrentState = EditState.BROWSE; } catch (Exception exp) { PublicMethod.WriteLog(exp, ""); return; } BindDgv(); } } /// /// 设置自增列 /// /// /// private void dgvAnalysis_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dgvAnalysis.RowHeadersWidth - 4, e.RowBounds.Height); TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), dgvAnalysis.RowHeadersDefaultCellStyle.Font, rectangle, dgvAnalysis.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right); } /// /// TabIndex顺序 /// /// /// private void txtPH_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { this.SelectNextControl(this.ActiveControl, true, true, true, true); //需设置textBox的TabIndex顺序属性 } } void dgvTxt_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar < 48 || e.KeyChar > 57) { if (e.KeyChar != 46 && e.KeyChar != 45 && e.KeyChar != 8 && e.KeyChar != 13) { e.Handled = true; } } TextBox tb = sender as TextBox; if (e.KeyChar == 46) { int n = tb.Text.LastIndexOf("."); if (n > 0) e.Handled = true; } //if (e.KeyChar == 45 || e.KeyChar == '-') //{ // int n = tb.Text.LastIndexOf("."); // if (n > 0) e.Handled = true; // e.Handled = true; //} } private void frmBloodGasAnalysisNew_FormClosing(object sender, FormClosingEventArgs e) { if (CurrentState == EditState.ADD || CurrentState == EditState.EDIT) { DialogResult dialogResult = MessageBox.Show("记录尚未保存,是否保存当前记录?", "系统提示", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { tsbSave_Click(null, null); } } } } public enum EditState { /// /// 浏览 /// BROWSE, /// /// 增加 /// ADD, /// /// 修改 /// EDIT } }