修改一版

Uat_Study
he 2022-07-25 17:44:03 +08:00
parent c8db183b43
commit 81600a16e8
3 changed files with 149 additions and 8 deletions

View File

@ -702,6 +702,7 @@ namespace IRaCIS.Core.Application.Service
ReadingCategory = ReadingCategory.Judge, ReadingCategory = ReadingCategory.Judge,
VisitTaskNum = firstTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge], VisitTaskNum = firstTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge],
TrialId = firstTask.TrialId, TrialId = firstTask.TrialId,
TaskBlindName = firstTask.TaskName,
Code = currentMaxCodeInt + 1, Code = currentMaxCodeInt + 1,
SourceSubjectVisitId = firstTask.SourceSubjectVisitId, SourceSubjectVisitId = firstTask.SourceSubjectVisitId,
SouceReadModuleId = firstTask.SouceReadModuleId, SouceReadModuleId = firstTask.SouceReadModuleId,

View File

@ -12,6 +12,8 @@ using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using System.Linq.Dynamic.Core; using System.Linq.Dynamic.Core;
using IRaCIS.Core.Application.Service;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
{ {
@ -27,6 +29,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository<VisitStage> _visitstageRepository; private readonly IRepository<VisitStage> _visitstageRepository;
private readonly IRepository<User> _userRepository; private readonly IRepository<User> _userRepository;
private readonly IRepository<Trial> _trialRepository; private readonly IRepository<Trial> _trialRepository;
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
private readonly IRepository<VisitTask> _visitTaskRepository; private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository; private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
private readonly IRepository<ReadModuleView> _readModuleViewRepository; private readonly IRepository<ReadModuleView> _readModuleViewRepository;
@ -41,6 +44,7 @@ namespace IRaCIS.Application.Services
IRepository<VisitStage> visitstageRepository, IRepository<VisitStage> visitstageRepository,
IRepository<User> UserRepository, IRepository<User> UserRepository,
IRepository<Trial> trialRepository, IRepository<Trial> trialRepository,
IVisitTaskHelpeService visitTaskHelpeService,
IRepository<VisitTask> visitTaskRepository, IRepository<VisitTask> visitTaskRepository,
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository, IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
IRepository<ReadModuleView> readModuleViewRepository, IRepository<ReadModuleView> readModuleViewRepository,
@ -55,6 +59,7 @@ namespace IRaCIS.Application.Services
this._visitstageRepository = visitstageRepository; this._visitstageRepository = visitstageRepository;
this._userRepository = UserRepository; this._userRepository = UserRepository;
this._trialRepository = trialRepository; this._trialRepository = trialRepository;
this._visitTaskHelpeService = visitTaskHelpeService;
this._visitTaskRepository = visitTaskRepository; this._visitTaskRepository = visitTaskRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
this._readModuleViewRepository = readModuleViewRepository; this._readModuleViewRepository = readModuleViewRepository;
@ -333,7 +338,7 @@ namespace IRaCIS.Application.Services
if (visit != null) if (visit != null)
{ {
await _readModuleRepository.AddAsync(new ReadModule() var readModuleData = new ReadModule()
{ {
Id = NewId.NextGuid(), Id = NewId.NextGuid(),
SubjectId = dto.SubjectId, SubjectId = dto.SubjectId,
@ -346,7 +351,65 @@ namespace IRaCIS.Application.Services
VisitNum = visit.VisitNum, VisitNum = visit.VisitNum,
ReadingStatus = ReadingStatusEnum.TaskAllocate, 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<ReadingGenerataTaskDTO>() {
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<ReadingGenerataTaskDTO>() {
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(); var res = await _readModuleRepository.SaveChangesAsync();
return ResponseOutput.Ok(res); return ResponseOutput.Ok(res);
} }

View File

@ -11,6 +11,8 @@ using MassTransit;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Infrastructure.Extention;
using IRaCIS.Core.Application.Service;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
{ {
@ -25,6 +27,8 @@ namespace IRaCIS.Application.Services
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository; private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
private readonly IRepository<ReadModule> _readModuleRepository; private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<VisitStage> _visitStageRepository; private readonly IRepository<VisitStage> _visitStageRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository; private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
private readonly IRepository<Site> _siteSetRepository; private readonly IRepository<Site> _siteSetRepository;
@ -34,6 +38,8 @@ namespace IRaCIS.Application.Services
IRepository<ReadingPeriodSet> ReadingPeriodSetRepository, IRepository<ReadingPeriodSet> ReadingPeriodSetRepository,
IRepository<ReadModule> readModuleRepository, IRepository<ReadModule> readModuleRepository,
IRepository<VisitStage> visitStageRepository, IRepository<VisitStage> visitStageRepository,
IRepository<VisitTask> visitTaskRepository,
IVisitTaskHelpeService visitTaskHelpeService,
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository, IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
IRepository<Site> SiteSetRepository, IRepository<Site> SiteSetRepository,
IRepository<Subject> subjectRepository IRepository<Subject> subjectRepository
@ -43,6 +49,8 @@ namespace IRaCIS.Application.Services
_readingPeriodSetRepository = ReadingPeriodSetRepository; _readingPeriodSetRepository = ReadingPeriodSetRepository;
this._readModuleRepository = readModuleRepository; this._readModuleRepository = readModuleRepository;
this._visitStageRepository = visitStageRepository; this._visitStageRepository = visitStageRepository;
this._visitTaskRepository = visitTaskRepository;
this._visitTaskHelpeService = visitTaskHelpeService;
this._readingPeriodPlanRepository = readingPeriodPlanRepository; this._readingPeriodPlanRepository = readingPeriodPlanRepository;
_siteSetRepository = SiteSetRepository; _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<ReadingGenerataTaskDTO>() {
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<ReadingGenerataTaskDTO>() {
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); await _readModuleRepository.AddRangeAsync(readModules);
} }
else else
{ {