diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index b4aa35307..260428c00 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -424,11 +424,11 @@
-
+
- 获取有序阅片IQuery对象
+ 获取subject有序 或者无序阅片IQuery对象
-
+
diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs
index 403ef9918..27bcb5d88 100644
--- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs
@@ -370,7 +370,7 @@ namespace IRaCIS.Core.Application.ViewModel
}
- public class GetOrderReadingIQueryableInDto
+ public class GetReadingIQueryableInDto:PageInput
{
public Guid TrialId { get; set; }
@@ -380,8 +380,6 @@ namespace IRaCIS.Core.Application.ViewModel
public string? SubjectCode { get; set; } = null;
- public PageInput? Page { get; set; } = null;
-
}
public class VisitTaskQuery : PageInput
diff --git a/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs
index c9a5a55bd..6268fa18e 100644
--- a/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs
@@ -16,6 +16,6 @@ namespace IRaCIS.Core.Application.Service
Task ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService);
- Task<(int, List)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto);
+ Task> GetSubjectReadingIQueryable(GetReadingIQueryableInDto inDto);
}
}
\ No newline at end of file
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index 4450a2779..8699e313b 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -958,42 +958,22 @@ namespace IRaCIS.Core.Application.Service.Allocation
var isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
#region 按照Subject 维度
- if (isReadingTaskViewInOrder == ReadingOrder.InOrder)
+ if (isReadingTaskViewInOrder == ReadingOrder.InOrder || isReadingTaskViewInOrder == ReadingOrder.SubjectRandom)
{
- var visitTaskListInfo = await GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
+ var result = await GetSubjectReadingIQueryable(new GetReadingIQueryableInDto()
{
TrialId = trialId,
TrialReadingCriterionId = trialReadingCriterionId,
SubjectCode = inQuery.SubjectCode,
- Page = new PageInput()
- {
- PageIndex = inQuery.PageIndex,
- PageSize = inQuery.PageSize,
- Asc = inQuery.Asc,
- SortField = inQuery.SortField,
-
- }
+ PageIndex = inQuery.PageIndex,
+ PageSize = inQuery.PageSize,
+ Asc = inQuery.Asc,
+ SortField = inQuery.SortField,
});
-
- var totalCount = visitTaskListInfo.Item1;
- var currentPageData = visitTaskListInfo.Item2;
-
-
-
- var result = new PageOutput()
- {
- PageSize = inQuery.PageSize,
- PageIndex = inQuery.PageIndex,
- TotalCount = totalCount,
- CurrentPageData = currentPageData,
- };
-
- // 封装的方法有问题
- //var result = await visitQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
return ResponseOutput.Ok(result, new
{
RandomReadInfo = new IRUnReadOutDto(),
@@ -1006,69 +986,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
CriterionType = criterionConfig.CriterionType,
});
}
- else if(isReadingTaskViewInOrder == ReadingOrder.SubjectRandom)
- {
- var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
- var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
-
- .WhereIf(!string.IsNullOrEmpty(subjectCode), t => (t.Subject.Code.Contains(subjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(subjectCode!) && t.IsAnalysisCreate));
-
- var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
-
- var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
- {
- SubjectId = x.Key.SubjectId,
- SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
-
- SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
-
- //未读任务量
- UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
-
- UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Where(x => x.IsUrgent).Count(),
-
- //已读任务量
- HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
-
- ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
-
- UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
- .OrderBy(x => x.VisitTaskNum)
- .Select(u => new IRUnreadTaskView()
- {
- Id = u.Id,
- IsUrgent = u.IsUrgent,
- VisitNum = u.VisitTaskNum,
- TaskBlindName = u.TaskBlindName,
- VisistId = u.SourceSubjectVisitId,
- SuggesteFinishedTime = u.SuggesteFinishedTime,
- ReadingCategory = u.ReadingCategory,
- IsAnalysisCreate = u.IsAnalysisCreate,
- ArmEnum = u.ArmEnum,
- TrialReadingCriterionId = u.TrialReadingCriterionId,
- IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
- IsClinicalDataSign = u.IsClinicalDataSign,
- IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
- })
- .ToList()
- }).Where(x => x.UnReadCanReadTaskCount > 0);
-
- var pageList = await visitTaskQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField)? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inQuery.SortField, inQuery.Asc );
-
-
- return ResponseOutput.Ok(pageList, new
- {
- RandomReadInfo = new IRUnReadOutDto(),
- IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
- ReadingTool = readingTool,
- IseCRFShowInDicomReading = criterionConfig.IseCRFShowInDicomReading,
- IsReadingShowSubjectInfo = criterionConfig.IsReadingShowSubjectInfo,
- IsReadingShowPreviousResults = criterionConfig.IsReadingShowPreviousResults,
- DigitPlaces = criterionConfig.DigitPlaces,
- CriterionType = criterionConfig.CriterionType,
- });
- }
else
{
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == inQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
@@ -1114,130 +1032,188 @@ namespace IRaCIS.Core.Application.Service.Allocation
}
///
- /// 获取有序阅片IQuery对象
+ /// 获取subject有序 或者无序阅片IQuery对象
///
- ///
+ ///
///
- public async Task<(int, List)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto)
+ public async Task> GetSubjectReadingIQueryable(GetReadingIQueryableInDto inQuery)
{
- var trialReadingCriterionId = inDto.TrialReadingCriterionId;
-
+ var trialReadingCriterionId = inQuery.TrialReadingCriterionId;
+ var subjectCode = inQuery.SubjectCode;
+ var trialId = inQuery.TrialId;
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
-
- var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
-
- .WhereIf(inDto.SubjectId!=null,x=>x.SubjectId==inDto.SubjectId)
- //前序 不存在 未生成任务的访视
- .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
-
- // 前序 不存在 未一致性核查未通过的
- .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum >= sv.VisitNum))
- //.WhereIf(critrion.IsAutoCreate == false, t => t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.IsGeneratedTask == false) ?
- //t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsGeneratedTask == false).Min(t => t.SubjectVisit.VisitNum) : true)
- //.Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <= t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
- //满足前序访视不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang
- //但是加字段 IsFrontTaskNeedSignButNotSign 那么签名临床数据的时候,要对该subject 该标准的有效的任务 这个字段需要在签名的时候维护 采取这种方式 统计数字灵活
- //.Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum))
- .WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode!) && t.IsAnalysisCreate));
-
-
- var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
-
- var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
+ if (critrion.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
{
- SubjectId = x.Key.SubjectId,
- SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
+ var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
- SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
+ .WhereIf(inQuery.SubjectId != null, x => x.SubjectId == inQuery.SubjectId)
+ //前序 不存在 未生成任务的访视
+ .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
- //未读任务量
- UnReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
-
- //未读 里可读任务量
- UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && 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 !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum >= sv.VisitNum))
+ //.WhereIf(critrion.IsAutoCreate == false, t => t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.IsGeneratedTask == false) ?
+ //t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsGeneratedTask == false).Min(t => t.SubjectVisit.VisitNum) : true)
+ //.Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <= t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
+ //满足前序访视不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang
+ //但是加字段 IsFrontTaskNeedSignButNotSign 那么签名临床数据的时候,要对该subject 该标准的有效的任务 这个字段需要在签名的时候维护 采取这种方式 统计数字灵活
+ //.Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum))
+ .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => (t.Subject.Code.Contains(inQuery.SubjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inQuery.SubjectCode!) && t.IsAnalysisCreate));
- UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
- .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
- .OrderBy(x => x.VisitTaskNum)
- .Select(u => new IRUnreadTaskView()
+ var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
+
+ var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
{
- Id = u.Id,
- IsUrgent = u.IsUrgent,
- VisitNum = u.VisitTaskNum,
- TaskBlindName = u.TaskBlindName,
- VisistId = u.SourceSubjectVisitId,
- SuggesteFinishedTime = u.SuggesteFinishedTime,
- ReadingCategory = u.ReadingCategory,
- IsAnalysisCreate = u.IsAnalysisCreate,
- ArmEnum = u.ArmEnum,
- TrialReadingCriterionId = u.TrialReadingCriterionId,
- IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
- IsClinicalDataSign = u.IsClinicalDataSign,
- IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
- })
- .ToList(),
+ SubjectId = x.Key.SubjectId,
+ SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
+
+ SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
+
+ //未读任务量
+ UnReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
+
+ //未读 里可读任务量
+ UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && 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.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
- .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
- .Where(x => x.IsUrgent).Count(),
-
- //已读任务量
- HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
-
- ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
-
- //查出所有未读的 未读的可读的 在这个列表基础上 过滤下 y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) 这样容易排错 确认这三个字段是否维护有误
- UnReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
- .Select(u => new IRUnreadTaskView()
- {
- Id = u.Id,
- IsUrgent = u.IsUrgent,
- VisitNum = u.VisitTaskNum,
- TaskBlindName = u.TaskBlindName,
- VisistId = u.SourceSubjectVisitId,
- SuggesteFinishedTime = u.SuggesteFinishedTime,
- ReadingCategory = u.ReadingCategory,
- IsAnalysisCreate = u.IsAnalysisCreate,
- ArmEnum = u.ArmEnum,
- TrialReadingCriterionId = u.TrialReadingCriterionId,
- IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
- IsClinicalDataSign = u.IsClinicalDataSign,
- IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
- })
- .ToList(),
- }).Where(x => x.UnReadCanReadTaskCount > 0)/*.OrderBy(x => x.UnReadCanReadTaskCount)*/;
- // 有序阅片需要找到最小需要
+ UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
+ .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
+ .OrderBy(x => x.VisitTaskNum)
+ .Select(u => new IRUnreadTaskView()
+ {
+ Id = u.Id,
+ IsUrgent = u.IsUrgent,
+ VisitNum = u.VisitTaskNum,
+ TaskBlindName = u.TaskBlindName,
+ VisistId = u.SourceSubjectVisitId,
+ SuggesteFinishedTime = u.SuggesteFinishedTime,
+ ReadingCategory = u.ReadingCategory,
+ IsAnalysisCreate = u.IsAnalysisCreate,
+ ArmEnum = u.ArmEnum,
+ TrialReadingCriterionId = u.TrialReadingCriterionId,
+ IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
+ IsClinicalDataSign = u.IsClinicalDataSign,
+ IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
+ })
+ .ToList(),
- // 不这样写会有问题
- var count = visitQuery.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
- .GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode }).Count();
+ UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
+ .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
+ .Where(x => x.IsUrgent).Count(),
+
+ //已读任务量
+ HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
+
+ ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
+
+ //查出所有未读的 未读的可读的 在这个列表基础上 过滤下 y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) 这样容易排错 确认这三个字段是否维护有误
+ UnReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
+ .Select(u => new IRUnreadTaskView()
+ {
+ Id = u.Id,
+ IsUrgent = u.IsUrgent,
+ VisitNum = u.VisitTaskNum,
+ TaskBlindName = u.TaskBlindName,
+ VisistId = u.SourceSubjectVisitId,
+ SuggesteFinishedTime = u.SuggesteFinishedTime,
+ ReadingCategory = u.ReadingCategory,
+ IsAnalysisCreate = u.IsAnalysisCreate,
+ ArmEnum = u.ArmEnum,
+ TrialReadingCriterionId = u.TrialReadingCriterionId,
+ IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
+ IsClinicalDataSign = u.IsClinicalDataSign,
+ IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
+ })
+ .ToList(),
+ }).Where(x => x.UnReadCanReadTaskCount > 0)/*.OrderBy(x => x.UnReadCanReadTaskCount)*/;
+ // 有序阅片需要找到最小需要
+
+
+ // 不这样写会有问题
+ var count = visitQuery.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
+ .GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode }).Count();
+
+ var result = new List();
+
+ var propName = string.IsNullOrWhiteSpace(inQuery!.SortField) ? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inQuery.SortField;
+
+ var visitTaskOrderQuery = inQuery.Asc ? visitTaskQuery.OrderBy(propName) : visitTaskQuery.OrderBy(propName + " desc");
- var result = new List();
- var propName = string.IsNullOrWhiteSpace(inDto.Page!.SortField) ? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inDto.Page.SortField;
- var visitTaskOrderQuery = inDto.Page.Asc ? visitTaskQuery.OrderBy(propName) : visitTaskQuery.OrderBy(propName + " desc");
- if (inDto.Page != null)
- {
result = await visitTaskOrderQuery
- .Skip((inDto.Page.PageIndex - 1) * inDto.Page.PageSize)
- .Take(inDto.Page.PageSize).ToListAsync();
+ .Skip((inQuery.PageIndex - 1) * inQuery.PageSize)
+ .Take(inQuery.PageSize).ToListAsync();
+
+
+ return new PageOutput()
+ {
+ PageSize = inQuery.PageSize,
+ PageIndex = inQuery.PageIndex,
+ TotalCount = count,
+ CurrentPageData = result,
+ };
}
+
else
{
- result = await visitTaskOrderQuery.ToListAsync();
+
+ var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
+ .WhereIf(inQuery.SubjectId != null, x => x.SubjectId == inQuery.SubjectId)
+ .WhereIf(!string.IsNullOrEmpty(subjectCode), t => (t.Subject.Code.Contains(subjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(subjectCode!) && t.IsAnalysisCreate));
+
+ var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
+
+ var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
+ {
+ SubjectId = x.Key.SubjectId,
+ SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
+
+ SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
+
+ //未读任务量
+ UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
+
+ UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Where(x => x.IsUrgent).Count(),
+
+ //已读任务量
+ HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
+
+ ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
+
+ UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
+ .OrderBy(x => x.VisitTaskNum)
+ .Select(u => new IRUnreadTaskView()
+ {
+ Id = u.Id,
+ IsUrgent = u.IsUrgent,
+ VisitNum = u.VisitTaskNum,
+ TaskBlindName = u.TaskBlindName,
+ VisistId = u.SourceSubjectVisitId,
+ SuggesteFinishedTime = u.SuggesteFinishedTime,
+ ReadingCategory = u.ReadingCategory,
+ IsAnalysisCreate = u.IsAnalysisCreate,
+ ArmEnum = u.ArmEnum,
+ TrialReadingCriterionId = u.TrialReadingCriterionId,
+ IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
+ IsClinicalDataSign = u.IsClinicalDataSign,
+ IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
+ })
+ .ToList()
+ }).Where(x => x.UnReadCanReadTaskCount > 0);
+
+ var pageList = await visitTaskQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inQuery.SortField, inQuery.Asc);
+
+ return pageList;
}
-
- return (count, result);
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index b66fde0da..018780dee 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -52,8 +52,8 @@ namespace IRaCIS.Application.Services
private readonly IRepository _trialDocumentRepository;
private readonly IRepository _userRepository;
private readonly IEasyCachingProvider _provider;
- private readonly ILuganoCalculateService _luganoCalculateService;
- private readonly IRepository _readingCustomTagRepository;
+ private readonly ILuganoCalculateService _luganoCalculateService;
+ private readonly IRepository _readingCustomTagRepository;
private readonly IRepository _readingTaskQuestionMarkRepository;
private readonly IRepository _readingCriterionDictionaryRepository;
private readonly IRepository _readingTrialCriterionDictionaryRepository;
@@ -66,8 +66,8 @@ namespace IRaCIS.Application.Services
private readonly IRepository _readingQuestionCriterionSystemRepository;
private readonly IRepository _readingQuestionSystem;
private readonly IRepository _noneDicomStudyFileSystem;
- private readonly IGeneralCalculateService _generalCalculateService;
- private readonly IRepository _readingQuestionTrialRepository;
+ private readonly IGeneralCalculateService _generalCalculateService;
+ private readonly IRepository _readingQuestionTrialRepository;
private readonly ITrialEmailNoticeConfigService _trialEmailNoticeConfigService;
@@ -94,8 +94,8 @@ namespace IRaCIS.Application.Services
IRepository trialDocumentRepository,
IRepository userRepository,
IEasyCachingProvider provider,
- ILuganoCalculateService luganoCalculateService,
- IRepository readingCustomTagRepository,
+ ILuganoCalculateService luganoCalculateService,
+ IRepository readingCustomTagRepository,
IRepository readingTaskQuestionMarkRepository,
IRepository readingCriterionDictionaryRepository,
IRepository readingTrialCriterionDictionaryRepository,
@@ -110,8 +110,8 @@ namespace IRaCIS.Application.Services
ITrialEmailNoticeConfigService trialEmailNoticeConfigService,
IRepository noneDicomStudyFileSystem,
- IGeneralCalculateService generalCalculateService,
- IRepository readingQuestionTrialRepository
+ IGeneralCalculateService generalCalculateService,
+ IRepository readingQuestionTrialRepository
)
{
this._noneDicomStudyRepository = noneDicomStudyRepository;
@@ -135,8 +135,8 @@ namespace IRaCIS.Application.Services
this._trialDocumentRepository = trialDocumentRepository;
this._userRepository = userRepository;
this._provider = provider;
- this._luganoCalculateService = luganoCalculateService;
- this._readingCustomTagRepository = readingCustomTagRepository;
+ this._luganoCalculateService = luganoCalculateService;
+ this._readingCustomTagRepository = readingCustomTagRepository;
this._readingTaskQuestionMarkRepository = readingTaskQuestionMarkRepository;
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
this._tumorAssessmentRepository = tumorAssessmentRepository;
@@ -150,8 +150,8 @@ namespace IRaCIS.Application.Services
this._readingQuestionSystem = ReadingQuestionSystem;
this._noneDicomStudyFileSystem = noneDicomStudyFileSystem;
- this._generalCalculateService = generalCalculateService;
- this._readingQuestionTrialRepository = readingQuestionTrialRepository;
+ this._generalCalculateService = generalCalculateService;
+ this._readingQuestionTrialRepository = readingQuestionTrialRepository;
this._trialEmailNoticeConfigService = trialEmailNoticeConfigService;
}
@@ -167,7 +167,7 @@ namespace IRaCIS.Application.Services
{
return await _readingCalculateService.GetReadingCalculationData(inDto);
- }
+ }
#endregion
///
@@ -176,7 +176,7 @@ namespace IRaCIS.Application.Services
///
///
[HttpPost]
- public async Task> GetPreviousOtherPicturePath(GetPreviousOtherPicturePathInDto inDto)
+ public async Task> GetPreviousOtherPicturePath(GetPreviousOtherPicturePathInDto inDto)
{
List result = new List() { };
@@ -190,34 +190,34 @@ namespace IRaCIS.Application.Services
.OrderBy(x => x.VisitTask.VisitTaskNum).Select(x => new GetPreviousOtherPicturePathOutDto()
{
VisitTaskId = x.VisitTaskId,
- PicturePath = x.OtherPicturePath,
+ PicturePath = x.OtherPicturePath,
TaskBlindName = x.VisitTask.TaskBlindName
}).ToListAsync();
}
- else if(inDto.VisitTaskId!=null&&inDto.QuestionType!=null)
+ else if (inDto.VisitTaskId != null && inDto.QuestionType != null)
{
- var taskInfoList = await _generalCalculateService.GetReadingReportTaskList(inDto.VisitTaskId.Value);
- var visitTaskIds = taskInfoList.Where(x=>x.VisitTaskId!= inDto.VisitTaskId.Value).Select(x => x.VisitTaskId).ToList();
- result = await _readingTaskQuestionMarkRepository.Where(x => x.ReadingQuestionTrial.QuestionType == inDto.QuestionType && visitTaskIds.Contains(x.VisitTaskId))
+ var taskInfoList = await _generalCalculateService.GetReadingReportTaskList(inDto.VisitTaskId.Value);
+ var visitTaskIds = taskInfoList.Where(x => x.VisitTaskId != inDto.VisitTaskId.Value).Select(x => x.VisitTaskId).ToList();
+ result = await _readingTaskQuestionMarkRepository.Where(x => x.ReadingQuestionTrial.QuestionType == inDto.QuestionType && visitTaskIds.Contains(x.VisitTaskId))
- .OrderBy(x => x.VisitTask.VisitTaskNum).Select(x => new GetPreviousOtherPicturePathOutDto()
- {
- VisitTaskId = x.VisitTaskId,
- PicturePath = x.OtherPicturePath,
- TaskBlindName = x.VisitTask.TaskBlindName
- }).ToListAsync();
- }
+ .OrderBy(x => x.VisitTask.VisitTaskNum).Select(x => new GetPreviousOtherPicturePathOutDto()
+ {
+ VisitTaskId = x.VisitTaskId,
+ PicturePath = x.OtherPicturePath,
+ TaskBlindName = x.VisitTask.TaskBlindName
+ }).ToListAsync();
+ }
- return result.Where(x => x.PicturePath != string.Empty && x.PicturePath != null).ToList();
- }
+ return result.Where(x => x.PicturePath != string.Empty && x.PicturePath != null).ToList();
+ }
- ///
- /// 提交自定义标记
- ///
- ///
- ///
- [HttpPost]
+ ///
+ /// 提交自定义标记
+ ///
+ ///
+ ///
+ [HttpPost]
public async Task SubmitCustomTag(ReadingCustomTagDto inDto)
{
var entity = await _readingCustomTagRepository.InsertOrUpdateAsync(inDto, true);
@@ -245,7 +245,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task> GetCustomTag(GetCustomTagInDto inQuery)
{
- var result= await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+ var result = await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
return result;
}
@@ -270,9 +270,9 @@ namespace IRaCIS.Application.Services
return await _trialDocumentRepository.Where(x => x.TrialId == inDto.TrialId
&& x.TrialDocConfirmedUserList.Any(y => y.ConfirmUserId == _userInfo.Id && y.ConfirmTime != null)
&& x.NeedConfirmedUserTypeList.Any(y => y.NeedConfirmUserTypeId == _userInfo.UserTypeId))
- .WhereIf(userType== UserTypeEnum.IndependentReviewer, t => t.FileType.Code == "2" || t.FileType.Code == "6")
+ .WhereIf(userType == UserTypeEnum.IndependentReviewer, t => t.FileType.Code == "2" || t.FileType.Code == "6")
.WhereIf(userType == UserTypeEnum.IQC, t => t.FileType.Code == "4" || t.FileType.Code == "5")
- .WhereIf(!canViewUserType.Contains(userType),t=>false)
+ .WhereIf(!canViewUserType.Contains(userType), t => false)
.IgnoreQueryFilters()
.Select(x => new GetManualListOutDto()
{
@@ -590,20 +590,20 @@ namespace IRaCIS.Application.Services
taskQuery = _visitTaskRepository.Where(x => taskInfo.RelatedVisitTaskIdList.Contains(x.Id) || x.Id == taskInfo.Id);
}
- var result = await taskQuery.Include(x=>x.Subject).OrderBy(x => x.VisitTaskNum).ThenBy(x => x.TaskState)
+ var result = await taskQuery.Include(x => x.Subject).OrderBy(x => x.VisitTaskNum).ThenBy(x => x.TaskState)
.Select(x => new GetRelatedVisitTaskOutDto()
{
TaskBlindName = x.TaskBlindName,
TaskName = x.TaskName,
ReadingTaskState = x.ReadingTaskState,
VisitId = x.SourceSubjectVisitId,
- SubjectCode=x.Subject.Code,
+ SubjectCode = x.Subject.Code,
VisitTaskId = x.Id,
VisitTaskNum = x.VisitTaskNum,
IsBaseLineTask = x.SourceSubjectVisitId == baselineVisitId,
IsCurrentTask = x.Id == inDto.VisitTaskId,
- IsConvertedTask=x.IsConvertedTask,
- IsFirstChangeTask=x.BeforeConvertedTaskId!=null,
+ IsConvertedTask = x.IsConvertedTask,
+ IsFirstChangeTask = x.BeforeConvertedTaskId != null,
}).ToListAsync();
@@ -617,7 +617,7 @@ namespace IRaCIS.Application.Services
var visitaskIds = result.Select(x => x.VisitTaskId).ToList();
var otherStudys = await _readingTableAnswerRowInfoRepository.Where(x => visitaskIds.Contains(x.VisitTaskId))
- .Where(x=>x.CTSeriesId!=null&&x.PTSeriesId!=null)
+ .Where(x => x.CTSeriesId != null && x.PTSeriesId != null)
.Select(x => new
{
x.OtherStudyId,
@@ -628,7 +628,7 @@ namespace IRaCIS.Application.Services
}).ToListAsync();
- foreach (var item in result)
+ foreach (var item in result)
{
var clinicalDataList = await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto()
{
@@ -647,9 +647,9 @@ namespace IRaCIS.Application.Services
item.OtherStudyId = otherStudy.OtherStudyId;
}
- }
+ }
+
-
return (result, new
@@ -693,10 +693,10 @@ namespace IRaCIS.Application.Services
VisitTaskId = x.Id,
TaskBlindName = x.TaskBlindName,
TaskName = x.TaskName,
- ReadModuleVisitId= x.ReadModule!=null?x.ReadModule.SubjectVisitId:null,
- VisitName = x.SourceSubjectVisit!=null? x.SourceSubjectVisit.VisitName: x.ReadModule==null?string.Empty: x.ReadModule.SubjectVisit.VisitName,
- VisitBlindName = x.TaskBlindName,
- VisitTaskNum = x.VisitTaskNum,
+ ReadModuleVisitId = x.ReadModule != null ? x.ReadModule.SubjectVisitId : null,
+ VisitName = x.SourceSubjectVisit != null ? x.SourceSubjectVisit.VisitName : x.ReadModule == null ? string.Empty : x.ReadModule.SubjectVisit.VisitName,
+ VisitBlindName = x.TaskBlindName,
+ VisitTaskNum = x.VisitTaskNum,
JudgeResultArm = x.JudgeResultTask == null ? null : x.JudgeResultTask.ArmEnum,
}).ToListAsync();
@@ -707,9 +707,9 @@ namespace IRaCIS.Application.Services
if (item.ReadModuleVisitId != null)
{
item.VisitBlindName = (await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == item.ReadModuleVisitId && x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
- x.IsAnalysisCreate == taskInfo.IsAnalysisCreate ).Select(x => x.TaskBlindName).FirstOrDefaultAsync())??string.Empty;
+ x.IsAnalysisCreate == taskInfo.IsAnalysisCreate).Select(x => x.TaskBlindName).FirstOrDefaultAsync()) ?? string.Empty;
- }
+ }
}
@@ -741,7 +741,7 @@ namespace IRaCIS.Application.Services
{
VisitTaskId = visitTask.Id,
SubjectId = visitTask.SubjectId,
- SubjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? subjectCode??string.Empty : visitTask.BlindSubjectCode,
+ SubjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? subjectCode ?? string.Empty : visitTask.BlindSubjectCode,
ReadingCategory = visitTask.ReadingCategory,
TaskBlindName = visitTask.TaskBlindName,
IsReadingShowPreviousResults = criterionInfo.IsReadingShowPreviousResults,
@@ -795,9 +795,9 @@ namespace IRaCIS.Application.Services
}
if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
- &&x.IsAnalysisCreate&&taskInfo.IsAnalysisCreate
- &&x.SubjectId== taskInfo.SubjectId&&x.TaskState==TaskState.Effect&&
- ((x.ReReadingApplyState==ReReadingApplyState.DocotorHaveApplyed && x.DoctorUserId == taskInfo.DoctorUserId)|| x.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)
+ && x.IsAnalysisCreate && taskInfo.IsAnalysisCreate
+ && x.SubjectId == taskInfo.SubjectId && x.TaskState == TaskState.Effect &&
+ ((x.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && x.DoctorUserId == taskInfo.DoctorUserId) || x.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)
))
{
@@ -825,14 +825,14 @@ namespace IRaCIS.Application.Services
{
//await AddDefaultValueToTask(inDto.VisitTaskId);
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
- var result = await GetReadingQuestion(taskInfo.TrialReadingCriterionId, taskInfo.Id, inDto.QuestionClassify,inDto.GroupClassifyList);
+ var result = await GetReadingQuestion(taskInfo.TrialReadingCriterionId, taskInfo.Id, inDto.QuestionClassify, inDto.GroupClassifyList);
return (result, new
{
- QuestionMarkInfoList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(),
- ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
+ QuestionMarkInfoList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(),
+ ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
});
}
@@ -854,7 +854,7 @@ namespace IRaCIS.Application.Services
//排除表格问题
var questions = await _readingQuestionTrialRepository
- .WhereIf(questionClassify!=null,x=>x.QuestionClassify== questionClassify)
+ .WhereIf(questionClassify != null, x => x.QuestionClassify == questionClassify)
.WhereIf(criterionIdInfo.IseCRFShowInDicomReading, x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table)
.WhereIf(!criterionIdInfo.IseCRFShowInDicomReading, x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table)
@@ -880,8 +880,8 @@ namespace IRaCIS.Application.Services
}
else
{
- questions = questions.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.FollowShow).ToList();
- }
+ questions = questions.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.FollowShow).ToList();
+ }
questions.ForEach(x =>
{
@@ -892,7 +892,7 @@ namespace IRaCIS.Application.Services
{
questions.ForEach(x =>
{
- x.IsFirstChangeTask =true;
+ x.IsFirstChangeTask = true;
});
}
}
@@ -910,7 +910,7 @@ namespace IRaCIS.Application.Services
var groupids = questions.Where(x => x.Type != ReadingQestionType.Group).Select(x => x.GroupId).ToList();
var result = questions.Where(x => x.Type == ReadingQestionType.Group && groupids.Contains(x.Id))
- .WhereIf(groupClassifyList!=null,x=>x.GroupClassify!=null&& groupClassifyList!=null&& groupClassifyList.Contains(x.GroupClassify.Value))
+ .WhereIf(groupClassifyList != null, x => x.GroupClassify != null && groupClassifyList != null && groupClassifyList.Contains(x.GroupClassify.Value))
.ToList();
foreach (var item in result)
@@ -972,7 +972,7 @@ namespace IRaCIS.Application.Services
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync();
- if (taskInfo.IsConvertedTask &&taskInfo.BeforeConvertedTaskId!=null)
+ if (taskInfo.IsConvertedTask && taskInfo.BeforeConvertedTaskId != null)
{
result.ForEach(x =>
{
@@ -990,7 +990,8 @@ namespace IRaCIS.Application.Services
var questionMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
- questionMark.ForEach(x => {
+ questionMark.ForEach(x =>
+ {
x.IsFirstChangeTask = x.VisitTaskId == inDto.VisitTaskId;
});
@@ -1040,7 +1041,7 @@ namespace IRaCIS.Application.Services
TableAnswers = tableAnswers,
TableAnsweRowInfos = tableAnsweRowInfos,
OrganInfos = organList,
- QuestionClassify=inDto.QuestionClassify,
+ QuestionClassify = inDto.QuestionClassify,
}
@@ -1051,18 +1052,18 @@ namespace IRaCIS.Application.Services
result.PublicPage = questionPage.PublicPage;
result.BlindName = visitTaskInfo.TaskBlindName;
result.TaskNum = visitTaskInfo.VisitTaskNum;
- result.QuestionMarkInfoList=await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider)
+ result.QuestionMarkInfoList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider)
.ToListAsync();
var spleenLength = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefaultAsync();
- return (result, new
+ return (result, new
{
readingTaskState = visitTaskInfo.ReadingTaskState,
FormType = criterionInfo.FormType,
TaskNum = visitTaskInfo.VisitTaskNum,
- SpleenLength= spleenLength,
+ SpleenLength = spleenLength,
- }); ;
+ }); ;
}
///
@@ -1096,7 +1097,7 @@ namespace IRaCIS.Application.Services
TableAnsweRowInfos = tableAnsweRowInfos,
IsGetallQuestion = true,
OrganInfos = organList,
- QuestionClassify=inDto.QuestionClassify,
+ QuestionClassify = inDto.QuestionClassify,
}
), new
@@ -1118,29 +1119,29 @@ namespace IRaCIS.Application.Services
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync();
var qusetionList = await _readingQuestionTrialRepository
- .WhereIf(inDto.QuestionClassify!=null,x=>x.QuestionClassify==inDto.QuestionClassify)
+ .WhereIf(inDto.QuestionClassify != null, x => x.QuestionClassify == inDto.QuestionClassify)
.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider, new
- {
+ {
- isEn_Us = _userInfo.IsEn_Us
+ isEn_Us = _userInfo.IsEn_Us
- }).OrderBy(x => x.ShowOrder).ToListAsync();
+ }).OrderBy(x => x.ShowOrder).ToListAsync();
var taskInfo = new VisitTaskDto();
if (inDto.TaskId != null)
{
taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.TaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync();
- if (taskInfo.VisitTaskNum == 0)
- {
- qusetionList = qusetionList.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.BaseLineShow).ToList();
+ if (taskInfo.VisitTaskNum == 0)
+ {
+ qusetionList = qusetionList.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.BaseLineShow).ToList();
- }
- else
- {
- qusetionList = qusetionList.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.FollowShow).ToList();
- }
+ }
+ else
+ {
+ qusetionList = qusetionList.Where(x => x.LimitShow == LimitShow.AllShow || x.LimitShow == LimitShow.FollowShow).ToList();
+ }
- qusetionList.ForEach(x =>
+ qusetionList.ForEach(x =>
{
x.CrterionDictionaryGroup = ReadingCommon.GetCrterionDictionaryGroup(taskInfo.IsConvertedTask);
});
@@ -1173,7 +1174,7 @@ namespace IRaCIS.Application.Services
}
- if (inDto.TaskId != null )
+ if (inDto.TaskId != null)
{
if (taskInfo.IsConvertedTask)
{
@@ -1181,9 +1182,9 @@ namespace IRaCIS.Application.Services
}
else
{
- qusetionList = qusetionList.Where(x => x.ConvertShowType == ConvertShowType.All || x.ConvertShowType == ConvertShowType.BeforeShow).OrderBy(x => x.ShowOrder).ToList();
- }
-
+ qusetionList = qusetionList.Where(x => x.ConvertShowType == ConvertShowType.All || x.ConvertShowType == ConvertShowType.BeforeShow).OrderBy(x => x.ShowOrder).ToList();
+ }
+
}
var usedGuropIds = qusetionList.Where(x => x.Type == ReadingQestionType.Table).Select(x => x.GroupId).ToList();
@@ -1246,18 +1247,18 @@ namespace IRaCIS.Application.Services
&& x.VisitTaskNum < taskInfo.VisitTaskNum
&& x.ArmEnum == taskInfo.ArmEnum
&& x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
- && x.ReadingCategory == ReadingCategory.Visit)||x.Id==taskInfo.BeforeConvertedTaskId
- ).OrderByDescending(x=>x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
+ && x.ReadingCategory == ReadingCategory.Visit) || x.Id == taskInfo.BeforeConvertedTaskId
+ ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
if (criterionInfo.IsReadingTaskViewInOrder != ReadingOrder.InOrder)
{
// 无序的话 不要查
laskTaskId = Guid.NewGuid();
}
- lastTaskTableAnswer= await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == laskTaskId).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
+ lastTaskTableAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == laskTaskId).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
- if (taskInfo.BeforeConvertedTaskId!=null )
+ if (taskInfo.BeforeConvertedTaskId != null)
{
isFirstChangeTask = true;
@@ -1326,7 +1327,7 @@ namespace IRaCIS.Application.Services
///
///
///
- private async void FindChildQuestion(TrialReadQuestionData item, List questionlists, List tableQuestionLists, List tableAnswers, List tableAnsweRowInfos, List organInfos, List baseLineTableAnswer,bool isFirstChangeTask, List lastTaskTableAnswer,Guid? TaskId)
+ private async void FindChildQuestion(TrialReadQuestionData item, List questionlists, List tableQuestionLists, List tableAnswers, List tableAnsweRowInfos, List organInfos, List baseLineTableAnswer, bool isFirstChangeTask, List lastTaskTableAnswer, Guid? TaskId)
{
item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (x.GroupId == item.Id && x.ParentId == null)).ToList();
item.TableQuestions = new TrialReadTableQuestion();
@@ -1452,13 +1453,13 @@ namespace IRaCIS.Application.Services
});
- answers.Add("LesionType", rowInfo.LesionType.GetEnumNullInt());
+ answers.Add("LesionType", rowInfo.LesionType.GetEnumNullInt());
answers.Add("BlindName", rowInfo.BlindName);
answers.Add("IsFirstChangeTask", isFirstChangeTask.ToString());
answers.Add("FromMark", rowInfo.FromMark);
answers.Add("IsDicomReading", rowInfo.IsDicomReading.ToString());
answers.Add("MeasureData", rowInfo == null ? string.Empty : rowInfo.MeasureData);
- answers.Add("OtherMeasureData", rowInfo == null|| rowInfo.OtherMeasureData==null ? string.Empty : rowInfo.OtherMeasureData.ToString());
+ answers.Add("OtherMeasureData", rowInfo == null || rowInfo.OtherMeasureData == null ? string.Empty : rowInfo.OtherMeasureData.ToString());
answers.Add("OtherStudyId", rowInfo == null || rowInfo.OtherStudyId == null ? string.Empty : rowInfo.OtherStudyId.ToString());
answers.Add("OtherSeriesId", rowInfo == null || rowInfo.OtherSeriesId == null ? string.Empty : rowInfo.OtherSeriesId.ToString());
answers.Add("OtherInstanceId", rowInfo == null || rowInfo.OtherInstanceId == null ? string.Empty : rowInfo.OtherInstanceId.ToString());
@@ -1466,23 +1467,23 @@ namespace IRaCIS.Application.Services
answers.Add("OtherNumberOfFrames", rowInfo == null || rowInfo.OtherNumberOfFrames == null ? string.Empty : rowInfo.OtherNumberOfFrames.ToString());
answers.Add("OtherMarkTool", rowInfo == null || rowInfo.OtherMarkTool == null ? string.Empty : rowInfo.OtherMarkTool.ToString());
answers.Add("RowIndex", x.ToString());
- answers.Add("RowId", rowInfo==null?string.Empty: rowInfo.Id.ToString());
- answers.Add("MarkTool", rowInfo.MarkTool);
- answers.Add("StudyId", rowInfo.StudyId.ToString());
+ answers.Add("RowId", rowInfo == null ? string.Empty : rowInfo.Id.ToString());
+ answers.Add("MarkTool", rowInfo.MarkTool);
+ answers.Add("StudyId", rowInfo.StudyId.ToString());
answers.Add("OrganInfoId", rowInfo.OrganInfoId.ToString());
- answers.Add("IsFristAdd", (rowInfo.FristAddTaskId== TaskId).ToString());
- answers.Add("IsCanEditPosition", rowInfo.IsCanEditPosition.ToString());
+ answers.Add("IsFristAdd", (rowInfo.FristAddTaskId == TaskId).ToString());
+ answers.Add("IsCanEditPosition", rowInfo.IsCanEditPosition.ToString());
answers.Add("InstanceId", rowInfo == null ? string.Empty : rowInfo.InstanceId.ToString());
- answers.Add("PTSeriesId", rowInfo == null ? string.Empty : rowInfo.PTSeriesId.ToString());
- answers.Add("CTSeriesId", rowInfo == null ? string.Empty : rowInfo.CTSeriesId.ToString());
- answers.Add("SeriesId", rowInfo == null ? string.Empty : rowInfo.SeriesId.ToString());
+ answers.Add("PTSeriesId", rowInfo == null ? string.Empty : rowInfo.PTSeriesId.ToString());
+ answers.Add("CTSeriesId", rowInfo == null ? string.Empty : rowInfo.CTSeriesId.ToString());
+ answers.Add("SeriesId", rowInfo == null ? string.Empty : rowInfo.SeriesId.ToString());
answers.Add("IsCurrentTaskAdd", rowInfo == null ? false.ToString() : rowInfo.IsCurrentTaskAdd.ToString());
answers.Add("SplitOrMergeLesionName", rowInfo == null ? string.Empty : rowInfo.SplitName.IsNullOrEmpty() ? rowInfo.MergeName : rowInfo.SplitName);
answers.Add("SplitOrMergeType", rowInfo == null ? string.Empty : rowInfo.SplitOrMergeType == null ? string.Empty : ((int)rowInfo.SplitOrMergeType).ToString());
- answers.Add("LastTaskState", lastTaskTableAnswer.Where(n=>n.QuestionId== item.Id&&n.ReadingTableQuestionTrial.QuestionMark==QuestionMark.State&&n.RowIndex==x).Select(n=>n.Answer).FirstOrDefault()??string.Empty);
- answers.Add("LastTaskMajorAxis", lastTaskTableAnswer.Where(n => n.QuestionId == item.Id && n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis && n.RowIndex == x).Select(n => n.Answer).FirstOrDefault() ?? string.Empty);
- answers.Add("LastTaskShortAxis", lastTaskTableAnswer.Where(n => n.QuestionId == item.Id && n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis && n.RowIndex == x).Select(n => n.Answer).FirstOrDefault() ?? string.Empty);
- if (rowInfo.LesionType == LesionType.BaselineLesions)
+ answers.Add("LastTaskState", lastTaskTableAnswer.Where(n => n.QuestionId == item.Id && n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && n.RowIndex == x).Select(n => n.Answer).FirstOrDefault() ?? string.Empty);
+ answers.Add("LastTaskMajorAxis", lastTaskTableAnswer.Where(n => n.QuestionId == item.Id && n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis && n.RowIndex == x).Select(n => n.Answer).FirstOrDefault() ?? string.Empty);
+ answers.Add("LastTaskShortAxis", lastTaskTableAnswer.Where(n => n.QuestionId == item.Id && n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis && n.RowIndex == x).Select(n => n.Answer).FirstOrDefault() ?? string.Empty);
+ if (rowInfo.LesionType == LesionType.BaselineLesions)
{
answers.Add("BaseLineLesionNumber", baseLineTableAnswer.Where(n => n.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && n.RowIndex == rowInfo.RowIndex).Select(x => x.Answer).FirstIsNullReturnEmpty());
}
@@ -1535,15 +1536,15 @@ namespace IRaCIS.Application.Services
rowAnswer.SeriesId = null;
rowAnswer.IsCurrentTaskAdd = true;
rowAnswer.MeasureData = string.Empty;
- rowAnswer.OtherMeasureData =null;
+ rowAnswer.OtherMeasureData = null;
List needSaveMark = new List()
{
QuestionMark.Organ,
QuestionMark.Location,
QuestionMark.Part,
- QuestionMark.IsLymph,
- };
+ QuestionMark.IsLymph,
+ };
tableAnswers.ForEach(x =>
{
@@ -1551,17 +1552,17 @@ namespace IRaCIS.Application.Services
x.RowIndex = newRowIndex;
x.VisitTaskId = inDto.VisitTaskId;
x.RowId = rowAnswer.Id;
- x.Answer = needSaveMark.Contains(x.QuestionMark) ? x.Answer : string.Empty;
+ x.Answer = needSaveMark.Contains(x.QuestionMark) ? x.Answer : string.Empty;
});
switch (taskInfo.TrialReadingCriterion.CriterionType)
{
case CriterionType.Lugano2014:
- List needSetNa = new List()
- {
- QuestionMark.LowPPDAddPercent,
- QuestionMark.NadirPPD,
+ List needSetNa = new List()
+ {
+ QuestionMark.LowPPDAddPercent,
+ QuestionMark.NadirPPD,
///
/// PPD最低点所在访视
///
@@ -1591,14 +1592,14 @@ namespace IRaCIS.Application.Services
/// 相比PPD最低点SDi增加值
///
QuestionMark.LowPPDSDiAdded,
-
- };
- tableAnswers.ForEach(x =>
- {
- x.Answer = needSetNa.Contains(x.QuestionMark) ?"NA" :x.Answer;
- });
- break;
+
+ };
+ tableAnswers.ForEach(x =>
+ {
+ x.Answer = needSetNa.Contains(x.QuestionMark) ? "NA" : x.Answer;
+ });
+ break;
}
await _readingTableAnswerRowInfoRepository.AddAsync(rowAnswer);
await _readingTableQuestionAnswerRepository.AddRangeAsync(_mapper.Map>(tableAnswers));
@@ -1607,7 +1608,7 @@ namespace IRaCIS.Application.Services
SplitOrMergeType = SplitOrMergeType.SplitMain
});
- await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
+ await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
}
@@ -1618,56 +1619,56 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task MergeLesion(MergeLesionInDto inDto)
{
- await VerifyTaskIsSign(inDto.VisitTaskId);
- await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
+ await VerifyTaskIsSign(inDto.VisitTaskId);
+ await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
- var mergeRow = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.MergeMainRowId).Include(x => x.ReadingQuestionTrial).FirstNotNullAsync();
+ var mergeRow = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.MergeMainRowId).Include(x => x.ReadingQuestionTrial).FirstNotNullAsync();
var mark = mergeRow.ReadingQuestionTrial.OrderMark + mergeRow.RowIndex.GetLesionMark();
- await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => inDto.MergeRowIdList.Contains(x.RowId) && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State, x => new ReadingTableQuestionAnswer()
- {
- Answer = TargetState.Loss.GetEnumInt(),
- });
-
- await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => inDto.MergeRowIdList.Contains(x.RowId) &&( x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis || x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis), x => new ReadingTableQuestionAnswer()
- {
- Answer = "0",
- });
-
-
- await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x=> inDto.MergeRowIdList.Contains(x.Id), x => new ReadingTableAnswerRowInfo()
+ await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => inDto.MergeRowIdList.Contains(x.RowId) && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State, x => new ReadingTableQuestionAnswer()
{
- MergeRowId=inDto.MergeMainRowId,
+ Answer = TargetState.Loss.GetEnumInt(),
+ });
+
+ await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => inDto.MergeRowIdList.Contains(x.RowId) && (x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis || x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis), x => new ReadingTableQuestionAnswer()
+ {
+ Answer = "0",
+ });
+
+
+ await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => inDto.MergeRowIdList.Contains(x.Id), x => new ReadingTableAnswerRowInfo()
+ {
+ MergeRowId = inDto.MergeMainRowId,
SplitOrMergeType = SplitOrMergeType.Merge,
- }) ;
+ });
- await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(inDto.MergeMainRowId, x => new ReadingTableAnswerRowInfo()
- {
- SplitOrMergeType = SplitOrMergeType.MergeMain,
- });
- await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
+ await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(inDto.MergeMainRowId, x => new ReadingTableAnswerRowInfo()
+ {
+ SplitOrMergeType = SplitOrMergeType.MergeMain,
+ });
+ await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
- await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
- {
- IsChangeOtherTask = false,
- VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger = ComputationTrigger.MergeLesion,
- });
+ await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
+ {
+ IsChangeOtherTask = false,
+ VisitTaskId = inDto.VisitTaskId,
+ ComputationTrigger = ComputationTrigger.MergeLesion,
+ });
- // 保存完了计算疾病进展
- switch (taskinfo.TrialReadingCriterion.CriterionType)
- {
- case CriterionType.Lugano2014:
- await _luganoCalculateService.CalculateMergeTargetLesionStatus(new CalculateTargetLesionStatusInDto()
- {
- QuestionId = inDto.QuestionId,
- VisitTaskId = inDto.VisitTaskId,
- RowNumber = mergeRow.RowIndex,
- });
- break;
- }
- }
+ // 保存完了计算疾病进展
+ switch (taskinfo.TrialReadingCriterion.CriterionType)
+ {
+ case CriterionType.Lugano2014:
+ await _luganoCalculateService.CalculateMergeTargetLesionStatus(new CalculateTargetLesionStatusInDto()
+ {
+ QuestionId = inDto.QuestionId,
+ VisitTaskId = inDto.VisitTaskId,
+ RowNumber = mergeRow.RowIndex,
+ });
+ break;
+ }
+ }
///
/// 获取可合并的病灶
@@ -1677,7 +1678,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task> GetCanMergeLesion(GetCanMergeLesionInDto inDto)
{
- var rowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).Include(x=>x.ReadingQuestionTrial).FirstNotNullAsync();
+ var rowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).Include(x => x.ReadingQuestionTrial).FirstNotNullAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.Id == rowinfo.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
// 需要排除的状态
@@ -1685,39 +1686,39 @@ namespace IRaCIS.Application.Services
var query = _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == rowinfo.VisitTaskId && x.QuestionId == rowinfo.QuestionId && x.Id != rowinfo.Id)
.Where(x => x.SplitOrMergeType != SplitOrMergeType.Split && x.SplitOrMergeType != SplitOrMergeType.SplitMain
- &&x.SplitOrMergeType!=SplitOrMergeType.Merge && x.SplitOrMergeType != SplitOrMergeType.MergeMain
+ && x.SplitOrMergeType != SplitOrMergeType.Merge && x.SplitOrMergeType != SplitOrMergeType.MergeMain
&& x.SplitOrMergeType != SplitOrMergeType.Merged);
- switch (taskInfo.TrialReadingCriterion.CriterionType)
+ switch (taskInfo.TrialReadingCriterion.CriterionType)
{
-
- case CriterionType.Lugano2014:
- // (无法评估 或者 状态为消失的非靶病灶) 并且不能是无法评估的病灶
- query = query.Where(x =>
+
+ case CriterionType.Lugano2014:
+ // (无法评估 或者 状态为消失的非靶病灶) 并且不能是无法评估的病灶
+ query = query.Where(x =>
(x.MeasureData == string.Empty ||
(x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && y.Answer == TargetState.Loss.GetEnumInt()) &&
x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.IsLymph && y.Answer == ReadingYesOrNo.No.GetEnumInt())
)) && !x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && y.Answer == TargetState.UnableEvaluate.GetEnumInt())
-
+
);
- break;
+ break;
- }
+ }
var result = await query
- .Select(x => new GetCanMergeLesionOutDto()
+ .Select(x => new GetCanMergeLesionOutDto()
{
RowId = x.Id,
RowIndex = x.RowIndex,
OrderMarkName = x.ReadingQuestionTrial.OrderMark + x.RowIndex.GetLesionMark(),
OrganInfoId = x.OrganInfoId
- }).OrderBy(x=>x.RowIndex).ToListAsync();
+ }).OrderBy(x => x.RowIndex).ToListAsync();
var organIds = result.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList();
- var organList = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync();
+ var organList = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync();
result.ForEach(x =>
{
@@ -1735,80 +1736,80 @@ namespace IRaCIS.Application.Services
return result;
- }
+ }
- #endregion
+ #endregion
- #region 访视任务 - Dicom 阅片 提交、修改
+ #region 访视任务 - Dicom 阅片 提交、修改
- ///
- /// 保存影像质量
- ///
- ///
- ///
- [HttpPost]
-
- [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
+ ///
+ /// 保存影像质量
+ ///
+ ///
+ ///
+ [HttpPost]
+
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task SaveImageQuality(ChangeDicomReadingQuestionAnswerInDto inDto)
{
inDto.UpdateMark = true;
return await ChangeDicomReadingQuestionAnswer(inDto);
}
- ///
- /// 保存任务问题 带动态稽查参数
- ///
- ///
- /// 请求类型
- ///
- [Route("/SaveTaskQuestion/{param}")]
- [HttpPost]
- public async Task SaveTaskQuestion(ChangeDicomReadingQuestionAnswerInDto inDto, string param)
- {
- var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
+ ///
+ /// 保存任务问题 带动态稽查参数
+ ///
+ ///
+ /// 请求类型
+ ///
+ [Route("/SaveTaskQuestion/{param}")]
+ [HttpPost]
+ public async Task SaveTaskQuestion(ChangeDicomReadingQuestionAnswerInDto inDto, string param)
+ {
+ var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
try
{
param = param == string.Empty ? "0" : param;
inDto.ComputationTrigger = (ComputationTrigger)int.Parse(param);
- }
+ }
catch (Exception)
{
}
- var result = await this.SaveImageQuality(inDto);
+ var result = await this.SaveImageQuality(inDto);
- // 自动计算
- await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
- {
- IsChangeOtherTask = false,
- VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger = inDto.ComputationTrigger,
- });
- return result;
+ // 自动计算
+ await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
+ {
+ IsChangeOtherTask = false,
+ VisitTaskId = inDto.VisitTaskId,
+ ComputationTrigger = inDto.ComputationTrigger,
+ });
+ return result;
- }
+ }
- /////
- ///// 保存ECRF
- /////
- /////
- /////
- //[HttpPost]
- //public async Task SaveImageQuality(ChangeDicomReadingQuestionAnswerInDto inDto)
- //{
- // return await ChangeDicomReadingQuestionAnswer(inDto);
- //}
+ /////
+ ///// 保存ECRF
+ /////
+ /////
+ /////
+ //[HttpPost]
+ //public async Task SaveImageQuality(ChangeDicomReadingQuestionAnswerInDto inDto)
+ //{
+ // return await ChangeDicomReadingQuestionAnswer(inDto);
+ //}
- ///
- /// 修改肿瘤学评估结果
- ///
- ///
- ///
- [HttpPost]
+ ///
+ /// 修改肿瘤学评估结果
+ ///
+ ///
+ ///
+ [HttpPost]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task ChangeDicomReadingQuestionAnswer(ChangeDicomReadingQuestionAnswerInDto inDto)
{
@@ -1824,10 +1825,11 @@ namespace IRaCIS.Application.Services
if (tumorAnswer != null)
{
var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.IsConvertedTask).FirstOrDefaultAsync();
- var reportVerify = await _readingCalculateService.GetReportVerify(new GetReportVerifyInDto() {
- BeforeConvertedTaskId= taskInfo.BeforeConvertedTaskId,
- IsConvertTask= isConvertedTask,
- VisitTaskId=inDto.VisitTaskId
+ var reportVerify = await _readingCalculateService.GetReportVerify(new GetReportVerifyInDto()
+ {
+ BeforeConvertedTaskId = taskInfo.BeforeConvertedTaskId,
+ IsConvertTask = isConvertedTask,
+ VisitTaskId = inDto.VisitTaskId
});
if (tumorAnswer.Answer == reportVerify.TumorEvaluate)
@@ -1883,23 +1885,24 @@ namespace IRaCIS.Application.Services
{
PicturePath = string.Empty,
MeasureData = string.Empty,
- }) ;
+ });
- await _readingTaskQuestionMarkRepository.BatchUpdateNoTrackingAsync(x =>
- (x.QuestionType == QuestionType.LiverSUVmax || x.QuestionType == QuestionType.MediastinumSUVmax) &&
- x.VisitTaskId == inDto.VisitTaskId && needDeleteMarkQuestonIds.Contains(x.QuestionId), x => new ReadingTaskQuestionMark()
- {
- OtherPicturePath = string.Empty,
- OtherMeasureData=string.Empty,
- });
+ await _readingTaskQuestionMarkRepository.BatchUpdateNoTrackingAsync(x =>
+ (x.QuestionType == QuestionType.LiverSUVmax || x.QuestionType == QuestionType.MediastinumSUVmax) &&
+ x.VisitTaskId == inDto.VisitTaskId && needDeleteMarkQuestonIds.Contains(x.QuestionId), x => new ReadingTaskQuestionMark()
+ {
+ OtherPicturePath = string.Empty,
+ OtherMeasureData = string.Empty,
+ });
- await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && markquestionId.Contains(x.QuestionId));
+ await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && markquestionId.Contains(x.QuestionId));
- var datetime = DateTime.Now;
+ var datetime = DateTime.Now;
var markList = _mapper.Map, List>(inDto.QuestionMarkInfoList);
- markList.ForEach(x => {
+ markList.ForEach(x =>
+ {
x.Id = NewId.NextGuid();
x.VisitTaskId = inDto.VisitTaskId;
x.CreateTime = datetime;
@@ -1908,7 +1911,7 @@ namespace IRaCIS.Application.Services
await _readingTaskQuestionMarkRepository.AddRangeAsync(markList);
}
-
+
await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
return ResponseOutput.Ok(true);
}
@@ -1929,9 +1932,9 @@ namespace IRaCIS.Application.Services
{
await VerifyTaskIsSign(inDto.VisitTaskId);
- var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
+ var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
- var deleteRowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).FirstOrDefaultAsync();
+ var deleteRowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).FirstOrDefaultAsync();
if (deleteRowInfo == null)
{
@@ -1953,21 +1956,21 @@ namespace IRaCIS.Application.Services
IsDeleted = true
});
- if (!(await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.SplitRowId == deleteRowInfo.SplitRowId && x.Id != deleteRowInfo.Id)))
+ if (!(await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.SplitRowId == deleteRowInfo.SplitRowId && x.Id != deleteRowInfo.Id)))
{
- await _readingTableAnswerRowInfoRepository.BatchUpdateNoTrackingAsync(x => x.Id == deleteRowInfo.SplitRowId, x => new ReadingTableAnswerRowInfo()
- {
- SplitOrMergeType = null,
- });
- }
-
+ await _readingTableAnswerRowInfoRepository.BatchUpdateNoTrackingAsync(x => x.Id == deleteRowInfo.SplitRowId, x => new ReadingTableAnswerRowInfo()
+ {
+ SplitOrMergeType = null,
+ });
+ }
- await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo()
- {
- IsDeleted = true
- });
- await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
+ await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo()
+ {
+
+ IsDeleted = true
+ });
+ await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
if (inDto.IsNeedSort)
@@ -2077,31 +2080,31 @@ namespace IRaCIS.Application.Services
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
}
-
+
// 自动计算
await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
{
IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId,
- ComputationTrigger=ComputationTrigger.RemoveLesion,
+ ComputationTrigger = ComputationTrigger.RemoveLesion,
});
- switch (taskinfo.TrialReadingCriterion.CriterionType)
- {
- case CriterionType.Lugano2014:
- if (deleteRowInfo.RowIndex % 1 != 0)
- {
- await _luganoCalculateService.CalculateTargetLesionStatus(new CalculateTargetLesionStatusInDto()
- {
- QuestionId = inDto.QuestionId,
- VisitTaskId = inDto.VisitTaskId,
- RowNumber = deleteRowInfo.RowIndex
- });
- }
- break;
- }
- return ResponseOutput.Ok(true);
+ switch (taskinfo.TrialReadingCriterion.CriterionType)
+ {
+ case CriterionType.Lugano2014:
+ if (deleteRowInfo.RowIndex % 1 != 0)
+ {
+ await _luganoCalculateService.CalculateTargetLesionStatus(new CalculateTargetLesionStatusInDto()
+ {
+ QuestionId = inDto.QuestionId,
+ VisitTaskId = inDto.VisitTaskId,
+ RowNumber = deleteRowInfo.RowIndex
+ });
+ }
+ break;
+ }
+ return ResponseOutput.Ok(true);
}
@@ -2248,14 +2251,14 @@ namespace IRaCIS.Application.Services
}
break;
case CriterionType.Lugano2014:
-
- var targetTablequestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == taskinfo.TrialReadingCriterionId && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion).ToListAsync();
- var targetlymphQuestion = targetTablequestionList.Where(x => x.QuestionMark == QuestionMark.IsLymph).FirstOrDefault();
+ var targetTablequestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == taskinfo.TrialReadingCriterionId && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion).ToListAsync();
- // 判断是否存在淋巴结问题
- if (targetlymphQuestion != null && taskinfo.SourceSubjectVisit.VisitNum == 0)
- {
+ var targetlymphQuestion = targetTablequestionList.Where(x => x.QuestionMark == QuestionMark.IsLymph).FirstOrDefault();
+
+ // 判断是否存在淋巴结问题
+ if (targetlymphQuestion != null && taskinfo.SourceSubjectVisit.VisitNum == 0)
+ {
// 判断是否为淋巴结
if (inDto.QuestionId == targetTablequestionList[0].ReadingQuestionId && inDto.AnswerList.Any(x => x.TableQuestionId == targetlymphQuestion.Id && x.Answer.EqEnum(ReadingYesOrNo.No)))
{
@@ -2444,8 +2447,8 @@ namespace IRaCIS.Application.Services
}
else
{
- await _readingTableAnswerRowInfoRepository.UpdateFromDTOAsync(inDto) ;
-
+ await _readingTableAnswerRowInfoRepository.UpdateFromDTOAsync(inDto);
+
foreach (var item in inDto.AnswerList)
{
@@ -2487,7 +2490,7 @@ namespace IRaCIS.Application.Services
// 保存完了计算疾病进展
switch (taskinfo.TrialReadingCriterion.CriterionType)
{
- case CriterionType.Lugano2014:
+ case CriterionType.Lugano2014:
if (inDto.RowIndex % 1 != 0)
{
await _luganoCalculateService.CalculateTargetLesionStatus(new CalculateTargetLesionStatusInDto()
@@ -2498,9 +2501,9 @@ namespace IRaCIS.Application.Services
});
}
break;
- }
+ }
- return result;
+ return result;
}
@@ -2614,13 +2617,13 @@ namespace IRaCIS.Application.Services
return ResponseOutput.Ok(true);
}
-
+
///
- /// 验证访视提交
- ///
- ///
- ///
+ /// 验证访视提交
+ ///
+ ///
+ ///
[HttpPost]
public async Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto)
{
@@ -2629,9 +2632,9 @@ namespace IRaCIS.Application.Services
// 转化后的任务不应该有新病灶
- var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x=>x.IsConvertedTask).FirstNotNullAsync();
+ var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.IsConvertedTask).FirstNotNullAsync();
- if (isConvertedTask&&(await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.ReadingQuestionTrial.LesionType == LesionType.NewLesions && x.VisitTaskId == inDto.VisitTaskId)))
+ if (isConvertedTask && (await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.ReadingQuestionTrial.LesionType == LesionType.NewLesions && x.VisitTaskId == inDto.VisitTaskId)))
{
throw new BusinessValidationFailedException(_localizer["ReadingImage_NotNewFocus"]);
}
@@ -2666,7 +2669,7 @@ namespace IRaCIS.Application.Services
SubjectId = taskInfo.SubjectId,
TrialId = taskInfo.TrialId,
VisitTaskId = taskInfo.Id,
-
+
});
var isBaseLine = false;
@@ -2704,7 +2707,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task GetNextTask(GetNextTaskInDto inDto)
{
- if (inDto.VisitTaskId == null)
+ if (inDto.VisitTaskId == null)
{
await VerifyReadingRestTime();
}
@@ -2741,16 +2744,14 @@ namespace IRaCIS.Application.Services
}
else if (inDto.SubjectId != null && trialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
{
- var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
+ var subjectTaskList = (await _visitTaskService.GetSubjectReadingIQueryable(new GetReadingIQueryableInDto()
{
TrialId = inDto.TrialId,
TrialReadingCriterionId = trialReadingCriterionId!.Value,
- Page = new PageInput()
- {
- PageIndex = 1,
- PageSize = 99999,
- }
- })).Item2;
+ PageIndex = 1,
+ PageSize = 99999,
+
+ })).CurrentPageData;
var index = 0;
subjectTaskList.ForEach(x =>
@@ -2786,37 +2787,34 @@ namespace IRaCIS.Application.Services
}
else if (inDto.SubjectId != null && trialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom)
{
- var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
- {
- TrialId = inDto.TrialId,
- SubjectId=inDto.SubjectId,
- TrialReadingCriterionId = trialReadingCriterionId!.Value,
- Page = new PageInput()
- {
- PageIndex = 1,
- PageSize = 99999,
- }
- })).Item2;
+ var subjectTaskList = (await _visitTaskService.GetSubjectReadingIQueryable(new GetReadingIQueryableInDto()
+ {
+ TrialId = inDto.TrialId,
+ SubjectId = inDto.SubjectId,
+ TrialReadingCriterionId = trialReadingCriterionId!.Value,
+
+ PageIndex = 1,
+ PageSize = 99999,
+
+ })).CurrentPageData;
if (subjectTaskList.Count() == 0)
{
- throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows);
- }
+ throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows);
+ }
var taskList = subjectTaskList.FirstOrDefault()!.UnReadCanReadTaskList;
- var count = taskList.Count();
- Random random = new Random();
- var skipcount = 0;
- if (count >= 2)
- {
- skipcount = random.Next(0, count - 1);
- }
+ var count = taskList.Count();
+ Random random = new Random();
+ var skipcount = 0;
+ if (count >= 2)
+ {
+ skipcount = random.Next(0, count - 1);
+ }
- var visitTaskId= taskList.Skip(skipcount).FirstOrDefault();
+ var visitTaskId = taskList.Skip(skipcount).FirstOrDefault();
-
-
- }
+ }
else
{
var query = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id
@@ -2912,11 +2910,11 @@ namespace IRaCIS.Application.Services
if (visitTaskInfo.ReadingTaskState == ReadingTaskState.WaitReading)
{
- await _readingCalculateService.AddTaskLesionAnswerFromLastTask(new AddTaskLesionAnswerFromLastTaskInDto()
- {
- VisitTaskId = task.VisitTaskId
- });
- }
+ await _readingCalculateService.AddTaskLesionAnswerFromLastTask(new AddTaskLesionAnswerFromLastTaskInDto()
+ {
+ VisitTaskId = task.VisitTaskId
+ });
+ }
// 如果已经签名 就不需要再读了
@@ -2935,8 +2933,8 @@ namespace IRaCIS.Application.Services
{
await AddDefaultValueToTask(task.VisitTaskId);
- }
- return task;
+ }
+ return task;
}
///
@@ -2951,45 +2949,45 @@ namespace IRaCIS.Application.Services
{
return;
}
- var startReadingTimeKey = _userInfo.Id.ToString()+ "StartReadingTime";
- var startRestTimeKey = _userInfo.Id.ToString() + "StartRestTime";
+ var startReadingTimeKey = _userInfo.Id.ToString() + "StartReadingTime";
+ var startRestTimeKey = _userInfo.Id.ToString() + "StartRestTime";
int readingMinute = 120; // 为60整数
int restMinute = 10; //
- var startReadingTime = _provider.Get(startReadingTimeKey).Value;
- var startRestTime = _provider.Get(startRestTimeKey).Value;
+ var startReadingTime = _provider.Get(startReadingTimeKey).Value;
+ var startRestTime = _provider.Get(startRestTimeKey).Value;
if (startReadingTime == null && startRestTime == null)
{
_provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
}
else if (startRestTime != null)
{
- var cacheStartRestTime = DateTime.Parse(startRestTime!.ToString());
- int timespanMin = (DateTime.Now - cacheStartRestTime).Minutes;
+ var cacheStartRestTime = DateTime.Parse(startRestTime!.ToString());
+ int timespanMin = (DateTime.Now - cacheStartRestTime).Minutes;
if (timespanMin <= restMinute)
{
- throw new BusinessValidationFailedException(_localizer["ReadingImage_NeedRest", readingMinute/60m, restMinute]);
+ throw new BusinessValidationFailedException(_localizer["ReadingImage_NeedRest", readingMinute / 60m, restMinute]);
}
- else
+ else
{
// 休息时间>10分钟 删除休息时间的缓存 记录开始阅片时间
- _provider.Remove(startRestTimeKey);
- _provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
- }
+ _provider.Remove(startRestTimeKey);
+ _provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
+ }
- }
+ }
// 如果开始阅片时间 不为空
else if (startReadingTime != null)
- {
+ {
#region 两小时
var cacheDate = DateTime.Parse(startReadingTime!.ToString());
int timespanMin = (DateTime.Now - cacheDate).Minutes;
if (timespanMin > readingMinute)
{
- _provider.Remove(startReadingTimeKey);
- _provider.Set(startRestTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
- throw new BusinessValidationFailedException(_localizer["ReadingImage_NeedRest", readingMinute / 60m, restMinute]);
+ _provider.Remove(startReadingTimeKey);
+ _provider.Set(startRestTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
+ throw new BusinessValidationFailedException(_localizer["ReadingImage_NeedRest", readingMinute / 60m, restMinute]);
}
#endregion
@@ -3003,18 +3001,18 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task ResetReadingRestTime(Guid? userID)
{
- if(userID == null)
+ if (userID == null)
{
userID = _userInfo.Id;
- }
+ }
- var startReadingTimeKey = userID.ToString() + "StartReadingTime";
- var startRestTimeKey = userID.ToString() + "StartRestTime";
- //int readingMinute = 120; // 为60整数
- int restMinute = 10; //
+ var startReadingTimeKey = userID.ToString() + "StartReadingTime";
+ var startRestTimeKey = userID.ToString() + "StartRestTime";
+ //int readingMinute = 120; // 为60整数
+ int restMinute = 10; //
- var startReadingTime = _provider.Get(startReadingTimeKey).Value;
- var startRestTime = _provider.Get(startRestTimeKey).Value;
+ var startReadingTime = _provider.Get(startReadingTimeKey).Value;
+ var startRestTime = _provider.Get(startRestTimeKey).Value;
if (startRestTime != null)
{
var cacheStartRestTime = DateTime.Parse(startRestTime!.ToString());
@@ -3026,16 +3024,16 @@ namespace IRaCIS.Application.Services
}
else if (startReadingTime != null)
{
- _provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
- }
- }
+ _provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48));
+ }
+ }
- ///
- /// 签名提交任务修改状态
- ///
- ///
- ///
- private async Task SubmitTaskChangeState(Guid visitTaskId)
+ ///
+ /// 签名提交任务修改状态
+ ///
+ ///
+ ///
+ private async Task SubmitTaskChangeState(Guid visitTaskId)
{
await VerifyTaskIsSign(visitTaskId);
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
@@ -3048,9 +3046,9 @@ namespace IRaCIS.Application.Services
bool isConverted = false;
- var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x=>x.TrialReadingCriterion).FirstNotNullAsync();
+ var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
- var isConvertedTask=await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(x=>x.IsConvertedTask).FirstNotNullAsync();
+ var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(x => x.IsConvertedTask).FirstNotNullAsync();
switch (taskinfo.TrialReadingCriterion.CriterionType)
{
case CriterionType.IRECIST1Point1:
@@ -3059,7 +3057,7 @@ namespace IRaCIS.Application.Services
if (!isConvertedTask &&
(await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == visitTaskId
- && x.ReadingQuestionTrial.QuestionType == QuestionType.Tumor && x.Answer==(((int)OverallAssessment.PD)).ToString()))
+ && x.ReadingQuestionTrial.QuestionType == QuestionType.Tumor && x.Answer == (((int)OverallAssessment.PD)).ToString()))
)
{
@@ -3093,7 +3091,7 @@ namespace IRaCIS.Application.Services
await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId);
}
-
+
}
@@ -3154,7 +3152,7 @@ namespace IRaCIS.Application.Services
x.DoctorUserId == taskInfo.DoctorUserId &&
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
- (x.TaskState == TaskState.Effect||x.TaskState==TaskState.Freeze) &&
+ (x.TaskState == TaskState.Effect || x.TaskState == TaskState.Freeze) &&
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
x.ReadingCategory == taskInfo.ReadingCategory &&
@@ -3257,7 +3255,7 @@ namespace IRaCIS.Application.Services
case ReadingCategory.Visit:
needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId &&
- x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId )
+ x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId)
.Select(x => new ReadingGenerataTaskDTO
{
IsUrgent = x.IsUrgent ?? false,
@@ -3268,9 +3266,9 @@ namespace IRaCIS.Application.Services
ReadingCategory = typeChangeDic[x.ModuleType],
}).ToListAsync();
-
- if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global)&& taskInfo.TrialReadingCriterion.IsGlobalReading)
+
+ if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global) && taskInfo.TrialReadingCriterion.IsGlobalReading)
{
needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList();
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
@@ -3285,13 +3283,13 @@ namespace IRaCIS.Application.Services
else if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Oncology))
{
// 添加肿瘤学
- if (await _visitTaskRepository.AnyAsync(x => x.Id == visitTaskId && x.JudgeVisitTaskId == null))
- {
- await AddOncologyTask(needReadList.Where(x=> x.ReadingCategory == ReadingCategory.Oncology).First().ReadModuleId);
- }
- }
+ if (await _visitTaskRepository.AnyAsync(x => x.Id == visitTaskId && x.JudgeVisitTaskId == null))
+ {
+ await AddOncologyTask(needReadList.Where(x => x.ReadingCategory == ReadingCategory.Oncology).First().ReadModuleId);
+ }
+ }
//needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
-
+
break;
// 肿瘤学
case ReadingCategory.Global: