コード例 #1
0
        //public List<VitalInfo> GetAllSignsByPeriod( string UserId, int StartDate, int EndDate)
        //{
        //    return new VitalInfoMethod().GetAllSignsByPeriod(pclsCache, UserId, StartDate, EndDate);
        //}

        // 获取某日期之前,一定条数血压(收缩压/舒张压)和脉率的数据详细时刻列表,用于phone,支持继续加载  GL 2015-10-12
        public SignDetailByP GetSignsDetailByPeriod(DataConnection pclsCache, string PatientId, string Module, int StartDate, int Num)
        {
            SignDetailByP result = new SignDetailByP();

            try
            {
                int CacheStartDate = 0;
                int CacheEndDate   = 0;

                //按有数据的天数平移
                VitalInfo dateList = new VitalInfoMethod().GetVitalSignDates(pclsCache, PatientId, StartDate, Num);
                if (dateList != null)
                {
                    if ((dateList.StartDate != null) && (dateList.EndDate != null))
                    {
                        CacheStartDate       = Convert.ToInt32(dateList.StartDate);
                        CacheEndDate         = Convert.ToInt32(dateList.EndDate);
                        result.NextStartDate = CacheStartDate;
                    }
                    else if ((dateList.StartDate == null) && (dateList.EndDate != null))
                    {
                        CacheEndDate         = Convert.ToInt32(dateList.EndDate);
                        result.NextStartDate = -1; //取完的标志
                    }
                    else if ((dateList.StartDate == null) && (dateList.EndDate == null))
                    {
                        result.NextStartDate = -1;
                    }
                }

                //收缩压
                List <VitalInfo> sysInfo = new List <VitalInfo>();
                sysInfo = new VitalInfoMethod().GetTypedSignDetailByPeriod(pclsCache, PatientId, "Bloodpressure", "Bloodpressure_1", CacheStartDate, CacheEndDate);

                //舒张压
                List <VitalInfo> diaInfo = new List <VitalInfo>();
                diaInfo = new VitalInfoMethod().GetTypedSignDetailByPeriod(pclsCache, PatientId, "Bloodpressure", "Bloodpressure_2", CacheStartDate, CacheEndDate);

                //脉率
                List <VitalInfo> pulInfo = new List <VitalInfo>();
                pulInfo = new VitalInfoMethod().GetTypedSignDetailByPeriod(pclsCache, PatientId, "Pulserate", "Pulserate_1", CacheStartDate, CacheEndDate);

                //三张表整合,按时间排序 避免条数可能不一致造成的问题
                //sysInfo.Merge(diaInfo);
                //sysInfo.Merge(pulInfo);
                if (diaInfo.Count > 0)
                {
                    foreach (VitalInfo item in diaInfo)
                    {
                        sysInfo.Add(item);
                    }
                }
                if (pulInfo.Count > 0)
                {
                    foreach (VitalInfo item in pulInfo)
                    {
                        sysInfo.Add(item);
                    }
                }

                //按RecordDate、RecordTime、SignType排序  再合并成收集需要的形式)
                //将List<>转化为datatable进行排序
                DataTable list = new DataTable();
                list.Columns.Add(new DataColumn("SignType", typeof(string)));
                list.Columns.Add(new DataColumn("RecordDate", typeof(string)));
                list.Columns.Add(new DataColumn("RecordTime", typeof(string)));
                list.Columns.Add(new DataColumn("Value", typeof(string)));
                list.Columns.Add(new DataColumn("Unit", typeof(string)));

                foreach (VitalInfo item in sysInfo)
                {
                    list.Rows.Add(item.SignType, item.RecordDate, item.RecordTime, item.Value, item.Unit);
                }

                DataView dv = list.DefaultView;
                dv.Sort = "RecordDate desc, RecordTime asc,SignType asc";
                DataTable dt_Sort = dv.ToTable();

                //1 收缩压, 2 舒张压, 3 脉率
                //整理成日期、时刻、数值的形式
                //整理成列表形式 2011/01/03 星期三
                //08:00 137 95 66
                //09:00 134 78 66
                if (dt_Sort != null)
                {
                    if (dt_Sort.Rows.Count > 0)
                    {
                        SignDetail SignDetail = new SignDetail();
                        SignDetail.DetailTime = dt_Sort.Rows[0]["RecordTime"].ToString();
                        if (dt_Sort.Rows[0]["SignType"].ToString() == "1")
                        {
                            SignDetail.SBPValue = dt_Sort.Rows[0]["Value"].ToString();
                        }
                        else if (dt_Sort.Rows[0]["SignType"].ToString() == "2")
                        {
                            SignDetail.DBPValue = dt_Sort.Rows[0]["Value"].ToString();
                        }
                        else
                        {
                            SignDetail.PulseValue = dt_Sort.Rows[0]["Value"].ToString();
                        }

                        SignDetailByD SignDetailByD = new SignDetailByD();
                        SignDetailByD.Date    = dt_Sort.Rows[0]["RecordDate"].ToString();
                        SignDetailByD.WeekDay = new CommonFunction().CaculateWeekDay(dt_Sort.Rows[0]["RecordDate"].ToString());

                        if (dt_Sort.Rows.Count == 1)
                        {
                            SignDetailByD.SignDetailList.Add(SignDetail);
                            result.SignDetailByDs.Add(SignDetailByD);
                        }
                        else
                        {
                            string temp_date = dt_Sort.Rows[0]["RecordDate"].ToString();
                            string temp_hour = dt_Sort.Rows[0]["RecordTime"].ToString();

                            for (int rowsCount = 1; rowsCount < dt_Sort.Rows.Count; rowsCount++)
                            {
                                if (rowsCount != dt_Sort.Rows.Count - 1)
                                {
                                    #region  是最后一条

                                    if (temp_date == dt_Sort.Rows[rowsCount]["RecordDate"].ToString())
                                    {
                                        #region  一天
                                        if (temp_hour == dt_Sort.Rows[rowsCount]["RecordTime"].ToString())
                                        {
                                            if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                            {
                                                SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                            {
                                                SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else
                                            {
                                                SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                        }
                                        else
                                        {
                                            SignDetailByD.SignDetailList.Add(SignDetail);

                                            SignDetail            = new SignDetail();
                                            SignDetail.DetailTime = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                            if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                            {
                                                SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                            {
                                                SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else
                                            {
                                                SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }

                                            temp_hour = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                        }
                                        #endregion
                                    }
                                    else
                                    {
                                        #region   天
                                        SignDetailByD.SignDetailList.Add(SignDetail);
                                        result.SignDetailByDs.Add(SignDetailByD);

                                        SignDetailByD         = new SignDetailByD();
                                        SignDetail            = new SignDetail();
                                        SignDetail.DetailTime = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                        if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                        {
                                            SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                        {
                                            SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        else
                                        {
                                            SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        SignDetailByD.Date    = dt_Sort.Rows[rowsCount]["RecordDate"].ToString();
                                        SignDetailByD.WeekDay = new CommonFunction().CaculateWeekDay(dt_Sort.Rows[rowsCount]["RecordDate"].ToString());

                                        temp_date = dt_Sort.Rows[rowsCount]["RecordDate"].ToString();
                                        temp_hour = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();

                                        #endregion
                                    }
                                    #endregion
                                }
                                else
                                {
                                    #region 最后一条

                                    if (temp_date == dt_Sort.Rows[rowsCount]["RecordDate"].ToString())
                                    {
                                        #region  一天
                                        if (temp_hour == dt_Sort.Rows[rowsCount]["RecordTime"].ToString())
                                        {
                                            if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                            {
                                                SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                            {
                                                SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else
                                            {
                                                SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            SignDetailByD.SignDetailList.Add(SignDetail);
                                            result.SignDetailByDs.Add(SignDetailByD);
                                        }
                                        else
                                        {
                                            SignDetailByD.SignDetailList.Add(SignDetail);

                                            SignDetail            = new SignDetail();
                                            SignDetail.DetailTime = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                            if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                            {
                                                SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                            {
                                                SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }
                                            else
                                            {
                                                SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                            }

                                            temp_hour = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                            SignDetailByD.SignDetailList.Add(SignDetail);
                                            result.SignDetailByDs.Add(SignDetailByD);
                                        }
                                        #endregion
                                    }
                                    else
                                    {
                                        #region   天
                                        SignDetailByD.SignDetailList.Add(SignDetail);
                                        result.SignDetailByDs.Add(SignDetailByD);

                                        SignDetailByD         = new SignDetailByD();
                                        SignDetail            = new SignDetail();
                                        SignDetail.DetailTime = dt_Sort.Rows[rowsCount]["RecordTime"].ToString();
                                        if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "1")
                                        {
                                            SignDetail.SBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        else if (dt_Sort.Rows[rowsCount]["SignType"].ToString() == "2")
                                        {
                                            SignDetail.DBPValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        else
                                        {
                                            SignDetail.PulseValue = dt_Sort.Rows[rowsCount]["Value"].ToString();
                                        }
                                        SignDetailByD.Date    = dt_Sort.Rows[rowsCount]["RecordDate"].ToString();
                                        SignDetailByD.WeekDay = new CommonFunction().CaculateWeekDay(dt_Sort.Rows[rowsCount]["RecordDate"].ToString());

                                        temp_date = dt_Sort.Rows[rowsCount]["RecordDate"].ToString();
                                        SignDetailByD.SignDetailList.Add(SignDetail);
                                        result.SignDetailByDs.Add(SignDetailByD);

                                        #endregion
                                    }

                                    #endregion
                                }
                            }
                        }
                    }
                }
                return(result);
                //string a = JSONHelper.ObjectToJson(result);
                //Context.Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
                //Context.Response.Write(a);
                ////Context.Response.End();
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            catch (Exception ex)
            {
                HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "GetSignsDetailByPeriod", "WebService调用异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace);
                //return null;
                throw (ex);
            }
        }
コード例 #2
0
 public void addSignField(SignDetail signDetail)
 {
     (sign_fields = sign_fields == null ? new List <SignDetail>() : sign_fields).Add(signDetail);
 }