修改临床数据验证

Uat_Study
{872297557@qq.com} 2023-01-12 10:52:12 +08:00
parent e56df5384e
commit 4c4fb90637
5 changed files with 17 additions and 11 deletions

View File

@ -254,6 +254,8 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? SuggesteFinishedTime => UnReadTaskList.Max(t => t.SuggesteFinishedTime); public DateTime? SuggesteFinishedTime => UnReadTaskList.Max(t => t.SuggesteFinishedTime);
public List<IRUnreadTaskView> UnReadCanReadTaskList => UnReadTaskList.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)).ToList();
public List<IRUnreadTaskView> UnReadTaskList { get; set; } = new List<IRUnreadTaskView>(); public List<IRUnreadTaskView> UnReadTaskList { get; set; } = new List<IRUnreadTaskView>();
} }
@ -284,6 +286,7 @@ namespace IRaCIS.Core.Application.ViewModel
public bool IsClinicalDataSign { get; set; } public bool IsClinicalDataSign { get; set; }
public bool IsFrontTaskNeedSignButNotSign { get; set; }
} }

View File

@ -977,16 +977,18 @@ namespace IRaCIS.Core.Application.Service.Allocation
UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(), UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
//未读 里可读任务量 //未读 里可读任务量
UnReadCanReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign==false UnReadCanReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)
//(y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)
//不能对包含聚合或子查询的表达式执行聚合函数 //不能对包含聚合或子查询的表达式执行聚合函数
//&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum<y.VisitTaskNum ) //&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum<y.VisitTaskNum )
).Count(), ).Count(),
//已读任务量 //已读任务量
HaveReadTaskCount = x.Where(y => y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(), HaveReadTaskCount = x.Where(y => y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
ExistReadingApply = x.Any(y => y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed), 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() .Select(u => new IRUnreadTaskView()
{ {
Id = u.Id, Id = u.Id,
@ -999,7 +1001,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
IsAnalysisCreate = u.IsAnalysisCreate, IsAnalysisCreate = u.IsAnalysisCreate,
TrialReadingCriterionId = u.TrialReadingCriterionId, TrialReadingCriterionId = u.TrialReadingCriterionId,
IsNeedClinicalDataSign =u.IsNeedClinicalDataSign, IsNeedClinicalDataSign =u.IsNeedClinicalDataSign,
IsClinicalDataSign=u.IsClinicalDataSign IsClinicalDataSign=u.IsClinicalDataSign,
IsFrontTaskNeedSignButNotSign=u.IsFrontTaskNeedSignButNotSign
}) })
.ToList(), .ToList(),
}).Where(x => x.UnReadTaskCount > 0).OrderBy(x => x.UnReadCanReadTaskCount); }).Where(x => x.UnReadTaskCount > 0).OrderBy(x => x.UnReadCanReadTaskCount);

View File

@ -1124,14 +1124,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetNextTaskInDto public class GetNextTaskInDto
{ {
public Guid? SubjectId { get; set; }
public string SubjectCode { get; set; }=string.Empty; public string SubjectCode { get; set; }=string.Empty;
public Guid TrialId { get; set; } 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; } public Guid? VisitTaskId { get; set; }
} }

View File

@ -1659,7 +1659,7 @@ namespace IRaCIS.Application.Services
var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto() var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
{ {
TrialId = inDto.TrialId, TrialId = inDto.TrialId,
TrialReadingCriterionId = inDto.TrialReadingCriterionId, TrialReadingCriterionId = trialReadingCriterionId.Value,
})).Item2; })).Item2;
var index = 0; var index = 0;
@ -1678,7 +1678,7 @@ namespace IRaCIS.Application.Services
throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"]); throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"]);
} }
task = currentSubject.UnReadTaskList.Select(x => new GetReadingTaskDto() task = currentSubject.UnReadCanReadTaskList.Select(x => new GetReadingTaskDto()
{ {
ReadingCategory = x.ReadingCategory, ReadingCategory = x.ReadingCategory,
SubjectCode = currentSubject.SubjectCode, SubjectCode = currentSubject.SubjectCode,

View File

@ -249,11 +249,11 @@ inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 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 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 =(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 where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1
-- and ClinicalDataTrialSet.UploadRole=1 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署 -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署
) )