From 81600a16e8c43e133f673e8daae642b53009f3a2 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 25 Jul 2022 17:44:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Allocation/VisitTaskHelpeService.cs | 1 + .../Service/Reading/ReadModuleService.cs | 79 +++++++++++++++++-- .../Reading/ReadingPeriodSetService.cs | 77 ++++++++++++++++++ 3 files changed, 149 insertions(+), 8 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index d62dcb3e1..5dc760277 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -702,6 +702,7 @@ namespace IRaCIS.Core.Application.Service ReadingCategory = ReadingCategory.Judge, VisitTaskNum = firstTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge], TrialId = firstTask.TrialId, + TaskBlindName = firstTask.TaskName, Code = currentMaxCodeInt + 1, SourceSubjectVisitId = firstTask.SourceSubjectVisitId, SouceReadModuleId = firstTask.SouceReadModuleId, diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs index 47b72f26e..f901cf180 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs @@ -12,6 +12,8 @@ using Panda.DynamicWebApi.Attributes; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Infra.EFCore.Common; using System.Linq.Dynamic.Core; +using IRaCIS.Core.Application.Service; +using IRaCIS.Core.Application.ViewModel; namespace IRaCIS.Application.Services { @@ -27,6 +29,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _visitstageRepository; private readonly IRepository _userRepository; private readonly IRepository _trialRepository; + private readonly IVisitTaskHelpeService _visitTaskHelpeService; private readonly IRepository _visitTaskRepository; private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _readModuleViewRepository; @@ -41,6 +44,7 @@ namespace IRaCIS.Application.Services IRepository visitstageRepository, IRepository UserRepository, IRepository trialRepository, + IVisitTaskHelpeService visitTaskHelpeService, IRepository visitTaskRepository, IRepository clinicalDataTrialSetRepository, IRepository readModuleViewRepository, @@ -55,6 +59,7 @@ namespace IRaCIS.Application.Services this._visitstageRepository = visitstageRepository; this._userRepository = UserRepository; this._trialRepository = trialRepository; + this._visitTaskHelpeService = visitTaskHelpeService; this._visitTaskRepository = visitTaskRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; this._readModuleViewRepository = readModuleViewRepository; @@ -333,20 +338,78 @@ namespace IRaCIS.Application.Services if (visit != null) { - await _readModuleRepository.AddAsync(new ReadModule() + var readModuleData = new ReadModule() { - Id= NewId.NextGuid(), + Id = NewId.NextGuid(), SubjectId = dto.SubjectId, - ModuleType = dto.ReadingSetType==ReadingSetType.ImageReading? ModuleTypeEnum.Global: ModuleTypeEnum.Oncology, + ModuleType = dto.ReadingSetType == ReadingSetType.ImageReading ? ModuleTypeEnum.Global : ModuleTypeEnum.Oncology, IsUrgent = visit.IsUrgent, ModuleName = dto.Name, SubjectVisitId = visit.Id, - ReadingSetType= dto.ReadingSetType, - TrialId= dto.TrialId, - VisitNum= visit.VisitNum, + ReadingSetType = dto.ReadingSetType, + TrialId = dto.TrialId, + VisitNum = visit.VisitNum, ReadingStatus = ReadingStatusEnum.TaskAllocate, - - }); + + }; + + await _readModuleRepository.AddAsync(readModuleData); + + // 判断是否要添加肿瘤学或者全局阅片任务 + switch (readModuleData.ModuleType) + { + case ModuleTypeEnum.Global: + var taskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.SourceSubjectVisitId == readModuleData.SubjectVisitId && x.ReadingTaskState == ReadingTaskState.HaveSigned); + if (taskInfo != null) + { + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() + { + OriginalVisitId = taskInfo.Id, + ReadingCategory = GenerateTaskCategory.Global, + TrialId = dto.TrialId, + ReadingGenerataTaskList = new List() { + new ReadingGenerataTaskDTO() + { + IsUrgent = readModuleData.IsUrgent ?? false, + SubjectId = readModuleData.SubjectId, + VisitNum=readModuleData.VisitNum, + ReadingName = readModuleData.ModuleName, + ReadModuleId =readModuleData.Id, + ReadingCategory = ReadingCategory.Global, + } + } + }); + } + break; + + case ModuleTypeEnum.Oncology: + var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId && x.ModuleType == ModuleTypeEnum.Global).FirstOrDefaultAsync(); + if (globalModule != null) + { + var globalTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.SouceReadModuleId == globalModule.Id && x.ReadingTaskState == ReadingTaskState.HaveSigned); + if (globalTaskInfo != null) + { + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() + { + OriginalVisitId = globalTaskInfo.Id, + ReadingCategory = GenerateTaskCategory.Oncology, + TrialId = dto.TrialId, + ReadingGenerataTaskList = new List() { + new ReadingGenerataTaskDTO() + { + IsUrgent = readModuleData.IsUrgent ?? false, + SubjectId = readModuleData.SubjectId, + VisitNum=readModuleData.VisitNum, + ReadingName = readModuleData.ModuleName, + ReadModuleId =readModuleData.Id, + ReadingCategory = ReadingCategory.Oncology, + } + } + }); + } + } + break; + } var res = await _readModuleRepository.SaveChangesAsync(); return ResponseOutput.Ok(res); } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index d39e2cc3b..3057529e3 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -11,6 +11,8 @@ using MassTransit; using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infrastructure.Extention; +using IRaCIS.Core.Application.Service; +using IRaCIS.Core.Application.ViewModel; namespace IRaCIS.Application.Services { @@ -25,6 +27,8 @@ namespace IRaCIS.Application.Services private readonly IRepository _readingPeriodSetRepository; private readonly IRepository _readModuleRepository; private readonly IRepository _visitStageRepository; + private readonly IRepository _visitTaskRepository; + private readonly IVisitTaskHelpeService _visitTaskHelpeService; private readonly IRepository _readingPeriodPlanRepository; private readonly IRepository _siteSetRepository; @@ -34,6 +38,8 @@ namespace IRaCIS.Application.Services IRepository ReadingPeriodSetRepository, IRepository readModuleRepository, IRepository visitStageRepository, + IRepository visitTaskRepository, + IVisitTaskHelpeService visitTaskHelpeService, IRepository readingPeriodPlanRepository, IRepository SiteSetRepository, IRepository subjectRepository @@ -43,6 +49,8 @@ namespace IRaCIS.Application.Services _readingPeriodSetRepository = ReadingPeriodSetRepository; this._readModuleRepository = readModuleRepository; this._visitStageRepository = visitStageRepository; + this._visitTaskRepository = visitTaskRepository; + this._visitTaskHelpeService = visitTaskHelpeService; this._readingPeriodPlanRepository = readingPeriodPlanRepository; _siteSetRepository = SiteSetRepository; @@ -326,7 +334,76 @@ namespace IRaCIS.Application.Services }); }; + + // 判断是否要添加肿瘤学或者全局阅片任务 + var subjectVisitIds = readModules.Select(x => x.SubjectVisitId).ToList(); + switch (readingPeriodSet.ReadingSetType) + { + case ReadingSetType.ImageReading: + + var taskInfoList = await _visitTaskRepository.Where(x => subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync(); + + foreach (var item in taskInfoList) + { + + var readModule = readModules.Where(x => x.SubjectVisitId == item.SourceSubjectVisitId).FirstOrDefault(); + if (readModule != null) + { + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() + { + OriginalVisitId = item.Id, + ReadingCategory = GenerateTaskCategory.Global, + TrialId = item.TrialId, + ReadingGenerataTaskList = new List() { + new ReadingGenerataTaskDTO() + { + IsUrgent = readModule.IsUrgent??false, + SubjectId = readModule.SubjectId, + VisitNum=readModule.VisitNum, + ReadingName = readModule.ModuleName, + ReadModuleId =readModule.Id, + ReadingCategory = ReadingCategory.Global, + } + } + }); + } + } + break; + + case ReadingSetType.TumorReading: + var globalModuleIds = await _readModuleRepository.Where(x => subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync(); + + + var globalTaskInfo = await _visitTaskRepository.Where(x => globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync(); + foreach (var item in globalTaskInfo) + { + var readModule = readModules.Where(x => x.SubjectVisitId == item.SourceSubjectVisitId).FirstOrDefault(); + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() + { + OriginalVisitId = item.Id, + ReadingCategory = GenerateTaskCategory.Oncology, + TrialId = item.TrialId, + ReadingGenerataTaskList = new List() { + new ReadingGenerataTaskDTO() + { + IsUrgent = readModule.IsUrgent ?? false, + SubjectId = readModule.SubjectId, + VisitNum=readModule.VisitNum, + ReadingName = readModule.ModuleName, + ReadModuleId =readModule.Id, + ReadingCategory = ReadingCategory.Oncology, + } + } + }); + } + + break; + } + await _readModuleRepository.AddRangeAsync(readModules); + + + } else {