diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 278074b04..bda824039 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -1168,349 +1168,6 @@
-
-
- 获取Sod的值
-
-
-
-
- 删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
-
-
-
-
-
- 获取阅片报告
-
-
-
-
-
-
- 测试计算
-
-
-
-
-
-
-
- 计算任务
-
-
-
-
-
-
- 获取报告验证的信息(这里每个标准可能不一样 返回用object)
-
-
-
-
-
-
- 自动计算
-
-
-
-
-
-
-
- 获取报告整体整体评估
-
-
-
-
-
-
- 获取报告是否存在疾病
-
-
-
-
-
-
- 验证访视提交
-
-
-
-
-
-
- 将上一次的访视病灶添加到这一次
-
-
-
-
-
-
- 获取SOD
-
-
- 靶病灶径线之和(SOD)
- 非淋巴结的长径 和淋巴结的短径
-
-
-
-
-
- 非淋巴结靶病灶长径之和
-
-
-
-
-
-
- 与基线SOD相比变化量(mm)
-
-
-
-
-
-
- 与基线访视相比SOD变化百分比
-
-
-
-
-
-
- 与整个访视期间SOD最低点相比增加的值(mm)
-
-
-
- 要更新之前的
-
-
-
-
-
- 与整个访视期间SOD最低点相比增加的百分比
-
-
-
- 要更新之前的
-
-
-
-
-
- 整个访视期间SOD最低点访视名称
-
-
-
- 要更新之前的
-
-
-
-
-
- 是否存在非淋巴结靶病灶
-
-
-
-
-
-
- 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上
-
-
-
-
-
-
- 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶
-
-
-
-
-
-
- 被评估为NE的单个靶病灶
-
-
-
-
-
-
- 整体肿瘤评估
-
-
-
-
-
-
- 是否存在疾病
-
-
-
-
-
-
- 修改与整个访视期间SOD最低点相比增加的值(mm)
-
-
-
-
-
-
- 修改最低方式点名称
-
-
-
-
-
-
- 修改所有访视任务的答案
-
-
-
-
-
-
-
-
- 获取基线SOD
-
-
-
-
-
-
- 获取最低方式
-
-
-
-
-
-
- 获取访视任务信息
-
-
-
-
-
-
- 获取上一个访视任务Id
-
-
-
-
-
-
- 获取非靶病灶评估
-
-
-
-
-
-
- 获取新病灶评估
-
-
-
-
-
-
- 删除病灶获取起始病灶序号
-
-
-
-
-
- 获取阅片报告
-
-
-
-
-
-
- 将上一次的病灶信息添加到这一次
-
-
-
-
-
-
- 测试计算
-
-
-
-
-
-
-
- 计算任务
-
-
-
-
-
-
- 自动计算
-
-
-
-
-
-
-
- 基线病灶计数
-
-
-
-
-
-
- 获取新病灶计数
-
-
-
-
-
-
- 既往新病灶计数
-
-
-
-
-
-
- 自治疗后第二个访视点以来持续的新骨病变数量
-
-
-
-
-
-
- 获取
-
-
-
-
-
-
- 访视点肿瘤评估
-
-
-
-
-
-
- 修改上一次访视结果
-
-
-
-
-
-
- 获取访视日期信息
-
-
-
-
获取Sod的值
@@ -1755,6 +1412,349 @@
+
+
+ 删除病灶获取起始病灶序号
+
+
+
+
+
+ 获取阅片报告
+
+
+
+
+
+
+ 将上一次的病灶信息添加到这一次
+
+
+
+
+
+
+ 测试计算
+
+
+
+
+
+
+
+ 计算任务
+
+
+
+
+
+
+ 自动计算
+
+
+
+
+
+
+
+ 基线病灶计数
+
+
+
+
+
+
+ 获取新病灶计数
+
+
+
+
+
+
+ 既往新病灶计数
+
+
+
+
+
+
+ 自治疗后第二个访视点以来持续的新骨病变数量
+
+
+
+
+
+
+ 获取
+
+
+
+
+
+
+ 访视点肿瘤评估
+
+
+
+
+
+
+ 修改上一次访视结果
+
+
+
+
+
+
+ 获取访视日期信息
+
+
+
+
+
+
+ 获取Sod的值
+
+
+
+
+ 删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
+
+
+
+
+
+ 获取阅片报告
+
+
+
+
+
+
+ 测试计算
+
+
+
+
+
+
+
+ 计算任务
+
+
+
+
+
+
+ 获取报告验证的信息(这里每个标准可能不一样 返回用object)
+
+
+
+
+
+
+ 自动计算
+
+
+
+
+
+
+
+ 获取报告整体整体评估
+
+
+
+
+
+
+ 获取报告是否存在疾病
+
+
+
+
+
+
+ 验证访视提交
+
+
+
+
+
+
+ 将上一次的访视病灶添加到这一次
+
+
+
+
+
+
+ 获取SOD
+
+
+ 靶病灶径线之和(SOD)
+ 非淋巴结的长径 和淋巴结的短径
+
+
+
+
+
+ 非淋巴结靶病灶长径之和
+
+
+
+
+
+
+ 与基线SOD相比变化量(mm)
+
+
+
+
+
+
+ 与基线访视相比SOD变化百分比
+
+
+
+
+
+
+ 与整个访视期间SOD最低点相比增加的值(mm)
+
+
+
+ 要更新之前的
+
+
+
+
+
+ 与整个访视期间SOD最低点相比增加的百分比
+
+
+
+ 要更新之前的
+
+
+
+
+
+ 整个访视期间SOD最低点访视名称
+
+
+
+ 要更新之前的
+
+
+
+
+
+ 是否存在非淋巴结靶病灶
+
+
+
+
+
+
+ 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上
+
+
+
+
+
+
+ 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶
+
+
+
+
+
+
+ 被评估为NE的单个靶病灶
+
+
+
+
+
+
+ 整体肿瘤评估
+
+
+
+
+
+
+ 是否存在疾病
+
+
+
+
+
+
+ 修改与整个访视期间SOD最低点相比增加的值(mm)
+
+
+
+
+
+
+ 修改最低方式点名称
+
+
+
+
+
+
+ 修改所有访视任务的答案
+
+
+
+
+
+
+
+
+ 获取基线SOD
+
+
+
+
+
+
+ 获取最低方式
+
+
+
+
+
+
+ 获取访视任务信息
+
+
+
+
+
+
+ 获取上一个访视任务Id
+
+
+
+
+
+
+ 获取非靶病灶评估
+
+
+
+
+
+
+ 获取新病灶评估
+
+
+
+
获取Sod的值
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index 1258c41a9..dbd5048bd 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -896,6 +896,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
[HttpPost]
public async Task<(PageOutput, object)> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
{
+
var trialId = iRUnReadSubjectQuery.TrialId;
var trialReadingCriterionId = iRUnReadSubjectQuery.TrialReadingCriterionId;
@@ -905,41 +906,40 @@ namespace IRaCIS.Core.Application.Service.Allocation
var readingTool = criterionConfig.ReadingTool;
var isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
- var visitTaskListInfo = await GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
- {
- TrialId = trialId,
- TrialReadingCriterionId = trialReadingCriterionId,
- SubjectCode = iRUnReadSubjectQuery.SubjectCode,
- Page = new PageInput()
- {
- PageIndex = iRUnReadSubjectQuery.PageIndex,
- PageSize = iRUnReadSubjectQuery.PageSize,
- Asc = iRUnReadSubjectQuery.Asc,
- SortField = iRUnReadSubjectQuery.SortField,
-
- }
-
- });
-
-
- var totalCount = visitTaskListInfo.Item1;
- var currentPageData = visitTaskListInfo.Item2;
-
-
-
- var result = new PageOutput()
- {
- PageSize = iRUnReadSubjectQuery.PageSize,
- PageIndex = iRUnReadSubjectQuery.PageIndex,
- TotalCount = totalCount,
- CurrentPageData = currentPageData,
- };
-
-
#region 按照Subject 维度
if (isReadingTaskViewInOrder)
{
+
+ var visitTaskListInfo = await GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
+ {
+ TrialId = trialId,
+ TrialReadingCriterionId = trialReadingCriterionId,
+ SubjectCode = iRUnReadSubjectQuery.SubjectCode,
+ Page = new PageInput()
+ {
+ PageIndex = iRUnReadSubjectQuery.PageIndex,
+ PageSize = iRUnReadSubjectQuery.PageSize,
+ Asc = iRUnReadSubjectQuery.Asc,
+ SortField = iRUnReadSubjectQuery.SortField,
+
+ }
+
+ });
+
+
+ var totalCount = visitTaskListInfo.Item1;
+ var currentPageData = visitTaskListInfo.Item2;
+
+
+
+ var result = new PageOutput()
+ {
+ PageSize = iRUnReadSubjectQuery.PageSize,
+ PageIndex = iRUnReadSubjectQuery.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);
@@ -957,10 +957,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
}
else
{
-
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == iRUnReadSubjectQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
// .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId)))
- .Where(x => !x.Subject.IsDeleted);
+ .Where(x => !x.Subject.IsDeleted).Where(x=>(x.IsNeedClinicalDataSign&&x.IsClinicalDataSign)||!x.IsNeedClinicalDataSign);
IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
{
@@ -973,8 +972,65 @@ namespace IRaCIS.Core.Application.Service.Allocation
+ var visitGroupQuery = taskQuery.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),
+
+ //未读任务量
+ 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).Count(),
+
+ ExistReadingApply = x.Any(y => y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || 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);
+
+
+ var totalCount = await visitGroupQuery.CountAsync();
+ var currentPageData =await visitTaskQuery.ToListAsync();
+
+ var result = new PageOutput()
+ {
+ PageSize = iRUnReadSubjectQuery.PageSize,
+ PageIndex = iRUnReadSubjectQuery.PageIndex,
+ TotalCount = totalCount,
+ CurrentPageData = currentPageData,
+ };
+
return (result, new
{
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,