/// <summary> /// 绘制抢救时间段 /// </summary> private void DrawRescueTimes(double TicStartY) { if (RescueTimeList == null || RescueTimeList.Count == 0) { return; } GradientStopCollection GradientStops = new GradientStopCollection(); GradientStops.Add(new GradientStop(Color.FromRgb(0xFF, 0x79, 0x0A), 0.0)); GradientStops.Add(new GradientStop(Color.FromRgb(0xFF, 0x87, 0x24), 0.3)); GradientStops.Add(new GradientStop(Color.FromRgb(0xFF, 0x99, 0x44), 0.7)); GradientStops.Add(new GradientStop(Color.FromRgb(0xFF, 0xA5, 0x5A), 1.0)); LinearGradientBrush bgBrush = new LinearGradientBrush(GradientStops, new Point(0, 0), new Point(0, 1)); Border processBorder; Image image; BitmapImage bi3 = new BitmapImage(); bi3.BeginInit(); bi3.UriSource = new Uri("../Images/rescue.png", UriKind.Relative); bi3.EndInit(); DateTime rescueEndTime = DateTime.Now; double x1, x2; bool isOverMin, isOverMax; for (int i = 0; i < RescueTimeList.Count; i++) { RescueTime rescueTime = RescueTimeList[i]; if (rescueTime.CameraTime.HasValue) { rescueEndTime = rescueTime.CameraTime.Value.AddMinutes(2); } else { if (!rescueTime.BeginTime.HasValue) { continue; } if (rescueTime.BeginTime.Value >= _XAxis.MaxTime) { continue; } if (rescueTime.EndTime.HasValue) { rescueEndTime = rescueTime.EndTime.Value; } else { rescueEndTime = DateTime.Now; } if (!rescueTime.BeginTime.HasValue) { continue; } if (rescueTime.BeginTime.Value >= _XAxis.MaxTime) { continue; } if (rescueTime.EndTime.HasValue) { rescueEndTime = rescueTime.EndTime.Value; } else { rescueEndTime = DateTime.Now; } } if (rescueEndTime > _XAxis.MaxTime) { rescueEndTime = _XAxis.MaxTime; } x1 = _XAxis.LocalTransform(rescueTime.CameraTime.HasValue ? rescueTime.CameraTime.Value:rescueTime.BeginTime.Value, out isOverMin, out isOverMax); x2 = _XAxis.LocalTransform(rescueEndTime, out isOverMin, out isOverMax); if (rescueTime.CameraTime.HasValue) { image = new Image(); image.Width = x2 - x1; image.Source = bi3; image.Height = _drawHeight * TicAreaHeightPercent; image.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; image.VerticalAlignment = System.Windows.VerticalAlignment.Top; image.Margin = new Thickness(x1, TicStartY, 0, 0); image.Tag = rescueTime; image.MouseLeftButtonDown += Image_MouseLeftButtonDown; _Container.Children.Add(image); _TimeProcessUI.Add(image); } else { processBorder = new Border(); processBorder.Width = x2 - x1; processBorder.Height = _drawHeight * TicAreaHeightPercent; processBorder.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; processBorder.VerticalAlignment = System.Windows.VerticalAlignment.Top; processBorder.CornerRadius = new CornerRadius(5); processBorder.Background = bgBrush; processBorder.Margin = new Thickness(x1, TicStartY, 0, 0); processBorder.Tag = rescueTime; processBorder.MouseLeftButtonDown += processBorder_MouseLeftButtonDown; _Container.Children.Add(processBorder); _TimeProcessUI.Add(processBorder); } } }
/// <summary> /// 当前体征明细 /// </summary> public List <VitalSignCurveDetailModel> GetVitalSignCurve(bool isIntensive, RescueTime rescueTime) { List <VitalSignCurveDetailModel> curveList = new List <VitalSignCurveDetailModel>(); Dictionary <string, VitalSignCurveDetailModel> dict = new Dictionary <string, VitalSignCurveDetailModel>(); List <VitalSignCurveDetailModel> detailModel = GetUserVitalShowSet("0"); //188,100,92,44,65,66,89,90密集体征默认显示以上体征 foreach (VitalSignCurveDetailModel detail in detailModel) { if (isIntensive && !(detail.CurveCode == "188" || detail.CurveCode == "100" || detail.CurveCode == "92" || detail.CurveCode == "44" || detail.CurveCode == "65" || detail.CurveCode == "66" || detail.CurveCode == "89" || detail.CurveCode == "90")) { continue; } if (!string.IsNullOrEmpty(detail.CurveCode) && !dict.ContainsKey(detail.CurveCode)) { dict.Add(detail.CurveCode, detail); } else if (string.IsNullOrEmpty(detail.CurveCode) && !string.IsNullOrEmpty(detail.CurveName)) { foreach (MED_VITAL_SIGN vrow in _vitalSignList) { if (vrow.ITEM_NAME.Equals(detail.CurveName) && !dict.ContainsKey(vrow.ITEM_CODE)) { dict.Add(vrow.ITEM_CODE, detail); break; } } } } foreach (MedVitalSignCurveDetail detail in _vitalSignGraph.CurveDetails) { if (!string.IsNullOrEmpty(detail.CurveCode) && !dict.ContainsKey(detail.CurveCode)) { if (isIntensive && !(detail.CurveCode == "188" || detail.CurveCode == "100" || detail.CurveCode == "92" || detail.CurveCode == "44" || detail.CurveCode == "65" || detail.CurveCode == "66")) { continue; } dict.Add(detail.CurveCode, ConvertToDetailModel(detail)); } } List <string> itemNames = new List <string>(); foreach (var item in detailModel) { if (!itemNames.Contains(item.CurveCode)) { itemNames.Add(item.CurveCode); } } // if (_vitalSignList != null && _vitalSignList.Count > 0) { _vitalSignList.ForEach(row => { if (!itemNames.Contains(row.ITEM_CODE.Trim())) { itemNames.Add(row.ITEM_CODE); } }); itemNames = SortSignTitle(itemNames); ///逐条增加曲线 #region 逐条增加曲线 foreach (string item in itemNames) { // if (dict.ContainsKey(item) && !dict[item].Visible) continue; VitalSignCurveDetailModel vitalSignCurveDetail = null; if (dict.ContainsKey(item)) { vitalSignCurveDetail = dict[item]; } else if (ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(item) && dict.ContainsKey(ExtendAppContext.Current.MonitorFunctionCodeDict[item])) { vitalSignCurveDetail = dict[ExtendAppContext.Current.MonitorFunctionCodeDict[item]]; } List <MED_VITAL_SIGN> vitallist = _vitalSignList.Where(x => x.ITEM_CODE == item).ToList(); if (vitallist != null && vitallist.Count > 0) { Color color; //bool isDigit = false; if (vitalSignCurveDetail == null) { color = GetRandomColor(); //isDigit = false; SymbolModel symbol = GetRandomSymbol(); List <SymbolModel> symbolList = new List <SymbolModel>(); symbolList.Add(symbol); string name = ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(item) ? ExtendAppContext.Current.MonitorFunctionCodeDict[item] : item; vitalSignCurveDetail = new VitalSignCurveDetailModel(name, item, 0); LegendItem litem = new LegendItem(); litem.Code = item; litem.DisplayName = name; litem.Symbol = symbol; vitalSignCurveDetail.LegendList.Add(litem); vitalSignCurveDetail.ShowType = CurveShowType.Line; vitalSignCurveDetail.SymbolEntry = ""; vitalSignCurveDetail.Visible = true; vitalSignCurveDetail.YAxisIndex = 0; vitalSignCurveDetail.HideTime = new List <DateTimeRangeModel>() { new DateTimeRangeModel(DateTime.MinValue, DateTime.MinValue) { CurrentEntDT = null, CurrentStartDT = null, EndDateTime = null, SelectTime = null, StartDateTime = null } }; if (!dict.ContainsKey(item) && !isIntensive) { dict.Add(litem.Code, vitalSignCurveDetail); } } //bool isModify = false; if (vitalSignCurveDetail != null) { if (vitalSignCurveDetail.Points == null) { vitalSignCurveDetail.Points = new List <VitalSignPointModel>(); } if (vitallist != null) { DateTime timePoint = vitallist[0].TIME_POINT; DateTime hideStr = DateTime.MinValue; DateTime hideEnd = DateTime.MinValue; #region 密集体征 if (isIntensive) { vitallist.ForEach(row => { double tempValue; if (dict.ContainsKey(vitalSignCurveDetail.CurveCode) && !string.IsNullOrEmpty(row.ITEM_VALUE) && double.TryParse(row.ITEM_VALUE, out tempValue) && Convert.ToDouble(row.ITEM_VALUE) > 0) { DateTime endTime = rescueTime.EndTime != null ? rescueTime.EndTime.Value : DateTime.Now; if (row.TIME_POINT >= rescueTime.BeginTime && row.TIME_POINT <= endTime) { vitalSignCurveDetail.ShowTimeInterval = ShowTimeInterval.AnyTime; vitalSignCurveDetail.Points.Add(new VitalSignPointModel(row.TIME_POINT, Convert.ToDouble(row.ITEM_VALUE), vitalSignCurveDetail, vitalSignCurveDetail.LegendList[0].Symbol, row.Flag)); } } }); } #endregion #region 普通体征 else { vitallist.ForEach(row => { int mu = (int)((TimeSpan)(row.TIME_POINT - _xAxisSetting.BeginFactTime.Value.AddSeconds(-_xAxisSetting.BeginFactTime.Value.Second))).TotalMinutes; string value = row.ITEM_VALUE; double d = 0; //isModify = false; if (double.TryParse(value, out d) && d >= 0) { if (dict.ContainsKey(vitalSignCurveDetail.CurveCode) && ((mu % (int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval) == 0) && Convert.ToDouble(row.ITEM_VALUE) > 0) { timePoint = timePoint.AddMinutes((int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval); DateTime curRowPoint = row.TIME_POINT.AddMinutes((int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval); if (timePoint != curRowPoint) { hideStr = vitallist[vitallist.IndexOf(row) - 1].TIME_POINT.AddMinutes((int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval); hideEnd = row.TIME_POINT.AddMinutes(-(int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval); timePoint = row.TIME_POINT.AddMinutes((int)dict[vitalSignCurveDetail.CurveCode].ShowTimeInterval);; DateTimeRangeModel range = new DateTimeRangeModel(hideStr, hideEnd); vitalSignCurveDetail.HideTime.Add(range); } vitalSignCurveDetail.Points.Add(new VitalSignPointModel(row.TIME_POINT, Convert.ToDouble(row.ITEM_VALUE), vitalSignCurveDetail, vitalSignCurveDetail.LegendList[0].Symbol, row.Flag)); } } if (!string.IsNullOrEmpty(row.Flag) && row.Flag.Equals("1")) { //isModify = true; } }); } #endregion } if (vitalSignCurveDetail.Points.Count > 0) { curveList.Add(vitalSignCurveDetail); } } } else { if (vitalSignCurveDetail != null && !vitalSignCurveDetail.IsDigit && vitalSignCurveDetail.Points.Count > 0) { curveList.Add(vitalSignCurveDetail); } } } #endregion 逐条增加曲线 } VitalSignCurves = curveList; if (_anesEventList != null) { ControlBreath(_anesEventList, dict); } return(VitalSignCurves); }
/// <summary> /// 加载接受参数 /// </summary> public override void OnViewLoaded() { base.OnViewLoaded(); _vitalSignGraph = Args[0] as MedVitalSignGraph; _rescueTime = Args[1] as RescueTime; }