diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index bded9a2b9..c66972069 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -108,25 +108,6 @@ namespace IRaCIS.Application.Services
#region 病灶的拆分与合并
-
-
- #endregion
-
-
-
- #region 阅片期 -全局和肿瘤学任务的生成
-
-
- #endregion
-
-
- #region 阅片页面 关联信息查询
-
-
-
- #endregion
-
-
///
/// 拆分病灶
///
@@ -135,11 +116,11 @@ namespace IRaCIS.Application.Services
public async Task SplitLesion(SplitLesionInDto inDto)
{
await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
- var rowAnswer = await _readingTableAnswerRowInfoRepository.Where(x =>x.Id==inDto.RowId).AsNoTracking().FirstNotNullAsync();
- var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == rowAnswer.RowIndex && x.QuestionId == inDto.QuestionId).Include(x=>x.ReadingTableQuestionTrial).ToListAsync();
- var maxRowIndex = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId&&x.RowIndex< Math.Floor(rowAnswer.RowIndex+1)).OrderByDescending(x => x.RowIndex).Select(x => x.RowIndex).FirstOrDefaultAsync();
+ var rowAnswer = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).AsNoTracking().FirstNotNullAsync();
+ var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == rowAnswer.RowIndex && x.QuestionId == inDto.QuestionId).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
+ var maxRowIndex = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.RowIndex < Math.Floor(rowAnswer.RowIndex + 1)).OrderByDescending(x => x.RowIndex).Select(x => x.RowIndex).FirstOrDefaultAsync();
var newRowIndex = maxRowIndex + (decimal)0.01;
-
+
rowAnswer.RowIndex = newRowIndex;
rowAnswer.MergeRowId = null;
rowAnswer.SplitOrMergeType = SplitOrMergeType.Split;
@@ -180,7 +161,7 @@ namespace IRaCIS.Application.Services
{
await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
- var rowsInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId &&(x.Id == inDto.MainRowId || x.Id == inDto.MergeRowId)).ToListAsync();
+ var rowsInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.Id == inDto.MainRowId || x.Id == inDto.MergeRowId)).ToListAsync();
if (rowsInfo.Count() != 2)
{
@@ -197,13 +178,13 @@ namespace IRaCIS.Application.Services
QuestionMark.ShortAxis,
};
- var mainAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.RowId == minaid).Include(x=>x.ReadingTableQuestionTrial).ToListAsync();
+ var mainAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.RowId == minaid).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
foreach (var item in mainAnswer)
{
- await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x=>x.RowId== mergeid&&x.TableQuestionId==item.TableQuestionId, x => new ReadingTableQuestionAnswer()
+ await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeid && x.TableQuestionId == item.TableQuestionId, x => new ReadingTableQuestionAnswer()
{
- Answer= needRemoveMark.Contains(item.ReadingTableQuestionTrial.QuestionMark)?string.Empty:item.Answer,
+ Answer = needRemoveMark.Contains(item.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : item.Answer,
});
}
@@ -227,6 +208,149 @@ namespace IRaCIS.Application.Services
}
+
+
+
+ #endregion
+
+
+
+ #region 阅片期 -全局和肿瘤学任务的生成
+
+ ///
+ /// 添加阅片期任务
+ ///
+ ///
+ private async Task AddReadingTask(Guid visitTaskId)
+ {
+ // ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********////
+ #region 建立关系
+ // 访视阅完产生 全局
+ Dictionary typeChangeDic = new Dictionary();
+ typeChangeDic.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit);
+ typeChangeDic.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit);
+ //typeChange.Add(ModuleTypeEnum.Read, ReadingCategory.ReadingPeriod);
+ typeChangeDic.Add(ModuleTypeEnum.Global, ReadingCategory.Global);
+ typeChangeDic.Add(ModuleTypeEnum.Referee, ReadingCategory.Judge);
+ typeChangeDic.Add(ModuleTypeEnum.Oncology, ReadingCategory.Oncology);
+ #endregion
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
+ List needReadList = new List();
+ if (!taskInfo.IsAnalysisCreate)
+ {
+ // 任务类型
+ switch (taskInfo.ReadingCategory)
+ {
+ case ReadingCategory.Visit:
+ needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId &&
+
+ x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
+ x.ReadingSetType == ReadingSetType.ImageReading)
+ .Select(x => new ReadingGenerataTaskDTO
+ {
+ IsUrgent = x.IsUrgent ?? false,
+ SubjectId = x.SubjectId,
+ VisitNum = x.VisitNum,
+ ReadingName = x.ModuleName,
+ ReadModuleId = x.Id,
+ ReadingCategory = typeChangeDic[x.ModuleType],
+ }).ToListAsync();
+ if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global))
+ {
+ 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()
+ {
+ OriginalVisitId = visitTaskId,
+ ReadingCategory = GenerateTaskCategory.Global,
+ TrialId = taskInfo.TrialId,
+ ReadingGenerataTaskList = needReadList
+ });
+ break;
+ // 肿瘤学
+ case ReadingCategory.Global:
+ var subjectVisitId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
+ var oncologyReadId = await _readModuleRepository.Where(x => x.SubjectVisitId == subjectVisitId && x.ModuleType == ModuleTypeEnum.Oncology
+ && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
+
+
+ ).Select(x => x.Id).FirstOrDefaultAsync();
+ await AddOncologyTask(oncologyReadId);
+ break;
+ }
+ }
+
+
+
+
+
+ }
+
+ #endregion
+
+
+ #region 阅片页面 关联信息查询 以及基本验证
+
+ ///
+ /// 获取既往任务名称和编号
+ ///
+ ///
+ [HttpPost]
+ public async Task> GetReadingPastResultList(GetReadingPastResultListInDto inDto)
+ {
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
+ var readingPastResultList = await _visitTaskRepository.Where(x =>
+ x.TrialId == taskInfo.TrialId &&
+ x.SubjectId == taskInfo.SubjectId &&
+ x.ArmEnum == taskInfo.ArmEnum &&
+ x.Id != inDto.VisitTaskId &&
+ x.DoctorUserId == taskInfo.DoctorUserId &&
+ x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
+ x.ReadingTaskState == ReadingTaskState.HaveSigned &&
+ x.TaskState == TaskState.Effect &&
+ x.IsAnalysisCreate == taskInfo.IsAnalysisCreate)
+ .WhereIf(taskInfo.ReadingCategory != ReadingCategory.Visit, x => x.ReadingCategory == taskInfo.ReadingCategory)
+
+ .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.VisitTaskNum).ToListAsync();
+ return readingPastResultList;
+ }
+
+ ///
+ /// 获取阅片的受试者信息
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetReadingSubjectInfo(GetReadingSubjectInfoInDto inDto)
+ {
+ var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstOrDefaultAsync();
+ var subjectCode = await _subjectRepository.Where(x => x.Id == visitTask.SubjectId).Select(x => x.Code).FirstOrDefaultAsync();
+
+ var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == visitTask.TrialReadingCriterionId).Select(x => new
+ {
+ x.IsReadingShowPreviousResults,
+ x.IsReadingShowSubjectInfo
+ }).FirstOrDefaultAsync();
+ var trialInfo = await _trialRepository.Where(x => x.Id == visitTask.TrialId).Select(x => new
+ {
+ x.ClinicalInformationTransmissionEnum,
+ }).FirstOrDefaultAsync();
+
+ return new GetReadingSubjectInfoOutDto()
+ {
+ VisitTaskId = visitTask.Id,
+ SubjectId = visitTask.SubjectId,
+ SubjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? subjectCode : visitTask.BlindSubjectCode,
+ ReadingCategory = visitTask.ReadingCategory,
+ TaskBlindName = visitTask.TaskBlindName,
+ IsReadingShowPreviousResults = criterionInfo.IsReadingShowPreviousResults,
+ IsReadingShowSubjectInfo = criterionInfo.IsReadingShowSubjectInfo,
+
+ };
+ }
+
+
///
/// 验证是否为基线访视任务
///
@@ -236,7 +360,7 @@ namespace IRaCIS.Application.Services
private async Task VerifyIsBaseLineTask(Guid visitTaskId)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
- if (taskinfo.ReadingCategory!=ReadingCategory.Visit)
+ if (taskinfo.ReadingCategory != ReadingCategory.Visit)
{
throw new BusinessValidationFailedException("当前任务不是访视任务");
}
@@ -247,6 +371,10 @@ namespace IRaCIS.Application.Services
}
}
+
+
+
+
///
/// 根据任务ID获取ReadingTool
///
@@ -261,6 +389,11 @@ namespace IRaCIS.Application.Services
return result;
}
+ #endregion
+
+
+
+
#region 表格问题相关
///
@@ -853,9 +986,6 @@ namespace IRaCIS.Application.Services
#endregion
-
-
-
#region 获取下一个阅片任务
///
@@ -1089,68 +1219,7 @@ namespace IRaCIS.Application.Services
}
#endregion
-
-
- ///
- /// 获取阅片的受试者信息
- ///
- ///
- ///
- [HttpPost]
- public async Task GetReadingSubjectInfo(GetReadingSubjectInfoInDto inDto)
- {
- var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstOrDefaultAsync();
- var subjectCode = await _subjectRepository.Where(x => x.Id == visitTask.SubjectId).Select(x => x.Code).FirstOrDefaultAsync();
-
- var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == visitTask.TrialReadingCriterionId).Select(x => new
- {
- x.IsReadingShowPreviousResults,
- x.IsReadingShowSubjectInfo
- }).FirstOrDefaultAsync();
- var trialInfo = await _trialRepository.Where(x => x.Id == visitTask.TrialId).Select(x => new
- {
- x.ClinicalInformationTransmissionEnum,
- }).FirstOrDefaultAsync();
-
- return new GetReadingSubjectInfoOutDto()
- {
- VisitTaskId = visitTask.Id,
- SubjectId = visitTask.SubjectId,
- SubjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? subjectCode : visitTask.BlindSubjectCode,
- ReadingCategory = visitTask.ReadingCategory,
- TaskBlindName = visitTask.TaskBlindName,
- IsReadingShowPreviousResults = criterionInfo.IsReadingShowPreviousResults,
- IsReadingShowSubjectInfo = criterionInfo.IsReadingShowSubjectInfo,
-
- };
- }
-
- #region 获取既往结果
- ///
- /// 获取既往结果
- ///
- ///
- [HttpPost]
- public async Task> GetReadingPastResultList(GetReadingPastResultListInDto inDto)
- {
- var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
- var readingPastResultList = await _visitTaskRepository.Where(x =>
- x.TrialId == taskInfo.TrialId &&
- x.SubjectId == taskInfo.SubjectId &&
- x.ArmEnum == taskInfo.ArmEnum &&
- x.Id != inDto.VisitTaskId &&
- x.DoctorUserId == taskInfo.DoctorUserId &&
- x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
- x.ReadingTaskState == ReadingTaskState.HaveSigned &&
- x.TaskState == TaskState.Effect &&
- x.IsAnalysisCreate == taskInfo.IsAnalysisCreate)
- .WhereIf(taskInfo.ReadingCategory != ReadingCategory.Visit, x => x.ReadingCategory == taskInfo.ReadingCategory)
-
- .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.VisitTaskNum).ToListAsync();
- return readingPastResultList;
- }
-
- #endregion
+
#region 找子问题
///
@@ -1227,7 +1296,10 @@ namespace IRaCIS.Application.Services
#endregion
- #region 保存访视任务阅片问题答案
+
+
+ #region 阅片任务 提交填写表单
+
///
/// 保存任务问题
///
@@ -1258,10 +1330,6 @@ namespace IRaCIS.Application.Services
var result = await _visitTaskRepository.SaveChangesAsync();
return ResponseOutput.Ok(result);
}
- #endregion
-
-
- #region 阅片任务 提交填写表单
///
/// 验证访视提交
@@ -1567,75 +1635,6 @@ namespace IRaCIS.Application.Services
- ///
- /// 添加阅片期任务
- ///
- ///
- private async Task AddReadingTask(Guid visitTaskId)
- {
- // ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********////
- #region 建立关系
- // 访视阅完产生 全局
- Dictionary typeChangeDic = new Dictionary();
- typeChangeDic.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit);
- typeChangeDic.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit);
- //typeChange.Add(ModuleTypeEnum.Read, ReadingCategory.ReadingPeriod);
- typeChangeDic.Add(ModuleTypeEnum.Global, ReadingCategory.Global);
- typeChangeDic.Add(ModuleTypeEnum.Referee, ReadingCategory.Judge);
- typeChangeDic.Add(ModuleTypeEnum.Oncology, ReadingCategory.Oncology);
- #endregion
- var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
- List needReadList = new List();
- if (!taskInfo.IsAnalysisCreate)
- {
- // 任务类型
- switch (taskInfo.ReadingCategory)
- {
- case ReadingCategory.Visit:
- needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId &&
-
- x.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId&&
- x.ReadingSetType == ReadingSetType.ImageReading)
- .Select(x => new ReadingGenerataTaskDTO
- {
- IsUrgent = x.IsUrgent ?? false,
- SubjectId = x.SubjectId,
- VisitNum = x.VisitNum,
- ReadingName = x.ModuleName,
- ReadModuleId = x.Id,
- ReadingCategory = typeChangeDic[x.ModuleType],
- }).ToListAsync();
- if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global))
- {
- 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()
- {
- OriginalVisitId = visitTaskId,
- ReadingCategory = GenerateTaskCategory.Global,
- TrialId = taskInfo.TrialId,
- ReadingGenerataTaskList = needReadList
- });
- break;
- // 肿瘤学
- case ReadingCategory.Global:
- var subjectVisitId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
- var oncologyReadId = await _readModuleRepository.Where(x => x.SubjectVisitId == subjectVisitId && x.ModuleType == ModuleTypeEnum.Oncology
- && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
-
-
- ).Select(x => x.Id).FirstOrDefaultAsync();
- await AddOncologyTask(oncologyReadId);
- break;
- }
- }
-
-
-
-
-
- }