/// <summary>
        /// 患者-体重曲线
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <IActionResult> GetWeightCharts(BaseInput input)
        {
            var list = _patVisitApp.GetList()
                       .Where(t => t.F_Pid == input.KeyValue && t.F_DialysisEndTime != null && t.F_WeightTQ != null && t.F_WeightTH != null)
                       //.Where(t => t.F_Pid.Equals(input.keyValue))
                       .OrderByDescending(t => t.F_VisitDate)
                       .Take(15)
                       .Select(t => new
            {
                t.F_VisitDate,
                t.F_WeightTQ,
                t.F_WeightTH
            })
                       .ToList();
            var ideaWeight = await _patientApp.GetIdeaWeight(input.KeyValue);

            var data = new
            {
                ideaWeight,
                count = list.Count,
                rows  = list.Select(t => new
                {
                    visitDate = t.F_VisitDate.ToDate(),
                    weightTQ  = t.F_WeightTQ.ToFloat(2),
                    weightTH  = t.F_WeightTH.ToFloat(2),
                })
            };

            return(Ok(data));
        }
        /// <summary>
        /// 通过指定日期的就诊记录查询患者选择项
        /// </summary>
        /// <param name="visitDate"></param>
        /// <param name="groupName"></param>
        /// <param name="visitNo"></param>
        /// <returns></returns>
        public async Task <IActionResult> GetSelectByVisitRecordJson(DateTime?visitDate, string groupName, int?visitNo)
        {
            var visitDateTemp = visitDate?.ToDate().Date ?? DateTime.Today;
            var visitNoTemp   = visitNo?.ToInt() ?? 0;
            var records       = _patVisitApp.GetList()
                                .Where(t => t.F_VisitDate == visitDateTemp && t.F_VisitNo == visitNoTemp && t.F_GroupName == groupName)
                                .Select(t => new
            {
                Id        = t.F_Pid,
                VisitDate = t.F_VisitDate,
                VisitNo   = t.F_VisitNo,
                GroupName = t.F_GroupName,
                BedNo     = t.F_DialysisBedNo
            }).Distinct().ToList();
            var cacheData = await _patientApp.GetSelectOptions(null);

            var data = cacheData.Join(records, p => p.Id, r => r.Id, (p, v) => new
            {
                id          = p.Id,
                name        = p.Name,
                recordNo    = p.RecordNo,
                py          = p.Py,
                idealWeight = p.IdealWeight,
                beInfected  = p.BeInfected,
                visitDate   = v.VisitDate,
                visitNo     = v.VisitNo,
                groupName   = v.GroupName,
                bedNo       = v.BedNo
            }).OrderBy(n => n.visitNo).ThenBy(n => n.groupName).ThenBy(n => n.bedNo);

            return(Content(data.ToJson()));
        }
示例#3
0
        public IActionResult GetBloodPressJson(string keyValue)
        {
            var json      = keyValue.ToJObject();
            var startDate = json.Value <DateTime>("startDate");
            var endDate   = json.Value <DateTime>("endDate");
            var pid       = json.Value <string>("pid");

            //查询治疗记录
            var data = (from r in _patVisitApp.GetList().Where(t => t.F_Pid == pid && t.F_DialysisEndTime != null && t.F_VisitDate >= startDate && t.F_VisitDate <= endDate && t.F_EnabledMark != false) //, startDate, endDate
                        orderby r.F_VisitDate
                        select new
            {
                date = r.F_VisitDate.ToDateString().Substring(5),
                ssy = r.F_SystolicPressure.ToFloat(2),
                szy = r.F_DiastolicPressure.ToFloat(2)
            }).ToList();

            return(Content(data.ToJson()));
        }
        public async Task <IActionResult> SubmitFormCreatePatVisit([FromBody] BaseInput input)
        {
            //总数
            int count = 0;
            //新增数
            int addnum = 0;

            //SettingApp settingApp = new SettingApp();
            //var list = keyValue.ToJArrayObject().Select(t =>t.Value<string>("F_Id"));
            foreach (var id in input.KeyValue.ToJArrayObject().Select(t => t.Value <string>("F_Id")))
            {
                var schedule = await _dialysisScheduleApp.GetForm(id);

                count++;
                var patient = await _patientApp.GetForm(schedule.F_PId);

                //判断是否存在申请单
                if (_patVisitApp.GetList().Count(t => t.F_Pid == patient.F_Id && t.F_VisitDate == schedule.F_VisitDate) > 0)
                {
                    continue;
                }

                //查询透析参数
                var settings = (await _settingApp.GetList(schedule.F_PId)).OrderByDescending(t => t.F_CreatorTime);

                if (string.IsNullOrEmpty(schedule.F_DialysisType))
                {
                    schedule.F_DialysisType = "HD";
                }

                var            firstSetting = settings.FirstOrDefault(t => t.F_DialysisType == schedule.F_DialysisType);
                PatVisitEntity entity;
                if (firstSetting != null)
                {
                    entity = new PatVisitEntity
                    {
                        F_VisitDate        = schedule.F_VisitDate,
                        F_VisitNo          = schedule.F_VisitNo,
                        F_BirthDay         = patient.F_BirthDay,
                        F_Pid              = patient.F_Id,
                        F_DialysisBedNo    = schedule.F_DialysisBedNo,
                        F_DialysisNo       = patient.F_DialysisNo,
                        F_DialysisType     = schedule.F_DialysisType,
                        F_EnabledMark      = true,
                        F_Gender           = patient.F_Gender,
                        F_GroupName        = schedule.F_GroupName,
                        F_HeparinAddAmount = firstSetting.F_HeparinAddAmount,
                        F_HeparinAmount    = firstSetting.F_HeparinAmount,
                        F_HeparinType      = firstSetting.F_HeparinType,
                        F_HeparinUnit      = firstSetting.F_HeparinUnit,
                        F_AccessName       = firstSetting.F_AccessName,
                        F_BloodSpeed       = firstSetting.F_BloodSpeed,
                        F_Ca    = firstSetting.F_Ca,
                        F_K     = firstSetting.F_K,
                        F_Na    = firstSetting.F_Na,
                        F_Hco3  = firstSetting.F_Hco3,
                        F_LowCa = firstSetting.F_LowCa,
                        F_DialysateTemperature = firstSetting.F_DialysateTemperature,
                        F_DialyzerType1        = firstSetting.F_DialyzerType1,
                        F_DialyzerType2        = firstSetting.F_DialyzerType2,
                        F_DilutionType         = firstSetting.F_DilutionType,
                        F_EstimateHours        = firstSetting.F_EstimateHours,
                        F_VascularAccess       = firstSetting.F_VascularAccess,
                        F_InpNo         = patient.F_PatientNo,
                        F_RecordNo      = patient.F_RecordNo,
                        F_IsCritical    = false,
                        F_Name          = patient.F_Name,
                        F_PatientSourse = null
                    };
                }
                else
                {
                    entity = new PatVisitEntity
                    {
                        F_VisitDate        = schedule.F_VisitDate,
                        F_VisitNo          = schedule.F_VisitNo,
                        F_BirthDay         = patient.F_BirthDay,
                        F_Pid              = patient.F_Id,
                        F_DialysisBedNo    = schedule.F_DialysisBedNo,
                        F_DialysisNo       = patient.F_DialysisNo,
                        F_DialysisType     = schedule.F_DialysisType,
                        F_EnabledMark      = true,
                        F_Gender           = patient.F_Gender,
                        F_GroupName        = schedule.F_GroupName,
                        F_HeparinAddAmount = null,
                        F_HeparinAmount    = null,
                        F_HeparinType      = null,
                        F_HeparinUnit      = null,
                        F_InpNo            = patient.F_PatientNo,
                        F_RecordNo         = patient.F_RecordNo,
                        F_IsCritical       = false,
                        F_Name             = patient.F_Name,
                        F_PatientSourse    = null
                    };
                }
                await _patVisitApp.SubmitForm(entity, new object());

                addnum++;
            }
            return(Success("操作成功,新增治疗单 " + addnum + " 个  , 总数:" + count));
        }
示例#5
0
        public async Task <IActionResult> GetFilterList(GetFilterListInput input)
        {
            var bedInfo = await _dialysisMachineApp.GetForm(input.keyValue);

            var list = _patVisitApp.GetList()//input.startDate.ToDate(), input.endDate.ToDate(), bedInfo.F_GroupName, bedInfo.F_DialylisBedNo, true
                       .Where(t => t.F_VisitDate >= input.startDate.ToDate() &&
                              t.F_VisitDate <= input.endDate.ToDate() &&
                              t.F_GroupName == bedInfo.F_GroupName &&
                              t.F_DialysisBedNo == bedInfo.F_DialylisBedNo &&
                              t.F_DialysisStartTime != null &&
                              t.F_DialysisEndTime != null
                              )
                       .Select(t => new
            {
                vid               = t.F_Id,
                pid               = t.F_Pid,
                dialysisNo        = t.F_DialysisNo,
                patientName       = t.F_Name,
                patientGender     = t.F_Gender,
                visitDate         = t.F_VisitDate,
                visitNo           = t.F_VisitNo,
                groupName         = t.F_GroupName,
                dialysisBedNo     = t.F_DialysisBedNo,
                dialysisStartTime = t.F_DialysisStartTime,
                dialysisEndTime   = t.F_DialysisEndTime
            }).ToList();
            var processes = _machineProcessApp.GetList(input.startDate.ToDate(), input.endDate.ToDate(), input.keyValue)
                            .Select(t => new
            {
                id            = t.F_Id,
                vid           = t.F_Vid,
                operatePerson = t.F_OperatePerson,
                operateTime   = t.F_OperateTime,
                option1       = t.F_Option1,
                option2       = t.F_Option2,
                option3       = t.F_Option3,
                option4       = t.F_Option4,
                option5       = t.F_Option5,
                option6       = t.F_Option6,
                memo          = t.F_Memo
            }).ToList();
            var data = new
            {
                machine = new
                {
                    groupName   = bedInfo.F_GroupName,
                    bedNo       = bedInfo.F_DialylisBedNo,
                    showOrder   = bedInfo.F_ShowOrder,
                    machineName = bedInfo.F_MachineName,
                    machineNo   = bedInfo.F_MachineNo,
                    defaultType = bedInfo.F_DefaultType
                },
                rows = list.GroupJoin(processes, v => v.vid, p => p.vid, (v, p) => new
                {
                    v.vid,
                    isProcessed = p.Count() > 0,
                    //v.dialysisBedNo,
                    v.patientName,
                    v.patientGender,
                    v.visitDate,
                    v.visitNo,
                    v.dialysisStartTime,
                    v.dialysisEndTime,
                    processItem = p.FirstOrDefault()
                }).Select(t => t).OrderBy(t => t.visitDate).ThenBy(t => t.visitNo)
            };

            return(Ok(data));
        }
示例#6
0
        /// <summary>
        /// 根据治疗单 生成数据
        /// </summary>
        /// <param name="visitDate"></param>
        /// <param name="visitNo"></param>
        private void CreateData(DateTime visitDate, int visitNo)
        {
            //QualityResultApp resultApp = new QualityResultApp();
            var listSourse = _patVisitApp.GetList().Where(t => t.F_VisitDate == visitDate && (visitNo == 0 || t.F_VisitNo == visitNo) && t.F_DialysisStartTime != null && t.F_DialysisEndTime != null);
            var listTarget = GetList(visitDate, visitNo);
            //查询不包含的数据
            var c = (from r in listSourse
                     where !listTarget.Any(t => t.F_Vid == r.F_Id)
                     select r).ToList();

            //没有 返回
            if (c.Count == 0)
            {
                return;
            }
            //患者列表
            var patientList = from r in _patientApp.GetQueryable()
                              where c.Any(t => t.F_Pid == r.F_Id)
                              select new
            {
                r.F_Id,
                r.F_Name,
                r.F_Gender,
                r.F_DialysisNo
            };

            var bedList = from b in _dialysisMachineApp.GetQueryable()
                          select new
            {
                b.F_Id,
                b.F_GroupName,
                b.F_DialylisBedNo,
                b.F_MachineName,
                b.F_MachineNo,
                b.F_ShowOrder
            };
            //生成记录
            var addEntityList = new List <MachineProcessEntity>();

            foreach (var item in c)
            {
                var entity = new MachineProcessEntity
                {
                    F_Pid       = item.F_Pid,
                    F_Vid       = item.F_Id,
                    F_VisitDate = item.F_VisitDate,
                    F_VisitNo   = item.F_VisitNo,
                    F_Option1   = false,
                    F_Option2   = false,
                    F_Option3   = false,
                    F_Option4   = false,
                    //F_Option5 = false,
                    F_GroupName     = item.F_GroupName,
                    F_DialylisBedNo = item.F_DialysisBedNo
                };
                var p = patientList.FirstOrDefault(t => t.F_Id == item.F_Pid);
                if (p != null)
                {
                    entity.F_PName      = p.F_Name;
                    entity.F_PGender    = p.F_Gender;
                    entity.F_DialylisNo = p.F_DialysisNo;
                }
                else
                {
                    continue;
                }
                var b = bedList.FirstOrDefault(t => t.F_GroupName == item.F_GroupName && t.F_DialylisBedNo == item.F_DialysisBedNo);
                if (b != null)
                {
                    entity.F_MachineName = b.F_MachineName;
                    entity.F_MachineNo   = b.F_MachineNo;
                    entity.F_ShowOrder   = b.F_ShowOrder;
                    entity.F_Mid         = b.F_Id;
                }
                else
                {
                    continue;
                }
                entity.Create();
                entity.F_EnabledMark = true;
                addEntityList.Add(entity);
            }
            if (addEntityList.Count > 0)
            {
                //保存记录
                _service.Insert(addEntityList);
            }
            //更新记录
        }
        public async Task <IActionResult> SubmitData([FromBody] SubmitDataInput input)
        {
            if (input == null || string.IsNullOrEmpty(input.patientId))
            {
                return(BadRequest("患者ID未传值!"));
            }
            var userId = _usersService.GetCurrentUserId();

            if (string.IsNullOrEmpty(input.id))//新建
            {
                var entity = new PunctureEntity
                {
                    F_Id            = Common.GuId(),
                    F_CreatorTime   = System.DateTime.Now,
                    F_CreatorUserId = userId,
                    F_Nurse         = userId,
                    F_OperateTime   = input.operateTime ?? System.DateTime.Now,
                    F_IsSuccess     = input.isSucess,
                    F_EnabledMark   = true,
                    F_Point1        = input.point1,
                    F_Point2        = input.point2,
                    F_Pid           = input.patientId
                };

                var patient = await _patientApp.GetForm(entity.F_Pid);

                if (patient != null)
                {
                    var visitDate = entity.F_OperateTime.ToDate().Date;
                    var patVisit  = _patVisitApp.GetList().FirstOrDefault(t => t.F_Pid == patient.F_Id && t.F_VisitDate == visitDate);//patient.F_Id, visitDate
                    if (patVisit != null)
                    {
                        //更新治疗单 穿刺者信息
                        patVisit.F_PuncturePerson = userId;
                        await _patVisitApp.UpdateForm(patVisit);
                    }
                    else
                    {
                        return(BadRequest(patient.F_Name + "(" + visitDate.ToDateString() + ")无透析记录!"));
                    }
                }
                else
                {
                    return(BadRequest("患者ID有误!"));
                }
                await _punctureApp.InsertForm(entity);

                return(Ok(entity.F_Id));
            }
            else
            {
                var entity = new PunctureEntity
                {
                    F_LastModifyTime   = DateTime.Now,
                    F_LastModifyUserId = userId
                };
                await _punctureApp.UpdateForm(entity);

                return(Ok(entity.F_Id));
            }
        }
        /// <summary>
        /// 根据治疗单 生成数据
        /// </summary>
        /// <param name="visitDate"></param>
        private async Task CreateDataAsync(DateTime visitDate)
        {
            //QualityResultApp resultApp = new QualityResultApp();
            var listSourse = _visitApp.GetList().Where(t => t.F_VisitDate == visitDate && t.F_DialysisStartTime != null && t.F_DialysisEndTime != null);
            var listTarget = await GetList(visitDate);

            //查询不包含的数据
            var c = from r in listSourse
                    where listTarget.All(t => t.F_Vid != r.F_Id)
                    select r;
            //查询化验结果 尿素 UREA
            var lisResltList = (from r in _resultApp.GetList()
                                where listSourse.Any(t => t.F_Pid == r.F_Pid) &&
                                r.F_ReportTime >= visitDate &&
                                r.F_ReportTime < visitDate.AddDays(1) &&
                                r.F_ItemCode == "UREA"
                                select new
            {
                r.F_Pid,
                r.F_ReportTime,
                r.F_Result
            }).ToList();
            //患者列表
            var patientList = _patientApp.GetQueryable().Where(r => listSourse.Any(t => t.F_Pid == r.F_Id))
                              .Select(r => new { r.F_Id, r.F_Name, r.F_Gender, r.F_DialysisNo });
            //生成记录
            var addEntityList = new List <ProcessFlowEntity>();

            foreach (var item in c)
            {
                var entity = new ProcessFlowEntity
                {
                    F_Pid        = item.F_Pid,
                    F_Vid        = item.F_Id,
                    F_VisitDate  = item.F_VisitDate,
                    F_VisitNo    = item.F_VisitNo,
                    F_PreWeight  = item.F_WeightTQ,
                    F_PostWeight = item.F_WeightTH,
                    F_TotalHours = (item.F_DialysisEndTime.ToDate() - item.F_DialysisStartTime.ToDate()).TotalHours.ToFloat(1)
                };
                var p = patientList.FirstOrDefault(t => t.F_Id == item.F_Pid);
                if (p != null)
                {
                    entity.F_PName      = p.F_Name;
                    entity.F_PGender    = p.F_Gender;
                    entity.F_DialylisNo = p.F_DialysisNo;
                }
                var lis = lisResltList.FindAll(t => t.F_Pid == item.F_Pid).OrderBy(t => t.F_ReportTime).ToList();
                if (lis.Count > 0)
                {
                    entity.F_PreUrea = lis[0].F_Result.ToFloat(2);
                    if (lis.Count > 1)
                    {
                        entity.F_PostUrea = lis[1].F_Result.ToFloat(2);
                    }
                }
                if (entity.F_PreWeight != null && entity.F_PostWeight != null && entity.F_PreUrea != null && entity.F_PostUrea != null)
                {
                    var preWeight  = entity.F_PreWeight.ToFloat(2);
                    var postWeight = entity.F_PostWeight.ToFloat(2);
                    if (preWeight > postWeight)
                    {
                        var preUrea  = entity.F_PreUrea.ToFloat(2);
                        var postUrea = entity.F_PostUrea.ToFloat(2);
                        if (preUrea > postUrea)
                        {
                            var duration = entity.F_TotalHours.ToFloat(1);
                            if (duration > 0)
                            {
                                //计算Kt/V
                                entity.F_Result = (-Math.Log(postUrea / preUrea - 0.008 * duration) + (4 - 3.5 * postUrea / preUrea) * (preWeight - postWeight) / postWeight).ToFloat(2);
                            }
                        }
                    }
                }
                entity.Create();
                entity.F_EnabledMark = true;
                addEntityList.Add(entity);
            }
            if (addEntityList.Count > 0)
            {
                //保存记录
                _service.Insert(addEntityList);
            }
            //更新记录
            var u = from r in listTarget
                    where r.F_PreUrea == null || r.F_PreWeight == null || r.F_PostUrea == null || r.F_PostWeight == null
                    select r;

            foreach (var item in u)
            {
                bool isModified = false;
                if (item.F_PreUrea == null || item.F_PostUrea == null)
                {
                    var lis = lisResltList.FindAll(t => t.F_Pid == item.F_Pid).OrderBy(t => t.F_ReportTime).ToList();
                    if (lis.Count > 0)
                    {
                        if (item.F_PreUrea == null)
                        {
                            item.F_PreUrea = lis[0].F_Result.ToFloat(2);
                            isModified     = true;
                        }
                        if (lis.Count > 1)
                        {
                            if (item.F_PostUrea == null)
                            {
                                item.F_PostUrea = lis[1].F_Result.ToFloat(2);
                                isModified      = true;
                            }
                        }
                    }
                }
                if (item.F_PreWeight == null || item.F_PostWeight == null)
                {
                    var find = listSourse.FirstOrDefault(t => t.F_Pid == item.F_Pid);
                    if (item.F_PreWeight == null)
                    {
                        item.F_PreWeight = find.F_WeightTQ;
                        isModified       = true;
                    }
                    if (item.F_PostWeight == null)
                    {
                        item.F_PreWeight = find.F_WeightTH;
                        isModified       = true;
                    }
                }
                if (item.F_PreWeight != null && item.F_PostWeight != null && item.F_PreUrea != null && item.F_PostUrea != null)
                {
                    var preWeight  = item.F_PreWeight.ToFloat(2);
                    var postWeight = item.F_PostWeight.ToFloat(2);
                    if (preWeight > postWeight)
                    {
                        var preUrea  = item.F_PreUrea.ToFloat(2);
                        var postUrea = item.F_PostUrea.ToFloat(2);
                        if (preUrea > postUrea)
                        {
                            var duration = item.F_TotalHours.ToFloat(1);
                            if (duration > 0)
                            {
                                //计算Kt/V
                                item.F_Result = (-Math.Log(postUrea / preUrea - 0.008 * duration) + (4 - 3.5 * postUrea / preUrea) * (preWeight - postWeight) / postWeight).ToFloat(2);
                                isModified    = true;
                            }
                        }
                    }
                }
                if (isModified)
                {
                    _service.Update(item);
                }
            }
        }
        public IActionResult GetRecordCountJson(string keyValue)
        {
            WorkloadOutput output    = new WorkloadOutput();
            var            json      = keyValue.ToJObject();
            var            startDate = json.Value <DateTime>("startDate");
            var            endDate   = json.Value <DateTime>("endDate");
            var            pid       = json.Value <string>("pid");
            var            users     = _usersService.GetUserNameDict("").Select(t => new { t.F_Id, t.F_RealName }).ToList();

            //查询治疗记录   穿刺  核对  上机  下机
            //var list = _patVisitApp.GetList()
            //    .Where(t => t.F_VisitDate >= startDate && t.F_VisitDate <= endDate)
            //    .Select(r => new
            //    {
            //        r.F_PuncturePerson,
            //        r.F_StartPerson,
            //        r.F_CheckPerson,
            //        r.F_EndPerson
            //    });
            var query = _patVisitApp.GetList()
                        .Where(t => t.F_VisitDate >= startDate && t.F_VisitDate <= endDate && t.F_DeleteMark != true);

            query = query.Where(t =>
                                t.F_PuncturePerson != null || t.F_StartPerson != null || t.F_CheckPerson != null ||
                                t.F_EndPerson != null);
            if (!pid.IsEmpty())
            {
                query = query.Where(t =>
                                    t.F_StartPerson == pid || t.F_EndPerson == pid || t.F_CheckPerson == pid ||
                                    t.F_PuncturePerson == pid);
            }
            var list = query.Select(r => new
            {
                r.F_PuncturePerson,
                r.F_StartPerson,
                r.F_CheckPerson,
                r.F_EndPerson
            }).ToList();

            foreach (var item in list)
            {
                if (item.F_PuncturePerson != null)
                {
                    if (!string.IsNullOrEmpty(pid))
                    {
                        if (!pid.Equals(item.F_PuncturePerson))
                        {
                            continue;
                        }
                    }
                    output.GroupItems.PunctureSum++;
                    var find = output.Items.FirstOrDefault(t => t.UId.Equals(item.F_PuncturePerson));
                    if (find == null)
                    {
                        find = new WorkloadItem
                        {
                            UId   = item.F_PuncturePerson,
                            UName = users.FirstOrDefault(t => t.F_Id.Equals(item.F_PuncturePerson))?.F_RealName ?? ""
                        };
                        output.Items.Add(find);
                    }
                    find.PunctureCount++;
                }
                if (item.F_StartPerson != null)
                {
                    if (!string.IsNullOrEmpty(pid))
                    {
                        if (!pid.Equals(item.F_StartPerson))
                        {
                            continue;
                        }
                    }
                    output.GroupItems.StarteSum++;
                    var find = output.Items.FirstOrDefault(t => t.UId.Equals(item.F_StartPerson));
                    if (find == null)
                    {
                        find = new WorkloadItem
                        {
                            UId   = item.F_StartPerson,
                            UName = users.FirstOrDefault(t => t.F_Id.Equals(item.F_StartPerson))?.F_RealName ?? ""
                        };
                        output.Items.Add(find);
                    }
                    find.StarteCount++;
                }
                if (item.F_CheckPerson != null)
                {
                    if (!string.IsNullOrEmpty(pid))
                    {
                        if (!pid.Equals(item.F_CheckPerson))
                        {
                            continue;
                        }
                    }
                    output.GroupItems.CheckSum++;
                    var find = output.Items.FirstOrDefault(t => t.UId.Equals(item.F_CheckPerson));
                    if (find == null)
                    {
                        find = new WorkloadItem
                        {
                            UId   = item.F_CheckPerson,
                            UName = users.FirstOrDefault(t => t.F_Id.Equals(item.F_CheckPerson))?.F_RealName ?? ""
                        };
                        output.Items.Add(find);
                    }
                    find.CheckCount++;
                }
                if (item.F_EndPerson != null)
                {
                    if (!string.IsNullOrEmpty(pid))
                    {
                        if (!pid.Equals(item.F_EndPerson))
                        {
                            continue;
                        }
                    }
                    output.GroupItems.EndSum++;
                    var find = output.Items.FirstOrDefault(t => t.UId.Equals(item.F_EndPerson));
                    if (find == null)
                    {
                        find = new WorkloadItem
                        {
                            UId   = item.F_EndPerson,
                            UName = users.FirstOrDefault(t => t.F_Id.Equals(item.F_EndPerson))?.F_RealName ?? ""
                        };
                        output.Items.Add(find);
                    }
                    find.EndCount++;
                }
            }

            return(Content(output.ToJson()));
        }
示例#10
0
        public IActionResult GetRecordSummary()
        {
            //总数
            var bedCount = _machineApp.GetQueryable().Count();

            //今日记录
            var records = _patVisitApp.GetList().Where(t => t.F_VisitDate == DateTime.Today && t.F_EnabledMark == true && t.F_DeleteMark != true);//.FindAll(t => t.F_DialysisStartTime != null && t.F_DialysisEndTime == null)

            //透析中数量
            var usingCount = records.Count(t => t.F_DialysisStartTime != null && t.F_DialysisEndTime == null);

            //已透析数量
            var finishCount = records.Count(t => t.F_DialysisEndTime != null);

            var todoCount = records.Count(t => t.F_DialysisStartTime == null);

            var leftBedCount = bedCount - usingCount;

            leftBedCount = leftBedCount < 0 ? 0 : leftBedCount;

            //本月透析人数
            var monthStartDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date;
            var monthCount    = (from r in _patVisitApp.GetList()
                                 where r.F_VisitDate >= monthStartDay && r.F_DialysisEndTime != null
                                 select r.F_Id).Count();

            //统计最近15天的数据
            var startDate      = DateTime.Now.AddDays(-14).Date;
            var endDate        = DateTime.Now.Date;
            var _15daysRecords = (from r in _patVisitApp.GetList()
                                  where r.F_VisitDate >= startDate && r.F_VisitDate <= endDate && r.F_DialysisEndTime != null
                                  orderby r.F_VisitDate
                                  select new
            {
                date = r.F_VisitDate.ToDateString().Substring(5),
                mode = r.F_DialysisType
            }).ToList();
            var lineX   = new List <string>();
            var lineY   = new List <int>();
            var circleX = new List <string>();
            var circleY = new List <int>();

            foreach (var item in _15daysRecords)
            {
                if (lineX.IndexOf(item.date) < 0)
                {
                    lineX.Add(item.date);
                    lineY.Add(_15daysRecords.Count(t => t.date.Equals(item.date)));
                }

                if (circleX.IndexOf(item.mode) < 0)
                {
                    circleX.Add(item.mode);
                    circleY.Add(_15daysRecords.Count(t => t.mode.Equals(item.mode)));
                }
            }

            var data = new
            {
                todoCount,
                finishCount,
                usingCount,
                leftBedCount,
                bedCount,
                monthCount,
                line = new
                {
                    lineX,
                    lineY
                },
                circle = new
                {
                    circleX,
                    circleY
                }
            };

            return(Content(data.ToJson()));
        }
示例#11
0
        public ActionResult GetRecordCountJson(string keyValue)
        {
            DialysisRecordOutput output = new DialysisRecordOutput();
            var json      = keyValue.ToJObject();
            var startDate = json.Value <DateTime>("startDate");
            var endDate   = json.Value <DateTime>("endDate");
            var pid       = json.Value <string>("pid");

            //查询治疗记录

            var visitQuery = _patVisit.GetList().Where(t =>
                                                       t.F_Pid == pid && t.F_DialysisEndTime != null && t.F_VisitDate >= startDate &&
                                                       t.F_VisitDate <= endDate && t.F_EnabledMark != false);
            var list = (from r in visitQuery
                        //join d in _drugsApp.GetSelectJson() on r.F_HeparinType equals d.F_Id
                        //into temp
                        //from t in temp.DefaultIfEmpty()
                        orderby r.F_VisitDate
                        select new
            {
                dialysisType = r.F_DialysisType,
                id = r.F_Id,
                r.F_AccessName,
                r.F_BedNo,
                r.F_BirthDay,
                r.F_BloodSpeed,
                r.F_DialysisBedNo,
                r.F_DialysisEndTime,
                r.F_DialysisNo,
                r.F_DialysisStartTime,
                r.F_DialysisType,
                r.F_DialyzerType1,
                r.F_DialyzerType2,
                r.F_Gender,
                r.F_GroupName,
                //r.F_HeparinType,
                //t == null? "" : t.F_DrugName,
                //F_HeparinType = t == null ? "" : t.F_DrugName,
                r.F_InpNo,
                r.F_Machine,
                r.F_Name,
                r.F_PatientSourse,
                r.F_Pid,
                r.F_VascularAccess,
                r.F_VisitDate,
                r.F_VisitNo
            }).ToList();

            output.PatientId  = pid;
            output.TotalCount = list.Count;

            output.Rows = list;

            //List<KeyValuePair<string, int>> data = new List<KeyValuePair<string, int>>();
            foreach (var item in list.GroupBy(t => t.dialysisType))
            {
                DialysisRecordItem dialysisRecordItem = new DialysisRecordItem
                {
                    DialysisType = item.Key,
                    Count        = item.Count(),
                    Percent      = (((float)item.Count()) / output.TotalCount).ToFloat(2)
                };
                output.Items.Add(dialysisRecordItem);
            }

            foreach (var item in list.GroupBy(t => t.F_VisitDate))
            {
                DialysisRecordGroup recordItem = new DialysisRecordGroup
                {
                    VisitDate = item.Key.ToDateString().Substring(5),
                };

                foreach (var ele in item.GroupBy(t => t.dialysisType))
                {
                    recordItem.Value.Add(new KeyValuePair <string, int>(
                                             ele.Key, ele.Count()
                                             ));
                }
                output.GroupItems.Add(recordItem);
            }
            return(Content(output.ToJson()));
        }
        public IActionResult GetList(GetListInput input)
        {
            var list = _patVisitApp.GetList(input.visitDate, input.visitNo).ToList();

            if (!string.IsNullOrEmpty(input.bedNo))
            {
                list = list.Where(t => t.F_DialysisBedNo.Equals(input.bedNo)).ToList();
            }
            var groups = (input.groupNames + "").Split(',');

            list = list.Where(t => groups.Contains(t.F_GroupName))
                   .Where(t => t.F_DialysisStartTime != null && t.F_DialysisEndTime != null)
                   .ToList();
            var target = _machineDisinfectionApp.GetListByDate(input.visitDate, input.visitDate)
                         .Select(t => new
            {
                t.F_Id,
                t.F_Vid,
                t.F_StartTime,
                t.F_EndTime,
                t.F_Option1,
                t.F_Option1Value,
                t.F_Option2,
                t.F_Option2Value,
                t.F_Option3,
                t.F_Option4,
                t.F_Option5,
                t.F_OperatePerson,
                t.F_WipeStartTime,
                t.F_WipeEndTime,
                t.F_Option6,
                t.F_Option6Value,
                t.F_CheckPerson
            });
            var output = new GetListOutput();
            //保存操作用户字典
            //Hashtable table = new Hashtable();
            var users = _usersService.GetUserNameDict("").Select(t => new
            {
                id   = t.F_Id,
                name = t.F_RealName
            }).ToList();

            foreach (var item in list)
            {
                DisinfectionInfo disinfection = new DisinfectionInfo
                {
                    vId               = item.F_Id,
                    groupName         = item.F_GroupName,
                    bedNo             = item.F_DialysisBedNo,
                    visitNo           = item.F_VisitNo.ToInt(),
                    patientName       = item.F_Name,
                    dialysisStartTime = item.F_DialysisStartTime,
                    dialysisEndTime   = item.F_DialysisEndTime
                };
                var find = target.FirstOrDefault(t => t.F_Vid.Equals(item.F_Id));
                if (find == null)
                {
                    disinfection.beDisinfected = false;
                }
                else
                {
                    if (string.IsNullOrEmpty(find.F_OperatePerson) || string.IsNullOrEmpty(find.F_CheckPerson))
                    {
                        disinfection.beDisinfected = false;
                    }
                    else
                    {
                        disinfection.beDisinfected = true;
                    }
                    disinfection.StartTime     = find.F_StartTime;
                    disinfection.EndTime       = find.F_EndTime;
                    disinfection.Option1       = find.F_Option1;
                    disinfection.Option1Value  = find.F_Option1Value;
                    disinfection.Option2       = find.F_Option2;
                    disinfection.Option2Value  = find.F_Option2Value;
                    disinfection.Option3       = find.F_Option3;
                    disinfection.Option4       = find.F_Option4;
                    disinfection.Option5       = find.F_Option5;
                    disinfection.Option6       = find.F_Option6;
                    disinfection.Option6Value  = find.F_Option6Value;
                    disinfection.WipeStartTime = find.F_WipeStartTime;
                    disinfection.WipeEndTime   = find.F_WipeEndTime;
                    disinfection.OperatePerson = find.F_OperatePerson == null ? "" : users.First(t => t.id.Equals(find.F_OperatePerson)).name;
                    disinfection.CheckPerson   = find.F_CheckPerson == null ? "" : users.First(t => t.id.Equals(find.F_CheckPerson)).name;
                }
                output.items.Add(disinfection);
            }
            output.bedNo      = input.bedNo;
            output.groupNames = input.groupNames;
            output.visitDate  = input.visitDate;
            output.visitNo    = input.visitNo;
            return(Ok(output));
        }