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); } }
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); } }
public void GetImplementationForPhone(string PatientId, string Module) { ImplementationPhone ImplementationPhone = new ImplementationPhone(); string str_result = ""; try { //注释 //注释 //病人基本信息-头像、姓名.. (由于手机版只针对换换咋用户,基本信息可不用获取 // CacheSysList patientList = PsBasicInfo.GetPatientBasicInfo(_cnCache, PatientId); //if (patientList != null) //{ //ImplementationPhone.PatientInfo.PatientName = patientList[0]; //} int planStartDate = 0; int planEndDate = 0; string PlanNo = ""; InterSystems.Data.CacheTypes.CacheSysList planInfo = null; planInfo = PsPlan.GetExecutingPlanByM(_cnCache, PatientId, Module); if (planInfo != null) { PlanNo = planInfo[0].ToString(); planStartDate = Convert.ToInt32(planInfo[2]); planEndDate = Convert.ToInt32(planInfo[3]); //未用到 } if ((PlanNo != "") && (PlanNo != null)) //存在正在执行的计划 { //剩余天数和进度 InterSystems.Data.CacheTypes.CacheSysList PRlist = null; PRlist = PsPlan.GetProgressRate(_cnCache, PlanNo); if (PRlist != null) { ImplementationPhone.RemainingDays = PRlist[0].ToString(); //"距离本次计划结束还剩"+PRlist[0]+"天"; ImplementationPhone.ProgressRate = (Convert.ToDouble(PRlist[1]) * 100).ToString(); //"进度:"++"%"; } //最近一周的依从率 InterSystems.Data.CacheTypes.CacheSysList weekPeriod = null; weekPeriod = PsPlan.GetWeekPeriod(_cnCache, planStartDate); if (weekPeriod != null) { ImplementationPhone.CompliacneValue = PsCompliance.GetCompliacneRate(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])); ImplementationPhone.StartDate = Convert.ToInt32(weekPeriod[0]); //用于获取血压的详细数据 ImplementationPhone.EndDate = Convert.ToInt32(weekPeriod[1]); } #region 读取任务执行情况,血压、用药-最近一周的数据 //读取任务 phone版 只显示测量和用药任务 DataTable TaskList = new DataTable(); TaskList = PsTask.GetTaskList(_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>(); SignDetailByP SignDetailByP = new SignDetailByP(); if ((BPRows != null) && (BPRows.Length == 2)) { //获取分级原则 reference = CmMstBloodPressure.GetBPGrades(_cnCache); //血压数据 graphList = CmMstBloodPressure.GetBPInfo(_cnCache, PatientId, PlanNo, "Bloodpressure", Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1]), reference); //初始值、目标值、分级范围加工 if (graphList.Count > 0) { BPGuide = CmMstBloodPressure.GetBPGuide(_cnCache, PlanNo, "Bloodpressure", reference); chartData.BPGuide = BPGuide; } } //用药情况 #region 用药情况 condition = " Type = 'Drug' "; DataRow[] DrugRows = TaskList.Select(condition); if ((DrugRows != null) && (DrugRows.Length != 0)) { List<CompliacneDetailByD> DrugComByPeriod = new List<CompliacneDetailByD>(); DrugComByPeriod = PsCompliance.GetDrugComByPeriod(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1])); if ((DrugComByPeriod != null) && (DrugComByPeriod.Count == graphList.Count)) { for (int rowsCount = 0; rowsCount < DrugComByPeriod.Count; rowsCount++) { graphList[rowsCount].drugValue = "1"; graphList[rowsCount].drugBullet = DrugComByPeriod[rowsCount].drugBullet; graphList[rowsCount].drugColor = DrugComByPeriod[rowsCount].drugColor; graphList[rowsCount].drugDescription = DrugComByPeriod[rowsCount].Events; } } } else //没有用药任务 { for (int m = 0; m < graphList.Count; m++) { graphList[m].drugBullet = ""; graphList[m].drugValue = "1"; graphList[m].drugColor = "#FFFFFF"; graphList[m].drugDescription = "无用药任务"; } } #region // #region // //获取本次计划内的用药数据 不同药不同表 一般药不会很多 // //不同用药情况归化在同一天 表行数是一样多的 // DataSet ds_DrugCompliacneDetails = new DataSet(); // for (int n = 0; n < DrugRows.Length; n++) // { // //放在dataset // DataTable dt_DrugCompliacneDetail = new DataTable(); // dt_DrugCompliacneDetail = PsCompliance.GetDrugCompliacneDetailByPeriod(_cnCache, PatientId, PlanNo, Convert.ToInt32(weekPeriod[0]), Convert.ToInt32(weekPeriod[1]), DrugRows[n]["Id"].ToString(), DrugRows[n]["Code"].ToString()); // ds_DrugCompliacneDetails.Tables.Add(dt_DrugCompliacneDetail); // } // //各药的整合 并和血压数据整合成一份 // string a = "已吃:"; //已吃 // int aa = 0; // string b = "未吃:"; //未吃 // int bb = 0; // if (ds_DrugCompliacneDetails.Tables[0].Rows.Count == graphList.Count) // { // for (int rowsCount = 0; rowsCount < ds_DrugCompliacneDetails.Tables[0].Rows.Count; rowsCount++) // { // string drugResultText = ""; // //drugResultText = "<b><span style='font-size:14px;'> 用药情况:</span></b><br>"; // for (int tableCount = 0; tableCount < ds_DrugCompliacneDetails.Tables.Count; tableCount++) // { // if (ds_DrugCompliacneDetails.Tables[tableCount].Rows[rowsCount]["Status"].ToString() == "1") // { // a += ds_DrugCompliacneDetails.Tables[tableCount].TableName + "、"; // //drugResultText += ds_DrugCompliacneDetails.Tables[tableCount].TableName + "complete "; // aa++; // } // else // { // //drugResultText += "<b><span style='font-size:14px;color:red;'>" + ds_DrugCompliacneDetails.Tables[tableCount].TableName + "noncomplete " + ":</span></b>"; // b += ds_DrugCompliacneDetails.Tables[tableCount].TableName + "、"; // bb++; // } // } // //去除尾部、 // if (a.Substring(a.Length - 1, 1) == "、") // { // a = a.Remove(a.LastIndexOf("、")); // } // if (b.Substring(b.Length - 1, 1) == "、") // { // b = b.Remove(b.LastIndexOf("、")); // } // //输出结果 // Graph Graph = new Graph(); // graphList[rowsCount].drugValue = "1"; // //Graph.drugBullet=""; // if (aa == 0) //根本没吃 // { // drugResultText = "完全未吃;"; // drugResultText += b; // graphList[rowsCount].drugColor = "#DADADA"; // } // else if ((aa > 0) && (aa < ds_DrugCompliacneDetails.Tables.Count)) //吃了部分 // { // drugResultText = "部分完成;"; // drugResultText += b; // drugResultText += ";"; // drugResultText += a; // graphList[rowsCount].drugBullet = "amcharts-images/drug.png"; // graphList[rowsCount].drugColor = ""; // } // else //全吃了 // { // drugResultText = "完成;"; // drugResultText += a; // graphList[rowsCount].drugColor = "#777777"; // } // graphList[rowsCount].drugDescription = drugResultText; // a = "吃了:"; aa = 0; // b = "没吃:"; bb = 0; // } // } //} // #endregion #endregion #endregion chartData.graphList = graphList; #endregion ImplementationPhone.chartData = chartData; } str_result = JSONHelper.ObjectToJson(ImplementationPhone); 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, "GetImplementationForPhone", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace); //return null; throw (ex); } }
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); } }
public ImplementationPhone() { chartData = new chartData(); }
public ImplementationInfo() { PatientInfo = new PatientInfo1(); //初始化 PlanList = new List<PlanDeatil>(); TaskList = new List<Task>(); chartData = new chartData(); }