Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 绑定数据源数据到控件
        /// </summary>
        public override void BindDataToUI(MedAnesSheetDetails control, Dictionary <string, System.Data.DataTable> dataSources)
        {
            if (!dataSources.ContainsKey("AnesthesiaEvent"))
            {
                throw new NotImplementedException(string.Format("在数据源中未找到名为{0}的表AnesInformations.AnesthesiaEventDataTable,请添加此绑定数据源!", "AnesthesiaEvent"));
            }

            if (!dataSources.ContainsKey("MED_OPERATION_MASTER"))
            {
                throw new NotImplementedException(string.Format("在数据源中未找到名为{0}的表AnesInformations.OperationMasterDataTable,请添加此绑定数据源!", "MED_OPERATION_MASTER"));
            }

            // 获取事件表和主表数据
            List <MED_ANESTHESIA_EVENT> anesEventTable  = new ModelHandler <MED_ANESTHESIA_EVENT>().FillModel(dataSources["AnesthesiaEvent"]);
            MED_OPERATION_MASTER        operationMaster = new ModelHandler <MED_OPERATION_MASTER>().FillModel(dataSources["MED_OPERATION_MASTER"].Rows[0]);

            // 设置明细栏的起始和结束时间
            if (PagerSetting.PageTimeSpan.StartDateTime != DateTime.MinValue)
            {
                control.StartTime = PagerSetting.PageTimeSpan.StartDateTime;
                control.EndTime   = PagerSetting.PageTimeSpan.EndDateTime;
            }

            // 清空之前的数据
            control.Collections.Clear();

            // 明细分组显示
            if (control.Group)
            {
                MedAnesSheetDetailCollection collection;
                // 显示事件信息
                if (control.HasEvent)
                {
                    List <AnesClassType> anesClassList = new List <AnesClassType>();
                    anesClassList.Add(AnesClassType.Event);
                    // 是否显示插管
                    if (control.HasZhiGuan)
                    {
                        anesClassList.Add(AnesClassType.PutPipe);
                        anesClassList.Add(AnesClassType.PullPipe);
                    }

                    // 是否显示附记
                    if (control.HasFuji)
                    {
                        anesClassList.Add(AnesClassType.ECG);
                    }

                    // 默认必须显示出量和事件
                    anesClassList.Add(AnesClassType.OutLiquid);
                    AnesClassType[] anesClasses = anesClassList.ToArray();
                    collection = this.GenDetailCollection(anesEventTable, anesClasses, "事件", CollectionType.Event,
                                                          control.StartTime, null, AnesDrugShowType.Total, false, operationMaster);
                    control.Collections.Add(collection);
                    if (collection != null)
                    {
                        collection.Color = control.EventColor;
                    }
                }

                // 是否显示麻药
                if (control.HasAnesDrug)
                {
                    collection = this.AddAnesSheetDetailCollection(control, anesEventTable, AnesClassType.AnesDrug,
                                                                   "麻药", CollectionType.Drug, control.AnesDrugColor,
                                                                   control.StartTime, control.AnesDrugShowType, false, operationMaster);
                }

                // 默认显示用药信息
                this.AddAnesSheetDetailCollection(control, anesEventTable, AnesClassType.Drug, "用药",
                                                  CollectionType.Drug, control.DrugColor, control.StartTime, false, operationMaster);
                // 是否要输血输液
                if (control.HasLiquid)
                {
                    //modified by joysola on 2018-3-6 当输血一行的时候,不用在事件栏里显示
                    if (ApplicationConfiguration.PassedInLiquidInBloodFormat.Equals("BloodInOne"))
                    {
                        collection = this.GenDetailCollection(anesEventTable, new AnesClassType[] { AnesClassType.InLiquid },
                                                              "输液", CollectionType.Drug, control.StartTime, null,
                                                              AnesDrugShowType.Total, false, operationMaster);
                    }
                    else
                    {
                        collection = this.GenDetailCollection(anesEventTable, new AnesClassType[] { AnesClassType.InBlood, AnesClassType.InLiquid },
                                                              "输液和输血", CollectionType.Drug, control.StartTime, null,
                                                              AnesDrugShowType.Total, false, operationMaster);
                    }
                    if (collection != null)
                    {
                        collection.Color = control.InLiquidColor;
                        control.Collections.Add(collection);
                    }
                }

                // 列表信息时间排序
                if (control.IsTimeOrder)
                {
                    MedAnesSheetDetailCollection collection99 = new MedAnesSheetDetailCollection("事件");
                    for (int i = control.Collections.Count - 1; i >= 0; i--)
                    {
                        MedAnesSheetDetailCollection cl = control.Collections[i];
                        collection99.Add(cl);
                        control.Collections.Remove(cl);
                    }

                    collection99.Sort();
                    for (int i = collection99.Points.Count - 1; i >= 0; i--)
                    {
                        collection99.Points[i].Index = i + 1;
                    }

                    control.Collections.Add(collection99);
                }
                else
                {
                    for (int i = control.Collections.Count - 1; i >= 0; i--)
                    {
                        MedAnesSheetDetailCollection cl = control.Collections[i];
                        if (cl != null && cl.Points != null)
                        {
                            for (int j = cl.Points.Count - 1; j >= 0; j--)
                            {
                                cl.Points[j].Color = cl.Color;
                            }
                        }
                    }
                }
            }
            else
            {
                // 不分组显示
                MedAnesSheetDetailCollection collection00 = null;
                List <AnesClassType>         types        = new List <AnesClassType>();
                foreach (int enumValue in Enum.GetValues(typeof(AnesClassType)))
                {
                    types.Add((AnesClassType)enumValue);
                }

                types.Remove(AnesClassType.Breath);
                types.Remove(AnesClassType.ControlBreath);
                types.Remove(AnesClassType.AssistBreath);
                types.Remove(AnesClassType.DataModify);

                // 是否显示事件
                if (!control.HasEvent)
                {
                    types.Remove(AnesClassType.Event);
                }
                // 是否显示插管
                if (!control.HasZhiGuan)
                {
                    types.Remove(AnesClassType.PutPipe);
                    types.Remove(AnesClassType.PullPipe);
                }
                // 是否显示附记
                if (!control.HasFuji)
                {
                    types.Add(AnesClassType.ECG);
                }
                // 是否要输血输液
                if (!control.HasLiquid)
                {
                    types.Remove(AnesClassType.InBlood);
                    types.Remove(AnesClassType.InLiquid);
                }
                // 是否显示麻药
                if (control.HasAnesDrug)
                {
                    collection00 = this.AddAnesSheetDetailCollection(control, anesEventTable, types.ToArray(), "事件",
                                                                     CollectionType.Event, control.EventColor, control.StartTime, null,
                                                                     AnesDrugShowType.Total, false, operationMaster);
                }
                else
                {
                    types.Remove(AnesClassType.AnesDrug);
                    collection00 = this.AddAnesSheetDetailCollection(control, anesEventTable, types.ToArray(), "事件",
                                                                     CollectionType.Event, control.EventColor, control.StartTime,
                                                                     GetAnesClassTypeString(AnesClassType.AnesDrug), AnesDrugShowType.Total,
                                                                     false, operationMaster);
                }

                if (collection00 != null)
                {
                    collection00.Color = control.EventColor;
                }
            }

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

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

            if (drugGraph != null)
            {
                for (int i = 0; i < drugGraph.Curves.Count; i++)
                {
                    foreach (MedAnesSheetDetailCollection collect in control.Collections)
                    {
                        MedAnesSheetDetailPoint point = null;
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point = collect.Points[ii];
                            if (point.Text.ToLower() == drugGraph.Curves[i].Text.ToLower())
                            {
                                collect.Points.Remove(point);
                                ii = ii - 1;
                            }
                        }

                        // 重新给序号
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point       = collect.Points[ii];
                            point.Index = ii + 1;
                        }
                    }
                }
            }

            // 获取索引表格控件,去掉重复的输血输液
            MedGridGraph gridGraph = null;

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

            if (gridGraph != null)
            {
                for (int i = 0; i < gridGraph.Rows.Count; i++)
                {
                    foreach (MedAnesSheetDetailCollection collect in control.Collections)
                    {
                        MedAnesSheetDetailPoint point = null;
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point = collect.Points[ii];
                            if (point.Text.ToLower() == gridGraph.Rows[i].Text.ToLower())
                            {
                                collect.Points.Remove(point);
                                ii = ii - 1;
                            }
                        }

                        //重新给序号
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point       = collect.Points[ii];
                            point.Index = ii + 1;
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 绑定数据源数据到控件
        /// </summary>
        /// <param name="control"></param>
        /// <param name="dataSources"></param>
        public override void BindDataToUI(MedAnesSheetDetails control, Dictionary <string, System.Data.DataTable> dataSources)
        {
            if (!dataSources.ContainsKey("AnesthesiaEvent"))
            {
                throw new NotImplementedException(string.Format("在数据源中未找到名为{0}的表AnesInformations.AnesthesiaEventDataTable,请添加此绑定数据源!", "AnesthesiaEvent"));
            }
            List <MED_ANESTHESIA_EVENT> anesEventTable = ModelHelper <MED_ANESTHESIA_EVENT> .ConvertDataTableToList(dataSources["AnesthesiaEvent"]);

            if (!dataSources.ContainsKey("MED_OPERATION_MASTER"))
            {
                throw new NotImplementedException(string.Format("在数据源中未找到名为{0}的表AnesInformations.OperationMasterDataTable,请添加此绑定数据源!", "MED_OPERATION_MASTER"));
            }
            // MED_OPERATION_MASTER operationMaster = ModelHelper<MED_OPERATION_MASTER>.ConvertDataRowToSingle(dataSources["MED_OPERATION_MASTER"].Rows[0]);
            MED_OPERATION_MASTER operationMaster = ModelHelper <MED_OPERATION_MASTER> .ConvertDataTableToList(dataSources["MED_OPERATION_MASTER"])[0];

            if (PagerSetting.PageTimeSpan.StartDateTime != DateTime.MinValue)
            {
                control.StartTime = PagerSetting.PageTimeSpan.StartDateTime;
                control.EndTime   = PagerSetting.PageTimeSpan.EndDateTime;
            }


            control.Collections.Clear();

            if (control.Group)
            {
                MedAnesSheetDetailCollection collection;
                if (control.HasEvent)
                {
                    List <AnesClassType> anesClassList = new List <AnesClassType>();
                    anesClassList.Add(AnesClassType.Event);
                    if (control.HasZhiGuan)
                    {
                        anesClassList.Add(AnesClassType.PutPipe);
                        anesClassList.Add(AnesClassType.PullPipe);
                    }
                    if (control.HasFuji)
                    {
                        anesClassList.Add(AnesClassType.ECG);
                    }
                    AnesClassType[] anesClasses = anesClassList.ToArray();
                    collection = GenDetailCollection(anesEventTable, anesClasses, "事件", CollectionType.Event, control.StartTime, null, AnesDrugShowType.Total, false, operationMaster);
                    control.Collections.Add(collection);
                    if (collection != null)
                    {
                        collection.Color = control.EventColor;
                    }
                }
                if (control.HasAnesDrug)
                {
                    // collection = AddAnesSheetDetailCollection(control, anesEventTable, AnesClassType.AnesDrug, "诱导", CollectionType.Drug, ApplicationConfiguration.YouDaoColor, control.StartTime, control.AnesDrugShowType, true, operationMaster);
                    collection = AddAnesSheetDetailCollection(control, anesEventTable, AnesClassType.AnesDrug, "麻药", CollectionType.Drug, control.AnesDrugColor, control.StartTime, control.AnesDrugShowType, false, operationMaster);
                }
                AddAnesSheetDetailCollection(control, anesEventTable, AnesClassType.Drug, "用药", CollectionType.Drug, control.DrugColor, control.StartTime, false, operationMaster);
                if (control.HasLiquid)
                {
                    collection = GenDetailCollection(anesEventTable, new AnesClassType[] { AnesClassType.InBlood, AnesClassType.InLiquid }, "输液和输血", CollectionType.Drug, control.StartTime, null, AnesDrugShowType.Total, false, operationMaster);
                    if (collection != null)
                    {
                        collection.Color = control.InLiquidColor;
                        control.Collections.Add(collection);
                    }
                }

                if (control.IsTimeOrder)
                {
                    MedAnesSheetDetailCollection collection99 = new MedAnesSheetDetailCollection("事件");
                    for (int i = control.Collections.Count - 1; i >= 0; i--)
                    {
                        MedAnesSheetDetailCollection cl = control.Collections[i];
                        collection99.Add(cl);
                        control.Collections.Remove(cl);
                    }
                    collection99.Sort();
                    for (int i = collection99.Points.Count - 1; i >= 0; i--)
                    {
                        collection99.Points[i].Index = i + 1;
                    }
                    control.Collections.Add(collection99);
                }
                else
                {
                    for (int i = control.Collections.Count - 1; i >= 0; i--)
                    {
                        MedAnesSheetDetailCollection cl = control.Collections[i];
                        if (cl != null && cl.Points != null)
                        {
                            for (int j = cl.Points.Count - 1; j >= 0; j--)
                            {
                                cl.Points[j].Color = cl.Color;
                            }
                        }
                    }
                }
            }
            else
            {
                List <AnesClassType> types = new List <AnesClassType>();


                foreach (int enumValue in Enum.GetValues(typeof(AnesClassType)))
                {
                    types.Add((AnesClassType)enumValue);
                }

                types.Remove(AnesClassType.DataModify);
                if (!control.HasEvent)
                {
                    types.Remove(AnesClassType.Event);
                }
                if (!control.HasZhiGuan)
                {
                    types.Remove(AnesClassType.PutPipe);

                    types.Remove(AnesClassType.PullPipe);
                }
                if (!control.HasAnesDrug)
                {
                    types.Remove(AnesClassType.AnesDrug);
                }


                if (!control.HasFuji)
                {
                    types.Add(AnesClassType.ECG);
                }
                if (!control.HasLiquid)
                {
                    types.Remove(AnesClassType.InBlood);
                    types.Remove(AnesClassType.InLiquid);
                }


                MedAnesSheetDetailCollection collection00 = null;
                if (control.HasAnesDrug)
                {
                    collection00 = AddAnesSheetDetailCollection(control, anesEventTable, types.ToArray(), "事件", CollectionType.Event, control.EventColor, control.StartTime, null, AnesDrugShowType.Total, false, operationMaster);
                }
                else
                {
                    collection00 = AddAnesSheetDetailCollection(control, anesEventTable, types.ToArray(), "事件", CollectionType.Event, control.EventColor, control.StartTime, GetAnesClassTypeString(AnesClassType.AnesDrug), AnesDrugShowType.Total, false, operationMaster);
                }
                if (collection00 != null)
                {
                    collection00.Color = control.EventColor;
                }
            }

            //去掉重复的药
            MedDrugGraph drugGraph = null;//GetAnesGraph<MedDrugGraph>();

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

            if (drugGraph != null)
            {
                for (int i = 0; i < drugGraph.Curves.Count; i++)
                {
                    foreach (MedAnesSheetDetailCollection collect in control.Collections)
                    {
                        MedAnesSheetDetailPoint point = null;
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point = collect.Points[ii];
                            if (point.Text.ToLower() == drugGraph.Curves[i].Text.ToLower())
                            {
                                collect.Points.Remove(point);
                                ii = ii - 1;
                                // continue;
                            }
                        }
                        //重新给序号
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point       = collect.Points[ii];
                            point.Index = ii + 1;
                        }
                    }
                }
            }



            //}

            //去掉重复的输血输液
            MedGridGraph gridGraph = null;// GetAnesGraph<MedGridGraph>();

            foreach (IUIElementHandler handler in MedicalPaperUIElementHandlers)
            {
                if (handler.GetControlType == typeof(MedGridGraph) && handler.GetCurrentControl != null)
                {
                    gridGraph = handler.GetCurrentControl as MedGridGraph;
                }
            }
            if (gridGraph != null)
            {
                for (int i = 0; i < gridGraph.Rows.Count; i++)
                {
                    foreach (MedAnesSheetDetailCollection collect in control.Collections)
                    {
                        MedAnesSheetDetailPoint point = null;
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point = collect.Points[ii];
                            if (point.Text.ToLower() == gridGraph.Rows[i].Text.ToLower())
                            {
                                collect.Points.Remove(point);
                                ii = ii - 1;
                            }
                        }
                        //重新给序号
                        for (int ii = 0; ii < collect.Points.Count; ii++)
                        {
                            point       = collect.Points[ii];
                            point.Index = ii + 1;
                        }
                    }
                }
            }
        }