diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index e86a619b6..e9cc5f089 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -1955,6 +1955,11 @@
TaskAllocationRuleAddOrEdit 列表查询参数模型
+
+
+ 阅片期
+
+
VisitTaskView 列表视图模型
@@ -2721,6 +2726,21 @@
1 Mint、2 PACS
+
+
+ QC流程 0 不审,1 单审,2双审
+
+
+
+
+ 影像一致性核查
+
+
+
+
+ 流程是否确认
+
+
是否有 入组评估确认
@@ -4227,6 +4247,12 @@
+
+
+ 完成阅片修改状态
+
+
+
添加阅片期任务
@@ -4237,14 +4263,14 @@
触发裁判任务(新)
-
+
触发裁判任务(老)
-
+
diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs
index b118b83c7..da8ee4f48 100644
--- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs
@@ -138,6 +138,11 @@ namespace IRaCIS.Core.Application.ViewModel
//裁判的时候传递
public List JudgeVisitTaskIdList { get; set; } = new List();
+
+ ///
+ /// 阅片期
+ ///
+ public List ReadingGenerataTaskList= new List();
}
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
index 195631a55..1264398e9 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
@@ -317,62 +317,61 @@ namespace IRaCIS.Core.Application.Service
{
if (trialConfig.ReadingType == ReadingMethod.Double)
{
- //每个访视 根据项目配置生成任务 双审生成两个
- var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
+ foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
{
- TrialId = trialId,
- //SubjectId = subjectVisit.SubjectId,
- //IsUrgent = subjectVisit.IsUrgent,
- //TaskBlindName = subjectVisit.BlindName,
- //TaskName = subjectVisit.VisitName,
- ArmEnum = Arm.DoubleReadingArm1,//特殊
- Code = currentMaxCodeInt + 1,
- //SourceSubjectVisitId = subjectVisit.Id,
- TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
- ReadingCategory = ReadingCategory.ReadingPeriod
- });
-
- var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
- {
- TrialId = trialId,
- //SubjectId = subjectVisit.SubjectId,
- //IsUrgent = subjectVisit.IsUrgent,
- //TaskBlindName = subjectVisit.BlindName,
- //TaskName = subjectVisit.VisitName,
- ArmEnum = Arm.DoubleReadingArm2,//特殊
- Code = currentMaxCodeInt + 2,
- //SourceSubjectVisitId = subjectVisit.Id,
- TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
- ReadingCategory = ReadingCategory.ReadingPeriod
- });
-
- currentMaxCodeInt = currentMaxCodeInt + 2;
-
- _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
-
-
+ //每个访视 根据项目配置生成任务 双审生成两个
+ var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
+ {
+ TrialId = trialId,
+ SubjectId = item.SubjectId,
+ IsUrgent = item.IsUrgent,
+ TaskName = item.ReadingName,
+ ArmEnum = Arm.DoubleReadingArm1,//特殊
+ Code = currentMaxCodeInt + 1,
+ SouceReadModuleId=item.ReadModuleId,
+ TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
+ ReadingCategory = ReadingCategory.ReadingPeriod
+ });
+ var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
+ {
+ TrialId = trialId,
+ SubjectId = item.SubjectId,
+ IsUrgent = item.IsUrgent,
+ TaskName = item.ReadingName,
+ ArmEnum = Arm.DoubleReadingArm2,//特殊
+ Code = currentMaxCodeInt + 2,
+ SouceReadModuleId = item.ReadModuleId,
+ TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
+ ReadingCategory = ReadingCategory.ReadingPeriod
+ });
+ currentMaxCodeInt = currentMaxCodeInt + 2;
+ _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
+ }
}
else
{
- var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
+ foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
{
- TrialId = trialId,
- //SubjectId = subjectVisit.SubjectId,
- //IsUrgent = subjectVisit.IsUrgent,
- //TaskBlindName = subjectVisit.BlindName,
- //TaskName = subjectVisit.VisitName,
- ArmEnum = Arm.SingleReadingArm, //特殊
- Code = currentMaxCodeInt + 1,
- //SourceSubjectVisitId = subjectVisit.Id,
- TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
- ReadingCategory = ReadingCategory.ReadingPeriod
- });
+ var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
+ {
+ TrialId = trialId,
+ SubjectId = item.SubjectId,
+ IsUrgent = item.IsUrgent,
+ TaskName = item.ReadingName,
+ ArmEnum = Arm.SingleReadingArm, //特殊
+ Code = currentMaxCodeInt + 1,
+ SouceReadModuleId = item.ReadModuleId,
+ TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
+ ReadingCategory = ReadingCategory.ReadingPeriod
+ });
- singleTask.AllocateTime = DateTime.Now;
+ singleTask.AllocateTime = DateTime.Now;
- currentMaxCodeInt = currentMaxCodeInt + 1;
+ currentMaxCodeInt = currentMaxCodeInt + 1;
- _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
+ _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
+ }
+
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
index cea9696f5..b9d1ab155 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
@@ -310,58 +310,122 @@ namespace IRaCIS.Application.Services
ReadingTaskState = ReadingTaskState.HaveSigned
});
var result = await _visitTaskRepository.SaveChangesAsync();
+ // 触裁判任务
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
-
+ // 添加阅片期任务
+ await this.AddReadingTask(inDto.VisitTaskId);
+
+ // 完成阅片修改状态
+ await this.FinishReadUpdateState(inDto.VisitTaskId);
return ResponseOutput.Ok(result);
}
-
- public async Task FinishReadUpdateState()
+ ///
+ /// 完成阅片修改状态
+ ///
+ ///
+ private async Task FinishReadUpdateState(Guid visitTaskId)
{
-
- }
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
+ if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
+ {
+
+ if (taskInfo.SouceReadModuleId != null)
+ {
+ await _readModuleRepository.UpdatePartialFromQueryAsync(taskInfo.SouceReadModuleId.Value, x => new ReadModule
+ {
+ ReadingStatus = ReadingStatusEnum.ReadCompleted
+ });
+ }
+ else if (taskInfo.SourceSubjectVisitId != null)
+ {
+ await _subjectVisitRepository.UpdatePartialFromQueryAsync(taskInfo.SourceSubjectVisitId.Value, x => new SubjectVisit
+ {
+ ReadingStatus = ReadingStatusEnum.ReadCompleted
+ });
+ }
+
+ await _subjectVisitRepository.SaveChangesAsync();
+ }
+ }
///
/// 添加阅片期任务
///
///
- private async Task AddReadingTask(Guid VisitTaskId)
+ private async Task AddReadingTask(Guid visitTaskId)
{
// ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********////
-
-
- var taskInfo = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
-
- // 任务类型
- switch (taskInfo.ReadingCategory)
+ #region 建立关系
+ Dictionary typeChange = new Dictionary();
+ typeChange.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit);
+ typeChange.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit);
+ typeChange.Add(ModuleTypeEnum.Read, ReadingCategory.ReadingPeriod);
+ typeChange.Add(ModuleTypeEnum.Global, ReadingCategory.Global);
+ typeChange.Add(ModuleTypeEnum.Referee, ReadingCategory.Judge);
+ typeChange.Add(ModuleTypeEnum.Oncology, ReadingCategory.Oncology);
+ #endregion
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
+ List needReadList = new List();
+ if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId&&x.SouceReadModuleId== taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
{
- case ReadingCategory.Visit:
- //if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
- //{
- // var needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
- // .Select(x=> new ReadingGenerataTaskDTO {
- // IsUrgent=x.IsUrgent,
- // SubjectId=x.SubjectId,
- // ReadingName=
- // }).ToListAsync();
- // if()
+ // 任务类型
+ switch (taskInfo.ReadingCategory)
+ {
+ case ReadingCategory.Visit:
+ needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
+ .Select(x => new ReadingGenerataTaskDTO
+ {
+ IsUrgent = x.IsUrgent ?? false,
+ SubjectId = x.SubjectId,
+ ReadingName = x.ModuleName,
+ ReadModuleId = x.Id,
+ ReadingCategory = typeChange[x.ModuleType],
+ }).ToListAsync();
+ if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.ReadingPeriod))
+ {
+ needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList();
+ }
+ needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
+ await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
+ {
-
- //}
- break;
+ ReadingCategory = ReadingCategory.ReadingPeriod,
+ TrialId = taskInfo.TrialId,
+ ReadingGenerataTaskList = needReadList
+ }) ;
+ break;
+ // 肿瘤学
+ case ReadingCategory.ReadingPeriod:
+ var subjectId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
+ needReadList=await _readModuleRepository.Where(x => x.SubjectVisitId == subjectId&&x.ModuleType==ModuleTypeEnum.Oncology)
+ .Select(x => new ReadingGenerataTaskDTO
+ {
+ IsUrgent = x.IsUrgent ?? false,
+ SubjectId = x.SubjectId,
+ ReadingName = x.ModuleName,
+ ReadModuleId = x.Id,
+ ReadingCategory = typeChange[x.ModuleType],
+ }).ToListAsync();
+ needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
+ break;
+ }
}
+
+
+
}
///
/// 触发裁判任务(新)
///
- ///
+ ///
///
- private async Task TriggerJudgeQuestionNew(Guid VisitTaskId)
+ private async Task TriggerJudgeQuestionNew(Guid visitTaskId)
{
- var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
+ var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned &&x.ReadingCategory!= ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
if (visitTaskids.Count == 2)
{
@@ -423,11 +487,11 @@ namespace IRaCIS.Application.Services
///
/// 触发裁判任务(老)
///
- ///
+ ///
///
- private async Task TriggerJudgeQuestionOld(Guid VisitTaskId)
+ private async Task TriggerJudgeQuestionOld(Guid visitTaskId)
{
- var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
+ var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
if (visitTaskids.Count == 2)
{