diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index d85a3ad0e..65f8634e5 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -40,7 +40,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid? QuestionId { get; set; } - public Guid visitTaskId { get; set; } + public Guid VisitTaskId { get; set; } public string Answer { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index c8103c75d..08bc87dae 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -78,6 +78,7 @@ namespace IRaCIS.Application.Services this._readingQuestionTrialRepository = readingQuestionTrialRepository; } + #region 全局阅片相关 /// /// 获取全局阅片历史记录 /// @@ -111,12 +112,12 @@ namespace IRaCIS.Application.Services await _readingGlobalTaskInfoRepository.BatchDeleteNoTrackingAsync(x => x.GlobalTaskId == inDto.GlobalTaskId); await _readingGlobalTaskInfoRepository.AddRangeAsync(inDto.QuestionList.Select(x => new ReadingGlobalTaskInfo() { - Answer=x.Answer, - QuestionId=x.QuestionId, - SubjectId=inDto.SubjectId, - GlobalTaskId=inDto.GlobalTaskId, - TaskId=x.visitTaskId, - TrialId=inDto.TrialId, + Answer = x.Answer, + QuestionId = x.QuestionId, + SubjectId = inDto.SubjectId, + GlobalTaskId = inDto.GlobalTaskId, + TaskId = x.VisitTaskId, + TrialId = inDto.TrialId, }).ToList()); var result = await _readingGlobalTaskInfoRepository.SaveChangesAsync(); @@ -138,7 +139,8 @@ namespace IRaCIS.Application.Services { throw new BusinessValidationFailedException("当前任务不是全局阅片任务"); } - GetGlobalReadingInfoOutDto result = new GetGlobalReadingInfoOutDto() { + GetGlobalReadingInfoOutDto result = new GetGlobalReadingInfoOutDto() + { GlobalTaskId = inDto.VisitTaskId, }; @@ -154,8 +156,8 @@ namespace IRaCIS.Application.Services { QuestionId = y.ReadingQuestionTrialId, QuestionName = y.ReadingQuestionTrial.QuestionName, - Type=y.ReadingQuestionTrial.Type, - TypeValue=y.ReadingQuestionTrial.TypeValue, + Type = y.ReadingQuestionTrial.Type, + TypeValue = y.ReadingQuestionTrial.TypeValue, Answer = y.Answer }).ToList() }).ToListAsync(); @@ -169,12 +171,12 @@ namespace IRaCIS.Application.Services globalReadingQuestion , l => new { a = l.QuestionId, b = x.VisitTaskId } , r => new { a = r.QuestionId, b = r.TaskId } - , (l, r) => new { question=l, global=r }) + , (l, r) => new { question = l, global = r }) .SelectMany(lr => lr.global.DefaultIfEmpty(), (lr, r) => new GlobalQuestionInfo { - Answer = lr.global == null ? string.Empty : lr.global.Select(x=>x.Answer).FirstOrDefault(), - QuestionId =lr.question.QuestionId, - QuestionName=lr.question.QuestionName, + Answer = lr.global == null ? string.Empty : lr.global.Select(x => x.Answer).FirstOrDefault(), + QuestionId = lr.question.QuestionId, + QuestionName = lr.question.QuestionName, Type = lr.question.Type, TypeValue = lr.question.TypeValue, @@ -182,9 +184,9 @@ namespace IRaCIS.Application.Services var reason = new GlobalQuestionInfo() { - Answer = globalReadingQuestion.Where(y => y.TaskId == x.VisitTaskId && y.QuestionId == null).Select(x => x.Answer).FirstOrDefault()??String.Empty, - QuestionName="原因", - Type="input", + Answer = globalReadingQuestion.Where(y => y.TaskId == x.VisitTaskId && y.QuestionId == null).Select(x => x.Answer).FirstOrDefault() ?? String.Empty, + QuestionName = "原因", + Type = "input", }; @@ -195,8 +197,9 @@ namespace IRaCIS.Application.Services return result; } + #endregion - + #region 获取下一个阅片任务 /// /// 获取下一个阅片任务 /// @@ -209,27 +212,27 @@ namespace IRaCIS.Application.Services if (inDto.VisistTaskId != null) { - task = await _visitTaskRepository.Where(x => x.Id== inDto.VisistTaskId).Select(x => new GetReadingTaskDto() + task = await _visitTaskRepository.Where(x => x.Id == inDto.VisistTaskId).Select(x => new GetReadingTaskDto() { VisitTaskId = x.Id, TaskBlindName = x.TaskBlindName, - SubjectId=x.SubjectId, + SubjectId = x.SubjectId, ReadingCategory = x.ReadingCategory, VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule.SubjectVisitId, VisitNum = x.VisitTaskNum, }).FirstOrDefaultAsync(); - + } else if (inDto.SubjectId != null) { - var subjectList =await _subjectRepository.Where(t => t.TrialId == inDto.TrialId) - + var subjectList = await _subjectRepository.Where(t => t.TrialId == inDto.TrialId) + .Select(s => new SubjectTask() { SubjectId = s.Id, UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect), - }).OrderBy(x=>x.SubjectId).ToListAsync(); + }).OrderBy(x => x.SubjectId).ToListAsync(); subjectList = subjectList.Select((x, index) => new SubjectTask() { Index = index, @@ -238,19 +241,19 @@ namespace IRaCIS.Application.Services }).ToList(); - var subjectIndex = subjectList.Where(x => x.SubjectId == inDto.SubjectId).Select(x=>x.Index).FirstOrDefault(); - var newSubjectId = subjectList.Where(x => x.Index >= subjectIndex && x.UnReadTaskCount != 0).Select(x=>x.SubjectId).FirstOrDefault(); + var subjectIndex = subjectList.Where(x => x.SubjectId == inDto.SubjectId).Select(x => x.Index).FirstOrDefault(); + var newSubjectId = subjectList.Where(x => x.Index >= subjectIndex && x.UnReadTaskCount != 0).Select(x => x.SubjectId).FirstOrDefault(); var taskquery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.SubjectId == newSubjectId && x.DoctorUserId == _userInfo.Id).Select(x => new GetReadingTaskDto() { VisitTaskId = x.Id, - TaskBlindName=x.TaskBlindName, + TaskBlindName = x.TaskBlindName, ReadingCategory = x.ReadingCategory, - VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule==null? default(Guid) : x.ReadModule.SubjectVisitId, + VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule == null ? default(Guid) : x.ReadModule.SubjectVisitId, VisitNum = x.VisitTaskNum, }).OrderBy(x => x.VisitNum).ThenBy(x => x.ReadingCategory); - task =await taskquery.FirstOrDefaultAsync(); + task = await taskquery.FirstOrDefaultAsync(); if (task == null) { throw new BusinessValidationFailedException("任务都已经完成"); @@ -261,15 +264,15 @@ namespace IRaCIS.Application.Services } else { - task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id&&x.TaskState==TaskState.Effect).Select(x => new GetReadingTaskDto() + task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect).Select(x => new GetReadingTaskDto() { VisitTaskId = x.Id, TaskBlindName = x.TaskBlindName, ReadingCategory = x.ReadingCategory, VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule == null ? default(Guid) : x.ReadModule.SubjectVisitId, VisitNum = x.VisitTaskNum, - SubjectId =x.SubjectId, - SubjectCode=x.Subject.Code, + SubjectId = x.SubjectId, + SubjectCode = x.Subject.Code, }).FirstOrDefaultAsync(); if (task == null) { @@ -289,19 +292,22 @@ namespace IRaCIS.Application.Services await _visitTaskRepository.SaveChangesAsync(); return task; } + #endregion + #region 获取阅片非Dicom文件 /// /// 获取阅片非Dicom文件 /// /// /// [HttpPost] - public async Task<(List,object)> GetReadingImageFile(GetReadingImgInDto inDto) + public async Task<(List, object)> GetReadingImageFile(GetReadingImgInDto inDto) { - var task=await GetNextTask( new GetNextTaskInDto() { - TrialId=inDto.TrialId, - SubjectId=inDto.SubjectId, - VisistTaskId=inDto.VisistTaskId, + var task = await GetNextTask(new GetNextTaskInDto() + { + TrialId = inDto.TrialId, + SubjectId = inDto.SubjectId, + VisistTaskId = inDto.VisistTaskId, }); List visitIds = new List(); if (task.ReadingCategory == ReadingCategory.Visit) @@ -313,7 +319,7 @@ namespace IRaCIS.Application.Services // 阅片期取前面所有的图像 visitIds.AddRange(await _subjectVisitRepository.Where(x => x.VisitNum <= task.VisitNum && x.SubjectId == task.SubjectId).Select(x => x.Id).ToListAsync()); } - List result=await _noneDicomStudyRepository.Where(t => visitIds.Contains(t.SubjectVisitId)) + List result = await _noneDicomStudyRepository.Where(t => visitIds.Contains(t.SubjectVisitId)) .ProjectTo(_mapper.ConfigurationProvider, new { token = _userInfo.UserToken }).ToListAsync(); var trialInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new @@ -337,22 +343,25 @@ namespace IRaCIS.Application.Services VisitTaskId = task.VisitTaskId, })).Count() > 0; } - - - return (result, new { - VisitTaskId= task.VisitTaskId, - SubjectId=task.SubjectId, - SubjectCode=task.SubjectCode, - ReadingCategory= task.ReadingCategory, - TaskBlindName=task.TaskBlindName, - IsReadingShowPreviousResults = trialInfo.IsReadingShowPreviousResults, - IsReadingShowSubjectInfo=trialInfo.IsReadingShowSubjectInfo, - IsExistsClinicalData= isExistsClinicalData, + + + return (result, new + { + VisitTaskId = task.VisitTaskId, + SubjectId = task.SubjectId, + SubjectCode = task.SubjectCode, + ReadingCategory = task.ReadingCategory, + TaskBlindName = task.TaskBlindName, + IsReadingShowPreviousResults = trialInfo.IsReadingShowPreviousResults, + IsReadingShowSubjectInfo = trialInfo.IsReadingShowSubjectInfo, + IsExistsClinicalData = isExistsClinicalData, }); } + #endregion + #region 获取项目已确认的标准 /// /// 获取项目已确认的标准 /// @@ -361,7 +370,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetTrialConfirmCriterionList(GetConfirmCriterionInDto inDto) { - var result= await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.IsConfirm&&x.IsCompleteConfig) + var result = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm && x.IsCompleteConfig) .Select(x => new GetTrialConfirmCriterionListOutDto() { ReadingQuestionCriterionTrialId = x.Id, @@ -369,6 +378,9 @@ namespace IRaCIS.Application.Services }).ToListAsync(); return result; } + #endregion + + #region 配置裁判问题相关 /// /// 获取项目标准的裁判问题 @@ -376,7 +388,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task<(List,object)> GetTrialCriterionJudgeQuestionList(GetTrialCriterionJudgeQuestionListInDto inDto) + public async Task<(List, object)> GetTrialCriterionJudgeQuestionList(GetTrialCriterionJudgeQuestionListInDto inDto) { var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm).FirstOrDefaultAsync(); @@ -385,12 +397,12 @@ namespace IRaCIS.Application.Services .WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null) .Select(x => new GetTrialCriterionJudgeQuestionListOutDto() { - AnswerGroup = JsonConvert.DeserializeObject>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup), + AnswerGroup = JsonConvert.DeserializeObject>(x.AnswerGroup.IsNullOrEmpty() ? "[]" : x.AnswerGroup), AnswerCombination = JsonConvert.DeserializeObject>(x.AnswerCombination.IsNullOrEmpty() ? "[]" : x.AnswerCombination), QuestionName = x.QuestionName, - PageName=x.ReadingCriterionPage.PageName, - TypeValue =x.TypeValue, - JudgeType=x.JudgeType, + PageName = x.ReadingCriterionPage.PageName, + TypeValue = x.TypeValue, + JudgeType = x.JudgeType, ReadingQuestionTrialId = x.Id }).ToListAsync(); @@ -400,7 +412,7 @@ namespace IRaCIS.Application.Services { IsSign = signTime != null, }); - + } /// @@ -415,14 +427,16 @@ namespace IRaCIS.Application.Services { AnswerGroup = JsonConvert.SerializeObject(inDto.AnswerGroup), AnswerCombination = JsonConvert.SerializeObject(inDto.AnswerCombination), - JudgeType= inDto.JudgeType, - }) ; + JudgeType = inDto.JudgeType, + }); var result = await _readingQuestionTrialRepository.SaveChangesAsync(); return ResponseOutput.Ok(result); } + #endregion + #region 获取项目的阅片问题 /// /// 获取项目的阅片问题 /// @@ -438,36 +452,36 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task<(GetTrialReadingQuestionPageDto, object)> GetTrialReadingQuestion(GetTrialReadingQuestionInDto inDto) { - var result = new GetTrialReadingQuestionPageDto(); - var readingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync(); - var query= from data in _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId==inDto.ReadingQuestionCriterionTrialId) + var result = new GetTrialReadingQuestionPageDto(); + var readingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync(); + var query = from data in _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId) - join page in _readingCriterionPageRepository.AsQueryable() on data.ReadingCriterionPageId??default(Guid) equals page.Id into pageTemp - from leftpage in pageTemp.DefaultIfEmpty() + join page in _readingCriterionPageRepository.AsQueryable() on data.ReadingCriterionPageId ?? default(Guid) equals page.Id into pageTemp + from leftpage in pageTemp.DefaultIfEmpty() - join questionAnswer in _readingTaskQuestionAnswerRepository.Where(x=>x.VisitTaskId==inDto.VisitTaskId) on data.Id equals questionAnswer.ReadingQuestionTrialId into questionAnswerTemp - from leftquestionAnswer in questionAnswerTemp.DefaultIfEmpty() - select new GetTrialReadingQuestionOutDto() - { - ReadingQuestionTrialId=data.Id, - ReadingQuestionCriterionTrialId=data.ReadingQuestionCriterionTrialId, - TrialId=data.TrialId, - Type=data.Type, - ParentTriggerValue=data.ParentTriggerValue, - GroupName=data.GroupName, - QuestionName=data.QuestionName, - IsRequired=data.IsRequired, - ShowOrder=data.ShowOrder, - ParentId=data.ParentId, - TypeValue=data.TypeValue, - Answer= leftquestionAnswer.Answer, - ReadingCriterionPageId=data.ReadingCriterionPageId, - PageName= leftpage.PageName, - PageShowOrder = leftpage.ShowOrder, - IsPublicPage=leftpage.IsPublicPage, - }; + join questionAnswer in _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId) on data.Id equals questionAnswer.ReadingQuestionTrialId into questionAnswerTemp + from leftquestionAnswer in questionAnswerTemp.DefaultIfEmpty() + select new GetTrialReadingQuestionOutDto() + { + ReadingQuestionTrialId = data.Id, + ReadingQuestionCriterionTrialId = data.ReadingQuestionCriterionTrialId, + TrialId = data.TrialId, + Type = data.Type, + ParentTriggerValue = data.ParentTriggerValue, + GroupName = data.GroupName, + QuestionName = data.QuestionName, + IsRequired = data.IsRequired, + ShowOrder = data.ShowOrder, + ParentId = data.ParentId, + TypeValue = data.TypeValue, + Answer = leftquestionAnswer.Answer, + ReadingCriterionPageId = data.ReadingCriterionPageId, + PageName = leftpage.PageName, + PageShowOrder = leftpage.ShowOrder, + IsPublicPage = leftpage.IsPublicPage, + }; - var qusetionList =await query.OrderBy(x=>x.ShowOrder).ToListAsync(); + var qusetionList = await query.OrderBy(x => x.ShowOrder).ToListAsync(); var formType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.ReadingQuestionCriterionTrialId).Select(x => x.FormType).FirstOrDefaultAsync(); var groupList = new List(); @@ -479,7 +493,7 @@ namespace IRaCIS.Application.Services if (formType == FormType.MultiplePage) { - qusetionList = qusetionList.Where(x => x.ReadingCriterionPageId != null).ToList(); + qusetionList = qusetionList.Where(x => x.ReadingCriterionPageId != null).ToList(); var readingCriterionPageIds = qusetionList.OrderBy(x => x.PageShowOrder).Select(x => x.ReadingCriterionPageId).Distinct().ToList(); foreach (var item in readingCriterionPageIds) { @@ -491,37 +505,37 @@ namespace IRaCIS.Application.Services IsPage = true, IsPublicPage = firstData.IsPublicPage, }; - - var pageGroupList = newPageQusetionList.Where(x =>x.Type =="group"|| (x.ParentId == null&&x.GroupName.IsNullOrEmpty())).ToList(); - pageGroupList.ForEach(x => - { - this.FindChildQuestion(x, newPageQusetionList); - }); - - page.Childrens = pageGroupList.Where(x=> !(x.Type == "group"&&x.Childrens.Count()==0)).ToList(); + + var pageGroupList = newPageQusetionList.Where(x => x.Type == "group" || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); + pageGroupList.ForEach(x => + { + this.FindChildQuestion(x, newPageQusetionList); + }); + + page.Childrens = pageGroupList.Where(x => !(x.Type == "group" && x.Childrens.Count() == 0)).ToList(); groupList.Add(page); } result.PublicPage = groupList.Where(x => x.IsPublicPage.Value).ToList(); - result.MultiPage= groupList.Where(x => !x.IsPublicPage.Value).ToList(); + result.MultiPage = groupList.Where(x => !x.IsPublicPage.Value).ToList(); } else { qusetionList = qusetionList.Where(x => x.ReadingCriterionPageId == null).ToList(); - - groupList = qusetionList.Where(x => x.Type == "group" || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); - groupList.ForEach(x => - { - this.FindChildQuestion(x, qusetionList); - }); - groupList= groupList.Where(x => !(x.Type == "group" && x.Childrens.Count() == 0)).ToList(); + groupList = qusetionList.Where(x => x.Type == "group" || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); + groupList.ForEach(x => + { + this.FindChildQuestion(x, qusetionList); + }); + + groupList = groupList.Where(x => !(x.Type == "group" && x.Childrens.Count() == 0)).ToList(); result.SinglePage = groupList; } - + @@ -536,34 +550,36 @@ namespace IRaCIS.Application.Services return (result, new { readingTaskState = readingTaskState, - FormType= formType + FormType = formType }); ; } + #endregion + #region 获取阅片任务和答案 /// /// 获取阅片任务和答案 /// /// private async Task> GetTaskAndAnswer(Guid visitTaskId) { - var taskQuery=from questionAnswer in _readingTaskQuestionAnswerRepository.Where(x=>x.VisitTaskId== visitTaskId) - join trialQuestion in _readingQuestionTrialRepository.AsQueryable() on questionAnswer.ReadingQuestionTrialId equals trialQuestion.Id - select new GetTrialReadingQuestionOutDto() - { - ReadingQuestionTrialId = trialQuestion.Id, - ReadingQuestionCriterionTrialId = trialQuestion.ReadingQuestionCriterionTrialId, - TrialId = trialQuestion.TrialId, - Type = trialQuestion.Type, - ParentTriggerValue = trialQuestion.ParentTriggerValue, - GroupName = trialQuestion.GroupName, - QuestionName = trialQuestion.QuestionName, - IsRequired = trialQuestion.IsRequired, - ShowOrder = trialQuestion.ShowOrder, - ParentId = trialQuestion.ParentId, - TypeValue = trialQuestion.TypeValue, - Answer = questionAnswer.Answer - }; + var taskQuery = from questionAnswer in _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId) + join trialQuestion in _readingQuestionTrialRepository.AsQueryable() on questionAnswer.ReadingQuestionTrialId equals trialQuestion.Id + select new GetTrialReadingQuestionOutDto() + { + ReadingQuestionTrialId = trialQuestion.Id, + ReadingQuestionCriterionTrialId = trialQuestion.ReadingQuestionCriterionTrialId, + TrialId = trialQuestion.TrialId, + Type = trialQuestion.Type, + ParentTriggerValue = trialQuestion.ParentTriggerValue, + GroupName = trialQuestion.GroupName, + QuestionName = trialQuestion.QuestionName, + IsRequired = trialQuestion.IsRequired, + ShowOrder = trialQuestion.ShowOrder, + ParentId = trialQuestion.ParentId, + TypeValue = trialQuestion.TypeValue, + Answer = questionAnswer.Answer + }; var qusetionList = await taskQuery.OrderBy(x => x.ShowOrder).ToListAsync(); List groupList = qusetionList.Where(x => x.ParentId == null).ToList(); groupList.ForEach(x => @@ -573,7 +589,9 @@ namespace IRaCIS.Application.Services return groupList; } + #endregion + #region 获取裁判阅片任务信息 /// /// 获取裁判阅片任务信息 /// @@ -592,14 +610,14 @@ namespace IRaCIS.Application.Services { ReadingTaskState = visitTask.ReadingTaskState, JudgeResultTaskId = visitTask.JudgeResultTaskId, - JudgeResultRemark=visitTask.JudgeResultRemark, - JudgeResultImagePath= visitTask.JudgeResultImagePath, + JudgeResultRemark = visitTask.JudgeResultRemark, + JudgeResultImagePath = visitTask.JudgeResultImagePath, VisitTaskInfoList = new List() }; - var visitIds = await _visitTaskRepository.Where(x => x.JudgeVisitTaskId == inDto.VisitTaskId).Select(x => new - { - x.Id, - x.ArmEnum, + var visitIds = await _visitTaskRepository.Where(x => x.JudgeVisitTaskId == inDto.VisitTaskId).Select(x => new + { + x.Id, + x.ArmEnum, }).ToListAsync(); foreach (var item in visitIds) { @@ -607,18 +625,21 @@ namespace IRaCIS.Application.Services judgeInfo.VisitTaskInfoList.Add( new JudgeReadingInfoDto() { - JudgeQuestionAnswerInfoList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == item.Id&&x.ReadingQuestionTrial.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo { + JudgeQuestionAnswerInfoList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == item.Id && x.ReadingQuestionTrial.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo + { Answer = x.Answer, QuestionName = x.ReadingQuestionTrial.QuestionName, }).ToListAsync(), VisitTaskId = item.Id, ArmEnum = item.ArmEnum, TaskReadingQuestionList = taskReadingQuestionList, - }); + }); } return judgeInfo; } + #endregion + #region 保存裁判问题 /// /// 保存裁判问题 /// @@ -631,33 +652,15 @@ namespace IRaCIS.Application.Services { JudgeResultTaskId = inDto.JudgeResultTaskId, JudgeResultRemark = inDto.JudgeResultRemark, - JudgeResultImagePath=inDto.JudgeResultImagePath, + JudgeResultImagePath = inDto.JudgeResultImagePath, }); - var result=await _visitTaskRepository.SaveChangesAsync(); - return ResponseOutput.Ok(result); - } - - /// - /// 提交裁判问题 - /// - /// - /// - [NonDynamicMethod] - public async Task SubmitJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) - { - await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask() - { - JudgeResultTaskId = inDto.JudgeResultTaskId, - ReadingTaskState = ReadingTaskState.HaveSigned, - JudgeResultRemark = inDto.JudgeResultRemark, - SignTime = DateTime.Now, - JudgeResultImagePath=inDto.JudgeResultImagePath, - }); var result = await _visitTaskRepository.SaveChangesAsync(); return ResponseOutput.Ok(result); } + #endregion + #region 获取既往结果 /// /// 获取既往结果 /// @@ -665,11 +668,13 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingPastResultList(GetReadingPastResultListInDto inDto) { - var readingPastResultList =await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId&&x.SubjectId==inDto.SubjectId && x.DoctorUserId == _userInfo.Id - &&x.Id!=inDto.VisitTaskId&&x.ReadingTaskState== ReadingTaskState.HaveSigned).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - return readingPastResultList; + var readingPastResultList = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.SubjectId == inDto.SubjectId && x.DoctorUserId == _userInfo.Id + && x.Id != inDto.VisitTaskId && x.ReadingTaskState == ReadingTaskState.HaveSigned).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + return readingPastResultList; } + #endregion + #region 找子问题 /// /// 找子问题 /// @@ -678,7 +683,7 @@ namespace IRaCIS.Application.Services [NonDynamicMethod] public void FindChildQuestion(GetTrialReadingQuestionOutDto trialReadingQuestion, List questionlists) { - trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.ReadingQuestionTrialId||(trialReadingQuestion.Type == "group"&&x.Type != "group" && x.ParentId==null&&x.GroupName==trialReadingQuestion.GroupName)).ToList(); + trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.ReadingQuestionTrialId || (trialReadingQuestion.Type == "group" && x.Type != "group" && x.ParentId == null && x.GroupName == trialReadingQuestion.GroupName)).ToList(); if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0) { trialReadingQuestion.Childrens.ForEach(x => @@ -687,7 +692,9 @@ namespace IRaCIS.Application.Services }); } } + #endregion + #region 保存任务问题 /// /// 保存任务问题 /// @@ -712,17 +719,19 @@ namespace IRaCIS.Application.Services await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask() { ReadingTaskState = ReadingTaskState.Reading, - + }); await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList); var result = await _visitTaskRepository.SaveChangesAsync(); return ResponseOutput.Ok(result); } + #endregion + #region 提交问题 /// - /// 提交问题 + /// 提交访视阅片问题 /// /// /// @@ -733,8 +742,9 @@ namespace IRaCIS.Application.Services await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask() { ReadingTaskState = ReadingTaskState.HaveSigned, - SignTime=DateTime.Now, + SignTime = DateTime.Now, }); + var result = await _visitTaskRepository.SaveChangesAsync(); // 触裁判任务 await this.TriggerJudgeQuestion(inDto.VisitTaskId); @@ -745,6 +755,53 @@ namespace IRaCIS.Application.Services return ResponseOutput.Ok(result); } + + + /// + /// 提交裁判问题 + /// + /// + /// + [NonDynamicMethod] + public async Task SubmitJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto) + { + await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask() + { + JudgeResultTaskId = inDto.JudgeResultTaskId, + ReadingTaskState = ReadingTaskState.HaveSigned, + JudgeResultRemark = inDto.JudgeResultRemark, + SignTime = DateTime.Now, + JudgeResultImagePath = inDto.JudgeResultImagePath, + }); + var result = await _visitTaskRepository.SaveChangesAsync(); + return ResponseOutput.Ok(result); + } + + + + /// + /// 提交全局阅片结果 + /// + /// + /// + [NonDynamicMethod] + public async Task SubmitGlobalReadingInfo(SaveGlobalReadingInfoInDto inDto) + { + var result = await this.SaveGlobalReadingInfo(inDto); + + return result; + } + + + //public async Task SubmitTaskChangeState() + //{ + + //} + #endregion + + + + /// /// 完成阅片修改状态 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index 064d67de5..5b9bec5b2 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -267,7 +267,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingVisitList(GetReadingVisitListInDto inDto) { - var maxVisitNum = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&(x.IsTakeEffect== ReadingPeriodStatus.TakeEffect||x.IsTakeEffect==ReadingPeriodStatus.Revocation)).MaxAsync(x => x.ExpirationVisitNum)??0; + var maxVisitNum = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&x.IsTakeEffect== ReadingPeriodStatus.TakeEffect).MaxAsync(x => x.ExpirationVisitNum)??0; var thisVisitNum = await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Select(x => x.ExpirationVisitNum).FirstOrDefaultAsync() ?? -1; List result = await _visitStageRepository.Where(x => x.TrialId == inDto.TrialId ).Where(x=>x.VisitNum== thisVisitNum || x.VisitNum >= maxVisitNum).Select(x => new GetReadingVisitListOutDto() {