AIMS/AIMSControls/OperationAanesthesia/frmBloodGasAnalysisNew.cs
2023-08-16 22:32:16 +08:00

474 lines
19 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
/// <summary>
/// 图表控件
/// </summary>
public DrawGraph.ZedGraphControl zgcAnaesRecord;
public DrawGraph.OperationRecord _record;
/// <summary>
/// 血气分析对象
/// </summary>
FactBloodGasAnalysis Analysis;
private EditState CurrentState;
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
}
/// <summary>
/// 绑定血气分析字典
/// </summary>
private void BindBloodListDict()
{
List<BloodGasAnalysisDict> 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;
}
}
/// <summary>
/// 绑定数据到Datagridview
/// </summary>
private void BindDgv()
{
List<FactBloodGasAnalysis> 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();
}
/// <summary>
/// 添加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbAddAnalysis_Click(object sender, EventArgs e)
{
CurrentState = EditState.ADD;
//tsbCancel_Click(null, null);
ControlExtension.EnabledControl(panel1, true);
AnalysisBeginTime.Value = DateTime.Now;
}
/// <summary>
/// 血气分析
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<FactBloodGasAnalysisData> 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;
}
}
}
}
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbCancel_Click(object sender, EventArgs e)
{
CurrentState = EditState.BROWSE;
ControlExtension.ClearControl(panel1);
ControlExtension.EnabledControl(panel1, false);
}
/// <summary>
/// 关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbExit_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<FactBloodGasAnalysisData>();
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();
}
/// <summary>
/// 输入验证
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 删除血气分析
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
/// <summary>
/// 设置自增列
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// TabIndex顺序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
{
/// <summary>
/// 浏览
/// </summary>
BROWSE,
/// <summary>
/// 增加
/// </summary>
ADD,
/// <summary>
/// 修改
/// </summary>
EDIT
}
}