//转换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); }
/// <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); }
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); }
/// <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> /// <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)); })); } } }