diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index 4843f37d0..83a0061a1 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -100,6 +100,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public bool IsBaseLine { get; set; }
+ ///
+ /// TrialReadingCriterionId
+ ///
+ public Guid TrialReadingCriterionId { get; set; }
+
public string VisitName { get; set; }
public string BlindName { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
index c41c7a691..150874c91 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
@@ -409,6 +409,7 @@ namespace IRaCIS.Application.Services
result.ReadingTaskState = visitTaskInfo.ReadingTaskState;
var taskInfoList = await _visitTaskRepository.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect
&&x.ArmEnum== visitTaskInfo.ArmEnum
+ &&x.TrialReadingCriterionId==visitTaskInfo.TrialReadingCriterionId
&& x.ReadingCategory == ReadingCategory.Visit && !x.IsAnalysisCreate && x.ReadingTaskState == ReadingTaskState.HaveSigned) || x.Id == indto.VisitTaskId
).OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo()
{
@@ -851,6 +852,7 @@ namespace IRaCIS.Application.Services
var globalTaskInfo = await _visitTaskRepository
.Where(x => x.SubjectId == taskInfo.SubjectId &&
x.TaskState == TaskState.Effect &&
+ x.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId &&
x.ReadingCategory == ReadingCategory.Global &&
x.VisitTaskNum < taskInfo.VisitTaskNum
).OrderByDescending(x => x.VisitTaskNum)
@@ -889,6 +891,7 @@ namespace IRaCIS.Application.Services
// 找到对应的访视
List oncologyVisits = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
+ x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
x.SubjectId == visitTask.SubjectId && x.IsAnalysisCreate == visitTask.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < visitTask.VisitTaskNum)
.Where(x => x.DoctorUserId == visitTask.DoctorUserId)
.OrderBy(x => x.VisitTaskNum).Select(x => new OncologyVisitTaskInfo()
@@ -1031,6 +1034,7 @@ namespace IRaCIS.Application.Services
// 一致性分析按照doctorId 其他按照分组
result.TaskList = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
+ x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
x.SubjectId == taskInfo.SubjectId && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < taskInfo.VisitTaskNum)
.Where(x => x.DoctorUserId == taskInfo.DoctorUserId)
.OrderBy(x => x.VisitTaskNum).Select(x => new GlobalVisitInfo()
@@ -1239,7 +1243,9 @@ namespace IRaCIS.Application.Services
}
else
{
- task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId==trialReadingCriterionId && 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.TrialReadingCriterionId==trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id
+ && x.TrialReadingCriterionId == trialReadingCriterionId
+ && x.TaskState == TaskState.Effect).Select(x => new GetReadingTaskDto()
{
VisitTaskId = x.Id,
TaskBlindName = x.TaskBlindName,
@@ -1933,6 +1939,7 @@ namespace IRaCIS.Application.Services
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)
@@ -2540,7 +2547,8 @@ namespace IRaCIS.Application.Services
// 找到一个全局阅片任务是否有裁判任务
- var judgeVisitTaskId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global
+ var judgeVisitTaskId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect
+ && x.ReadingCategory == ReadingCategory.Global
&& x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.JudgeVisitTaskId).FirstOrDefaultAsync();
// 获取系统配置
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
index be16cfbb6..699265499 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
@@ -328,7 +328,9 @@ namespace IRaCIS.Application.Services
if (globalModule != null)
{
- var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync();
+ var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id
+ && x.TrialReadingCriterionId == dto.TrialReadingCriterionId
+ && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync();
if (globalTaskInfoList.Count() > 0 && globalTaskInfoList.Count == (int)criterionInfo.ReadingType)
{
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs
index b4c5664ca..f44e82118 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs
@@ -186,6 +186,8 @@ namespace IRaCIS.Application.Services
case ReadingSetType.ImageReading:
//增加标准
var taskInfoList = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) &&
+
+ x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId &&
x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).ToListAsync();
foreach (var item in taskInfoList)
@@ -230,7 +232,9 @@ namespace IRaCIS.Application.Services
var globalModuleIds = await _readModuleRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync();
//增加标准
- var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).GroupBy(x => new { x.SouceReadModuleId }).Select(x =>
+ var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid))
+
+ && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).GroupBy(x => new { x.SouceReadModuleId }).Select(x =>
new {
SouceReadModuleId = x.Key.SouceReadModuleId,
Count = x.ToList().Count,
@@ -288,7 +292,9 @@ namespace IRaCIS.Application.Services
List readModuleIds = await _readModuleRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.Id).ToListAsync();
- if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect))
+ if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid))
+ && x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId
+ && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect))
{
throw new BusinessValidationFailedException("当前标准阅片已生成任务并且阅片完成,撤销失败。");
}
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs
index 69dc54359..bc7988427 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs
@@ -342,7 +342,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync();
- var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect && x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync();
+ var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect
+ && x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
+ && x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync();
var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == visitTask.TrialId && x.IsConfirm).Select(x => x.Id).FirstOrDefaultAsync();
List questionInfos = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).Select(x => new QuestionInfo()
{
@@ -401,6 +403,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TrialId = visitTask.TrialId,
IsBaseLine = subjectVisit!.IsBaseLine,
DoctorUserId = visitTask.DoctorUserId,
+ TrialReadingCriterionId= visitTask.TrialReadingCriterionId,
BaseLineTaskId = baseLinetaskId,
ArmEnum = visitTask.ArmEnum,
VisitName = subjectVisit.VisitName,
@@ -432,7 +435,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (!(await _readingTableQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == visitTaskId)))
{
- var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
+ var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
+ x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
+ x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
@@ -921,6 +926,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 找到所有访视任务的Id
var visitTaskIds = await _visitTaskRepository.Where(x => !x.IsAnalysisCreate && x.ReadingCategory == ReadingCategory.Visit &&
+ x.TrialReadingCriterionId == inDto.calculateDto.TrialReadingCriterionId &&
x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.DoctorUserId == inDto.calculateDto.DoctorUserId).Select(x => x.Id).ToListAsync();
var answer = (await GetLowSODVisit(inDto.calculateDto)).OrderBy(x => x.SOD).Select(x => x.BlindName).FirstOrDefault();
@@ -968,7 +974,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 先找到基线的任务
var baseLineTaskId = await _visitTaskRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ReadingCategory == ReadingCategory.Visit
- && x.SourceSubjectVisit.IsBaseLine && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.DoctorUserId == inDto.DoctorUserId)
+ && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId &&
+ x.SourceSubjectVisit.IsBaseLine && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.DoctorUserId == inDto.DoctorUserId)
.Select(x => x.Id).FirstOrDefaultAsync();
@@ -1058,7 +1065,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 找到访视任务Id
- var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.SourceSubjectVisitId == lastVisitId && x.DoctorUserId == inDto.DoctorUserId).Select(x => x.Id).FirstOrDefaultAsync();
+ var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
+ x.TrialReadingCriterionId == inDto.TrialReadingCriterionId &&
+ x.TaskState == TaskState.Effect && !x.IsAnalysisCreate && x.SourceSubjectVisitId == lastVisitId && x.DoctorUserId == inDto.DoctorUserId).Select(x => x.Id).FirstOrDefaultAsync();
return LastVisitTaskId;
}