diff --git a/AIMS/OperationDoing/AnasRecordBill/frmAanesthesiaRecord.cs b/AIMS/OperationDoing/AnasRecordBill/frmAanesthesiaRecord.cs index 2b93710..b4893d5 100644 --- a/AIMS/OperationDoing/AnasRecordBill/frmAanesthesiaRecord.cs +++ b/AIMS/OperationDoing/AnasRecordBill/frmAanesthesiaRecord.cs @@ -1412,7 +1412,8 @@ namespace AIMS.OperationDoing.AnasRecordBill.UI { if (pdTemp.Value < 0) continue; PhysioDataConfig addPP = _record.PhysioConfigList.Where(a => pdTemp.PhysioDataConfigId == a.Id).ToList()[0]; - addPP.AddOrDelItem(pdTemp, 5); + //addPP.AddOrDelItem(pdTemp, 5); + addPP.AddPointItem(pdTemp); date++; } @@ -1756,23 +1757,23 @@ namespace AIMS.OperationDoing.AnasRecordBill.UI DateTime RecordTime = DateTime.Parse(dr["InsertTime"].ToString()); if (!isCgtime(addPP.Name, RecordTime)) continue; PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, RecordTime, dr["ParamValue"].ToString()); - addPP.AddItemByTime(pdTemp); - } - } - } - foreach (var addPP in _record.PhysioAnesConfigList) - { - if (addPP.IsValid == false) continue; - foreach (DataRow dr in dtPhysioData.Rows) - { - if (dr["ParameterName"] != null && dr["ParameterName"].ToString() != "" && dr["ParameterName"].ToString().Equals(addPP.Id.ToString())) - { - DateTime RecordTime = DateTime.Parse(dr["InsertTime"].ToString()); - PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, RecordTime, dr["ParamValue"].ToString()); - addPP.AddItemByTime(pdTemp); + addPP.AddPointItem(pdTemp, false); } } } + //foreach (var addPP in _record.PhysioAnesConfigList) + //{ + // if (addPP.IsValid == false) continue; + // foreach (DataRow dr in dtPhysioData.Rows) + // { + // if (dr["ParameterName"] != null && dr["ParameterName"].ToString() != "" && dr["ParameterName"].ToString().Equals(addPP.Id.ToString())) + // { + // DateTime RecordTime = DateTime.Parse(dr["InsertTime"].ToString()); + // PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, RecordTime, dr["ParamValue"].ToString()); + // addPP.AddPointItem(pdTemp); + // } + // } + //} } } private void UpdatePhysioDataResp() @@ -1791,9 +1792,9 @@ namespace AIMS.OperationDoing.AnasRecordBill.UI for (int i = 0; i < dtPhysioData.Rows.Count; i++) { if (dtPhysioData.Rows[i]["Name"].ToString().Equals(addPP.Name.ToString())) - { - PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()) , dtPhysioData.Rows[i]["Value"].ToString()); - addPP.AddPoition(pdTemp); + { + PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString()); + addPP.AddPointItem(pdTemp, false); } } } diff --git a/AIMS/OperationDoing/AnasRecordBill/frmFactEventsNew.cs b/AIMS/OperationDoing/AnasRecordBill/frmFactEventsNew.cs index 0c97e9b..90e143e 100644 --- a/AIMS/OperationDoing/AnasRecordBill/frmFactEventsNew.cs +++ b/AIMS/OperationDoing/AnasRecordBill/frmFactEventsNew.cs @@ -911,7 +911,7 @@ namespace AIMS.PublicUI.UI if (dtPhysioData.Rows[i]["Name"].ToString().Equals(addPP.Name.ToString())) { PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString()); - addPP.AddPoition(pdTemp); + addPP.AddPointItem(pdTemp, false); } } } diff --git a/AIMS/OperationDoing/AnasRecordBill/frmPhysioDataEdit.cs b/AIMS/OperationDoing/AnasRecordBill/frmPhysioDataEdit.cs index 7003dee..4177722 100644 --- a/AIMS/OperationDoing/AnasRecordBill/frmPhysioDataEdit.cs +++ b/AIMS/OperationDoing/AnasRecordBill/frmPhysioDataEdit.cs @@ -209,7 +209,7 @@ namespace AIMS.OperationDoing.AnasRecordBill if (pdNew.config.ConfigType == "麻醉体征") pdNew.config.EditModifyItem(pdNew, pdNew); else - pdNew.config.ModItem(pdNew, pdNew); + pdNew.config.ModifyItem(pdNew, pdNew); txtNum.Tag = pdNew; TempValue = txtNum.Text.Trim(); } @@ -224,7 +224,7 @@ namespace AIMS.OperationDoing.AnasRecordBill if (pdNew.config.ConfigType == "麻醉体征") pdNew.config.EditAddItem(pdNew); else - pdNew.config.AddFillItem(pdNew); + pdNew.config.AddPointItem(pdNew); txtNum.Tag = pdNew; TempValue = txtNum.Text.Trim(); } diff --git a/AIMS/OperationDoing/AnasRecoverBill/frmAanesthesiaRecover.cs b/AIMS/OperationDoing/AnasRecoverBill/frmAanesthesiaRecover.cs index aca07df..a883fd7 100644 --- a/AIMS/OperationDoing/AnasRecoverBill/frmAanesthesiaRecover.cs +++ b/AIMS/OperationDoing/AnasRecoverBill/frmAanesthesiaRecover.cs @@ -1030,7 +1030,8 @@ namespace AIMS.OperationDoing.AnasRecoverBill.UI { if (pdTemp.Value < 1) continue; PhysioDataConfig addPP = _record.PhysioConfigList.Where(a => pdTemp.PhysioDataConfigId == a.Id).ToList()[0]; - addPP.AddOrDelItem(pdTemp, 5); + //addPP.AddOrDelItem(pdTemp, 5); + addPP.AddPointItem(pdTemp); date++; } @@ -1364,7 +1365,7 @@ namespace AIMS.OperationDoing.AnasRecoverBill.UI DateTime RecordTime = DateTime.Parse(dr["InsertTime"].ToString()); if (!isCgtime(addPP.Name, RecordTime)) continue; PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, RecordTime, dr["ParamValue"].ToString()); - addPP.AddItemByTime(pdTemp); + addPP.AddPointItem(pdTemp); } } } diff --git a/AIMSExtension/PublicMethod.cs b/AIMSExtension/PublicMethod.cs index 90d61e0..8a42a96 100644 --- a/AIMSExtension/PublicMethod.cs +++ b/AIMSExtension/PublicMethod.cs @@ -773,7 +773,7 @@ namespace AIMSExtension sw.WriteLine("当前时间:" + DateTime.Now.ToString()); sw.WriteLine("异常信息:" + ex.Message); sw.WriteLine("异常对象:" + ex.Source); - sw.WriteLine("调用堆栈:\n" + ex.StackTrace.Trim()); + sw.WriteLine("调用堆栈:\n" + ex.StackTrace); sw.WriteLine("触发方法:" + ex.TargetSite); sw.WriteLine(); sw.Close(); diff --git a/DrawGraph/AreaManage/MonitorManage.cs b/DrawGraph/AreaManage/MonitorManage.cs index 3878d4f..dc2e8f0 100644 --- a/DrawGraph/AreaManage/MonitorManage.cs +++ b/DrawGraph/AreaManage/MonitorManage.cs @@ -192,7 +192,7 @@ namespace DrawGraph if (dtPhysioData.Rows[i]["Name"].ToString().Equals(addPP.Name.ToString())) { PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, myOpeRecord.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString()); - addPP.AddPoition(pdTemp); + addPP.AddPointItem(pdTemp, false); } } } @@ -255,7 +255,7 @@ namespace DrawGraph if (pdNew.config.ConfigType == "麻醉体征") pdNew.config.EditModifyItem(pdNew, pdNew); else - pdNew.config.ModItem(pdNew, pdNew); + pdNew.config.ModifyItem(pdNew, pdNew); txtNum.Tag = pdNew; TempValue = txtNum.Text.Trim(); } @@ -270,7 +270,7 @@ namespace DrawGraph if (pdNew.config.ConfigType == "麻醉体征") pdNew.config.EditAddItem(pdNew); else - pdNew.config.AddFillItem(pdNew); + pdNew.config.AddPointItem(pdNew); txtNum.Tag = pdNew; TempValue = txtNum.Text.Trim(); } diff --git a/DrawGraph/AreaManage/PhysioDataConfig.cs b/DrawGraph/AreaManage/PhysioDataConfig.cs index aa91360..527301c 100644 --- a/DrawGraph/AreaManage/PhysioDataConfig.cs +++ b/DrawGraph/AreaManage/PhysioDataConfig.cs @@ -15,7 +15,9 @@ namespace DrawGraph { public class PhysioDataConfig : EventObj { + #region 属性 private int id; + private int patientId; private string name; private string enname; private string color; @@ -46,6 +48,14 @@ namespace DrawGraph set { id = value; } } /// + /// 手术ID + /// + public int PatientId + { + get { return patientId; } + set { patientId = value; } + } + /// /// /// public string Name @@ -198,23 +208,19 @@ namespace DrawGraph set { physioOrder = value; } } + #endregion + #region 私有变量 private int yAisx = 0; - private int patientId; private Color conveColor; public double X_MINOR_GRID_STEP = 5.0; //步长 private PointPairList aPhysioDatas; PhysioData pdTrue = null; - public double showValue { get; set; } + public double YLocation { get; set; } [XmlIgnore] private LineItem curve1; [XmlIgnore] private bool isClick = false; - - #endregion - - #region 属性 - [XmlIgnore] public LineItem curve { @@ -237,7 +243,7 @@ namespace DrawGraph set { aPhysioDatas = value; } } /// - /// 此曲线的值以Y的第几个轴匹配 + /// 此曲线的Y轴 /// public int YAisx { @@ -245,14 +251,6 @@ namespace DrawGraph set { yAisx = value; } } /// - /// 手术ID - /// - public int PatientId - { - get { return patientId; } - set { patientId = value; } - } - /// /// 线的着色 /// public Color ConveColor @@ -260,9 +258,11 @@ namespace DrawGraph get { return conveColor; } set { conveColor = value; } } - #endregion + /// + /// Panel动态填写对象 + /// + public AbleEditPackObj phListPack = null; - #region 事件 public delegate void ClickEventHandler(object sender, EventArgs e); public event ClickEventHandler Click; public void onClick(EventArgs e) @@ -272,91 +272,119 @@ namespace DrawGraph Click(this, e); } } - #endregion - public PhysioDataConfig() { APhysioParams = new PointPairList(); } + #endregion + #region 初始化 /// - /// 包含增加和删除,当插入位置已有生理数据时,执行删除 + /// 画生理曲线,即初始化 /// - /// - public void AddOrDelItem(PhysioData pd, int collectInterval) + 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()); + + 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; + } + /// + /// 重新设置曲线属性 + /// + 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); + } + } + } + /// + /// 重新设置曲线属性 + /// + 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 GetLifeList() + { + string sql = "Select * FROM PhysioDataConfig where ConfigType='生命体征' order by PhysioOrder asc"; + return GetListBySql(sql); + } + public static IList GetAnesList() + { + 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; - PhysioData curPd = null; foreach (PointPair pptemp in APhysioParams) { PhysioData temp1 = PointPairToPhysioData(pptemp); if (pd.isEquert(temp1) && temp1.Value != Double.MaxValue) { isHave = true; - curPd = temp1; break; } } - if (isHave) - { - //DelItem(curPd); - } - else - { - AddMultipleItem(pd, pd.RecordTime, collectInterval); - //AddItem(pd, true); - } - } - - public void AddFillItem(PhysioData pd) - { - bool isHave = false; - foreach (PointPair pptemp in APhysioParams) - { - PhysioData temp1 = PointPairToPhysioData(pptemp); - double yDiff = pd.Value - temp1.Value; - TimeSpan ts1 = new TimeSpan(pd.RecordTime.Ticks); - TimeSpan ts2 = new TimeSpan(temp1.RecordTime.Ticks); - double minDiff = (ts1.Subtract(ts2).TotalMinutes); - if (-2 < minDiff && minDiff < 2 && temp1.Value != Double.MaxValue) - { - isHave = true; - break; - } - } - if (!isHave) - { - //如果是负数则不执行操作 - if (pd.Value < 0) return; - //pd = reCnterValue(pd); - //增加点时如果当前有点且是隐藏的则直接改值 - Sort(); - 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(); - curve.Points = APhysioParams; + if (isHave) return; + this.APhysioParams.Add(pd); + Sort(); + curve.Points = APhysioParams; + if (isInsertDB == true) PhysioDataService.AddPhysioData(pd); - if (ShowText == true) - { - DrawTextPhysioData(pd); - } + if (ShowText == true) + { + DrawTextPhysioData(pd); } } /// @@ -365,114 +393,108 @@ namespace DrawGraph /// public void AddItem(PhysioData pd, bool isShouDong = true, bool isFillMissPoint = true) { - try + //如果是负数则不执行操作 + if (pd.Value < 0) return; + if (pdTrue == null) + pdTrue = pd.Clone(); + + if (APhysioParams.Count > 0) { - //如果是负数则不执行操作 - if (pd.Value < 0) return; - if (pdTrue == null) - pdTrue = pd.Clone(); + PhysioData pdTemp = pd.Clone(); - if (APhysioParams.Count > 0) + //当前点的前一个点加步长时间的结点 + PhysioData pdQD = reMPhysioData(pdTemp); + //插入的点大于之前点5分钟以上 + if (DateTime.Compare(pd.RecordTime, pdQD.RecordTime.AddMinutes(1)) > 0) { - 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); - } + pdTemp.Value = Double.MaxValue; + this.APhysioParams.Add(pdTemp); } - if (isShouDong) - pd = reCnterValue(pd); - //增加点时如果当前有点且是隐藏的则直接改值 - Sort(); - bool isHave = false; - foreach (PointPair pptemp in APhysioParams) + } + 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) { - 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; - } + pptemp.Y = pd.Value; + isHave = true; + break; } - if (!isHave) + else if (pdTemp.isEquert(pd)) { - this.APhysioParams.Add(pd); + isHave = true; + break; } - Sort(); - curve.Points = APhysioParams; - PhysioDataService.AddPhysioData(pd); - if (ShowText == true) + } + 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--) { - 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) { - PhysioData maxPhysioData = PointPairToPhysioData(APhysioParams[i]); - if (i != 0 && i != APhysioParams.Count - 1) + if (maxPhysioData.Y == Double.MaxValue) { - if (maxPhysioData.Y == Double.MaxValue) + bool b = false; + for (int j = 0; j < APhysioParams.Count; j++) { - bool b = false; - for (int j = 0; j < APhysioParams.Count; j++) + PhysioData pdt = PointPairToPhysioData(APhysioParams[j]); + if (pdt.RecordTime == maxPhysioData.RecordTime && pdt.Value <= HighLimit) { - PhysioData pdt = PointPairToPhysioData(APhysioParams[j]); - if (pdt.RecordTime == maxPhysioData.RecordTime && pdt.Value <= HighLimit) - { - b = true; - break; - } + b = true; + break; } - if (b == true) - this.APhysioParams.Remove(maxPhysioData); } + if (b == true) + this.APhysioParams.Remove(maxPhysioData); } } } - if (isFillMissPoint == true && pdTrue != null) + } + if (isFillMissPoint == true && pdTrue != null) + { + //返回当前曲线上最大且不为空的点 + PhysioData maxPd = ReMaxAndGoodPhysioData(); + if (maxPd != null && pdTrue.RecordTime > maxPd.RecordTime) { - //返回当前曲线上最大且不为空的点 - PhysioData maxPd = ReMaxAndGoodPhysioData(); - if (maxPd != null && pdTrue.RecordTime > maxPd.RecordTime) + int timeDiff = DateTime.Compare(pdTrue.RecordTime, maxPd.RecordTime); + //因为插入的真实点大于曲线上最后一个点,则指增加生理数据 + if (timeDiff > 0) { - 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")) { - //如果新增加的点还小于真实的点,则批量增加生理数据 - 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); + pd.RecordTime = pd.RecordTime.AddMinutes(this.X_MINOR_GRID_STEP); - bool isHavechild = false; - foreach (PointPair pptemp in APhysioParams) + bool isHavechild = false; + foreach (PointPair pptemp in APhysioParams) + { + PhysioData pdTemp = PointPairToPhysioData(pptemp); + if (pdTemp.isEquert(pd) && pdTemp.Value != Double.MaxValue) { - PhysioData pdTemp = PointPairToPhysioData(pptemp); - if (pdTemp.isEquert(pd) && pdTemp.Value != Double.MaxValue) - { - isHavechild = true; - break; - } + isHavechild = true; + break; } - if (isHavechild == false) - AddItem(pd, isShouDong, isFillMissPoint); } - } - else - { - pdTrue = null; + if (isHavechild == false) + AddItem(pd, isShouDong, isFillMissPoint); } } else @@ -480,140 +502,130 @@ namespace DrawGraph pdTrue = null; } } - } - catch (Exception) - { - throw new Exception("插入生理数据结点时出错"); - } - } - /// - /// 动态填写对象 - /// - public AbleEditPackObj phListPack = null; - - public void SetPositionText(PhysioData pdTemp, string viewValue) - { - if (phListPack != null) - { - Panel pan3 = phListPack.CControl as Panel; - if (pan3 != null) + else { - Control[] cs = pan3.Controls.Find(pdTemp.PhysioDataConfigId + "" + pdTemp.RecordTime.ToString("HHmm"), true); - if (cs != null && cs.Length > 0) - { - TextBox c = cs[0] as TextBox; - if (c != null) - { - if (viewValue == "-1") - { - pdTemp.Value = -1; - pdTemp.ValueString = ""; - c.Tag = pdTemp; - c.Text = ""; - - } - else - { - c.Tag = pdTemp; - c.Text = viewValue.ToString(); - } - } - } + pdTrue = null; } } } - /// - /// 增加一点生理数据,往数据库中写入数据 - /// - /// - public void AddItemByTime(PhysioData pd) - { - try - { - //如果是负数则不执行操作 - if (pd.Value <= 0) return; - bool isHave = false; - PhysioData curPd = null; - foreach (PointPair pptemp in APhysioParams) - { - PhysioData temp1 = PointPairToPhysioData(pptemp); - if (pd.isEquert(temp1) && temp1.Value != Double.MaxValue) - { - isHave = true; - curPd = temp1; - break; - } - } - - if (isHave) return; - this.APhysioParams.Add(pd); - Sort(); - curve.Points = APhysioParams; - PhysioDataService.AddPhysioData(pd); - if (ShowText == true) - { - DrawTextPhysioData(pd); - } - } - catch (Exception) - { - //throw new Exception("插入生理数据结点时出错"); - } - } - /// /// 增加一点生理数据,往数据库中写入数据 /// /// public void AddMultipleItem(PhysioData pd, DateTime endtime, int collectInterval) { - try + //如果是负数则不执行操作 + pd = reCnterValue(pd); + TimeSpan tsp = endtime - pd.RecordTime; + if (tsp.TotalMinutes >= 20 && this.IsSplit == true) { - //如果是负数则不执行操作 - 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); - } + pd.RecordTime = endtime; + pd = reCnterValue(pd, false); + AddItem(pd, false); } - catch (Exception) + else { - throw; + pd.RecordTime = endtime; + AddItem(pd); } } /// - /// 返回当前曲线上最大且不为空的点 + /// 仅修改值不修改数据库 /// - /// - private PhysioData ReMaxAndGoodPhysioData() + /// + /// + /// + public PhysioData MoveItem(PhysioData newPd ) { - PhysioData rePd = null; - for (int i = APhysioParams.Count - 1; i > -1; i--) + //如果是负数则不执行操作 + 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) { - rePd = PointPairToPhysioData(APhysioParams[i]); - //且被大于的值的点不空隐藏 - if (rePd.Value != Double.MaxValue) - { - return rePd; - } + MoveText(newPd); + } + return newPd; + } + private void MoveText(PhysioData newPd) + { + TextObj text = (TextObj)zgcAnas.MasterPane.GraphObjList[this.Enname + newPd.RecordTime.ToString()]; + 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); } - return rePd; } - public void delAddObj(PhysioData newPd) + /// + /// 删除一点生理数据 + /// + /// + public void DelItem(PhysioData pd) { - delAddObj(this.Enname + newPd.RecordTime.ToString()); + 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) { @@ -633,62 +645,21 @@ namespace DrawGraph } if (viewValue != "") { - ZUtil.DrawText(viewValue, getXPositinByXDate(pd.RecordTime), showValue, zgcAnas, this.Enname + pd.RecordTime.ToString(), 5f, true); + ZUtil.DrawText(viewValue, getXPositinByXDate(pd.RecordTime), YLocation, zgcAnas, this.Enname + pd.RecordTime.ToString(), 5f, true); SetPositionText(pd, viewValue); } } } + #endregion + + #region 通用方法 /// - /// 仅修改值不修改数据库 + /// 为生理数据集合排序 /// - /// - /// - /// - public PhysioData onlyModItem(PhysioData newPd, PhysioData oldPd = null) + public void Sort() { - //如果是负数则不执行操作 - if (newPd.Value < 0) - { - //MessageBox.Show("输入的值不能小于0"); - return null; - } - newPd = reCnterValue(newPd); - - this.APhysioParams[indexOf(newPd)].Y = newPd.Y; - - Sort(); - curve.Points = APhysioParams; - - if (ShowText == true) - { - onlyMoveText(newPd, oldPd); - } - return newPd; + aPhysioDatas.Sort(); } - private void onlyMoveText(PhysioData newPd, PhysioData oldPd = null) - { - TextObj text = (TextObj)zgcAnas.MasterPane.GraphObjList[this.Enname + ((oldPd == null) ? newPd.RecordTime.ToString() : oldPd.RecordTime.ToString())]; - text.Location.Y = showValue; - text.Text = ((int)newPd.Value).ToString(); - } - public void ModItem(PhysioData oldPd, PhysioData newPd) - { - //如果是负数则不执行操作 - if (newPd.Value < 0 && oldPd.PhysioDataConfigId != newPd.PhysioDataConfigId) - return; - newPd.RecordTime = oldPd.RecordTime; - newPd = reCnterValue(newPd, false); - this.APhysioParams[indexOf(newPd)].Y = newPd.Y; - Sort(); - curve.Points = APhysioParams; - PhysioDataService.UpdatePhysioData(oldPd, newPd, PublicMethod.OperatorName); - if (ShowText == true) - { - delAddObj(oldPd); - DrawTextPhysioData(newPd); - } - } - public int indexOf(PhysioData pd) { for (int i = 0; i < APhysioParams.Count; i++) @@ -701,38 +672,59 @@ namespace DrawGraph } return -1; } - /// - /// 仅画点,不操作数据库 - /// - /// - public void AddPoition(PhysioData pd) + public PhysioData PointPairToPhysioData(PointPair pp) { - //如果是负数则不执行操作 - if (pd.Value < 0) return; - //pd.Tag = pd.Id; - if (APhysioParams.Count > 0) - { - PhysioData pdTemp = pd.Clone(); + 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; + } + /// + /// 删除麻醉单上的曲线本身,不包含数据删除 + /// + /// + public override void clearAddObj(ZedGraphControl zgc) + { + if (zgcAnas == null || zgcAnas != zgc) zgcAnas = zgc; - //当前点的前一个点加步长时间的结点 - PhysioData pdQD = reMPhysioData(pdTemp); - //插入的点大于之前点5分钟以上 - if (DateTime.Compare(pd.RecordTime, pdQD.RecordTime.AddMinutes(1)) > 0) - { - pdTemp.Value = Double.MaxValue; - this.APhysioParams.Add(pdTemp); - } - } - pd = reCnterValue(pd, false); - - this.APhysioParams.Add(pd); - - Sort(); - curve.Points = APhysioParams; if (ShowText == true) { - DrawTextPhysioData(pd); + 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; + } + /// + /// 清除各种对象数据 + /// + /// + 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()); + } /// /// 控制画点的范围 @@ -783,206 +775,37 @@ namespace DrawGraph } return pd; } - /// - /// 删除一点生理数据 + /// 返回当前曲线上最大且不为空的点 /// - /// - public void DelItem(PhysioData pd) + /// + private PhysioData ReMaxAndGoodPhysioData() { - try + PhysioData rePd = null; + for (int i = APhysioParams.Count - 1; i > -1; i--) { - Sort(); - //如果是两头的点就删除,如果是中间的点就设置为无效 - bool isModmaxValue = false; - for (int i = APhysioParams.Count - 1; i > -1; i--) + rePd = PointPairToPhysioData(APhysioParams[i]); + //且被大于的值的点不空隐藏 + if (rePd.Value != Double.MaxValue) { - 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; - } + return rePd; } } - catch (Exception) - { - throw new Exception("删除生理数据结点时出错"); - } + return rePd; } - public void DelItems(DateTime RecordTime, DateTime EndTime) + #endregion + + #region 动态体征方法 + public static int UpdatePhysioDataConfig(PhysioDataConfig physioDataConfig) { - try - { - PhysioDataService.DelPhysioasDataParameterID(RecordTime, EndTime, this.Id, this.PatientId); - } - catch (Exception) - { - throw new Exception("删除生理数据结点时出错"); - } + 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 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) + }; + return DBHelper.ExecNonQuery(sql, para); } - /// - /// 为生理数据集合排序 - /// - public void Sort() - { - aPhysioDatas.Sort(); - } - - /// - /// 画生理曲线,即初始化 - /// - public void draw(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()); - - 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; - } - - 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; - } - - /// - /// 删除麻醉单上的曲线本身,不包含数据删除 - /// - /// - 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); - } - } - if (APhysioParams == null || curve == null) return; - APhysioParams.Clear(); - curve.Points = APhysioParams; - } - /// - /// 重新设置曲线属性 - /// - 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); - } - } - else - { - foreach (PointPair pp in APhysioParams) - { - PhysioData pd = PointPairToPhysioData(pp); - if (pd != null) DrawTextPhysioData(pd); - } - } - } - - /// - /// 重新设置曲线属性 - /// - 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 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 static IList GetLifeList() - { - string sql = "Select * FROM PhysioDataConfig where ConfigType='生命体征' order by PhysioOrder asc"; - return GetListBySql(sql); - } - public static IList GetAnesList() - { - string sql = "Select * FROM PhysioDataConfig where ConfigType='麻醉体征' order by PhysioOrder asc"; - return GetListBySql(sql); - } - - private static IList GetListBySql(string sql, params SqlParameter[] para) { IList list = new List(); @@ -1020,16 +843,6 @@ namespace DrawGraph return list; } } - 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 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) - }; - return DBHelper.ExecNonQuery(sql, para); - } public static PhysioData newPhysioData(PhysioDataConfig dataConfig, int Id, DateTime RecordTime, string Value) { PhysioData pdTemp = new PhysioData(); @@ -1051,31 +864,63 @@ namespace DrawGraph return pdTemp; } public void EditAddItem(PhysioData pd) - { - PhysioDataService.AddPhysioData(pd); - DrawTextPhysioData(pd); + { + PhysioDataService.AddPhysioData(pd); + DrawTextPhysioData(pd); } public void EditModifyItem(PhysioData oldPd, PhysioData newPd) { //如果是负数则不执行操作 if (oldPd.PhysioDataConfigId != newPd.PhysioDataConfigId) - return; + return; PhysioDataService.UpdatePhysioData(oldPd, newPd, PublicMethod.OperatorName); - delAddObj(oldPd); - DrawTextPhysioData(newPd); + delAddObj(oldPd); + DrawTextPhysioData(newPd); } public void EditDelItem(PhysioData pd) - { - delAddObj(pd); - SetPositionText(pd, "-1"); + { + delAddObj(pd); + SetPositionText(pd, "-1"); 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 + "" + pdTemp.RecordTime.ToString("HHmm"), true); + if (cs != null && cs.Length > 0) + { + TextBox c = cs[0] as TextBox; + 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); } + #endregion } } diff --git a/DrawGraph/AreaManage/PhysioDataManage.cs b/DrawGraph/AreaManage/PhysioDataManage.cs index f252154..6c65d96 100644 --- a/DrawGraph/AreaManage/PhysioDataManage.cs +++ b/DrawGraph/AreaManage/PhysioDataManage.cs @@ -30,30 +30,18 @@ namespace DrawGraph /// AbleEditPackObj phListPack = null; /// - /// 当前图例文本 - /// - //string curLegend = ""; - /// /// 当前选中的,手术生理曲线 /// private PhysioDataConfig curPhysioParam = null; /// - /// 当前选中的生命体征对象 临时 - /// - private PhysioData curPhysioData = null; - /// /// 当前选中的生命体征对象 未改变前 /// - private PhysioData oldCurPhysioData = null; + private PhysioData CurPhysioData = null; /// /// 悬浮选中的生命体征 /// private PhysioData selPhysioData = null; /// - /// 选中点点坐标是否处在可编辑状态 - /// - //private bool isEdit = false; - /// /// 当前手术对象 /// private OperationRecord myOpeRecord = null; @@ -84,8 +72,6 @@ namespace DrawGraph //自己要用的手术对象 myOpeRecord = OpeRecord as OperationRecord; - //myOpeRecord.SAreaObj.maxnumber = ZedControl.GraphPane.YAxis.Scale.Max; - //myOpeRecord.SAreaObj.minnumber = ZedControl.GraphPane.YAxis.Scale.Min; } /// @@ -120,7 +106,7 @@ namespace DrawGraph { if (curPhysioParam != null && curPhysioParam.IsClick == true) { - System.Windows.Forms.DialogResult dr = System.Windows.Forms.MessageBox.Show("你确定要删除当前曲线的所有生理数据吗?", "保存修改", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Information); + System.Windows.Forms.DialogResult dr = System.Windows.Forms.MessageBox.Show("是否删除当前选项的所有数据?", "系统提示", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Information); if (dr == System.Windows.Forms.DialogResult.Yes) { if (curPhysioParam.ShowText == true) @@ -141,13 +127,11 @@ namespace DrawGraph curPhysioParam.DelItems(myOpeRecord.pageBegin, myOpeRecord.lastPageBegin); curPhysioParam.clearAddObj(ZedControl); + + ZedControl.Refresh(); } } - else - { - //PublicMethod.ShowMessage("删除曲线前请先选中曲线!"); - } } #endregion @@ -159,7 +143,6 @@ namespace DrawGraph /// public override void MouseDown(ZedGraphControl sender, MouseEventArgs e) { - //if ((OpeRecord != null && status == DoOpeStatus.BEGINOPE) || IsReview) if (myOpeRecord != null) { if (e.Button != System.Windows.Forms.MouseButtons.Left) return; @@ -214,7 +197,6 @@ namespace DrawGraph { if (curPhysioParam != null && curPhysioParam.IsClick) { - //如果曲线被选中则进行点的操作,反之选中所有点的集合在子范围内画选中框 bool isHave = false; PhysioData pdTemp = rePD(sender, e); @@ -222,13 +204,12 @@ namespace DrawGraph foreach (PointPair pp in curPhysioParam.APhysioParams) { - curPhysioData = curPhysioParam.PointPairToPhysioData(pp); if (pdTemp.isEquert(curPhysioParam.PointPairToPhysioData(pp)) && curPhysioParam.PointPairToPhysioData(pp).Value != Double.MaxValue) { isHave = true; if (AnesOpeStatue == DoAnesOpeStatus.VIEW) { - oldCurPhysioData = curPhysioParam.PointPairToPhysioData(pp); + CurPhysioData = curPhysioParam.PointPairToPhysioData(pp); AnesOpeStatue = DoAnesOpeStatus.MOVEPD; break; @@ -238,10 +219,8 @@ namespace DrawGraph if (!isHave) { AnesOpeStatue = DoAnesOpeStatus.ADDPD; - DateTime insTime = GetRecordTime(pdTemp.RecordTime); - - curPhysioParam.AddMultipleItem(pdTemp, insTime, collectInterval); - AnesOpeStatue = DoAnesOpeStatus.VIEW; + DateTime insTime = GetRecordTime(pdTemp.RecordTime); + curPhysioParam.AddMultipleItem(pdTemp, insTime, collectInterval); } } else @@ -311,38 +290,35 @@ namespace DrawGraph case DoAnesOpeStatus.MOVEPD: if (curPhysioParam != null) { - try + PhysioData pdNew = rePD(sender, e); + if (pdNew == null) return; + + PhysioData newPd = curPhysioParam.MoveItem(pdNew); + if (newPd != null )//&& CurPhysioData.Value != newPd.Value { - PhysioData pdNew = rePD(sender, e); - if (pdNew == null) return; - - int countSim = 0; - foreach (PointPair pp in curPhysioParam.APhysioParams) + CurPhysioData = newPd; + curPhysioParam.ModifyItem(CurPhysioData, CurPhysioData); + } + } + break; + case DoAnesOpeStatus.ADDPD: + if (curPhysioParam != null) + { + PhysioData pdTemp = rePD(sender, e); + if (pdTemp == null) return; + bool isHave = false; + foreach (PointPair pp in curPhysioParam.APhysioParams) + { + if (pdTemp.isEquert(curPhysioParam.PointPairToPhysioData(pp)) && curPhysioParam.PointPairToPhysioData(pp).Value != Double.MaxValue) { - PhysioData ppd = curPhysioParam.PointPairToPhysioData(pp); - if (pdNew.isEquert(ppd)) - { - countSim++; - break; - } - } - if (countSim < 2) - { - curPhysioParam.onlyModItem(pdNew, oldCurPhysioData); - } - else - { - curPhysioParam.onlyModItem(oldCurPhysioData, oldCurPhysioData); - AnesOpeStatue = DoAnesOpeStatus.VIEW; - - ZedControl.AxisChange(); - ZedControl.Refresh(); - return; + isHave = true; } } - catch + if (!isHave) { - return; + AnesOpeStatue = DoAnesOpeStatus.ADDPD; + DateTime insTime = GetRecordTime(pdTemp.RecordTime); + curPhysioParam.AddMultipleItem(pdTemp, insTime, collectInterval); } } break; @@ -356,8 +332,7 @@ namespace DrawGraph myOpeRecord.SAreaObj.EndPd = pdNew; myOpeRecord.SAreaObj.EndPds = rePDs(sender, e); myOpeRecord.SAreaObj.Draw(); - } - + } } catch { return; } finally @@ -380,23 +355,15 @@ namespace DrawGraph if (curPhysioParam != null && curPhysioParam.IsClick == true) { - try + PhysioData pdNew = rePD(sender, e); + if (pdNew == null) return; + if (AnesOpeStatue == DoAnesOpeStatus.MOVEPD) { - PhysioData pdNew = rePD(sender, e); - if (pdNew == null) return; - if (AnesOpeStatue == DoAnesOpeStatus.MOVEPD) - { - curPhysioParam.ModItem(oldCurPhysioData, pdNew); - curPhysioData = null; - oldCurPhysioData = null; - } + if (CurPhysioData.RecordTime == pdNew.RecordTime) + curPhysioParam.ModifyItem(CurPhysioData, pdNew); + CurPhysioData = null; } - catch - { - AnesOpeStatue = DoAnesOpeStatus.VIEW; - return; - } AnesOpeStatue = DoAnesOpeStatus.VIEW; ZedControl.AxisChange(); ZedControl.Refresh(); @@ -530,8 +497,7 @@ namespace DrawGraph //DrawPhysioData(); curPhysioParam = null; - curPhysioData = null; - oldCurPhysioData = null; + CurPhysioData = null; } #endregion @@ -546,7 +512,7 @@ namespace DrawGraph Legend legend = myPane.Legend; legend.IsVisible = true; legend.Position = LegendPos.Float;//定位图标位置 - legend.Location = new Location(janCePack.RealX, janCePack.RealEndY - 0.02, CoordType.PaneFraction);//只有当Legend的Position属性设置为Float,才可修改其位置 0.87 0.3 + legend.Location = new Location(janCePack.RealX, janCePack.RealEndY - 0.02, CoordType.PaneFraction); legend.Border.Width = 0; legend.Border.IsVisible = false; //不显示图标外边框 legend.Gap = 2.0f; @@ -564,7 +530,7 @@ namespace DrawGraph try { if (janCePack == null) return; - int showvalue = 0; + int YRows = 0; addPhysioList.Clear(); ZedControl.GraphPane.CurveList.Clear(); //监测区域里的第1根竖线,显示数值时用 @@ -588,21 +554,21 @@ namespace DrawGraph int B = int.Parse(str[3].ToString()); pp.ConveColor = System.Drawing.Color.FromArgb(A, R, G, B); - pp.IsValid = true; + pp.IsValid = true; if (pp.IsDefalultShow == false || (pp.ShowImg == false && pp.ShowText == false)) - { + { pp.IsValid = false; - } + } pp.ClearTagstr(ZedControl); //如果模板管理不为空 if (pack != null && rowNum < 4 && pp.ShowText == true) { - double y = pack.RealY + getYPositionByListIndex(showvalue, pack.RealY, pack.RealEndY, RowsCount); + double y = pack.RealY + getYPositionByListIndex(YRows, pack.RealY, pack.RealEndY, RowsCount); ZUtil.DrawText(pp.Name, pack.RealX, y, ZedControl, "PP" + pp.Enname, 5.5f); - pp.showValue = y + 0.002; - showvalue++; + pp.YLocation = y + 0.002; + YRows++; rowNum++; - } + } pp.phListPack = phListPack; pp.setAnasArr(ZedControl, chartPack.RealX, chartPack.RealEndX, myOpeRecord.pageBegin, myOpeRecord.pageBegin.AddMinutes(EVERY_PAGE_TIME_SPAN)); @@ -617,7 +583,7 @@ namespace DrawGraph if (!isHave) { addPhysioList.Add(pp); - pp.draw(); + pp.initCurve(); pp_Click(pp, null); } } @@ -630,23 +596,23 @@ namespace DrawGraph PhysioDataConfig pp = dt2[i]; pp.ConfigType = "麻醉体征"; if (pp.IsDefalultShow == false) - { + { pp.IsValid = false; } else - { + { pp.IsValid = true; } - pp.phListPack = phListPack; + pp.phListPack = phListPack; pp.setAnasArr(ZedControl, chartPack.RealX, chartPack.RealEndX, myOpeRecord.pageBegin, myOpeRecord.pageBegin.AddMinutes(EVERY_PAGE_TIME_SPAN)); pp.ClearTagstr(ZedControl); - if ( rowNum < 4) + if (rowNum < 4) { - double y = pack.RealY + getYPositionByListIndex(showvalue, pack.RealY, pack.RealEndY, RowsCount); + double y = pack.RealY + getYPositionByListIndex(YRows, pack.RealY, pack.RealEndY, RowsCount); ZUtil.DrawText(pp.Name, pack.RealX, y, ZedControl, "PP" + pp.Enname + pp.Id, 5.5f); - pp.showValue = y + 0.002; - showvalue++; + pp.YLocation = y + 0.002; + YRows++; rowNum++; } myOpeRecord.PhysioAnesConfigList.Add(pp); @@ -682,7 +648,7 @@ namespace DrawGraph //原因:正是因为xmlOpe是全局变量,因此,在整个窗体生命周期都没有发生改变。 //即在该段时间内驻留内存,及时其他窗体将其信息改变,其操作的XML内容仍然不变。 //解决办法:重新定义,使XML操作对象发生变化。 - int showvalue = 0; + int YRows = 0; //监测区域里的第1根竖线,显示数值时用 LinesPackObj pack = template.GetPackObjectOTag("MonitorManage_LinesPackObj_9"); @@ -698,11 +664,11 @@ namespace DrawGraph int B = int.Parse(str[3].ToString()); pp.ConveColor = System.Drawing.Color.FromArgb(A, R, G, B); - pp.IsValid = true; + pp.IsValid = true; if (pp.IsDefalultShow == false || (pp.ShowImg == false && pp.ShowText == false)) - { + { pp.IsValid = false; - } + } pp.setAnasArr(ZedControl, chartPack.RealX, chartPack.RealEndX, myOpeRecord.pageBegin, myOpeRecord.pageBegin.AddMinutes(EVERY_PAGE_TIME_SPAN)); @@ -710,10 +676,10 @@ namespace DrawGraph //如果模板管理不为空 if (pack != null && rowNum < 4 && pp.ShowText == true) { - double y = pack.RealY + getYPositionByListIndex(showvalue, pack.RealY, pack.RealEndY, RowsCount); + double y = pack.RealY + getYPositionByListIndex(YRows, pack.RealY, pack.RealEndY, RowsCount); ZUtil.DrawText(pp.Name, pack.RealX, y, ZedControl, "PP" + pp.Enname, 5.5f); - pp.showValue = y + 0.002; - showvalue++; + pp.YLocation = y + 0.002; + YRows++; rowNum++; } @@ -726,20 +692,20 @@ namespace DrawGraph foreach (var pp in myOpeRecord.PhysioConfigList) { pp.ConfigType = "麻醉体征"; - pp.IsValid = true; + pp.IsValid = true; if (pp.IsDefalultShow == false) - { + { pp.IsValid = false; - } + } pp.setAnasArr(ZedControl, chartPack.RealX, chartPack.RealEndX, myOpeRecord.pageBegin, myOpeRecord.pageBegin.AddMinutes(EVERY_PAGE_TIME_SPAN)); pp.ClearTagstr(ZedControl); if (pp.ShowText == true && rowNum < 4) { - double y = pack.RealY + getYPositionByListIndex(showvalue, pack.RealY, pack.RealEndY, RowsCount); + double y = pack.RealY + getYPositionByListIndex(YRows, pack.RealY, pack.RealEndY, RowsCount); ZUtil.DrawText(pp.Name, pack.RealX, y, ZedControl, "PP" + pp.Enname + pp.Id, 5.5f); - pp.showValue = y + 0.002; - showvalue++; + pp.YLocation = y + 0.002; + YRows++; rowNum++; } } @@ -834,15 +800,18 @@ namespace DrawGraph physioParam = myOpeRecord.PhysioConfigList[1]; else physioParam = curPhysioParam; - pdNews.Add(PhysioDataConfig.newPhysioData(physioParam, myOpeRecord.Id.Value, xd.DateTime, Math.Round(y[physioParam.YAisx], 2))); + double value = Math.Round(y[physioParam.YAisx], 0); + pdNews.Add(PhysioDataConfig.newPhysioData(physioParam, myOpeRecord.Id.Value, xd.DateTime, value)); if (y[1].ToString() != "") { - pdNews.Add(PhysioDataConfig.newPhysioData(myOpeRecord.PhysioConfigList.Where(a => a.Name == "氧饱和度").ToList()[0], myOpeRecord.Id.Value, xd.DateTime, Math.Round(y[physioParam.YAisx], 2))); + value = Math.Round(y[physioParam.YAisx], 0); + pdNews.Add(PhysioDataConfig.newPhysioData(myOpeRecord.PhysioConfigList.Where(a => a.Name == "氧饱和度").ToList()[0], myOpeRecord.Id.Value, xd.DateTime, value)); } if (y[0].ToString() != "") { - pdNews.Add(PhysioDataConfig.newPhysioData(myOpeRecord.PhysioConfigList.Where(a => a.Name == "体温").ToList()[0], myOpeRecord.Id.Value, xd.DateTime, Math.Round(y[physioParam.YAisx], 2))); + value = Math.Round(y[physioParam.YAisx], 1); + pdNews.Add(PhysioDataConfig.newPhysioData(myOpeRecord.PhysioConfigList.Where(a => a.Name == "体温").ToList()[0], myOpeRecord.Id.Value, xd.DateTime, value)); } } @@ -885,7 +854,8 @@ namespace DrawGraph { physioParam = curPhysioParam; } - PhysioData pdNew = PhysioDataConfig.newPhysioData(physioParam, myOpeRecord.Id.Value, xd.DateTime, Math.Round(y[physioParam.YAisx], 2)); + double value = physioParam.YAisx == 1 ? Math.Round(y[physioParam.YAisx], 1) : Math.Round(y[physioParam.YAisx], 0); + PhysioData pdNew = PhysioDataConfig.newPhysioData(physioParam, myOpeRecord.Id.Value, xd.DateTime, value); return pdNew; }