Exemple #1
0
 public VitalSignViewModel(List <MED_VITAL_SIGN> vitalSignList, List <MED_ANESTHESIA_EVENT> anesEventList, MedVitalSignGraph vitalSignGraph, AxisSetting xAxisSetting)
 {
     _vitalSignList  = vitalSignList;
     _anesEventList  = anesEventList;
     _vitalSignGraph = vitalSignGraph;
     _xAxisSetting   = xAxisSetting;
 }
Exemple #2
0
        /// <summary>
        /// 绑定数据源数据到控件
        /// </summary>
        public override void BindDataToUI(MedLegengGraph control, Dictionary <string, System.Data.DataTable> dataSources)
        {
            MedVitalSignGraph vitalGraph = null;

            foreach (IUIElementHandler handler in MedicalPaperUIElementHandlers)
            {
                if (handler.GetControlType == typeof(MedVitalSignGraph) && handler.GetCurrentControl != null)
                {
                    vitalGraph = handler.GetCurrentControl as MedVitalSignGraph;
                }
            }
            control.VitalSign = vitalGraph;
        }
Exemple #3
0
        public bool CancelBloodGas(MedVitalSignGraph vitalSignGraph)
        {
            bool n = false;

            if (vitalSignGraph != null && vitalSignGraph.MouseTime >= vitalSignGraph.StartTime && vitalSignGraph.MouseTime <= vitalSignGraph.EndTime && vitalSignGraph.SelectedBlood != null)
            {
                List <MED_BLOOD_GAS_MASTER> bloodGasMasterDataTable = operationInfoRepository.GetBloodGasMasterListByID(vitalSignGraph.SelectedBlood.DetailId).Data;
                if (bloodGasMasterDataTable != null && bloodGasMasterDataTable.Count == 1)
                {
                    bloodGasMasterDataTable[0].NURSE_MEMO2 = "取消显示";
                    n = operationInfoRepository.SaveBloodGasMaster(bloodGasMasterDataTable).Data > 0 ? true : false;
                }
            }
            return(n);
        }
Exemple #4
0
 /// <summary>
 /// 设置所有控件是否可编辑
 /// </summary>
 /// <param name="canEdit"></param>
 public void SetAllControlEditable(bool canEdit)
 {
     foreach (T control in _controls)
     {
         if (control is MedVitalSignGraph)
         {
             MedVitalSignGraph graph = control as MedVitalSignGraph;
             graph.CanUpdate = canEdit;
         }
         else
         {
             control.Enabled = canEdit;
         }
         control.BackColor = Color.White;
     }
 }
Exemple #5
0
        protected List <MedVitalSignCurveDetail> GetUserVitalShowSet(string eventNo)
        {
            List <MedVitalSignCurveDetail> list   = new List <MedVitalSignCurveDetail>();
            MED_PATIENT_MONITOR_CONFIG     config = GetPatientMonitorConfigDataTable(eventNo);

            if (config != null && !string.IsNullOrEmpty(config.CONTENT.ToString()))
            {
                System.IO.MemoryStream stream = new System.IO.MemoryStream(config.CONTENT);
                stream.Position = 0;
                DataSet ds = new DataSet();
                ds.ReadXml(stream);
                if (ds.Tables.Count > 0)
                {
                    string    tableName = "UserVitalShowSet" + ((Convert.ToInt32(eventNo) < 0) ? "0" : eventNo);
                    DataTable dataTable = ds.Tables[tableName];
                    ListFromTable(list, typeof(MedVitalSignCurveDetail), dataTable);
                }
                ds.Dispose();
                stream.Close();
                stream.Dispose();
            }

            // 获取用药图表控件,去掉重复的药
            MedVitalSignGraph vitalSignGraph = null;

            foreach (IUIElementHandler handler in MedicalPaperUIElementHandlers)
            {
                if (handler.GetControlType == typeof(MedVitalSignGraph) && handler.GetCurrentControl != null)
                {
                    vitalSignGraph = handler.GetCurrentControl as MedVitalSignGraph;
                    break;
                }
            }

            if (null != vitalSignGraph)
            {
                foreach (MedVitalSignCurveDetail detail in vitalSignGraph.CurveDetails)
                {
                    if (!string.IsNullOrEmpty(detail.CurveCode) && !list.Contains(detail))
                    {
                        list.Add(detail);
                    }
                }
            }

            return(list);
        }
Exemple #6
0
 public override void LoadData()
 {
     //加载数据
     if (ExtendAppContext.Current._VitalSignGraph == null)
     {
         ApplicationConfiguration.MedicalDocucementElement document = ApplicationConfiguration.GetMedicalDocument("麻醉记录单");
         string _reportName = ExtendAppContext.Current.AppPath + document.Path;
         Panel  p           = new Panel();
         AssemblyHelper.ReadFile(_reportName, p);
         ReadControl(p);
         p.Dispose();
     }
     else
     {
         _vitalSignGraph = ExtendAppContext.Current._VitalSignGraph;
     }
 }
Exemple #7
0
        /// <summary>
        /// 取消血气
        /// </summary>
        public bool CancelBloodGas(MedVitalSignGraph vitalSignGraph)
        {
            bool n = false;

            if (vitalSignGraph != null && vitalSignGraph.MouseTime >= vitalSignGraph.StartTime &&
                vitalSignGraph.MouseTime <= vitalSignGraph.EndTime && vitalSignGraph.SelectedBlood != null)
            {
                List <MED_BLOOD_GAS_MASTER> bloodGasMasterDataTable = AnesInfoService.ClientInstance.GetBloodGasMasterListByID(vitalSignGraph.SelectedBlood.DetailId);
                if (bloodGasMasterDataTable != null && bloodGasMasterDataTable.Count == 1)
                {
                    bloodGasMasterDataTable[0].NURSE_MEMO2 = null;
                    n = AnesInfoService.ClientInstance.SaveBloodGasMaster(bloodGasMasterDataTable);
                }
            }

            return(n);
        }
Exemple #8
0
 private MedSymbolCurveDetail GetVitalSignEventMark(MedVitalSignGraph vitalSignGraph, string curveText)
 {
     foreach (MedSymbolCurveDetail curveDetail in vitalSignGraph.EventMarkSettings)
     {
         string text1 = curveText.Trim();
         string text2 = curveDetail.Text.Trim();
         if (text1.ToLower().Equals(text2.ToLower()) || text1.ToLower().StartsWith(text2.ToLower() + "("))
         {
             return(curveDetail);
         }
         else if ((text2.EndsWith("%") && text1.StartsWith(text2.Substring(0, text2.Length - 2))) ||
                  (text2.StartsWith("%") && text1.EndsWith(text2.Substring(1))) ||
                  (text2.StartsWith("%") && text2.EndsWith("%") && text1.Contains(text2.Substring(1, text2.Length - 2))))
         {
             return(curveDetail);
         }
     }
     return(null);
 }
Exemple #9
0
        /// <summary>
        /// 数据保存
        /// </summary>
        protected override bool OnSaveData(Dictionary <string, DataTable> dataSource)
        {
            base.OnSaveData(dataSource);
            bool result = this.SaveDocDataPars(dataSource);

            foreach (IUIElementHandler handler in _UIElementHandlers)
            {
                if (handler.GetControlType == typeof(MedVitalSignGraph) && handler.GetCurrentControl != null)
                {
                    MedVitalSignGraph vitalSign = handler.GetCurrentControl as MedVitalSignGraph;
                    if (vitalSign.NewMonitorData != null)
                    {
                        vitalSign.NewMonitorData.Save();
                    }
                }
            }

            return(result);
        }
Exemple #10
0
 public void ReadControl(Control ctrl)
 {
     // MedVitalSignGraph vitalGraph = null;
     foreach (Control control in ctrl.Controls)
     {
         if (control.HasChildren)
         {
             ReadControl(control);
         }
         if (control is MedVitalSignGraph)
         {
             _vitalSignGraph = control as MedVitalSignGraph;
             ExtendAppContext.Current._VitalSignGraph = _vitalSignGraph;
             try
             {
                 LoadVitalSignControl();
             }
             catch (Exception ex)
             {
                 Logger.Error("加载体征数据异常", ex);
             }
         }
     }
 }
Exemple #11
0
        /// <summary>
        /// 数据保存
        /// </summary>
        /// <param name="dataSource"></param>
        protected override void OnSaveData(Dictionary <string, DataTable> dataSource)
        {
            base.OnSaveData(dataSource);
            List <MED_OPERATION_MASTER> operMasterList = ModelHelper <MED_OPERATION_MASTER> .ConvertDataTableToList(dataSource["MED_OPERATION_MASTER"]);

            MED_OPERATION_MASTER operMaster = null;

            if (operMasterList != null && operMasterList.Count > 0)
            {
                operMaster = operMasterList[0];
                if (!operMaster.OUT_PACU_DATE_TIME.HasValue && operMaster.OPER_STATUS_CODE == (int)OperationStatus.InPACU)
                {
                    MED_OPERATION_MASTER master = operationInfoRepository.GetOperMaster(ExtendApplicationContext.Current.PatientContextExtend.PatientID, ExtendApplicationContext.Current.PatientContextExtend.VisitID, ExtendApplicationContext.Current.PatientContextExtend.OperID).Data;
                    if (master.OUT_PACU_DATE_TIME.HasValue)
                    {
                        operMaster.OUT_PACU_DATE_TIME = master.OUT_PACU_DATE_TIME;
                        operMaster.OPER_STATUS_CODE   = master.OPER_STATUS_CODE;
                    }
                }
                if (operMaster.IN_PACU_DATE_TIME.HasValue && !operMaster.OUT_PACU_DATE_TIME.HasValue)
                {
                    operMaster.OPER_STATUS_CODE = 45;
                }
            }

            List <MED_PAT_MASTER_INDEX> patIndexList = ModelHelper <MED_PAT_MASTER_INDEX> .ConvertDataTableToList(dataSource["MED_PAT_MASTER_INDEX"]);

            MED_PAT_MASTER_INDEX patMasterIndex = null;

            if (patIndexList != null && patIndexList.Count > 0)
            {
                patMasterIndex = patIndexList[0];
            }

            List <MED_PAT_VISIT> patVisitList = ModelHelper <MED_PAT_VISIT> .ConvertDataTableToList(dataSource["MED_PAT_VISIT"]);

            MED_PAT_VISIT patVisit = null;

            if (patVisitList != null && patVisitList.Count > 0)
            {
                patVisit = patVisitList[0];
            }

            List <MED_ANESTHESIA_PLAN> anesPlanList = ModelHelper <MED_ANESTHESIA_PLAN> .ConvertDataTableToList(dataSource["MED_ANESTHESIA_PLAN"]);

            MED_ANESTHESIA_PLAN anesPlan = null;

            if (anesPlanList != null && anesPlanList.Count > 0)
            {
                anesPlan = anesPlanList[0];
            }

            List <MED_ANESTHESIA_PLAN_PMH> anesPlanPMHList = ModelHelper <MED_ANESTHESIA_PLAN_PMH> .ConvertDataTableToList(dataSource["MED_ANESTHESIA_PLAN_PMH"]);

            MED_ANESTHESIA_PLAN_PMH anesPlanPmh = null;

            if (anesPlanPMHList != null && anesPlanPMHList.Count > 0)
            {
                anesPlanPmh = anesPlanPMHList[0];
            }

            List <MED_OPERATION_EXTENDED> operExtended = ModelHelper <MED_OPERATION_EXTENDED> .ConvertDataTableToList(dataSource["MED_OPERATION_EXTENDED"]);

            List <MED_POSTOPERATIVE_EXTENDED> postExtended = ModelHelper <MED_POSTOPERATIVE_EXTENDED> .ConvertDataTableToList(dataSource["MED_POSTOPERATIVE_EXTENDED"]);

            //OperationInfoService.SaveMedicalBasicDoc(operMaster, patIndex, patVisit, null, anesPlan, null, anesPlanPMH, operExtended, posExtended, null);

            MED_PATS_IN_HOSPITAL patsInHospital = null;


            MED_ANESTHESIA_PLAN_EXAM anesPlanExam = null;


            List <MED_PREOPERATIVE_EXPANSION> preExpansion = null;

            operationInfoRepository.SaveMedicalBasicDoc(new { operMaster, patMasterIndex, patVisit, patsInHospital, anesPlan, anesPlanExam, anesPlanPmh, operExtended, postExtended, preExpansion });


            foreach (IUIElementHandler handler in _UIElementHandlers)
            {
                if (handler.GetControlType == typeof(MedVitalSignGraph) && handler.GetCurrentControl != null)
                {
                    MedVitalSignGraph vitalSign = handler.GetCurrentControl as MedVitalSignGraph;
                    if (vitalSign.NewMonitorData != null)
                    {
                        vitalSign.NewMonitorData.Save();
                    }
                }
            }
        }
Exemple #12
0
        /// <summary>
        /// 获取呼吸时间列表
        /// </summary>
        /// <param name="breathType"></param>
        /// <param name="anesEvent"></param>
        /// <param name="vitalSignGraph"></param>
        /// <returns></returns>
        private List <MedVitalSignBreathControlTime> BreathTimeList(string breathType, List <MED_ANESTHESIA_EVENT> anesEvent, MedVitalSignGraph vitalSignGraph, Dictionary <string, VitalSignCurveDetailModel> dict)
        {
            List <MED_ANESTHESIA_EVENT> rows = anesEvent.Where(x => x.EVENT_ITEM_NAME.Contains(breathType)).ToList();

            DateTime controlStartTime = DateTime.MinValue;
            DateTime controlEndTime   = DateTime.MaxValue;
            double   dBreathValue     = -1;
            //控制呼吸时间列表
            List <MedVitalSignBreathControlTime> listControlTime = new List <MedVitalSignBreathControlTime>();
            DateTime sysDatetTime = DateTime.Now;

            if (rows != null)
            {
                rows.ForEach(anesthesiaEventRow =>
                {
                    //初始化值
                    controlStartTime = DateTime.MinValue;
                    controlEndTime   = DateTime.MaxValue;
                    if (anesthesiaEventRow.START_TIME.HasValue)
                    {
                        controlStartTime = anesthesiaEventRow.START_TIME.Value;
                    }
                    if (anesthesiaEventRow.END_TIME.HasValue)
                    {
                        controlEndTime = anesthesiaEventRow.END_TIME.Value;
                    }
                    if (anesthesiaEventRow.DOSAGE.HasValue)
                    {
                        dBreathValue = (double)anesthesiaEventRow.DOSAGE;
                    }
                    else
                    {
                        dBreathValue = 0;
                    }
                    //有开始时间  并且有体征数据 并且有呼吸值
                    if (controlStartTime != DateTime.MinValue && dBreathValue >= 0)
                    {
                        //没有结束时间
                        if (controlEndTime == DateTime.MaxValue)
                        {
                            controlEndTime = sysDatetTime;
                        }
                        DateTimeRange range = new DateTimeRange(controlStartTime, controlEndTime);
                        //控制呼吸
                        MedVitalSignBreathControlTime breathControlTime = new MedVitalSignBreathControlTime();
                        breathControlTime.startTime = range.StartDateTime;
                        breathControlTime.endTime   = range.EndDateTime;

                        breathControlTime.oStartTime = controlStartTime;
                        breathControlTime.oEndTime   = controlEndTime;

                        breathControlTime.breathValue = dBreathValue;
                        //显示频率
                        int timeSpan      = 5;
                        string breathName = "呼吸";
                        Color color       = Color.Magenta;
                        //设置初始值
                        foreach (VitalSignCurveDetailModel detail in dict.Values)
                        {
                            if (detail.CurveName.Equals("呼吸"))
                            {
                                color = detail.Color;
                                break;
                            }
                        }
                        foreach (VitalSignCurveDetailModel detail in dict.Values)
                        {
                            if (breathType == "自主呼吸")
                            {
                                breathName = "呼吸";
                            }
                            else
                            {
                                breathName = breathType;
                            }

                            if (detail.CurveName.Equals(breathName))
                            {
                                color = detail.Color;

                                switch (detail.ShowTimeInterval)
                                {
                                case ShowTimeInterval.Five:
                                    timeSpan = 5;
                                    break;

                                case ShowTimeInterval.Fifiteen:
                                    timeSpan = 15;
                                    break;

                                case ShowTimeInterval.Ten:
                                    timeSpan = 10;
                                    break;

                                case ShowTimeInterval.Twenty:
                                    timeSpan = 20;
                                    break;

                                case ShowTimeInterval.HalfHour:
                                    timeSpan = 30;
                                    break;

                                case ShowTimeInterval.Hour:
                                    timeSpan = 60;
                                    break;
                                }
                            }
                        }
                        //新增显示频率 20120927
                        breathControlTime.showTimeInterval = timeSpan;
                        breathControlTime.curveColor       = color;

                        if (breathType.Contains("控制呼吸"))
                        {
                            breathControlTime.BreathType = BreathControlType.ControlBreath;
                            if (!string.IsNullOrEmpty(vitalSignGraph.BreathPara1) && !string.IsNullOrEmpty(vitalSignGraph.BreathPara2) && !string.IsNullOrEmpty(vitalSignGraph.BreathPara3))
                            {
                                List <MED_PAT_MONITOR_DATA_EXT> patMonitorDataExtDataTable = AnesInfoService.ClientInstance.GetPatMonitorExtList(ExtendAppContext.Current.PatientInformationExtend.PATIENT_ID, ExtendAppContext.Current.PatientInformationExtend.VISIT_ID,
                                                                                                                                                 ExtendAppContext.Current.PatientInformationExtend.OPER_ID);
                                if (patMonitorDataExtDataTable != null && patMonitorDataExtDataTable.Count > 0)
                                {
                                    List <MED_PAT_MONITOR_DATA_EXT> rows1 = patMonitorDataExtDataTable.Where(x => x.ITEM_CODE == vitalSignGraph.BreathPara1 || x.ITEM_CODE == vitalSignGraph.BreathPara2 || x.ITEM_CODE == vitalSignGraph.BreathPara3).ToList();

                                    if (rows1 != null && rows1.Count > 0)
                                    {
                                        rows1.ForEach(rr =>
                                        {
                                            if (!vitalSignGraph.BreathParalList.ContainsKey(rr.TIME_POINT))
                                            {
                                                vitalSignGraph.BreathParalList.Add(rr.TIME_POINT, new MedVitalSignGraph.BreathPara());
                                            }
                                            if (!string.IsNullOrEmpty(rr.ITEM_VALUE))
                                            {
                                                if (rr.ITEM_CODE.Equals(vitalSignGraph.BreathPara1))
                                                {
                                                    vitalSignGraph.BreathParalList[rr.TIME_POINT].Para1 = rr.ITEM_VALUE;
                                                }
                                                else if (rr.ITEM_CODE.Equals(vitalSignGraph.BreathPara2))
                                                {
                                                    vitalSignGraph.BreathParalList[rr.TIME_POINT].Para2 = rr.ITEM_VALUE;
                                                }
                                                else if (rr.ITEM_CODE.Equals(vitalSignGraph.BreathPara3))
                                                {
                                                    vitalSignGraph.BreathParalList[rr.TIME_POINT].Para3 = rr.ITEM_VALUE;
                                                }
                                            }
                                        });
                                    }
                                }
                            }
                        }
                        else if (breathType.Contains("辅助呼吸"))
                        {
                            breathControlTime.BreathType = BreathControlType.HelpBreath;
                        }
                        else if (breathType.Contains("自主呼吸"))
                        {
                            breathControlTime.BreathType = BreathControlType.FreeBreath;
                        }


                        listControlTime.Add(breathControlTime);
                    }
                });
            }
            return(listControlTime);
        }
Exemple #13
0
 public BreathParaViewModel(MedVitalSignGraph vitalSignGraph)
 {
     _vitalSignGraph = vitalSignGraph;
 }
Exemple #14
0
 public EventMarkViewModel(List <MED_ANESTHESIA_EVENT> anesEventList, MED_OPERATION_MASTER operMaster, MedVitalSignGraph vitalSignGraph)
 {
     _anesEventList  = anesEventList;
     _operMaster     = operMaster;
     _vitalSignGraph = vitalSignGraph;
 }
Exemple #15
0
        protected override void RescueMode()
        {
            MedVitalSignGraph        vitalSignGraph  = null;
            MedDrugGraph             drugGraph       = null;
            MedGridGraph             gridGraph       = null;
            List <MedVitalSignGraph> vitalSignGraphs = ReportViewer.GetControls <MedVitalSignGraph>();
            List <MedDrugGraph>      drugGraphs      = ReportViewer.GetControls <MedDrugGraph>();
            List <MedGridGraph>      gridGraphs      = ReportViewer.GetControls <MedGridGraph>();

            if (vitalSignGraphs.Count > 0)
            {
                vitalSignGraph = vitalSignGraphs[0];
                if (!ExtendApplicationContext.Current.IsRescueMode)
                {
                    ExtendApplicationContext.Current.OldMinScaleCount = vitalSignGraph.MinScaleCount;
                }
            }
            if (drugGraphs.Count > 0)
            {
                drugGraph = drugGraphs[0];
            }
            if (gridGraphs.Count > 0)
            {
                gridGraph = gridGraphs[0];
            }

            base.RescueMode();

            if (ExtendApplicationContext.Current.IsRescueMode)
            {
                switch (vitalSignGraph.ScaleType)
                {
                case ScaleType.HalfHour:
                    vitalSignGraph.MinScaleCount      = 30;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 30;
                    gridGraph.MinScaleCount           = 30;
                    break;

                case ScaleType.Hour:
                    vitalSignGraph.MinScaleCount      = 60;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 60;
                    gridGraph.MinScaleCount           = 60;
                    break;

                case ScaleType.OneMin:
                    vitalSignGraph.MinScaleCount      = 1;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 1;
                    gridGraph.MinScaleCount           = 1;
                    break;

                case ScaleType.Quarter:
                    vitalSignGraph.MinScaleCount      = 15;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 15;
                    gridGraph.MinScaleCount           = 15;
                    break;

                case ScaleType.TenMin:
                    vitalSignGraph.MinScaleCount      = 10;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 10;
                    gridGraph.MinScaleCount           = 10;
                    break;

                case ScaleType.TriQuarter:
                    vitalSignGraph.MinScaleCount      = 45;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 45;
                    gridGraph.MinScaleCount           = 45;
                    break;

                case ScaleType.TwiHour:
                    vitalSignGraph.MinScaleCount      = 120;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 120;
                    gridGraph.MinScaleCount           = 120;
                    break;

                case ScaleType.TwoMin:
                    vitalSignGraph.MinScaleCount      = 2;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 2;
                    gridGraph.MinScaleCount           = 2;
                    break;

                case ScaleType.FiveMin:
                    vitalSignGraph.MinScaleCount      = 5;
                    vitalSignGraph.OnlyShowFileMinute = false;
                    drugGraph.MinScaleCount           = 5;
                    gridGraph.MinScaleCount           = 5;
                    break;
                }
            }
            else
            {
                vitalSignGraph.MinScaleCount      = ExtendApplicationContext.Current.OldMinScaleCount;
                vitalSignGraph.OnlyShowFileMinute = true;
                drugGraph.MinScaleCount           = ExtendApplicationContext.Current.OldMinScaleCount;
                gridGraph.MinScaleCount           = ExtendApplicationContext.Current.OldMinScaleCount;
            }
            this.RefreshData();
        }
Exemple #16
0
 /// <summary>
 /// 加载接受参数
 /// </summary>
 public override void OnViewLoaded()
 {
     base.OnViewLoaded();
     _vitalSignGraph = Args[0] as MedVitalSignGraph;
     _rescueTime     = Args[1] as RescueTime;
 }