AIMS/DrawGraph/AreaManage/PhysioDataConfig.cs
leomon 7ff33d156b 人员检索第二次报错 保存后重置控件
删除出室时间以后的数据
事件机控呼吸控制
2023-05-15 18:10:25 +08:00

1083 lines
37 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using DrawGraph;
using System.Drawing;
using System.Xml.Serialization;
using System.Data.SqlClient;
using HelperDB;
using System.Resources;
using AIMSExtension;
using System.Windows.Forms;
using System.Reflection;
namespace DrawGraph
{
public class PhysioDataConfig : EventObj
{
#region
private int id;
private int patientId;
private string name;
private string enname;
private string color;
private string imgPath;
private int highLimit;
private int lowLimit;
private bool isValid;
private string operatorNo;
private string operatorName;
private DateTime operateDate;
private string configType;
private bool showImg;
private bool showText;
private int warningHighLimit;
private int warningLowLimit;
private bool isSplit;
private bool isDefalultShow;
private string unit;
private int physioOrder;
private float symbolSize;
/// <summary>
///
/// </summary>
public int Id
{
get { return id; }
set { id = value; }
}
/// <summary>
/// 手术ID
/// </summary>
public int PatientId
{
get { return patientId; }
set { patientId = value; }
}
/// <summary>
///
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
///
/// </summary>
public string Enname
{
get { return enname; }
set { enname = value; }
}
/// <summary>
///
/// </summary>
public string Color
{
get { return color; }
set { color = value; }
}
/// <summary>
///
/// </summary>
public string ImgPath
{
get { return imgPath; }
set { imgPath = value; }
}
/// <summary>
///
/// </summary>
public int HighLimit
{
get { return highLimit; }
set { highLimit = value; }
}
/// <summary>
///
/// </summary>
public int LowLimit
{
get { return lowLimit; }
set { lowLimit = value; }
}
/// <summary>
///
/// </summary>
public bool IsValid
{
get { return isValid; }
set { isValid = value; }
}
/// <summary>
///
/// </summary>
public string OperatorNo
{
get { return operatorNo; }
set { operatorNo = value; }
}
/// <summary>
///
/// </summary>
public string OperatorName
{
get { return operatorName; }
set { operatorName = value; }
}
/// <summary>
///
/// </summary>
public DateTime OperateDate
{
get { return operateDate; }
set { operateDate = value; }
}
/// <summary>
///
/// </summary>
public string ConfigType
{
get { return configType; }
set { configType = value; }
}
/// <summary>
///
/// </summary>
public bool ShowImg
{
get { return showImg; }
set { showImg = value; }
}
/// <summary>
///
/// </summary>
public bool ShowText
{
get { return showText; }
set { showText = value; }
}
/// <summary>
///
/// </summary>
public int WarningHighLimit
{
get { return warningHighLimit; }
set { warningHighLimit = value; }
}
/// <summary>
///
/// </summary>
public int WarningLowLimit
{
get { return warningLowLimit; }
set { warningLowLimit = value; }
}
/// <summary>
///
/// </summary>
public bool IsSplit
{
get { return isSplit; }
set { isSplit = value; }
}
/// <summary>
///
/// </summary>
public bool IsDefalultShow
{
get { return isDefalultShow; }
set { isDefalultShow = value; }
}
/// <summary>
///
/// </summary>
public string Unit
{
get { return unit; }
set { unit = value; }
}
/// <summary>
///
/// </summary>
public int PhysioOrder
{
get { return physioOrder; }
set { physioOrder = value; }
}
public float SymbolSize
{
get { return symbolSize; }
set { symbolSize = value; }
}
#endregion
#region
private int yAisx = 0;
private Color conveColor;
public double X_MINOR_GRID_STEP = 5.0; //步长
private PointPairList aPhysioDatas;
PhysioData pdTrue = null;
public double YLocation { get; set; }
[XmlIgnore]
private LineItem curve1;
[XmlIgnore]
private bool isClick = false;
[XmlIgnore]
public LineItem curve
{
get { return curve1; }
set { curve1 = value; }
}
[XmlIgnore]
public bool IsClick
{
get { return isClick; }
set { isClick = value; }
}
/// <summary>
/// 生理数据集合
/// </summary>
public PointPairList APhysioParams
{
get { return aPhysioDatas; }
set { aPhysioDatas = value; }
}
/// <summary>
/// 此曲线的Y轴
/// </summary>
public int YAisx
{
get { return yAisx; }
set { yAisx = value; }
}
/// <summary>
/// 线的着色
/// </summary>
public Color ConveColor
{
get { return conveColor; }
set { conveColor = value; }
}
/// <summary>
/// Panel动态填写对象
/// </summary>
public AbleEditPackObj phListPack = null;
public delegate void ClickEventHandler(object sender, EventArgs e);
public event ClickEventHandler Click;
public void onClick(EventArgs e)
{
if (Click != null)
{
Click(this, e);
}
}
public PhysioDataConfig()
{
APhysioParams = new PointPairList();
}
#endregion
#region
/// <summary>
/// 画生理曲线,即初始化
/// </summary>
public void initCurve(bool isValidLine = true)
{
if (zgcAnas == null)
{
return;
}
PointPairList ppl = new PointPairList();
curve = ZUtil.AddCurve(Name, ppl, conveColor, imgPath, true, zgcAnas, TextPrefix.PI + Name + Id.ToString(), SymbolSize);
curve.YAxisIndex = this.YAisx;
curve.Label.IsVisible = this.isValid;
curve.Symbol.IsVisible = this.isValid;
curve.Line.IsVisible = isValidLine;
curve.Label.FontSpec = new FontSpec("微软雅黑", 5.9f, System.Drawing.Color.Black, false, false, false);
curve.Label.FontSpec.Border.IsVisible = false;
curve.Label.FontSpec.Fill.IsVisible = false;
}
/// <summary>
/// 重新设置曲线属性
/// </summary>
public void reSetCurve()
{
this.curve.Color = this.ConveColor;
this.curve.Symbol.Fill = new Fill(new ZUtil().getImage(this.imgPath), System.Drawing.Drawing2D.WrapMode.Clamp);
this.curve.IsVisible = this.isValid;
this.curve.YAxisIndex = this.YAisx;
curve.Label.IsVisible = this.isValid;
curve.Line.IsVisible = this.isValid;
curve.Symbol.IsVisible = this.isValid;
if (!ShowText)
{
foreach (PointPair pp in APhysioParams)
{
PhysioData pd = PointPairToPhysioData(pp);
if (pd != null)
{
delAddObj(pd);
SetPositionText(pd, "-1");
}
}
}
else
{
foreach (PointPair pp in APhysioParams)
{
PhysioData pd = PointPairToPhysioData(pp);
if (pd != null) DrawTextPhysioData(pd);
}
}
}
/// <summary>
/// 重新设置曲线属性
/// </summary>
public void reSetCurveSpo2()
{
this.curve.Color = this.ConveColor;
this.curve.Symbol.Fill = new Fill(new ZUtil().getImage(this.imgPath), System.Drawing.Drawing2D.WrapMode.Clamp);
this.curve.IsVisible = this.isValid;
this.curve.YAxisIndex = this.YAisx;
curve.Label.IsVisible = this.isValid;
curve.Line.IsVisible = this.isValid;
curve.Symbol.IsVisible = this.isValid;
}
public static IList<PhysioDataConfig> GetLifeList()
{
string sql = "Select * FROM PhysioDataConfig where ConfigType='生命体征' order by PhysioOrder asc";
return GetListBySql(sql);
}
public static IList<PhysioDataConfig> GetAnesList()
{
string sql = "Select * FROM PhysioDataConfig where ConfigType='麻醉体征' order by PhysioOrder asc";
return GetListBySql(sql);
}
public static IList<PhysioDataConfig> GetEventList()
{
string sql = "Select * FROM PhysioDataConfig where ConfigType='事件' order by PhysioOrder asc";
return GetListBySql(sql);
}
#endregion
#region
public void AddPointItem(PhysioData pd, bool isInsertDB = true)
{
//如果是负数则不执行操作
if (pd.Value <= 0) return;
bool isHave = false;
foreach (PointPair pptemp in APhysioParams)
{
PhysioData temp1 = PointPairToPhysioData(pptemp);
if (pd.isEquert(temp1) && temp1.Value != Double.MaxValue)
{
isHave = true;
break;
}
}
if (isHave) return;
if (APhysioParams.Count > 0 && IsSplit == true)
{
PhysioData pdTemp = pd.Clone();
//当前点的前一个点加步长时间的结点
PhysioData pdQD = reMPhysioData(pdTemp);
//插入的点大于之前点5分钟以上
if (DateTime.Compare(pd.RecordTime, pdQD.RecordTime.AddMinutes(1)) > 0)
{
pdTemp.Value = Double.MaxValue;
this.APhysioParams.Add(pdTemp);
}
}
this.APhysioParams.Add(pd);
Sort();
if (curve != null)
curve.Points = APhysioParams;
if (isInsertDB == true)
PhysioDataService.AddPhysioData(pd);
if (ShowText == true)
{
DrawTextPhysioData(pd);
}
}
public void UpdatePointItem(PhysioData pd, bool isInsertDB = true)
{
//如果是负数则不执行操作
if (pd.Value <= 0) return;
bool isHave = false;
foreach (PointPair pptemp in APhysioParams)
{
PhysioData temp1 = PointPairToPhysioData(pptemp);
if (pd.isEquert(temp1) && temp1.Value != Double.MaxValue)
{
isHave = true;
break;
}
}
if (!isHave)
this.APhysioParams.Add(pd);
Sort();
if (curve != null)
curve.Points = APhysioParams;
if (isInsertDB == true)
PhysioDataService.AddPhysioData(pd);
if (ShowText == true)
{
DrawTextPhysioData(pd);
}
}
/// <summary>
/// 增加一点生理数据,往数据库中写入数据
/// </summary>
/// <param name="pd"></param>
public void AddItem(PhysioData pd, bool isShouDong = true, bool isFillMissPoint = true)
{
//如果是负数则不执行操作
if (pd.Value < 0) return;
if (pdTrue == null)
pdTrue = pd.Clone();
if (APhysioParams.Count > 0 && IsSplit == true)
{
PhysioData pdTemp = pd.Clone();
//当前点的前一个点加步长时间的结点
PhysioData pdQD = reMPhysioData(pdTemp);
//插入的点大于之前点5分钟以上
if (DateTime.Compare(pd.RecordTime, pdQD.RecordTime.AddMinutes(1)) > 0)
{
pdTemp.Value = Double.MaxValue;
this.APhysioParams.Add(pdTemp);
}
}
if (isShouDong)
pd = reCnterValue(pd);
//增加点时如果当前有点且是隐藏的则直接改值
Sort();
bool isHave = false;
foreach (PointPair pptemp in APhysioParams)
{
PhysioData pdTemp = PointPairToPhysioData(pptemp);
if (pdTemp.isEquert(pd) && pdTemp.Value == Double.MaxValue)
{
pptemp.Y = pd.Value;
isHave = true;
break;
}
else if (pdTemp.isEquert(pd))
{
isHave = true;
break;
}
}
if (!isHave)
{
this.APhysioParams.Add(pd);
}
Sort();
pd.ValueString = pd.Value.ToString();
curve.Points = APhysioParams;
PhysioDataService.AddPhysioData(pd);
if (ShowText == true)
{
DrawTextPhysioData(pd);
}
if (isShouDong == true)
{
for (int i = APhysioParams.Count - 1; i > -1; i--)
{
PhysioData maxPhysioData = PointPairToPhysioData(APhysioParams[i]);
if (i != 0 && i != APhysioParams.Count - 1)
{
if (maxPhysioData.Y == Double.MaxValue)
{
bool b = false;
for (int j = 0; j < APhysioParams.Count; j++)
{
PhysioData pdt = PointPairToPhysioData(APhysioParams[j]);
if (pdt.RecordTime == maxPhysioData.RecordTime && pdt.Value <= HighLimit)
{
b = true;
break;
}
}
if (b == true)
this.APhysioParams.Remove(maxPhysioData);
}
}
}
}
if (isFillMissPoint == true && pdTrue != null)
{
//返回当前曲线上最大且不为空的点
PhysioData maxPd = ReMaxAndGoodPhysioData();
if (maxPd != null && pdTrue.RecordTime > maxPd.RecordTime)
{
int timeDiff = DateTime.Compare(pdTrue.RecordTime, maxPd.RecordTime);
//因为插入的真实点大于曲线上最后一个点,则指增加生理数据
if (timeDiff > 0)
{
//如果新增加的点还小于真实的点,则批量增加生理数据
if (DateTime.Compare(pd.RecordTime, pdTrue.RecordTime) < 0 && pd.RecordTime.ToString("HH:mm") != pdTrue.RecordTime.ToString("HH:mm"))
{
pd.RecordTime = pd.RecordTime.AddMinutes(this.X_MINOR_GRID_STEP);
bool isHavechild = false;
foreach (PointPair pptemp in APhysioParams)
{
PhysioData pdTemp = PointPairToPhysioData(pptemp);
if (pdTemp.isEquert(pd) && pdTemp.Value != Double.MaxValue)
{
isHavechild = true;
break;
}
}
if (isHavechild == false)
AddItem(pd, isShouDong, isFillMissPoint);
}
}
else
{
pdTrue = null;
}
}
else
{
pdTrue = null;
}
}
}
/// <summary>
/// 增加一点生理数据,往数据库中写入数据
/// </summary>
/// <param name="pd"></param>
public void AddMultipleItem(PhysioData pd, DateTime endtime, int collectInterval)
{
//如果是负数则不执行操作
pd = reCnterValue(pd);
TimeSpan tsp = endtime - pd.RecordTime;
if (tsp.TotalMinutes >= 20 && this.IsSplit == true)
{
pd.RecordTime = endtime;
pd = reCnterValue(pd, false);
AddItem(pd, false);
}
else
{
pd.RecordTime = endtime;
AddItem(pd);
}
}
/// <summary>
/// 仅修改值不修改数据库
/// </summary>
/// <param name="oldPd"></param>
/// <param name="newPd"></param>
/// <param name="index"></param>
public PhysioData MoveItem(PhysioData newPd)
{
//如果是负数则不执行操作
if (newPd.Value < 0) return null;
newPd = reCnterValue(newPd);
int index = indexOf(newPd);
if (index == -1) return null;
this.APhysioParams[index].Y = newPd.Y;
Sort();
curve.Points = APhysioParams;
if (ShowText == true)
{
MoveText(newPd);
}
return newPd;
}
private void MoveText(PhysioData newPd)
{
TextObj text = (TextObj)zgcAnas.MasterPane.GraphObjList[this.Enname + newPd.RecordTime.ToString()];
if (text != null)
{
text.Location.Y = YLocation;
text.Text = ((int)newPd.Value).ToString();
}
}
public void ModifyItem(PhysioData oldPd, PhysioData newPd)
{
//如果是负数则不执行操作
if (newPd.Value < 0 && oldPd.PhysioDataConfigId != newPd.PhysioDataConfigId)
return;
int index = indexOf(newPd);
if (index == -1) return;
//newPd = reCnterValue(newPd, false);
newPd.ValueString = newPd.Value.ToString();
this.APhysioParams[index].Y = newPd.Y;
Sort();
curve.Points = APhysioParams;
PhysioDataService.UpdatePhysioData(oldPd, newPd, PublicMethod.OperatorName);
if (ShowText == true)
{
delAddObj(oldPd);
DrawTextPhysioData(newPd);
}
}
public void ModifyAddItem(PhysioData oldPd, PhysioData newPd)
{
//如果是负数则不执行操作
if (newPd.Value < 0 && oldPd.PhysioDataConfigId != newPd.PhysioDataConfigId)
return;
if (newPd.Value < lowLimit)
{
newPd.ValueString = lowLimit.ToString();
}
if (newPd.Value > highLimit && newPd.Value < double.MaxValue)
{
newPd.ValueString = highLimit.ToString();
}
int index = indexOf(newPd);
if (index == -1)
{
if (APhysioParams.Count > 0)
{
PhysioData pdTemp = newPd.Clone();
//当前点的前一个点加步长时间的结点
PhysioData pdQD = reMPhysioData(pdTemp);
//插入的点大于之前点5分钟以上
if (DateTime.Compare(newPd.RecordTime, pdQD.RecordTime.AddMinutes(1)) > 0)
{
this.APhysioParams.Add(pdTemp);
PhysioDataService.UpdatePhysioData(pdTemp, pdTemp, PublicMethod.OperatorName);
if (ShowText == true)
{
DrawTextPhysioData(pdTemp);
}
}
}
this.APhysioParams.Add(newPd);
}
else
{
newPd.ValueString = newPd.Value.ToString();
this.APhysioParams[index].Y = newPd.Y;
}
Sort();
curve.Points = APhysioParams;
PhysioDataService.UpdatePhysioData(oldPd, newPd, PublicMethod.OperatorName);
if (ShowText == true)
{
delAddObj(oldPd);
DrawTextPhysioData(newPd);
}
}
/// <summary>
/// 删除一点生理数据
/// </summary>
/// <param name="pd"></param>
public void DelItem(PhysioData pd)
{
Sort();
//如果是两头的点就删除,如果是中间的点就设置为无效
bool isModmaxValue = false;
for (int i = APhysioParams.Count - 1; i > -1; i--)
{
PhysioData maxPhysioData = PointPairToPhysioData(APhysioParams[i]);
if (maxPhysioData.isEquert(pd) && i != 0 && i != APhysioParams.Count - 1)
{
APhysioParams[i].Y = Double.MaxValue;
isModmaxValue = true;
break;
}
}
if (!isModmaxValue)
this.APhysioParams.Remove(pd);
curve.Points = APhysioParams;
Sort();
if (ShowText == true || pd.Value == HighLimit)
{
delAddObj(pd);
SetPositionText(pd, "-1");
}
PhysioDataService.DelPhysioByValueData(pd);
for (int i = APhysioParams.Count - 1; i > -1; i--)
{
PhysioData maxPhysioData = PointPairToPhysioData(APhysioParams[i]);
if (maxPhysioData.isEquert(pd) && maxPhysioData.Y != Double.MaxValue)
{
this.APhysioParams.Remove(APhysioParams[i]);
break;
}
}
}
public void DelItems(DateTime RecordTime, DateTime EndTime)
{
PhysioDataService.DelPhysioasDataParameterID(RecordTime, EndTime, this.Id, this.PatientId);
}
public void DrawTextPhysioData(PhysioData pd)
{
delAddObj(pd);
if (pd.RecordTime <= pageEnd && pd.RecordTime >= pageBegin)
{
string viewValue = "";
if (ConfigType == "生命体征" || ShowText == true)
{
if (pd.Value != Double.MaxValue && pd.Value > 0)
{
viewValue = ((double)pd.Value).ToString();
if (Enname == "Temp")
viewValue = Math.Round(pd.Y, 1).ToString();
}
else
{
viewValue = pd.ValueString;
}
}
else
{
viewValue = pd.ValueString;
}
if (viewValue != "")
{
//取这个时间点的偏移量
DateTime pylTime = GetpylTime(pd.RecordTime);
if (pylTime > pageBegin && pylTime < pageEnd)
{
ZUtil.DrawText(viewValue, getXPositinByXDate(pylTime), YLocation, zgcAnas, this.Enname + pd.RecordTime.ToString(), 5f, true);
SetPositionText(pd, viewValue);
}
}
}
}
public DateTime GetpylTime(DateTime RecordTime, int YAisx = 5)
{
DateTime resultTime = RecordTime;
for (int i = (240 / 5); i >= 0; i--)
{
DateTime spanTime = pageBegin.AddMinutes(i * 5);
if (spanTime >= resultTime && spanTime < resultTime.AddMinutes(5))
{
resultTime = spanTime.AddMinutes(2).AddSeconds(30);
break;
}
}
return resultTime;
}
#endregion
#region
/// <summary>
/// 为生理数据集合排序
/// </summary>
public void Sort()
{
aPhysioDatas.Sort();
}
public int indexOf(PhysioData pd)
{
for (int i = 0; i < APhysioParams.Count; i++)
{
if (pd.isEquert(PointPairToPhysioData(APhysioParams[i])))
{
return i;
}
}
return -1;
}
public PhysioData PointPairToPhysioData(PointPair pp)
{
if (pp == null) return null;
PhysioData pd = new PhysioData();
pd.ValueString = pp.Y.ToString();
pd.Value = pp.Y;
pd.RecordTime = new XDate(pp.X);
pd.PatientId = PatientId;
pd.PhysioDataConfigId = Id;
pd.config = this;
return pd;
}
/// <summary>
/// 删除麻醉单上的曲线本身,不包含数据删除
/// </summary>
/// <param name="DrugsRecord"></param>
public override void clearAddObj(ZedGraphControl zgc)
{
if (zgcAnas == null || zgcAnas != zgc) zgcAnas = zgc;
if (ShowText == true)
{
foreach (PointPair pp in APhysioParams)
{
PhysioData pd = PointPairToPhysioData(pp);
if (pd != null)
{
delAddObj(pd);
SetPositionText(pd, "-1");
}
}
}
if (APhysioParams == null || curve == null) return;
APhysioParams.Clear();
curve.Points = APhysioParams;
}
/// <summary>
/// 清除各种对象数据
/// </summary>
/// <param name="frm"></param>
public void ClearTagstr(ZedGraphControl zgc)
{
if (zgcAnas == null || zgcAnas != zgc) zgcAnas = zgc;
delAddObj("PP" + Enname);
delAddObj("PP" + Enname + "unit");
delAddObj("PP" + Enname + Id);
delAddObj("PPP" + Enname);
delAddObj("PPP" + Enname + "unit");
}
public void delAddObj(PhysioData newPd)
{
delAddObj(this.Enname + newPd.RecordTime.ToString());
}
/// <summary>
/// 控制画点的范围
/// </summary>
/// <param name="pd">物理点</param>
/// <param name="isCaiji">是否采集</param>
/// <returns></returns>
private PhysioData reCnterValue(PhysioData pd, bool isShouDong = true)
{
if (pd != null)
{
//因为物理数据的值小于下标值或大于上标值中,取上下中间的值
if (pd.Value < lowLimit)
{
pd.Value = lowLimit;
}
if (pd.Value > highLimit && pd.Value < double.MaxValue)
{
pd.Value = highLimit;
}
if (APhysioParams.Count > 0 && isShouDong)
{
Sort();
pd = reMPhysioData(pd);
}
}
return pd;
}
/// <summary>
/// 返回小于传入点里小于且最接近的点
/// </summary>
/// <param name="pd">传入点</param>
/// <returns></returns>
private PhysioData reMPhysioData(PhysioData pd)
{
PhysioData maxPhysioData = null;
for (int i = APhysioParams.Count - 1; i > -1; i--)
{
maxPhysioData = PointPairToPhysioData(APhysioParams[i]);
int inTime = DateTime.Compare(pd.RecordTime, maxPhysioData.RecordTime);
//且被大于的值的点不空隐藏
if (inTime > 0 && maxPhysioData.Value != Double.MaxValue)
{
pd.RecordTime = maxPhysioData.RecordTime.AddMinutes(this.X_MINOR_GRID_STEP);
return pd;
}
}
return pd;
}
/// <summary>
/// 返回当前曲线上最大且不为空的点
/// </summary>
/// <returns></returns>
private PhysioData ReMaxAndGoodPhysioData()
{
PhysioData rePd = null;
for (int i = APhysioParams.Count - 1; i > -1; i--)
{
rePd = PointPairToPhysioData(APhysioParams[i]);
//且被大于的值的点不空隐藏
if (rePd.Value != Double.MaxValue)
{
return rePd;
}
}
return rePd;
}
#endregion
#region
public static int UpdatePhysioDataConfig(PhysioDataConfig physioDataConfig)
{
string sql = "Update PhysioDataConfig set HighLimit=@HighLimit, LowLimit=@LowLimit,ShowImg=@ShowImg, ShowText=@ShowText, WarningHighLimit=@WarningHighLimit, WarningLowLimit=@WarningLowLimit, IsSplit=@IsSplit, IsDefalultShow=@IsDefalultShow, Unit=@Unit, PhysioOrder=@PhysioOrder, YAisx=@YAisx, SymbolSize=@SymbolSize where Id=@Id";
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@Id",physioDataConfig.Id), new SqlParameter("@HighLimit",physioDataConfig.HighLimit), new SqlParameter("@LowLimit",physioDataConfig.LowLimit), new SqlParameter("@ShowImg",physioDataConfig.ShowImg), new SqlParameter("@ShowText",physioDataConfig.ShowText), new SqlParameter("@WarningHighLimit",physioDataConfig.WarningHighLimit), new SqlParameter("@WarningLowLimit",physioDataConfig.WarningLowLimit), new SqlParameter("@IsSplit",physioDataConfig.IsSplit), new SqlParameter("@IsDefalultShow",physioDataConfig.IsDefalultShow), new SqlParameter("@Unit",physioDataConfig.Unit), new SqlParameter("@PhysioOrder",physioDataConfig.PhysioOrder), new SqlParameter("@YAisx",physioDataConfig.YAisx), new SqlParameter("@SymbolSize",physioDataConfig.SymbolSize)
};
return DBHelper.ExecNonQuery(sql, para);
}
private static IList<PhysioDataConfig> GetListBySql(string sql, params SqlParameter[] para)
{
IList<PhysioDataConfig> list = new List<PhysioDataConfig>();
using (SqlDataReader reader = DBHelper.GetReader(sql, para))
{
while (reader.Read())
{
PhysioDataConfig temp = new PhysioDataConfig();
temp.Id = DBHelper.GetInt(reader["Id"]);
temp.Name = DBHelper.GetString(reader["Name"]);
temp.Enname = DBHelper.GetString(reader["Enname"]);
temp.Color = DBHelper.GetString(reader["Color"]);
temp.ImgPath = DBHelper.GetString(reader["imgPath"]);
temp.IsValid = DBHelper.GetInt(reader["IsValid"]) == 1 ? true : false;
temp.OperatorNo = DBHelper.GetString(reader["OperatorNo"]);
temp.OperatorName = DBHelper.GetString(reader["OperatorName"]);
temp.OperateDate = DBHelper.GetDateTime(reader["OperateDate"]);
temp.ConfigType = DBHelper.GetString(reader["ConfigType"]);
temp.ShowImg = DBHelper.GetInt(reader["ShowImg"]) == 1 ? true : false;
temp.ShowText = DBHelper.GetInt(reader["ShowText"]) == 1 ? true : false;
temp.HighLimit = DBHelper.GetInt(reader["HighLimit"]);
temp.LowLimit = DBHelper.GetInt(reader["LowLimit"]);
temp.WarningHighLimit = DBHelper.GetInt(reader["WarningHighLimit"]);
temp.WarningLowLimit = DBHelper.GetInt(reader["WarningLowLimit"]);
temp.IsSplit = DBHelper.GetInt(reader["IsSplit"]) == 1 ? true : false;
temp.IsDefalultShow = DBHelper.GetInt(reader["IsDefalultShow"]) == 1 ? true : false;
temp.Unit = DBHelper.GetString(reader["Unit"]);
temp.PhysioOrder = DBHelper.GetInt(reader["PhysioOrder"]);
temp.YAisx = DBHelper.GetInt(reader["YAisx"]);
temp.SymbolSize = DBHelper.GetInt(reader["SymbolSize"]);
list.Add(temp);
}
reader.Close();
return list;
}
}
public static PhysioData newPhysioData(PhysioDataConfig dataConfig, int Id, DateTime RecordTime, string Value)
{
PhysioData pdTemp = new PhysioData();
pdTemp.RecordTime = RecordTime;
pdTemp.ValueString = Value;
pdTemp.PhysioDataConfigId = dataConfig.Id;
pdTemp.PatientId = Id;
pdTemp.config = dataConfig;
return pdTemp;
}
public static PhysioData newPhysioData(PhysioDataConfig dataConfig, int Id, DateTime RecordTime, double Value)
{
PhysioData pdTemp = new PhysioData();
pdTemp.RecordTime = RecordTime;
pdTemp.ValueString = Value.ToString();
pdTemp.PhysioDataConfigId = dataConfig.Id;
pdTemp.PatientId = Id;
pdTemp.config = dataConfig;
return pdTemp;
}
public void EditAddItem(PhysioData pd)
{
this.APhysioParams.Add(pd);
PhysioDataService.AddPhysioData(pd);
DrawTextPhysioData(pd);
}
public void EditModifyItem(PhysioData oldPd, PhysioData newPd)
{
//如果是负数则不执行操作
if (oldPd.PhysioDataConfigId != newPd.PhysioDataConfigId)
return;
PhysioDataService.UpdatePhysioData(oldPd, newPd, PublicMethod.OperatorName);
delAddObj(oldPd);
DrawTextPhysioData(newPd);
this.APhysioParams.Remove(oldPd);
this.APhysioParams.Add(newPd);
}
public void EditDelItem(PhysioData pd)
{
delAddObj(pd);
SetPositionText(pd, "-1");
this.APhysioParams.Remove(pd);
PhysioDataService.DelPhysioByValueData(pd);
}
public void SetPositionText(PhysioData pdTemp, string viewValue)
{
if (phListPack != null)
{
Panel pan3 = phListPack.CControl as Panel;
if (pan3 != null)
{
Control[] cs = pan3.Controls.Find(pdTemp.PhysioDataConfigId + "" + GetRecordTime(pdTemp.RecordTime).ToString("HHmm"), true);
if (cs != null && cs.Length > 0)
{
Control c = cs[0];
if (c != null)
{
if (viewValue == "-1")
{
pdTemp.Value = -1;
pdTemp.ValueString = "";
c.Tag = pdTemp;
c.Text = "";
}
else
{
c.Tag = pdTemp;
c.Text = viewValue.ToString();
}
}
}
}
}
}
public void AddText(PhysioData pd)
{
if (pd.ValueString == null || pd.ValueString == "") return;
DrawTextPhysioData(pd);
}
public DateTime GetRecordTime(DateTime pdTemp, int collectInterval = 5)
{
DateTime result = Convert.ToDateTime(pdTemp.ToString("yyyy-MM-dd HH:mm:00.000"));
//小于入室时间默认不画
for (int i = 0; i < (480 / 5); i++)
{//InRoomTime.Value
DateTime tempTime = pageBegin.AddMinutes(i * 5);
if (tempTime >= result && result < tempTime.AddMinutes(5))
{
result = tempTime;
break;
}
}
//if (result < myOpeRecord.InRoomTime.Value)
//{
// result = myOpeRecord.InRoomTime.Value;
//}
return result;
}
#endregion
}
}