예제 #1
0
        public ImplementationInfo GetImplementationForWebSecond(string PatientId, string PlanNo)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            //string str_result = "";
            string Module = "";
            try
            {
                //Pad保证PlanNo输入不为空  为空的表示无当前计划,则显示无执行即可,无需连接网络服务

                if ((PlanNo != "") && (PlanNo != null)) //存在正在执行的计划
                {
                    //获取计划的相关信息
                    int planStatus = 0;

                    InterSystems.Data.CacheTypes.CacheSysList planInfo = null;
                    planInfo = PsPlan.GetPlanInfo(_cnCache, PlanNo);
                    if (planInfo != null)
                    {
                        planStatus = Convert.ToInt32(planInfo[5]);
                        Module = planInfo[4].ToString();

                        ImplementationInfo.StartDate = Convert.ToInt32(planInfo[2]);
                        ImplementationInfo.EndDate = Convert.ToInt32(planInfo[3]);

                    }

                    if (planStatus == 3) //是正在执行的当前计划
                    {
                        //剩余天数和进度
                        InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                        PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                        if (PRlist != null)
                        {
                            ImplementationInfo.RemainingDays = PRlist[0].ToString();
                            ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();

                        }

                        //最近一周的依从率
                        InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                        weekPeriod = PsPlan.GetWeekPeriod(_cnCache, ImplementationInfo.StartDate);
                        if (weekPeriod != null)
                        {
                            ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                        }
                    }
                    else  //已经结束计划
                    {
                        ImplementationInfo.RemainingDays = "0";
                        ImplementationInfo.ProgressRate = "100";
                        ImplementationInfo.CompliacneValue = "整个计划依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, ImplementationInfo.StartDate, ImplementationInfo.EndDate) + "%";
                    }

                    #region  读取任务执行情况,体征、用药等

                    //读取任务列表
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);
                    ImplementationInfo.TaskList = PsTask.GetSpTaskList(_cnCache, PlanNo);

                    //测量-体征切换下拉框
                    string condition = " Type = 'VitalSign'";
                    DataRow[] VitalSignRows = TaskList.Select(condition);
                    List<SignShow> SignList = new List<SignShow>();
                    for (int j = 0; j < VitalSignRows.Length; j++)
                    {
                        SignShow SignShow = new SignShow();
                        SignShow.SignName = VitalSignRows[j]["CodeName"].ToString();
                        SignShow.SignCode = VitalSignRows[j]["Code"].ToString();
                        SignList.Add(SignShow);
                    }
                    ImplementationInfo.SignList = SignList;

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();
                    ChartData ChartData = new ChartData();
                    List<Graph> GraphList = new List<Graph>();
                    GraphGuide GraphGuide = new GraphGuide();

                    if (Module == "M1")  //后期维护的话,在这里添加不同的模块判断
                    {

                        //高血压模块  体征测量-血压(收缩压、舒张压)、脉率   【默认显示-收缩压,血压必有,脉率可能有】
                        condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'or  Code = 'Pulserate|Pulserate_1'";
                        DataRow[] HyperTensionRows = TaskList.Select(condition);

                        //注意:需要兼容之前没有脉率的情况
                        if ((HyperTensionRows != null) && (HyperTensionRows.Length >= 2))  //M1 收缩压(默认显示)、舒张压、脉率  前两者肯定有,脉率不一定有
                        {
                            //获取血压的分级规则,脉率的分级原则写死在webservice
                            reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                            //首次进入,默认加载收缩压
                            GraphList = CmMstBloodPressure.GetSignInfoByM1(_cnCache, PatientId, PlanNo, "Bloodpressure|Bloodpressure_1", ImplementationInfo.StartDate, ImplementationInfo.EndDate, reference);

                            //初始值、目标值、分级规则加工
                            if (GraphList.Count > 0)
                            {
                                GraphGuide = CmMstBloodPressure.GetGuidesByCode(_cnCache, PlanNo, "Bloodpressure|Bloodpressure_1", reference);
                                ChartData.GraphGuide = GraphGuide;
                            }
                        }
                    }

                    //必有测量任务,其他任务(例如吃药)可能没有

                    //其他任务依从情况
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    if (TaskList.Rows.Count == VitalSignRows.Length)
                    {
                        ChartData.OtherTasks = "0";
                    }
                    else
                    {
                        ChartData.OtherTasks = "1";
                        TasksComByPeriod = PsCompliance.GetTasksComByPeriodWeb(_cnCache, PatientId, PlanNo, ImplementationInfo.StartDate, ImplementationInfo.EndDate);
                        if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == GraphList.Count))
                        {
                            for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                            {
                                GraphList[rowsCount].DrugValue = "1";
                                GraphList[rowsCount].DrugBullet = TasksComByPeriod[rowsCount].drugBullet;
                                GraphList[rowsCount].DrugColor = TasksComByPeriod[rowsCount].drugColor;
                                GraphList[rowsCount].DrugDescription = TasksComByPeriod[rowsCount].Events;
                            }
                        }
                    }
                    ChartData.GraphList = GraphList;
                    ImplementationInfo.ChartData = ChartData;

                    #endregion
                }

                return ImplementationInfo;
                //str_result = JSONHelper.ObjectToJson(ImplementationInfo);
                //Context.Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
                //Context.Response.Write(str_result);
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
                //Context.Response.End();

            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForPadSecond", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
예제 #2
0
        public ImplementationInfo GetImplementationForWebFirst(string PatientId, string Module)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            try
            {
                string PlanNo = "";

                //病人基本信息-姓名、头像..
                //CacheSysList patientList = PsBasicInfo.GetPatientBasicInfo(_cnCache, PatientId);
                //if (patientList != null)
                //{
                //    ImplementationInfo.PatientInfo.PatientName = patientList[0];

                //    CacheSysList BasicInfoDetail = PsBasicInfoDetail.GetDetailInfo(_cnCache, PatientId);
                //    if (BasicInfoDetail != null)
                //    {
                //        if (BasicInfoDetail[6] != null)
                //        {
                //            ImplementationInfo.PatientInfo.ImageUrl = BasicInfoDetail[6].ToString();
                //        }
                //        else
                //        {
                //            ImplementationInfo.PatientInfo.ImageUrl = "";  //js端意外不能识别null
                //        }

                //    }
                //}

                //刚进入页面加载计划列表 (始终存在第一条-当前计划)
                ImplementationInfo.PlanList = PsPlan.GetPlanList34ByM(_cnCache, PatientId, Module);

                PlanNo = ImplementationInfo.PlanList[0].PlanNo; //肯定会存在

                #region  存在正在执行的计划

                if ((PlanNo != "") && (PlanNo != null))  //存在正在执行的计划
                {
                    //剩余天数和进度
                    InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                    PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                    if (PRlist != null)
                    {
                        ImplementationInfo.RemainingDays = PRlist[0].ToString();
                        ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();

                        ImplementationInfo.StartDate = ImplementationInfo.PlanList[0].StartDate;
                        ImplementationInfo.EndDate = ImplementationInfo.PlanList[0].EndDate;
                    }

                    //正在执行计划的最近一周的依从率
                    InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                    weekPeriod = PsPlan.GetWeekPeriod(_cnCache, ImplementationInfo.PlanList[0].StartDate);
                    if (weekPeriod != null)
                    {

                        ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                    }

                    //读取任务列表
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);
                    ImplementationInfo.TaskList = PsTask.GetSpTaskList(_cnCache, PlanNo);

                    //测量-体征切换下拉框
                    string condition = " Type = 'VitalSign'";
                    DataRow[] VitalSignRows = TaskList.Select(condition);
                    List<SignShow> SignList = new List<SignShow>();
                    for (int j = 0; j < VitalSignRows.Length; j++)
                    {
                        SignShow SignShow = new SignShow();
                        SignShow.SignName = VitalSignRows[j]["CodeName"].ToString();
                        SignShow.SignCode = VitalSignRows[j]["Code"].ToString();
                        SignList.Add(SignShow);
                    }
                    ImplementationInfo.SignList = SignList;

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();
                    ChartData ChartData = new ChartData();
                    List<Graph> GraphList = new List<Graph>();
                    GraphGuide GraphGuide = new GraphGuide();

                    if (Module == "M1")  //后期维护的话,在这里添加不同的模块判断
                    {

                        //高血压模块  体征测量-血压(收缩压、舒张压)、脉率   【默认显示-收缩压,血压必有,脉率可能有】
                        condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'or  Code = 'Pulserate|Pulserate_1'";
                        DataRow[] HyperTensionRows = TaskList.Select(condition);

                        //注意:需要兼容之前没有脉率的情况
                        if ((HyperTensionRows != null) && (HyperTensionRows.Length >= 2))  //M1 收缩压(默认显示)、舒张压、脉率  前两者肯定有,脉率不一定有
                        {
                            //获取血压的分级规则,脉率的分级原则写死在webservice
                            reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                            //首次进入,默认加载收缩压
                            GraphList = CmMstBloodPressure.GetSignInfoByM1(_cnCache, PatientId, PlanNo, "Bloodpressure|Bloodpressure_1", ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate, reference);
                            //GraphList = CmMstBloodPressure.GetSignInfoByBP

                            //初始值、目标值、分级规则加工
                            if (GraphList.Count > 0)
                            {
                                GraphGuide = CmMstBloodPressure.GetGuidesByCode(_cnCache, PlanNo, "Bloodpressure|Bloodpressure_1", reference);
                                ChartData.GraphGuide = GraphGuide;
                            }
                        }
                    }

                    //必有测量任务,其他任务(例如吃药)可能没有

                    //其他任务依从情况
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    if (TaskList.Rows.Count == VitalSignRows.Length)
                    {
                        ChartData.OtherTasks = "0";
                    }
                    else
                    {
                        ChartData.OtherTasks = "1";
                        TasksComByPeriod = PsCompliance.GetTasksComByPeriodWeb(_cnCache, PatientId, PlanNo, ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate);
                        if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == GraphList.Count))
                        {
                            for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                            {
                                GraphList[rowsCount].DrugValue = "1";   //已经初始化过
                                GraphList[rowsCount].DrugBullet = TasksComByPeriod[rowsCount].drugBullet;
                                GraphList[rowsCount].DrugColor = TasksComByPeriod[rowsCount].drugColor;
                                GraphList[rowsCount].DrugDescription = TasksComByPeriod[rowsCount].Events;
                            }
                        }
                    }
                    ChartData.GraphList = GraphList;
                    ImplementationInfo.ChartData = ChartData;
                }

                #endregion

                return ImplementationInfo;
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForWebFirst", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
예제 #3
0
        public void GetImplementationForPadFirst(string PatientId, string Module)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            string str_result = "";  //最终的输出-ImplementationInfo转化成json格式
            try
            {

                //与模块特性无关的公共项 ——病人基本信息、计划列表、计划进度、体征切换  不同模块可共用

                string PlanNo = "";

                //病人基本信息-姓名、头像..
                CacheSysList patientList = PsBasicInfo.GetPatientBasicInfo(_cnCache, PatientId);
                if (patientList != null)
                {
                    ImplementationInfo.PatientInfo.PatientName = patientList[0];

                    CacheSysList BasicInfoDetail = PsBasicInfoDetail.GetDetailInfo(_cnCache, PatientId);
                    if (BasicInfoDetail != null)
                    {
                        if (BasicInfoDetail[6] != null)
                        {
                            ImplementationInfo.PatientInfo.ImageUrl = BasicInfoDetail[6].ToString();
                        }
                        else
                        {
                            ImplementationInfo.PatientInfo.ImageUrl = "";  //js端意外不能识别null
                        }

                    }
                }

                //刚进入页面加载计划列表 (始终存在第一条-当前计划)
                ImplementationInfo.PlanList = PsPlan.GetPlanList34ByM(_cnCache, PatientId, Module);

                PlanNo = ImplementationInfo.PlanList[0].PlanNo; //肯定会存在

                #region  存在正在执行的计划

                if ((PlanNo != "") && (PlanNo != null))  //存在正在执行的计划
                {
                    //剩余天数和进度
                    InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                    PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                    if (PRlist != null)
                    {
                        ImplementationInfo.RemainingDays = PRlist[0].ToString();
                        ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();

                        ImplementationInfo.StartDate = ImplementationInfo.PlanList[0].StartDate;
                        ImplementationInfo.EndDate = ImplementationInfo.PlanList[0].EndDate;
                    }

                    //正在执行计划的最近一周的依从率
                    InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                    weekPeriod = PsPlan.GetWeekPeriod(_cnCache, ImplementationInfo.PlanList[0].StartDate);
                    if (weekPeriod != null)
                    {

                        ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                    }

                    //读取任务列表
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);
                    //ImplementationInfo.TaskList = PsTask.GetSpTaskList(_cnCache, PlanNo);

                    //测量-体征切换下拉框
                    string condition = " Type = 'VitalSign'";
                    DataRow[] VitalSignRows = TaskList.Select(condition);
                    List<SignShow> SignList = new List<SignShow>();
                    for (int j = 0; j < VitalSignRows.Length; j++)
                    {
                        SignShow SignShow = new SignShow();
                        SignShow.SignName = VitalSignRows[j]["CodeName"].ToString();
                        SignShow.SignCode = VitalSignRows[j]["Code"].ToString();
                        SignList.Add(SignShow);
                    }
                    ImplementationInfo.SignList = SignList;

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();
                    ChartData ChartData = new ChartData();
                    List<Graph> GraphList = new List<Graph>();
                    GraphGuide GraphGuide = new GraphGuide();

                    if (Module == "M1")  //后期维护的话,在这里添加不同的模块判断
                    {

                        //高血压模块  体征测量-血压(收缩压、舒张压)、脉率   【默认显示-收缩压,血压必有,脉率可能有】
                        condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'or  Code = 'Pulserate|Pulserate_1'";
                        DataRow[] HyperTensionRows = TaskList.Select(condition);

                        //注意:需要兼容之前没有脉率的情况
                        if ((HyperTensionRows != null) && (HyperTensionRows.Length >= 2))  //M1 收缩压(默认显示)、舒张压、脉率  前两者肯定有,脉率不一定有
                        {
                            //从数据库获取血压的分级规则,脉率的分级原则写死在webservice
                            reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                            //首次进入,默认加载收缩压
                            GraphList = CmMstBloodPressure.GetSignInfoByM1(_cnCache, PatientId, PlanNo, "Bloodpressure|Bloodpressure_1", ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate, reference);

                            //初始值、目标值、分级规则加工
                            if (GraphList.Count > 0)
                            {
                                GraphGuide = CmMstBloodPressure.GetGuidesByCode(_cnCache, PlanNo, "Bloodpressure|Bloodpressure_1", reference);
                                ChartData.GraphGuide = GraphGuide;
                            }
                        }

                    }
                    else
                    {

                    }

                    //必有测量任务,其他任务(例如吃药)可能没有

                    //其他任务依从情况  所有模块共有的
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    //是否有其他任务
                    //string condition1 = " Type not in ('VitalSign,')";
                    if (TaskList.Rows.Count == VitalSignRows.Length)
                    {
                        ChartData.OtherTasks = "0";
                    }
                    else
                    {
                        ChartData.OtherTasks = "1";
                        TasksComByPeriod = PsCompliance.GetTasksComCountByPeriod(_cnCache, PatientId, PlanNo, ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate);
                        if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == GraphList.Count)) //体征的数据条数一定等于其他任务的条数(天数) ,都是按照compliance的date统计的
                        {
                            for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                            {
                                GraphList[rowsCount].DrugValue = "1";   //已经初始化过
                                GraphList[rowsCount].DrugBullet = TasksComByPeriod[rowsCount].drugBullet;
                                GraphList[rowsCount].DrugColor = TasksComByPeriod[rowsCount].drugColor;
                                GraphList[rowsCount].DrugDescription = TasksComByPeriod[rowsCount].Events;//+ "<br><a onclick= shuang shuang zz(); shuang shuang;>详细</a>"
                            }
                        }
                    }

                    ChartData.GraphList = GraphList;
                    ImplementationInfo.ChartData = ChartData;
                }

                #endregion

                str_result = JSONHelper.ObjectToJson(ImplementationInfo);
                Context.Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
                Context.Response.Write(str_result);
                HttpContext.Current.ApplicationInstance.CompleteRequest();
                //Context.Response.End();
                //return ImplementationInfo;
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForPadFirst", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
예제 #4
0
        public ImplementationInfo GetImplementationForWebSecond(string PatientId, string PlanNo)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            try
            {
                //Pad保证PlanNo输入不为空  为空的表示无当前计划,则显示无执行即可,无需连接网络服务

                if ((PlanNo != "") && (PlanNo != null)) //存在正在执行的计划
                {
                    //获取计划的相关信息
                    int planStatus = 0;
                    int planStartDate = 0;
                    int planEndDate = 0;

                    InterSystems.Data.CacheTypes.CacheSysList planInfo = null;
                    planInfo = PsPlan.GetPlanInfo(_cnCache, PlanNo);
                    if (planInfo != null)
                    {
                        planStatus = Convert.ToInt32(planInfo[5]);
                        planStartDate = Convert.ToInt32(planInfo[2]);
                        planEndDate = Convert.ToInt32(planInfo[3]);
                    }

                    if (planStatus == 3) //是正在执行的当前计划
                    {
                        //剩余天数和进度
                        InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                        PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                        if (PRlist != null)
                        {
                            ImplementationInfo.RemainingDays = PRlist[0].ToString();  //"距离本次计划结束还剩"+PRlist[0]+"天";
                            ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();  //"进度:"++"%";
                        }

                        //最近一周的依从率
                        InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                        weekPeriod = PsPlan.GetWeekPeriod(_cnCache, planStartDate);
                        if (weekPeriod != null)
                        {
                            ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                        }
                    }
                    else  //已经结束计划
                    {
                        ImplementationInfo.RemainingDays = "0";
                        ImplementationInfo.ProgressRate = "100";
                        ImplementationInfo.CompliacneValue = "整个计划依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, planStartDate, planEndDate) + "%";
                    }

                    #region  读取任务执行情况,血压、用药

                    //读取任务列表并输出
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);
                    ImplementationInfo.TaskList = PsTask.GetSpTaskList(_cnCache, PlanNo);

                    //测量任务-血压  默认显示-收缩压
                    string condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'";
                    DataRow[] BPRows = TaskList.Select(condition);

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();
                    chartData chartData = new chartData();
                    List<Graph> graphList = new List<Graph>();
                    List<GuideList> BPGuide = new List<GuideList>();

                    if ((BPRows != null) && (BPRows.Length == 2))
                    {
                        //获取分级原则
                        reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                        //血压数据
                        graphList = CmMstBloodPressure.GetBPInfo(_cnCache, PatientId, PlanNo, "Bloodpressure", planStartDate, planEndDate, reference);

                        //初始值、目标值、分级范围加工
                        if (graphList.Count > 0)
                        {
                            BPGuide = CmMstBloodPressure.GetBPGuide(_cnCache, PlanNo, "Bloodpressure", reference);
                            chartData.BPGuide = BPGuide;
                        }
                    }

                    //依从情况
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    TasksComByPeriod = PsCompliance.GetTasksComByPeriod(_cnCache, PatientId, PlanNo, planStartDate, planEndDate);
                    if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == graphList.Count))
                    {
                        for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                        {
                            graphList[rowsCount].drugValue = "1";
                            graphList[rowsCount].drugBullet = TasksComByPeriod[rowsCount].drugBullet;
                            graphList[rowsCount].drugColor = TasksComByPeriod[rowsCount].drugColor;
                            graphList[rowsCount].drugDescription = TasksComByPeriod[rowsCount].Events;
                        }
                    }

                    chartData.graphList = graphList;
                    ImplementationInfo.chartData = chartData;
                    #endregion
                }

                return ImplementationInfo;
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForWebSecond", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
예제 #5
0
        public ImplementationInfo GetImplementationForWebFirst(string PatientId, string Module)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            try
            {
                string PlanNo = "";

                //首次登入页面,加载计划列表 (始终存在第一条-当前计划)
                ImplementationInfo.PlanList = PsPlan.GetPlanList34ByM(_cnCache, PatientId, Module);

                PlanNo = ImplementationInfo.PlanList[0].PlanNo; //肯定会存在 ImplementationForPad.PlanList[0]

                #region  存在正在执行的计划

                if ((PlanNo != "") && (PlanNo != null))  //存在正在执行的计划
                {
                    //剩余天数和进度
                    InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                    PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                    if (PRlist != null)
                    {
                        ImplementationInfo.RemainingDays = PRlist[0].ToString();  //"距离本次计划结束还剩"+PRlist[0]+"天";
                        ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();  //"进度:"++"%";
                    }

                    //最近一周的依从率
                    InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                    weekPeriod = PsPlan.GetWeekPeriod(_cnCache, ImplementationInfo.PlanList[0].StartDate);
                    if (weekPeriod != null)
                    {
                        ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                    }

                    //读取任务列表并输出
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);
                    ImplementationInfo.TaskList = PsTask.GetSpTaskList(_cnCache, PlanNo);

                    //测量-血压 (默认显示-收缩压)
                    string condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'";
                    DataRow[] BPRows = TaskList.Select(condition);

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();  //血压风险表-来自数据库
                    chartData chartData = new chartData();               //数据集
                    List<Graph> graphList = new List<Graph>();           //图-血压、依从情况
                    List<GuideList> BPGuide = new List<GuideList>();    //图-血压风险表

                    if ((BPRows != null) && (BPRows.Length == 2))
                    {
                        //获取分级原则
                        reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                        //血压数据
                        graphList = CmMstBloodPressure.GetBPInfo(_cnCache, PatientId, PlanNo, "Bloodpressure", ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate, reference);

                        //初始值、目标值、分级范围加工
                        if (graphList.Count > 0)
                        {
                            BPGuide = CmMstBloodPressure.GetBPGuide(_cnCache, PlanNo, "Bloodpressure", reference);
                            chartData.BPGuide = BPGuide;
                        }
                    }

                    //必有测量任务,其他任务(例如吃药)可能没有

                    //依从情况
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    TasksComByPeriod = PsCompliance.GetTasksComByPeriod(_cnCache, PatientId, PlanNo, ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate);
                    if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == graphList.Count))
                    {
                        for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                        {
                            graphList[rowsCount].drugValue = "1";
                            graphList[rowsCount].drugBullet = TasksComByPeriod[rowsCount].drugBullet;
                            graphList[rowsCount].drugColor = TasksComByPeriod[rowsCount].drugColor;
                            graphList[rowsCount].drugDescription = TasksComByPeriod[rowsCount].Events;
                        }
                    }

                    chartData.graphList = graphList;
                    ImplementationInfo.chartData = chartData;
                }

                #endregion

                return ImplementationInfo;
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForWebFirst", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
예제 #6
0
        public void GetImplementationForPadFirst(string PatientId, string Module)
        {
            ImplementationInfo ImplementationInfo = new ImplementationInfo();
            string str_result = "";
            try
            {
                string PlanNo = "";

                //病人基本信息-姓名、头像..
                CacheSysList patientList = PsBasicInfo.GetPatientBasicInfo(_cnCache, PatientId);
                if (patientList != null)
                {
                    ImplementationInfo.PatientInfo.PatientName = patientList[0];

                    CacheSysList BasicInfoDetail = PsBasicInfoDetail.GetDetailInfo(_cnCache, PatientId);
                    if (BasicInfoDetail != null)
                    {
                        if (BasicInfoDetail[6] != null)
                        {
                            ImplementationInfo.PatientInfo.ImageUrl = BasicInfoDetail[6].ToString();
                        }
                        else
                        {
                            ImplementationInfo.PatientInfo.ImageUrl = "";  //js端意外不能识别null
                        }

                    }
                }

                //刚进入页面加载计划列表 (始终存在第一条-当前计划)
                ImplementationInfo.PlanList = PsPlan.GetPlanList34ByM(_cnCache, PatientId, Module);

                PlanNo = ImplementationInfo.PlanList[0].PlanNo; //肯定会存在

                #region  存在正在执行的计划

                if ((PlanNo != "") && (PlanNo != null))  //存在正在执行的计划
                {
                    //剩余天数和进度
                    InterSystems.Data.CacheTypes.CacheSysList PRlist = null;
                    PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo);
                    if (PRlist != null)
                    {
                        ImplementationInfo.RemainingDays = PRlist[0].ToString();
                        ImplementationInfo.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString();
                    }

                    //正在执行计划的最近一周的依从率
                    InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null;
                    weekPeriod = PsPlan.GetWeekPeriod(_cnCache, ImplementationInfo.PlanList[0].StartDate);
                    if (weekPeriod != null)
                    {
                        ImplementationInfo.CompliacneValue = "最近一周依从率为:" + PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])) + "%";
                    }

                    //读取任务列表
                    DataTable TaskList = new DataTable();
                    TaskList = PsTask.GetTaskList(_cnCache, PlanNo);

                    //测量-血压 (默认显示-收缩压)
                    string condition = " Code = 'Bloodpressure|Bloodpressure_1' or  Code = 'Bloodpressure|Bloodpressure_2'or  Code = 'Pulserate|Pulserate_1'";
                    DataRow[] BPRows = TaskList.Select(condition);

                    List<MstBloodPressure> reference = new List<MstBloodPressure>();
                    chartData chartData = new chartData();
                    List<Graph> graphList = new List<Graph>();
                    List<GuideList> BPGuide = new List<GuideList>();

                    if ((BPRows != null) && (BPRows.Length == 2))  //一定会有血压和脉率测量任务
                    {
                        //获取血压的分级原则,脉率的分级原则写死
                        reference = CmMstBloodPressure.GetBPGrades(_cnCache);

                        //血压数据
                        graphList = CmMstBloodPressure.GetBPInfo(_cnCache, PatientId, PlanNo, "Bloodpressure", ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate, reference);

                        //初始值、目标值、分级范围加工
                        if (graphList.Count > 0)
                        {
                            BPGuide = CmMstBloodPressure.GetBPGuide(_cnCache, PlanNo, "Bloodpressure", reference);
                            chartData.BPGuide = BPGuide;
                        }
                    }

                    //必有测量任务,其他任务(例如吃药)可能没有

                    //依从情况
                    List<CompliacneDetailByD> TasksComByPeriod = new List<CompliacneDetailByD>();
                    TasksComByPeriod = PsCompliance.GetTasksComByPeriod(_cnCache, PatientId, PlanNo, ImplementationInfo.PlanList[0].StartDate, ImplementationInfo.PlanList[0].EndDate);
                    if ((TasksComByPeriod != null) && (TasksComByPeriod.Count == graphList.Count))
                    {
                        for (int rowsCount = 0; rowsCount < TasksComByPeriod.Count; rowsCount++)
                        {
                            graphList[rowsCount].drugValue = "1";
                            graphList[rowsCount].drugBullet = TasksComByPeriod[rowsCount].drugBullet;
                            graphList[rowsCount].drugColor = TasksComByPeriod[rowsCount].drugColor;
                            graphList[rowsCount].drugDescription = TasksComByPeriod[rowsCount].Events;
                        }
                    }

                    chartData.graphList = graphList;
                    ImplementationInfo.chartData = chartData;
                }

                #endregion

                str_result = JSONHelper.ObjectToJson(ImplementationInfo);
                Context.Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
                Context.Response.Write(str_result);
                HttpContext.Current.ApplicationInstance.CompleteRequest();
                //Context.Response.End();
                //return ImplementationInfo;
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetImplementationForPadFirst", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }