Exemple #1
0
        /// <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);
                }
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 /// <summary>
 /// 加载接受参数
 /// </summary>
 public override void OnViewLoaded()
 {
     base.OnViewLoaded();
     _vitalSignGraph = Args[0] as MedVitalSignGraph;
     _rescueTime     = Args[1] as RescueTime;
 }