示例#1
0
        /// <summary>
        /// 添加项目
        /// </summary>
        /// <param name="item"></param>
        public void AddVitalSign(dynamic item)
        {
            MED_MONITOR_FUNCTION_CODE      itema      = item as MED_MONITOR_FUNCTION_CODE;
            ObservableCollection <dynamic> dataSource = new ObservableCollection <dynamic>();
            Dictionary <string, object>    dict       = new Dictionary <string, object>();

            rowDict.Add(rowDict.Count, itema.ITEM_CODE);
            for (int j = 0; j < columnDict.Count + 2; j++)
            {
                if (j == 0)
                {
                    MED_VITAL_SIGN row = new MED_VITAL_SIGN();
                    row.ITEM_CODE        = itema.ITEM_CODE;
                    row.ITEM_NAME        = itema.ITEM_NAME;
                    row.Flag             = "2";
                    row.ITEM_VALUE       = itema.ITEM_CODE;
                    row.IsReadOnlyColumn = true;
                    row.IsShowColumn     = false;
                    dict.Add("CODE", row);
                }
                else if (j == 1)
                {
                    MED_VITAL_SIGN row = new MED_VITAL_SIGN();
                    row.ITEM_CODE        = itema.ITEM_CODE;
                    row.ITEM_NAME        = itema.ITEM_NAME;
                    row.Flag             = "2";
                    row.ITEM_VALUE       = itema.ITEM_NAME;
                    row.IsReadOnlyColumn = true;
                    row.IsShowColumn     = true;
                    dict.Add("项目", row);
                }
                else
                {
                    MED_VITAL_SIGN row = new MED_VITAL_SIGN();
                    row.ITEM_CODE        = itema.ITEM_CODE;
                    row.ITEM_NAME        = itema.ITEM_NAME;
                    row.Flag             = "2";
                    row.TIME_POINT       = columnDict[j - 2];
                    row.IsReadOnlyColumn = false;
                    row.IsShowColumn     = true;
                    dict.Add(columnDict[j - 2].ToString("yyyy-MM-dd HH:mm"), row);
                }
            }
            var dyn = GetDynamicObject(dict);

            VitalSignSource.Add(dyn);
        }
示例#2
0
        /// <summary>
        /// 检查数据是否更改
        /// </summary>
        /// <returns></returns>
        protected override bool CheckDataChange()
        {
            bool changed = false;
            ObservableCollection <dynamic> ld           = VitalSignSource as ObservableCollection <dynamic>;
            IEnumerable <string>           vitalColumns = ld[0].GetDynamicMemberNames();

            foreach (dynamic itemList in VitalSignSource)
            {
                foreach (var propName in vitalColumns)
                {
                    MED_VITAL_SIGN row = itemList.GetMemberValue(propName) as MED_VITAL_SIGN;
                    if (row.ModelStatus != ModelStatus.Default)
                    {
                        changed = true;
                    }
                }
            }
            return(changed);
        }
示例#3
0
        /// <summary>
        /// 根据患者ID获取患者的所有体征信息,包含麻醉和复苏
        /// </summary>
        public List <MED_VITAL_SIGN> GetVitalSignData()
        {
            List <MED_VITAL_SIGN> anesData = GetVitalSignData("0");
            List <MED_VITAL_SIGN> pacuData = GetVitalSignData("1");

            foreach (MED_VITAL_SIGN row in pacuData)
            {
                MED_VITAL_SIGN prow = anesData.Where(x => x.TIME_POINT == row.TIME_POINT && x.ITEM_CODE == row.ITEM_CODE).FirstOrDefault();
                if (prow != null)
                {
                    continue;
                }
                else
                {
                    anesData.Add(row);
                }
            }

            return(anesData);
        }
示例#4
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <returns></returns>
        protected override SaveResult SaveData()
        {
            SaveResult saveResult = SaveResult.Fail;
            ObservableCollection <dynamic>  ld                = VitalSignSource as ObservableCollection <dynamic>;
            IEnumerable <string>            vitalColumns      = ld[0].GetDynamicMemberNames();
            List <MED_PAT_MONITOR_DATA_EXT> patientMonitorExt = AnesInfoService.ClientInstance.GetPatMonitorExtListByEvent(_patientID, _visitID, _operID, _eventNo);

            foreach (dynamic itemList in VitalSignSource)
            {
                foreach (var propName in vitalColumns)
                {
                    MED_VITAL_SIGN row = itemList.GetMemberValue(propName) as MED_VITAL_SIGN;
                    if (row.ModelStatus == ModelStatus.Add && !string.IsNullOrEmpty(row.ITEM_VALUE))// row.ModelStatus的变化来自于RaisePropertyChanged方法!(BaseModel里)
                    {
                        MED_PAT_MONITOR_DATA_EXT patientMonitorDataRow = new MED_PAT_MONITOR_DATA_EXT();
                        patientMonitorDataRow.PATIENT_ID       = _patientID;
                        patientMonitorDataRow.VISIT_ID         = _visitID;
                        patientMonitorDataRow.OPER_ID          = _operID;
                        patientMonitorDataRow.TIME_POINT       = row.TIME_POINT;
                        patientMonitorDataRow.ITEM_NAME        = row.ITEM_NAME;
                        patientMonitorDataRow.ITEM_CODE        = row.ITEM_CODE;
                        patientMonitorDataRow.ITEM_VALUE       = row.ITEM_VALUE;
                        patientMonitorDataRow.DATA_TYPE        = _eventNo;
                        patientMonitorDataRow.LAST_MODIFY_DATE = DateTime.Now;
                        patientMonitorDataRow.OPERATOR         = ExtendAppContext.Current.LoginUser == null ? "" : ExtendAppContext.Current.LoginUser.USER_JOB_ID;
                        patientMonitorDataRow.DATA_MARK        = 1;
                        patientMonitorDataRow.ModelStatus      = ModelStatus.Add;
                        patientMonitorExt.Add(patientMonitorDataRow);
                    }
                    else if (row.ModelStatus == ModelStatus.Modeified)
                    {
                        List <MED_PAT_MONITOR_DATA_EXT> monitorExt = patientMonitorExt.Where(x => x.PATIENT_ID.Equals(_patientID) && x.VISIT_ID.Equals(_visitID) && x.OPER_ID.Equals(_operID) &&
                                                                                             x.TIME_POINT.Equals(row.TIME_POINT) && x.ITEM_NAME.Equals(row.ITEM_NAME) && x.DATA_TYPE.Equals(_eventNo) && x.ITEM_CODE.Equals(row.ITEM_CODE)).ToList();

                        if (monitorExt != null && monitorExt.Count > 0)
                        {
                            MED_PAT_MONITOR_DATA_EXT patientMonitorDataRow = monitorExt[0];
                            patientMonitorDataRow.ITEM_VALUE       = string.IsNullOrEmpty(row.ITEM_VALUE) ? "/" : row.ITEM_VALUE;
                            patientMonitorDataRow.LAST_MODIFY_DATE = DateTime.Now;
                            patientMonitorDataRow.OPERATOR         = ExtendAppContext.Current.LoginUser == null ? "" : ExtendAppContext.Current.LoginUser.USER_JOB_ID;
                            patientMonitorDataRow.DATA_MARK        = 1;
                            patientMonitorDataRow.ModelStatus      = ModelStatus.Modeified;
                        }
                        else if (!string.IsNullOrEmpty(row.ITEM_VALUE) || !row.IsShowColumn)// MED_PAT_MONITOR_DATA_EXT表里不存在这条数据,且此条数据ITEM_VALUE有值
                        {
                            MED_PAT_MONITOR_DATA_EXT patientMonitorDataRow = new MED_PAT_MONITOR_DATA_EXT();
                            patientMonitorDataRow.PATIENT_ID       = _patientID;
                            patientMonitorDataRow.VISIT_ID         = _visitID;
                            patientMonitorDataRow.OPER_ID          = _operID;
                            patientMonitorDataRow.TIME_POINT       = row.TIME_POINT;
                            patientMonitorDataRow.ITEM_NAME        = row.ITEM_NAME;
                            patientMonitorDataRow.ITEM_CODE        = row.ITEM_CODE;
                            patientMonitorDataRow.ITEM_VALUE       = null == row.ITEM_VALUE ? "/" : row.ITEM_VALUE;// 当row.IsShowColumn=fasle,ITEM_VALUE才会=“/”
                            patientMonitorDataRow.DATA_TYPE        = _eventNo;
                            patientMonitorDataRow.LAST_MODIFY_DATE = DateTime.Now;
                            patientMonitorDataRow.OPERATOR         = ExtendAppContext.Current.LoginUser == null ? "" : ExtendAppContext.Current.LoginUser.USER_JOB_ID;
                            patientMonitorDataRow.DATA_MARK        = 1;
                            patientMonitorDataRow.ModelStatus      = ModelStatus.Add;
                            patientMonitorExt.Add(patientMonitorDataRow);
                        }
                        else if (string.IsNullOrEmpty(row.ITEM_VALUE) && row.IsShowColumn)
                        {
                            MED_PAT_MONITOR_DATA_EXT patientMonitorDataRow = new MED_PAT_MONITOR_DATA_EXT();
                            patientMonitorDataRow.PATIENT_ID       = _patientID;
                            patientMonitorDataRow.VISIT_ID         = _visitID;
                            patientMonitorDataRow.OPER_ID          = _operID;
                            patientMonitorDataRow.TIME_POINT       = row.TIME_POINT;
                            patientMonitorDataRow.ITEM_NAME        = row.ITEM_NAME;
                            patientMonitorDataRow.ITEM_CODE        = row.ITEM_CODE;
                            patientMonitorDataRow.ITEM_VALUE       = string.IsNullOrEmpty(row.ITEM_VALUE) ? "/" : row.ITEM_VALUE;
                            patientMonitorDataRow.DATA_TYPE        = _eventNo;
                            patientMonitorDataRow.LAST_MODIFY_DATE = DateTime.Now;
                            patientMonitorDataRow.OPERATOR         = ExtendAppContext.Current.LoginUser == null ? "" : ExtendAppContext.Current.LoginUser.USER_JOB_ID;
                            patientMonitorDataRow.DATA_MARK        = 1;
                            patientMonitorDataRow.ModelStatus      = ModelStatus.Add;
                            patientMonitorExt.Add(patientMonitorDataRow);
                        }
                    }
                }
            }

            // 如果一个时间点即存在隐藏的(DATA_MARK == 0)又存在显示的(DATA_MARK == 1),则把隐藏的数据删除掉
            List <DateTime> timePointList = new List <DateTime>();

            foreach (MED_PAT_MONITOR_DATA_EXT item in patientMonitorExt)
            {
                if (!timePointList.Contains(item.TIME_POINT))
                {
                    timePointList.Add(item.TIME_POINT);
                }
            }

            foreach (DateTime dt in timePointList)
            {
                int unShow = patientMonitorExt.Where(x => x.TIME_POINT == dt && x.DATA_MARK == 0).ToList().Count();
                int show   = patientMonitorExt.Where(x => x.TIME_POINT == dt && x.DATA_MARK == 1).ToList().Count();
                if (unShow > 0 && show > 0)
                {
                    patientMonitorExt.ForEach(tempRow =>
                    {
                        if (tempRow.TIME_POINT == dt && tempRow.DATA_MARK == 0)//  在自动生成列时,去除 data_mark=0的列
                        {
                            tempRow.ModelStatus = ModelStatus.Deleted;
                        }
                    });
                }
            }



            bool result = AnesInfoService.ClientInstance.SavePatMonitorExtList(patientMonitorExt);

            if (result)
            {
                foreach (dynamic itemList in VitalSignSource)
                {
                    foreach (var propName in vitalColumns)
                    {
                        MED_VITAL_SIGN row = itemList.GetMemberValue(propName) as MED_VITAL_SIGN;
                        row.ModelStatus = ModelStatus.Default;
                    }
                }
            }

            if (result)
            {
                saveResult = SaveResult.Success;
            }

            return(saveResult);
        }
示例#5
0
        /// <summary>
        /// 组装体征数据
        /// </summary>
        public void GetVitalSignData()
        {
            ObservableCollection <dynamic> dataSource         = new ObservableCollection <dynamic>();
            List <MED_VITAL_SIGN>          vitalSignDataTable = AnesInfoService.ClientInstance.GetVitalSignData(_patientID, _visitID, _operID, _eventNo, false);

            string[] rowName = AnesInfoService.ClientInstance.GetVitalSignTitles(_patientID, _visitID, _operID, _eventNo, ExtendAppContext.Current.PatientInformationExtend.OPER_ROOM_NO);
            // 从med_pat_monitor_data_ext表获取体征数据
            List <MED_PAT_MONITOR_DATA_EXT> patMonitorDataExt = AnesInfoService.ClientInstance.GetPatMonitorExtListByEvent(_patientID, _visitID, _operID, _eventNo);

            rowDict = new Dictionary <int, string>();
            if (rowName != null)//组装对应体征项目Code
            {
                int i = 0;
                foreach (string item in rowName)
                {
                    if (!rowDict.ContainsKey(i))
                    {
                        rowDict.Add(i, item);
                        i++;
                    }
                }
            }

            columnDict = new Dictionary <int, DateTime>();
            int columnID = 0;

            if (vitalSignDataTable != null && vitalSignDataTable.Count > 0)  //组装对应时间列
            {
                DateTime vStartTime = vitalSignDataTable[0].TIME_POINT;
                DateTime vEndTime   = vitalSignDataTable[vitalSignDataTable.Count - 1].TIME_POINT;
                if (vStartTime.Minute % 5 != 0)
                {
                    vStartTime = DateTimeEqual(vStartTime);
                }
                while (vStartTime <= vEndTime)
                {
                    DateTime columnName = vStartTime;
                    if (!columnDict.ContainsValue(columnName))
                    {
                        //columnDict.Add(columnID, columnName);
                        //columnID++;

                        // 从med_pat_monitor_data_ext表获取体征数据,DATA_MARK == 0 表示删除数据
                        if (!patMonitorDataExt.Exists(x => x.DATA_MARK == 0 && x.TIME_POINT == vStartTime))
                        {
                            columnDict.Add(columnID, columnName);
                            columnID++;
                        }
                    }
                    vStartTime = vStartTime.AddMinutes(5);
                }
            }
            //避免监护仪漏采的情况将对应每5分钟一格时间点重新加进去
            foreach (MED_VITAL_SIGN row in vitalSignDataTable)
            {
                if (row.TIME_POINT.Minute % 5 == 0)
                {
                    DateTime columnName = row.TIME_POINT;
                    if (!columnDict.ContainsValue(columnName))
                    {
                        //columnDict.Add(columnID, columnName);
                        //columnID++;

                        // 从med_pat_monitor_data_ext表获取体征数据,DATA_MARK == 0 表示删除的数据,也就是不显示的数据
                        if (!patMonitorDataExt.Exists(x => x.DATA_MARK == 0 && x.TIME_POINT == row.TIME_POINT))
                        {
                            columnDict.Add(columnID, columnName);
                            columnID++;
                        }
                    }
                }
            }
            for (int i = 0; i < rowName.Length; i++)
            {
                Dictionary <string, object> dict = new Dictionary <string, object>();
                for (int j = 0; j < columnDict.Count + 2; j++)
                {
                    if (j == 0)//第一列Code隐藏
                    {
                        MED_VITAL_SIGN row = new MED_VITAL_SIGN();
                        row.ITEM_NAME        = ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(rowDict[i]) ? ExtendAppContext.Current.MonitorFunctionCodeDict[rowDict[i]] : rowDict[i];
                        row.ITEM_CODE        = rowDict[i];
                        row.ITEM_VALUE       = rowDict[i];
                        row.IsReadOnlyColumn = true;
                        row.IsShowColumn     = false;
                        dict.Add("CODE", row);
                    }
                    else if (j == 1)//第二列项目名称
                    {
                        MED_VITAL_SIGN row = new MED_VITAL_SIGN();
                        row.ITEM_NAME        = ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(rowDict[i]) ? ExtendAppContext.Current.MonitorFunctionCodeDict[rowDict[i]] : rowDict[i];
                        row.ITEM_CODE        = rowDict[i];
                        row.ITEM_VALUE       = ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(rowDict[i]) ? ExtendAppContext.Current.MonitorFunctionCodeDict[rowDict[i]] : rowDict[i];
                        row.IsReadOnlyColumn = true;
                        row.IsShowColumn     = true;
                        dict.Add("项目", row);
                    }
                    else
                    {
                        //第三列开始为每个时间点
                        MED_VITAL_SIGN row = vitalSignDataTable.Where(x => x.TIME_POINT == columnDict[j - 2] && x.ITEM_CODE == rowDict[i]).LastOrDefault();
                        if (row != null)
                        {
                            row.IsReadOnlyColumn = false;
                            row.IsShowColumn     = true;
                            dict.Add(columnDict[j - 2].ToString("yyyy-MM-dd HH:mm"), row);
                        }
                        else
                        {
                            row                  = new MED_VITAL_SIGN();
                            row.ITEM_CODE        = rowDict[i];
                            row.ITEM_NAME        = ExtendAppContext.Current.MonitorFunctionCodeDict.ContainsKey(rowDict[i]) ? ExtendAppContext.Current.MonitorFunctionCodeDict[rowDict[i]] : rowDict[i];
                            row.TIME_POINT       = columnDict[j - 2];
                            row.IsReadOnlyColumn = false;
                            row.IsShowColumn     = true;
                            dict.Add(columnDict[j - 2].ToString("yyyy-MM-dd HH:mm"), row);
                        }
                    }
                }
                var dyn = GetDynamicObject(dict);//将对象转换为一整行数据
                dataSource.Add(dyn);
            }
            VitalSignSource = dataSource;
        }