diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 27a2e30da..ad88fbdbc 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -254,6 +254,8 @@ namespace IRaCIS.Core.Application.ViewModel public DateTime? SuggesteFinishedTime => UnReadTaskList.Max(t => t.SuggesteFinishedTime); + public List UnReadCanReadTaskList => UnReadTaskList.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)).ToList(); + public List UnReadTaskList { get; set; } = new List(); } @@ -284,6 +286,7 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsClinicalDataSign { get; set; } + public bool IsFrontTaskNeedSignButNotSign { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 548cb04fd..a212f3d1c 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -977,16 +977,18 @@ namespace IRaCIS.Core.Application.Service.Allocation UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(), //未读 里可读任务量 - UnReadCanReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign==false - //(y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) + UnReadCanReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) //不能对包含聚合或子查询的表达式执行聚合函数 //&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(), + ExistReadingApply = x.Any(y => y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed), - UnReadTaskList = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned /*&& y.IsFrontTaskNeedSignButNotSign == false*/).OrderBy(x => x.VisitTaskNum) + + //查出所有未读的 未读的可读的 在这个列表基础上 过滤下 y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) 这样容易排错 确认这三个字段是否维护有误 + UnReadTaskList = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned ).OrderBy(x => x.VisitTaskNum) .Select(u => new IRUnreadTaskView() { Id = u.Id, @@ -999,7 +1001,8 @@ namespace IRaCIS.Core.Application.Service.Allocation IsAnalysisCreate = u.IsAnalysisCreate, TrialReadingCriterionId = u.TrialReadingCriterionId, IsNeedClinicalDataSign =u.IsNeedClinicalDataSign, - IsClinicalDataSign=u.IsClinicalDataSign + IsClinicalDataSign=u.IsClinicalDataSign, + IsFrontTaskNeedSignButNotSign=u.IsFrontTaskNeedSignButNotSign }) .ToList(), }).Where(x => x.UnReadTaskCount > 0).OrderBy(x => x.UnReadCanReadTaskCount); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index dfaacfe1b..d007518b5 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1124,14 +1124,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetNextTaskInDto { - public Guid? SubjectId { get; set; } public string SubjectCode { get; set; }=string.Empty; public Guid TrialId { get; set; } + public Guid? SubjectId { get; set; } - public Guid TrialReadingCriterionId { get; set; } + public Guid? TrialReadingCriterionId { get; set; } public Guid? VisitTaskId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 37a235873..7982be81e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1659,7 +1659,7 @@ namespace IRaCIS.Application.Services var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto() { TrialId = inDto.TrialId, - TrialReadingCriterionId = inDto.TrialReadingCriterionId, + TrialReadingCriterionId = trialReadingCriterionId.Value, })).Item2; var index = 0; @@ -1678,7 +1678,7 @@ namespace IRaCIS.Application.Services throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"]); } - task = currentSubject.UnReadTaskList.Select(x => new GetReadingTaskDto() + task = currentSubject.UnReadCanReadTaskList.Select(x => new GetReadingTaskDto() { ReadingCategory = x.ReadingCategory, SubjectCode = currentSubject.SubjectCode, diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql index c1685f23b..fba8bbeae 100644 --- a/IRaCIS.Core.Domain/SQLFile/Test.sql +++ b/IRaCIS.Core.Domain/SQLFile/Test.sql @@ -249,11 +249,11 @@ inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1)) - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1) + and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'%' and ( ClinicalDataLevel=1) ) =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId - -- and ClinicalDataTrialSet.UploadRole=1 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署 + where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1 + -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署 )