diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 1f798a5de..08411c292 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -7644,6 +7644,13 @@ + + + 删除 + + + + 获取CRC上传的文件 @@ -7657,12 +7664,10 @@ - + - 删除 + 影像阅片临床数据签名 - - @@ -7671,11 +7676,6 @@ - - - 影像阅片临床数据签名 - - 获取访视 阅片或任务临床数据 @@ -8058,17 +8058,18 @@ - + - 获取影像阅片的预览 // 需要清除之前已经选中的 (增加标准搜索,已修改) + 删除 + - + - 添加对应的阅片 (增加标准不影响 因为阅片期设置关联了标准) + 设置阅片期配置是否生效 (增加标准搜索,已修改) - + @@ -8078,6 +8079,13 @@ + + + 添加对应的阅片计划 (后续生效将计划变为模块) (增加标准不影响 因为阅片期设置关联了标准) + + + + 分页获取 (增加标准搜索,已修改) @@ -8099,18 +8107,48 @@ - + - 设置阅片期配置是否生效 (增加标准搜索,已修改) + 获取影像阅片的预览 // 需要清除之前已经选中的 (增加标准搜索,已修改) - - + + + 生成的阅片模块(在大列表上展示的) 阅片期 + + + + + 获取读片模块 //加了标准参数 + + + + + 获取单条详情信息 + + + + + + + 添加阅片的时候 获取访视 //标准参数必传 + + + + + + + 添加阅片期 + + + + + 删除 - + @@ -8423,44 +8461,6 @@ - - - 生成的阅片模块(在大列表上展示的) 阅片期 - - - - - 获取读片模块 //加了标准参数 - - - - - 获取单条详情信息 - - - - - - - 添加阅片的时候 获取访视 //标准参数必传 - - - - - - - 添加阅片期 - - - - - - - 删除 - - - - Dashboard统计、全局工作量统计、入组两个维度统计(按照项目、按照人) diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs index 64246141d..d4de2eaef 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs @@ -153,9 +153,12 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetDoctorSelectList(DoctorSelectQuery selectQuery, [FromServices] IRepository _enrollRepository) { + var query = from allocationRule in _taskAllocationRuleRepository.Where(t => t.TrialId == selectQuery.TrialId && t.IsEnable) - .WhereIf(selectQuery.ReadingCategory != null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.ReadingCategory == selectQuery.ReadingCategory)) - .WhereIf(selectQuery.TrialReadingCriterionId != null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId)) + .WhereIf(selectQuery.ReadingCategory != null && selectQuery.TrialReadingCriterionId == null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.ReadingCategory == selectQuery.ReadingCategory)) + .WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory == null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId)) + .WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory !=null, + t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId && t.ReadingCategory==selectQuery.ReadingCategory)) join user in _userRepository.AsQueryable() on allocationRule.DoctorUserId equals user.Id select new TrialDoctorUserSelectView() { @@ -167,20 +170,19 @@ namespace IRaCIS.Core.Application.Service UserTypeEnum = user.UserTypeRole.UserTypeEnum, ReadingCategoryList = selectQuery.TrialReadingCriterionId == null ? - allocationRule.Enroll.EnrollReadingCategoryList - .Select(t => t.ReadingCategory).OrderBy(t => t).ToList(): - - allocationRule.Enroll.EnrollReadingCategoryList - .Where( t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId) - .Select(t => t.ReadingCategory).OrderBy(t=>t).ToList() + + allocationRule.Enroll.EnrollReadingCategoryList.Where(t=> (selectQuery.ReadingCategory == null ?true: t.ReadingCategory == selectQuery.ReadingCategory) ).Select(t => t.ReadingCategory).OrderBy(t => t).ToList() : + + allocationRule.Enroll.EnrollReadingCategoryList + .Where(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId && (selectQuery.ReadingCategory == null?true : t.ReadingCategory == selectQuery.ReadingCategory) ) + .Select(t => t.ReadingCategory).OrderBy(t => t).ToList() }; return await query.ToListAsync(); } - - + #region 废弃 /// /// 获取访视任务 应用Subject后 医生比率情况 /// @@ -210,5 +212,8 @@ namespace IRaCIS.Core.Application.Service return await taskAllocationRuleQueryable.ToListAsync(); } + #endregion + + } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs index 9e3d6eaa0..4ce83a361 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs @@ -46,70 +46,8 @@ namespace IRaCIS.Core.Application.Service this._criterionNidusRepository = criterionNidusRepository; } - /// - /// 获取标准病灶类型 - /// - /// - /// - [HttpPost] - public async Task> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto) - { - var dicNums = new List(); - dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync(); - var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync(); - - var result = await _dictionaryRepository.Where(x => x.ParentId == dictionaryId && dicNums.Contains(x.Code)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - - return result; - } - - /// - /// 获取标准病灶器官关系信息 - /// - /// - /// - [HttpPost] - public async Task> GetCriterionNidusList(CriterionNidusQuery inQuery) - { - - var criterionNidusQueryable = _criterionNidusRepository - .Where(x=>x.CriterionId== inQuery.CriterionId) - .ProjectTo(_mapper.ConfigurationProvider); - - return await criterionNidusQueryable.ToListAsync(); - } - - /// - /// 新增修改标准病灶器官关系信息 - /// - /// - /// - [HttpPost] - public async Task AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit inDto) - { - - if (await _criterionNidusRepository.AnyAsync(x => x.OrganType == inDto.OrganType && x.LesionType == inDto.LesionType && x.CriterionId == inDto.CriterionId && x.Id != inDto.Id)) - { - throw new BusinessValidationFailedException("存在相同的数据,操作失败"); - } - var entity = await _criterionNidusRepository.InsertOrUpdateAsync(inDto, true); - - return ResponseOutput.Ok(entity.Id.ToString()); - - } - - /// - /// 删除病灶病灶器官关系信息 - /// - /// - /// - [HttpDelete("{id:guid}")] - public async Task DeleteCriterionNidus(Guid id) - { - var success = await _criterionNidusRepository.DeleteFromQueryAsync(t => t.Id == id, true); - return ResponseOutput.Ok(); - } + #region 系统器官 /// /// 获取系统器官信息 @@ -122,11 +60,11 @@ namespace IRaCIS.Core.Application.Service List organs = new List(); if (inQuery.LesionType != null) { - organs =await _criterionNidusRepository.Where(x => x.CriterionId == inQuery.SystemCriterionId && x.LesionType == inQuery.LesionType) + organs = await _criterionNidusRepository.Where(x => x.CriterionId == inQuery.SystemCriterionId && x.LesionType == inQuery.LesionType) .Select(x => x.OrganType).ToListAsync(); } var organInfoQueryable = _organInfoRepository - .Where(x=>x.SystemCriterionId==inQuery.SystemCriterionId) + .Where(x => x.SystemCriterionId == inQuery.SystemCriterionId) .WhereIf(inQuery.LesionType != null, x => organs.Contains(x.OrganType)) .WhereIf(inQuery.OrganType != null, x => x.OrganType == inQuery.OrganType) .ProjectTo(_mapper.ConfigurationProvider); @@ -185,6 +123,64 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(); } + #endregion + + + #region 项目器官 + + /// + /// 获取项目器官信息 + /// + /// + /// + [HttpPost] + public async Task> GetTrialOrganList(GetTrialOrganListInDto inDto) + { + + List organs = new List(); + + if (inDto.TrialReadingCriterionId == null) + { + inDto.TrialReadingCriterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync(); + } + + + if (inDto.LesionType != null) + { + var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); + organs = await _criterionNidusRepository.Where(x => x.CriterionId == (criterion == null ? default(Guid) : criterion.Id) && x.LesionType == inDto.LesionType) + .Select(x => x.OrganType).ToListAsync(); + } + + var organInfoQueryable = from data in _organInfoRepository + .WhereIf(inDto.OrganType != null, x => x.OrganType == inDto.OrganType) + .WhereIf(inDto.IsLymphNodes != null, x => x.IsLymphNodes == inDto.IsLymphNodes) + .WhereIf(inDto.LesionType != null, x => organs.Contains(x.OrganType)) + join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) + + .WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) + .Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId) + on data.Id equals trialData.OrganInfoId + select new GetTrialOrganListOutDto() + { + Id = trialData.Id, + Part = data.Part, + TULAT = data.TULAT, + TULOC = data.TULOC, + Remark = data.Remark, + IsLymphNodes = data.IsLymphNodes, + IsCanEditPosition = data.IsCanEditPosition, + IsEnable = trialData.IsEnable, + OrganType = data.OrganType, + PartEN = data.PartEN, + TULATEN = data.TULATEN, + TULOCEN = data.TULOCEN, + }; + + + return await organInfoQueryable.ToListAsync(); + } + /// /// 批量添加项目器官 @@ -197,9 +193,9 @@ namespace IRaCIS.Core.Application.Service List organTrialInfos = inDto.OrganIds.Select(x => new OrganTrialInfo() { - OrganInfoId=x, - TrialId=inDto.TrialId, - TrialCriterionId=inDto.TrialReadingCriterionId, + OrganInfoId = x, + TrialId = inDto.TrialId, + TrialCriterionId = inDto.TrialReadingCriterionId, //OrganType=inDto.OrganType, }).ToList(); @@ -224,94 +220,106 @@ namespace IRaCIS.Core.Application.Service } + /// - /// 获取项目器官信息 + /// 设置项目器官是否生效 /// /// /// [HttpPost] - public async Task> GetTrialOrganList(GetTrialOrganListInDto inDto) + public async Task SetOrganIsEnable(SetOrganIsEnableInDto inDto) { - - List organs = new List(); - - if (inDto.TrialReadingCriterionId == null) + await _organTrialInfoRepository.UpdatePartialFromQueryAsync(x => inDto.Ids.Contains(x.Id), x => new OrganTrialInfo() { - inDto.TrialReadingCriterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync(); - } + IsEnable = inDto.IsEnable + }); + await _organTrialInfoRepository.SaveChangesAsync(); - if (inDto.LesionType != null) - { - var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); - organs = await _criterionNidusRepository.Where(x => x.CriterionId == (criterion==null?default(Guid): criterion.Id) && x.LesionType == inDto.LesionType) - .Select(x => x.OrganType).ToListAsync(); - } - - var organInfoQueryable = from data in _organInfoRepository - .WhereIf(inDto.OrganType != null, x => x.OrganType == inDto.OrganType) - .WhereIf(inDto.IsLymphNodes!=null,x=>x.IsLymphNodes==inDto.IsLymphNodes) - .WhereIf(inDto.LesionType != null, x => organs.Contains(x.OrganType)) - join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) - - .WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) - .Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId) - on data.Id equals trialData.OrganInfoId - select new GetTrialOrganListOutDto() - { - Id = trialData.Id, - Part = data.Part, - TULAT = data.TULAT, - TULOC = data.TULOC, - Remark= data.Remark, - IsLymphNodes = data.IsLymphNodes, - IsCanEditPosition=data.IsCanEditPosition, - IsEnable = trialData.IsEnable, - OrganType = data.OrganType, - PartEN=data.PartEN, - TULATEN=data.TULATEN, - TULOCEN=data.TULOCEN, - }; - - - return await organInfoQueryable.ToListAsync(); + return ResponseOutput.Ok(); } - - #region 注释 - ///// - ///// 获取项目勾选器官信息 - ///// - ///// - ///// - //[HttpPost] - //public async Task> GetTrialCheckOrganList(GetTrialOrganListInDto inDto) - //{ - // var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.CriterionNidusId != null, x => x.CriterionNidusId == inDto.CriterionNidusId) - // join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) - // .Where(x => x.TrialId == inDto.TrialId) - // on data.Id equals trialData.OrganInfoId into jtemp - // from leftjoin in jtemp.DefaultIfEmpty() - // select new GetTrialCheckOrganList() - // { - // Id = data.Id, - // Part = data.Part, - // TULAT = data.TULAT, - // TULOC = data.TULOC, - - // IsCheckd= leftjoin!=null, - // Remark = data.Remark, - // CriterionNidusId = data.CriterionNidusId, - // IsEnable = leftjoin.IsEnable, - - // }; - - - // return await organInfoQueryable.ToListAsync(); - //} #endregion + + #region 器官和病灶绑定表 (项目和系统 在同一张表) + + /// + /// 获取标准病灶类型 + /// + /// + /// + [HttpPost] + public async Task> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto) + { + var dicNums = new List(); + dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync(); + var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync(); + + var result = await _dictionaryRepository.Where(x => x.ParentId == dictionaryId && dicNums.Contains(x.Code)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + return result; + } + + /// + /// 获取标准病灶器官关系信息 + /// + /// + /// + [HttpPost] + public async Task> GetCriterionNidusList(CriterionNidusQuery inQuery) + { + + var criterionNidusQueryable = _criterionNidusRepository + .Where(x => x.CriterionId == inQuery.CriterionId) + .ProjectTo(_mapper.ConfigurationProvider); + + return await criterionNidusQueryable.ToListAsync(); + } + + /// + /// 新增修改标准病灶器官关系信息 + /// + /// + /// + [HttpPost] + public async Task AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit inDto) + { + + if (await _criterionNidusRepository.AnyAsync(x => x.OrganType == inDto.OrganType && x.LesionType == inDto.LesionType && x.CriterionId == inDto.CriterionId && x.Id != inDto.Id)) + { + throw new BusinessValidationFailedException("存在相同的数据,操作失败"); + } + var entity = await _criterionNidusRepository.InsertOrUpdateAsync(inDto, true); + + return ResponseOutput.Ok(entity.Id.ToString()); + + } + + /// + /// 删除病灶病灶器官关系信息 + /// + /// + /// + [HttpDelete("{id:guid}")] + public async Task DeleteCriterionNidus(Guid id) + { + var success = await _criterionNidusRepository.DeleteFromQueryAsync(t => t.Id == id, true); + return ResponseOutput.Ok(); + } + + #endregion + + + + + + + + + + /// /// 同步系统器官到项目 /// @@ -373,25 +381,43 @@ namespace IRaCIS.Core.Application.Service } - - /// - /// 设置项目器官是否生效 - /// - /// - /// - [HttpPost] - public async Task SetOrganIsEnable(SetOrganIsEnableInDto inDto) - { - await _organTrialInfoRepository.UpdatePartialFromQueryAsync(x => inDto.Ids.Contains(x.Id), x => new OrganTrialInfo() - { - IsEnable=inDto.IsEnable - }); - await _organTrialInfoRepository.SaveChangesAsync(); - return ResponseOutput.Ok(); - } + + + #region 注释 + ///// + ///// 获取项目勾选器官信息 + ///// + ///// + ///// + //[HttpPost] + //public async Task> GetTrialCheckOrganList(GetTrialOrganListInDto inDto) + //{ + // var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.CriterionNidusId != null, x => x.CriterionNidusId == inDto.CriterionNidusId) + // join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) + // .Where(x => x.TrialId == inDto.TrialId) + // on data.Id equals trialData.OrganInfoId into jtemp + // from leftjoin in jtemp.DefaultIfEmpty() + // select new GetTrialCheckOrganList() + // { + // Id = data.Id, + // Part = data.Part, + // TULAT = data.TULAT, + // TULOC = data.TULOC, + + // IsCheckd= leftjoin!=null, + // Remark = data.Remark, + // CriterionNidusId = data.CriterionNidusId, + // IsEnable = leftjoin.IsEnable, + + // }; + + + // return await organInfoQueryable.ToListAsync(); + //} + #endregion } }