Ejemplo n.º 1
0
        //转换MODEL
        private VitalSignCurveDetailModel ConvertToDetailModel(MedVitalSignCurveDetail detail)
        {
            VitalSignCurveDetailModel detailMode = new VitalSignCurveDetailModel();

            detailMode.CurveName = detail.CurveName;
            detailMode.CurveCode = detail.CurveCode;
            detailMode.Visible   = detail.Visible;
            string     type = detail.SymbolType.ToString();
            LegendItem item = new LegendItem();

            item.Code        = detail.CurveCode;
            item.DisplayName = detail.CurveName;
            item.Symbol      = new SymbolModel((SymbolType)Enum.Parse(typeof(SymbolType), type));
            detailMode.LegendList.Add(item);
            // detailMode.LegendDictionary.Add(detail.CurveName, new SymbolModel((SymbolType)Enum.Parse(typeof(SymbolType), type)));
            detailMode.SymbolEntry   = detail.SymbolEntry;
            detailMode.Color         = detail.Color;
            detailMode.DecimalDigits = detail.DotNumber;
            string showType = detail.ShowType.ToString();

            detailMode.ShowType   = (CurveShowType)Enum.Parse(typeof(CurveShowType), showType);
            detailMode.YAxisIndex = detail.YAxisIndex;
            string showTime = detail.ShowTimeInterval.ToString();

            detailMode.ShowTimeInterval = (ShowTimeInterval)Enum.Parse(typeof(ShowTimeInterval), showTime);
            DateTimeRangeModel timeRange = new DateTimeRangeModel(detail.HideStartTime, detail.HideEndTime);

            detailMode.HideTime = new List <DateTimeRangeModel>();
            detailMode.HideTime.Add(timeRange);
            return(detailMode);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 转换
        /// </summary>
        /// <param name="detail"></param>
        /// <returns></returns>
        private MedVitalSignCurveDetail ConvertToCurveDetail(VitalSignCurveDetailModel detail)
        {
            MedVitalSignCurveDetail detailMode = new MedVitalSignCurveDetail();

            detailMode.CurveName   = detail.CurveName;
            detailMode.CurveCode   = detail.CurveCode;
            detailMode.Visible     = detail.Visible;
            detailMode.SymbolType  = (MedSymbolType)Enum.Parse(typeof(MedSymbolType), detail.LegendList[0].Symbol.SymbolType.ToString());
            detailMode.SymbolEntry = detail.SymbolEntry;
            detailMode.Color       = detail.Color;
            detailMode.DotNumber   = detail.DecimalDigits;
            string showType = detail.ShowType.ToString();

            detailMode.ShowType   = (MedCurveShowType)Enum.Parse(typeof(MedCurveShowType), showType);
            detailMode.YAxisIndex = detail.YAxisIndex;
            string showTime = detail.ShowTimeInterval.ToString();

            detailMode.ShowTimeInterval = (MedShowTimeInterval)Enum.Parse(typeof(MedShowTimeInterval), showTime);
            if (detail.HideTime != null && detail.HideTime.Count > 0)
            {
                if (detail.HideTime[0].StartDateTime != null && detail.HideTime[0].StartDateTime.Value != DateTime.MinValue)
                {
                    detailMode.HideStartTime = detail.HideTime[0].StartDateTime.Value;
                }
                if (detail.HideTime[0].EndDateTime != null && detail.HideTime[0].EndDateTime.Value != DateTime.MinValue)
                {
                    detailMode.HideEndTime = detail.HideTime[0].EndDateTime.Value;
                }
            }
            return(detailMode);
        }
Ejemplo n.º 3
0
        private MedVitalSignCurveDetail ConvertToCurveDetail(VitalSignCurveDetailModel detail)
        {
            MedVitalSignCurveDetail detailMode = new MedVitalSignCurveDetail();

            detailMode.CurveName  = detail.CurveName;
            detailMode.CurveCode  = detail.CurveCode;
            detailMode.Visible    = detail.Visible;
            detailMode.SymbolType = (MedSymbolType)Enum.Parse(typeof(MedSymbolType), detail.LegendList[0].Symbol.SymbolType.ToString());

            detailMode.SymbolEntry = detail.SymbolEntry;
            detailMode.Color       = detail.Color;
            detailMode.DotNumber   = detail.DecimalDigits;
            string showType = detail.ShowType.ToString();

            detailMode.ShowType   = (MedCurveShowType)Enum.Parse(typeof(MedCurveShowType), showType);
            detailMode.YAxisIndex = detail.YAxisIndex;
            string showTime = detail.ShowTimeInterval.ToString();

            detailMode.ShowTimeInterval = (MedShowTimeInterval)Enum.Parse(typeof(MedShowTimeInterval), showTime);

            return(detailMode);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 呼吸控制
        /// </summary>
        /// <param name="anesEvent"></param>
        /// <param name="vitalSignGraph"></param>
        protected void ControlBreath(List <MED_ANESTHESIA_EVENT> anesEvent, Dictionary <string, VitalSignCurveDetailModel> dict)
        {
            if (anesEvent != null)
            {
                List <MED_ANESTHESIA_EVENT> rows = anesEvent.Where(x => !string.IsNullOrEmpty(x.EVENT_ITEM_NAME) && x.EVENT_ITEM_NAME.Contains("呼吸")).ToList();
                if (rows.Count == 0)
                {
                    return;
                }
                //控制呼吸时间列表
                List <MedVitalSignBreathControlTime> listControlTime = new List <MedVitalSignBreathControlTime>();
                //最大体征时间
                DateTime maxVitalSignTime             = DateTime.MaxValue;
                VitalSignCurveDetailModel curveBreath = null;
                //获取体征当前时间以及呼吸曲线
                for (int i = 0; i < _vitalSignCurves.Count; i++)
                {
                    if (_vitalSignCurves[i].CurveName.Contains("呼吸"))
                    {
                        curveBreath = _vitalSignCurves[i];
                        continue;
                    }
                    for (int j = 0; j < _vitalSignCurves[i].Points.Count; j++)
                    {
                        if (maxVitalSignTime == DateTime.MaxValue)
                        {
                            maxVitalSignTime = _vitalSignCurves[i].Points[j].Time;
                        }
                        else if (maxVitalSignTime < _vitalSignCurves[i].Points[j].Time)
                        {
                            maxVitalSignTime = _vitalSignCurves[i].Points[j].Time;
                        }
                    }
                }
                if (curveBreath == null)//生成曲线
                {
                    if (dict.ContainsKey("92"))
                    {
                        curveBreath = dict["92"];
                        _vitalSignCurves.Add(curveBreath);
                    }
                }
                if (curveBreath != null)
                {
                    listControlTime.AddRange(BreathTimeList("自主呼吸", anesEvent, _vitalSignGraph, dict));
                    listControlTime.AddRange(BreathTimeList("控制呼吸", anesEvent, _vitalSignGraph, dict));
                    listControlTime.AddRange(BreathTimeList("辅助呼吸", anesEvent, _vitalSignGraph, dict));
                }
                //排序 listControlTime
                listControlTime.Sort(new Comparison <MedVitalSignBreathControlTime>(delegate(MedVitalSignBreathControlTime controlTime1, MedVitalSignBreathControlTime controlTime2)
                {
                    return(controlTime1.oStartTime.CompareTo(controlTime2.oStartTime));
                }));
                //调整  listControlTime ,使得时间无重叠
                if (listControlTime.Count > 1)
                {
                    MedVitalSignBreathControlTime breathControlTime1 = null;
                    MedVitalSignBreathControlTime breathControlTime2 = null;
                    for (int i = 0; i < listControlTime.Count - 1; i++)
                    {
                        breathControlTime1 = listControlTime[i];
                        breathControlTime2 = listControlTime[i + 1];
                        if (breathControlTime1.endTime >= breathControlTime2.startTime)
                        {
                            breathControlTime1.endTime = breathControlTime2.startTime.AddMinutes(-5);
                        }
                    }
                }
                VitalSignPointModel point = null;//删除所有时间段内的点
                for (int count = 0; count < listControlTime.Count; count++)
                {
                    //删除控制呼吸以及辅助呼吸点
                    DateTimeRange range = new DateTimeRange(listControlTime[count].startTime, listControlTime[count].endTime);
                    if (curveBreath.Points == null)
                    {
                        curveBreath.Points = new List <VitalSignPointModel>();
                    }
                    for (int i = 0; i < curveBreath.Points.Count; i++)
                    {
                        point = curveBreath.Points[i];
                        if (point.Time >= range.StartDateTime && point.Time <= range.EndDateTime)
                        {
                            curveBreath.Points.Remove(point);
                            i--;
                        }
                    }
                    DateTime dt = range.StartDateTime;
                    dt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0);
                    //控制呼吸处理
                    if (listControlTime[count].BreathType == BreathControlType.ControlBreath)
                    {
                        SymbolModel symbol = new SymbolModel(SymbolType.Text);
                        symbol.Text = "C";
                        bool isExist = false;
                        for (int i = 0; i < curveBreath.LegendList.Count; i++)
                        {
                            if (curveBreath.LegendList[i].Symbol.SymbolType == symbol.SymbolType)
                            {
                                curveBreath.LegendList[i].Code        = "控制呼吸";
                                curveBreath.LegendList[i].DisplayName = "控制呼吸";
                                isExist = true;
                            }
                        }
                        if (!isExist)
                        {
                            LegendItem item = new LegendItem();
                            item.Code        = "控制呼吸";
                            item.DisplayName = "控制呼吸";
                            item.Symbol      = symbol;
                            curveBreath.LegendList.Add(item);
                        }
                        while (dt <= range.EndDateTime)
                        {
                            point = new VitalSignPointModel(dt, listControlTime[count].breathValue, curveBreath, symbol, "");
                            curveBreath.Points.Add(point);  //加入新点
                            dt = dt.AddMinutes(listControlTime[count].showTimeInterval);
                        }
                    }
                    //辅助呼吸处理
                    else if (listControlTime[count].BreathType == BreathControlType.HelpBreath)
                    {
                        SymbolModel symbol = new SymbolModel(SymbolType.Text);
                        symbol.Text = "A";
                        bool isExist = false;
                        for (int i = 0; i < curveBreath.LegendList.Count; i++)
                        {
                            if (curveBreath.LegendList[i].Symbol.SymbolType == symbol.SymbolType)
                            {
                                curveBreath.LegendList[i].Code        = "辅助呼吸";
                                curveBreath.LegendList[i].DisplayName = "辅助呼吸";
                                isExist = true;
                            }
                        }
                        if (!isExist)
                        {
                            LegendItem item = new LegendItem();
                            item.Code        = "辅助呼吸";
                            item.DisplayName = "辅助呼吸";
                            item.Symbol      = symbol;
                            curveBreath.LegendList.Add(item);
                        }

                        while (dt <= range.EndDateTime)
                        {
                            point = new VitalSignPointModel(dt, listControlTime[count].breathValue, curveBreath, symbol, "");
                            curveBreath.Points.Add(point);  //加入新点
                            dt = dt.AddMinutes(listControlTime[count].showTimeInterval);
                        }
                    }
                    else
                    {
                        while (dt <= range.EndDateTime)
                        {
                            point = new VitalSignPointModel(dt, listControlTime[count].breathValue, curveBreath, curveBreath.LegendList[0].Symbol, "");
                            curveBreath.Points.Add(point);  //加入新点
                            dt = dt.AddMinutes(listControlTime[count].showTimeInterval);
                        }
                    }

                    curveBreath.Points.Sort(new Comparison <VitalSignPointModel>(delegate(VitalSignPointModel point1, VitalSignPointModel point2)
                    {
                        return(point1.Time.CompareTo(point2.Time));
                    }));
                }
            }
        }