diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 30b2eaff0..0e01fbff5 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -15378,7 +15378,7 @@
-
+
用ef 实现之前视图的功能
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
index 1dc49ade4..e02ce0652 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
@@ -271,7 +271,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public List Data { get; set; } = new List();
- //public List Data =>VisitData.Union(ReadMouduleData).ToList();
+ //public List Data => VisitData.Union(ReadMouduleData).ToList();
[JsonIgnore]
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
index 324e8fe40..13d6b67e5 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
@@ -10,6 +10,7 @@ using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Domain.Models;
using Microsoft.Identity.Client;
+using NPOI.SS.Formula.Functions;
namespace IRaCIS.Application.Services
{
@@ -107,7 +108,7 @@ namespace IRaCIS.Application.Services
///
///
[HttpPost]
- public async Task>> GetReadModuleList_New(GetReadModuleDto inQuery)
+ public async Task>> GetReadModuleList_new(GetReadModuleDto inQuery)
{
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(x => new
@@ -126,64 +127,417 @@ namespace IRaCIS.Application.Services
var isFilterModuleType = inQuery.ModuleType != null;
var isFilterCompleteClinicalData = inQuery.CompleteClinicalData != null;
var isFilterReadingStatus = inQuery.ReadingStatus != null;
- var isFilterName = !string.IsNullOrWhiteSpace(inQuery.Name) ;
-
- var query = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
- .WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
- .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
- .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), x => x.Code.Contains(inQuery.SubjectCode))
-
- .Select(t => new GetReadModuleDtoOut()
- {
- SubjectCode = t.Code,
- SubjectId = t.Id,
- TrialSiteCode = t.TrialSite.TrialSiteCode,
- TrialSiteId = t.TrialSiteId,
-
- #region 分开不用union 在属性里面union
-
- //访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
- VisitData = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
-
- .Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
- {
- Id = sv.Id,
- CreateTime = sv.CreateTime,
- PDState = sv.PDState,
- IsBaseLine = sv.IsBaseLine,
- SubjectCode = sv.Subject.Code,
- IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
- IsFinalVisit = sv.IsFinalVisit,
- SubjectId = sv.SubjectId,
- SubjectVisitId = sv.Id,
- IsUrgent = sv.IsUrgent,
- SubjectVisitName = sv.VisitName,
- IsVisit = true,
-
- Name = sv.VisitName,
- TrialSiteId = sv.TrialSiteId,
- TrialSiteCode = sv.TrialSite.TrialSiteCode,
-
- TrialId = sv.TrialId,
- VisitNum = sv.VisitNum,
- TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
-
- OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
-
- OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
-
- ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
-
- //只有阅片期有
- CutOffVisitId = null,
- CutOffVisitName = null,
- ReadingSetType = null,
- ReadModuleId = null,
- ReadModuleName = "",
+ var isFilterName = !string.IsNullOrWhiteSpace(inQuery.Name);
- ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
- ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
+ #region 方式一
+
+
+
+ //var query = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
+ // .WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
+ // .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
+ // .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), x => x.Code.Contains(inQuery.SubjectCode))
+
+ // .Select(t => new GetReadModuleDtoOut()
+ // {
+ // SubjectCode = t.Code,
+ // SubjectId = t.Id,
+ // TrialSiteCode = t.TrialSite.TrialSiteCode,
+ // TrialSiteId = t.TrialSiteId,
+
+ // #region 分开不用union 在属性里面union
+
+ // //访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
+ // VisitData = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
+
+ // .Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
+ // {
+ // Id = sv.Id,
+ // CreateTime = sv.CreateTime,
+ // PDState = sv.PDState,
+ // IsBaseLine = sv.IsBaseLine,
+ // SubjectCode = sv.Subject.Code,
+ // IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
+ // IsFinalVisit = sv.IsFinalVisit,
+ // SubjectId = sv.SubjectId,
+ // SubjectVisitId = sv.Id,
+ // IsUrgent = sv.IsUrgent,
+ // SubjectVisitName = sv.VisitName,
+ // IsVisit = true,
+
+ // Name = sv.VisitName,
+ // TrialSiteId = sv.TrialSiteId,
+ // TrialSiteCode = sv.TrialSite.TrialSiteCode,
+
+ // TrialId = sv.TrialId,
+ // VisitNum = sv.VisitNum,
+ // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
+
+ // OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
+
+ // ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
+
+ // //只有阅片期有
+ // CutOffVisitId = null,
+ // CutOffVisitName = null,
+ // ReadingSetType = null,
+ // ReadModuleId = null,
+ // ReadModuleName = "",
+
+
+ // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
+ // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+ // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate)),
+
+
+
+ // //是否是截止访视?
+ // IsCanChangeCutOffVisit = false,
+
+ // //需要签名数量计算 基线包含subject+访视级别的
+ // NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(t => t.TrialClinicalDataSet)).Where(t => t.IsConfirm == true).
+ // Where(t => sv.IsBaseLine ? t.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
+ // + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(t => t.TrialClinicalDataSet)).Where(t => t.IsConfirm == true)
+ // .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
+
+ // //签名的数量
+
+ // SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
+ // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // +
+ // (sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
+ // .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
+
+
+
+
+
+ // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // CriterionName = criterionInfo.CriterionName
+
+
+ // })
+
+ // .Where(t => isFilterModuleType ? t.ModuleType == inQuery.ModuleType : true)
+ // .Where(t => isFilterName ? t.Name == inQuery.Name : true)
+ // .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
+
+ // //搜索条件报错
+ // //.WhereIf(inQuery.ModuleType != null, t => t.ModuleType == inQuery.ModuleType)
+ // //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA, x => x.NeedSignClinicalDataCount == 0)
+ // //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete, x => x.NeedSignClinicalDataCount != x.SignClinicalDataCount)
+ // //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete, x => x.NeedSignClinicalDataCount != 0 && x.NeedSignClinicalDataCount == x.SignClinicalDataCount)
+ // //.WhereIf(inQuery.ReadingStatus != null, x => x.ReadingStatus == inQuery.ReadingStatus)
+ // .ToList(),
+
+ // //阅片期
+ // ReadMouduleData = t.ReadModuleList.Select(rm => new ReadModuleView()
+ // {
+ // Id = rm.Id,
+ // CreateTime = rm.CreateTime,
+ // PDState = PDStateEnum.None,
+ // IsBaseLine = false,
+ // SubjectCode = rm.SubjectVisit.Subject.Code,
+ // IsEnrollmentConfirm = false,
+ // IsFinalVisit = false,
+ // SubjectId = rm.SubjectId,
+ // SubjectVisitId = rm.SubjectVisitId,
+ // IsUrgent = rm.SubjectVisit.IsUrgent,
+ // SubjectVisitName = rm.SubjectVisit.VisitName,
+ // IsVisit = false,
+
+ // Name = rm.ModuleName,
+ // TrialSiteId = rm.Subject.TrialSiteId,
+ // TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
+
+ // TrialId = rm.TrialId,
+ // VisitNum = rm.SubjectVisit.VisitNum,
+ // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // OutPlanPreviousVisitId = null,
+
+ // OutPlanPreviousVisitName = null,
+
+ // ModuleType = rm.ModuleType,
+
+ // //只有阅片期有
+ // CutOffVisitId = rm.SubjectVisit.Id,
+ // CutOffVisitName = rm.SubjectVisit.VisitName,
+ // ReadingSetType = null,
+
+ // //之前视图返回的null 应该是没用的?
+ // ReadModuleId = rm.Id,
+ // ReadModuleName = rm.ModuleName,
+
+ // //是否是截止访视?
+ // IsCanChangeCutOffVisit = false,
+
+
+ // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
+ // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+
+ // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate
+ // )
+ // ),
+
+
+
+
+
+ // ////需要签名数量计算 基线包含subject+访视级别的
+ // NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
+ // +
+ // (rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.CRC &&
+ // (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
+ // ,
+
+ // //签名的数量
+
+ // SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
+ // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // +
+ // (rm.IsPMConfirm ? 1 : 0),
+
+
+ // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // CriterionName = criterionInfo.CriterionName
+
+ // })
+ // .Where(t => isFilterModuleType ? t.ModuleType == inQuery.ModuleType : true)
+ // .Where(t => isFilterName ? t.Name == inQuery.Name : true)
+ // .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
+ // .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
+ // .ToList()
+
+ // #endregion
+
+ // #region 用union 报错不行的
+
+ // ////访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
+ // //Data = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
+ // //.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
+ // //{
+ // // Id = sv.Id,
+ // // CreateTime = sv.CreateTime,
+ // // PDState = sv.PDState,
+ // // IsBaseLine = sv.IsBaseLine,
+ // // SubjectCode = sv.Subject.Code,
+ // // IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
+ // // IsFinalVisit = sv.IsFinalVisit,
+ // // SubjectId = sv.SubjectId,
+ // // SubjectVisitId = sv.Id,
+ // // IsUrgent = sv.IsUrgent,
+ // // SubjectVisitName = sv.VisitName,
+ // // IsVisit = true,
+
+ // // Name = sv.VisitName,
+ // // TrialSiteId = sv.TrialSiteId,
+ // // TrialSiteCode = sv.TrialSite.TrialSiteCode,
+
+ // // TrialId = sv.TrialId,
+ // // VisitNum = sv.VisitNum,
+ // // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // // OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
+
+ // // OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
+
+ // // ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
+
+ // // //只有阅片期有
+ // // CutOffVisitId = null,
+ // // CutOffVisitName = null,
+ // // ReadingSetType = null,
+ // // ReadModuleId = null,
+ // // ReadModuleName = "",
+
+
+ // // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // // ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
+ // // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+ // // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate)),
+
+
+
+ // // //是否是截止访视?
+ // // IsCanChangeCutOffVisit = false,
+
+ // // //需要签名数量计算 基线包含subject+访视级别的
+ // // NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true).
+ // // Where(t => sv.IsBaseLine ? t.TrialClinicalDataSet.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
+ // // + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true)
+ // // .Any(t => t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
+
+ // // //签名的数量
+
+ // // SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
+ // // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // // +
+ // // (sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
+ // // .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
+
+
+
+
+
+ // // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // // CriterionName = criterionInfo.CriterionName
+
+
+ // //})
+ // //.Union(t.ReadModuleList.AsQueryable().Select(rm => new ReadModuleView()
+ // //{
+ // // Id = rm.Id,
+ // // CreateTime = rm.CreateTime,
+ // // PDState = PDStateEnum.None,
+ // // IsBaseLine = false,
+ // // SubjectCode = rm.SubjectVisit.Subject.Code,
+ // // IsEnrollmentConfirm = false,
+ // // IsFinalVisit = false,
+ // // SubjectId = rm.SubjectId,
+ // // SubjectVisitId = rm.SubjectVisitId,
+ // // IsUrgent = rm.SubjectVisit.IsUrgent,
+ // // SubjectVisitName = rm.SubjectVisit.VisitName,
+ // // IsVisit = false,
+
+ // // Name = rm.ModuleName,
+ // // TrialSiteId = rm.Subject.TrialSiteId,
+ // // TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
+
+ // // TrialId = rm.TrialId,
+ // // VisitNum = rm.SubjectVisit.VisitNum,
+ // // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // // OutPlanPreviousVisitId = null,
+
+ // // OutPlanPreviousVisitName = null,
+
+ // // ModuleType = rm.ModuleType,
+
+ // // //只有阅片期有
+ // // CutOffVisitId = rm.SubjectVisit.Id,
+ // // CutOffVisitName = rm.SubjectVisit.VisitName,
+ // // ReadingSetType = null,
+
+ // // //之前视图返回的null 应该是没用的?
+ // // ReadModuleId = rm.Id,
+ // // ReadModuleName = rm.ModuleName,
+
+ // // //是否是截止访视?
+ // // IsCanChangeCutOffVisit = false,
+
+
+ // // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // // ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
+ // // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+
+ // // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate
+ // // )
+ // // ),
+
+
+
+
+
+ // // //需要签名数量计算 基线包含subject+访视级别的
+ // // NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
+ // // +
+ // // (rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.CRC &&
+ // // (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
+ // // ,
+
+ // // //签名的数量
+
+ // // SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
+ // // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // // +
+ // // (rm.IsPMConfirm ? 1 : 0),
+
+
+ // // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // // CriterionName = criterionInfo.CriterionName
+
+ // //})).ToList()
+
+ // #endregion
+
+
+
+
+
+
+ // });
+
+
+ //var pageList = await query/*.Where(t=> (t.VisitData.Count + t.ReadMouduleData.Count)>0)*//*.AsSplitQuery()*/
+ // .ToPagedListAsync(inQuery, nameof(GetReadModuleDtoOut.SubjectCode));
+
+ #endregion
+
+ #region 方式二
+
+ var subjectVisitQuery = _subjectVisitRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => t.IsLostVisit == false)
+ .Where(sv => sv.Subject.FinalSubjectVisitId == null ? true : sv.VisitNum < sv.Subject.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
+ {
+ Id = sv.Id,
+ CreateTime = sv.CreateTime,
+ PDState = sv.PDState,
+ IsBaseLine = sv.IsBaseLine,
+ SubjectCode = sv.Subject.Code,
+ IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
+ IsFinalVisit = sv.IsFinalVisit,
+ SubjectId = sv.SubjectId,
+ SubjectVisitId = sv.Id,
+ IsUrgent = sv.IsUrgent,
+ SubjectVisitName = sv.VisitName,
+ IsVisit = true,
+
+ Name = sv.VisitName,
+ TrialSiteId = sv.TrialSiteId,
+ TrialSiteCode = sv.TrialSite.TrialSiteCode,
+
+ TrialId = sv.TrialId,
+ VisitNum = sv.VisitNum,
+ TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
+
+ OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
+
+ ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
+
+ //只有阅片期有
+ CutOffVisitId = null,
+ CutOffVisitName = null,
+ ReadingSetType = null,
+ ReadModuleId = null,
+ ReadModuleName = "",
+
+
+ ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
(sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
&& t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
(sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
@@ -191,19 +545,19 @@ namespace IRaCIS.Application.Services
- //是否是截止访视?
- IsCanChangeCutOffVisit = false,
+ //是否是截止访视?
+ IsCanChangeCutOffVisit = false,
- //需要签名数量计算 基线包含subject+访视级别的
- NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true).
- Where(t => sv.IsBaseLine ? t.TrialClinicalDataSet.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
- + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true)
- .Any(t => t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
+ //需要签名数量计算 基线包含subject+访视级别的
+ NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(t => t.TrialClinicalDataSet)).Where(t => t.IsConfirm == true).
+ Where(t => sv.IsBaseLine ? t.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
+ + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(t => t.TrialClinicalDataSet)).Where(t => t.IsConfirm == true)
+ .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
- //签名的数量
+ //签名的数量
- SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
- t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
+ t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+
(sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
.Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
@@ -212,72 +566,57 @@ namespace IRaCIS.Application.Services
- //标准名 应该是可以不查询的,只要保证逻辑正确
- CriterionName = criterionInfo.CriterionName
+ //标准名 应该是可以不查询的,只要保证逻辑正确
+ CriterionName = criterionInfo.CriterionName
- })
+ });
- .Where(t=>isFilterModuleType? t.ModuleType==inQuery.ModuleType:true)
- .Where(t => isFilterName ? t.Name == inQuery.Name : true)
- .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
+ var readMouduleQuery = _readModuleRepository.Where(t => t.TrialId == inQuery.TrialId)
+ .Select(rm => new ReadModuleView()
+ {
+ Id = rm.Id,
+ CreateTime = rm.CreateTime,
+ PDState = PDStateEnum.None,
+ IsBaseLine = false,
+ SubjectCode = rm.SubjectVisit.Subject.Code,
+ IsEnrollmentConfirm = false,
+ IsFinalVisit = false,
+ SubjectId = rm.SubjectId,
+ SubjectVisitId = rm.SubjectVisitId,
+ IsUrgent = rm.SubjectVisit.IsUrgent,
+ SubjectVisitName = rm.SubjectVisit.VisitName,
+ IsVisit = false,
- //搜索条件报错
- //.WhereIf(inQuery.ModuleType != null, t => t.ModuleType == inQuery.ModuleType)
- //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA, x => x.NeedSignClinicalDataCount == 0)
- //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete, x => x.NeedSignClinicalDataCount != x.SignClinicalDataCount)
- //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete, x => x.NeedSignClinicalDataCount != 0 && x.NeedSignClinicalDataCount == x.SignClinicalDataCount)
- //.WhereIf(inQuery.ReadingStatus != null, x => x.ReadingStatus == inQuery.ReadingStatus)
- .ToList(),
+ Name = rm.ModuleName,
+ TrialSiteId = rm.Subject.TrialSiteId,
+ TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
- //阅片期
- ReadMouduleData = t.ReadModuleList.Select(rm => new ReadModuleView()
- {
- Id = rm.Id,
- CreateTime = rm.CreateTime,
- PDState = PDStateEnum.None,
- IsBaseLine = false,
- SubjectCode = rm.SubjectVisit.Subject.Code,
- IsEnrollmentConfirm = false,
- IsFinalVisit = false,
- SubjectId = rm.SubjectId,
- SubjectVisitId = rm.SubjectVisitId,
- IsUrgent = rm.SubjectVisit.IsUrgent,
- SubjectVisitName = rm.SubjectVisit.VisitName,
- IsVisit = false,
+ TrialId = rm.TrialId,
+ VisitNum = rm.SubjectVisit.VisitNum,
+ TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
- Name = rm.ModuleName,
- TrialSiteId = rm.Subject.TrialSiteId,
- TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
+ OutPlanPreviousVisitId = null,
- TrialId = rm.TrialId,
- VisitNum = rm.SubjectVisit.VisitNum,
- TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+ OutPlanPreviousVisitName = null,
- OutPlanPreviousVisitId = null,
+ ModuleType = rm.ModuleType,
- OutPlanPreviousVisitName = null,
+ //只有阅片期有
+ CutOffVisitId = rm.SubjectVisit.Id,
+ CutOffVisitName = rm.SubjectVisit.VisitName,
+ ReadingSetType = null,
- ModuleType = rm.ModuleType,
+ //之前视图返回的null 应该是没用的?
+ ReadModuleId = rm.Id,
+ ReadModuleName = rm.ModuleName,
- //只有阅片期有
- CutOffVisitId = rm.SubjectVisit.Id,
- CutOffVisitName = rm.SubjectVisit.VisitName,
- ReadingSetType = null,
-
- //之前视图返回的null 应该是没用的?
- ReadModuleId = rm.Id,
- ReadModuleName = rm.ModuleName,
-
- //是否是截止访视?
- IsCanChangeCutOffVisit = false,
+ //是否是截止访视?
+ IsCanChangeCutOffVisit = false,
- ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
- ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
+ ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
(rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
&& t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
@@ -290,8 +629,8 @@ namespace IRaCIS.Application.Services
- //需要签名数量计算 基线包含subject+访视级别的
- NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ ////需要签名数量计算 基线包含subject+访视级别的
+ NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
.Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
+
(rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
@@ -299,198 +638,62 @@ namespace IRaCIS.Application.Services
(t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
,
- //签名的数量
+ //签名的数量
- SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
- t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
+ t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+
(rm.IsPMConfirm ? 1 : 0),
- //标准名 应该是可以不查询的,只要保证逻辑正确
- CriterionName = criterionInfo.CriterionName
+ //标准名 应该是可以不查询的,只要保证逻辑正确
+ CriterionName = criterionInfo.CriterionName
- })
- .Where(t => isFilterModuleType ? t.ModuleType == inQuery.ModuleType : true)
- .Where(t => isFilterName ? t.Name == inQuery.Name : true)
- .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
- .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
- .ToList()
-
- #endregion
-
- #region 用union 报错不行的
-
- ////访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
- //Data = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
- //.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
- //{
- // Id = sv.Id,
- // CreateTime = sv.CreateTime,
- // PDState = sv.PDState,
- // IsBaseLine = sv.IsBaseLine,
- // SubjectCode = sv.Subject.Code,
- // IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
- // IsFinalVisit = sv.IsFinalVisit,
- // SubjectId = sv.SubjectId,
- // SubjectVisitId = sv.Id,
- // IsUrgent = sv.IsUrgent,
- // SubjectVisitName = sv.VisitName,
- // IsVisit = true,
-
- // Name = sv.VisitName,
- // TrialSiteId = sv.TrialSiteId,
- // TrialSiteCode = sv.TrialSite.TrialSiteCode,
-
- // TrialId = sv.TrialId,
- // VisitNum = sv.VisitNum,
- // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
-
- // OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
-
- // OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
-
- // ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
-
- // //只有阅片期有
- // CutOffVisitId = null,
- // CutOffVisitName = null,
- // ReadingSetType = null,
- // ReadModuleId = null,
- // ReadModuleName = "",
+ });
- // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
- // ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
- // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
- // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
- // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
- // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate)),
+ var query = subjectVisitQuery.Union(readMouduleQuery)
+ .WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
+ .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSiteCode.Contains(inQuery.TrialSiteCode))
+ .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), x => x.SubjectCode.Contains(inQuery.SubjectCode))
+ .WhereIf(isFilterModuleType, t => t.ModuleType == inQuery.ModuleType)
+ .WhereIf(isFilterName, t => t.Name == inQuery.Name)
+ .WhereIf(isFilterReadingStatus, t => t.ReadingStatus == inQuery.ReadingStatus)
+ .WhereIf(isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA, t => t.NeedSignClinicalDataCount == 0)
+ .WhereIf(isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete, t => t.NeedSignClinicalDataCount != t.SignClinicalDataCount)
+ .WhereIf(isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete, t => t.NeedSignClinicalDataCount == t.SignClinicalDataCount);
+ inQuery.SortField = string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(ReadModuleView.SubjectCode) : inQuery.SortField;
+ var subjectIdQuery = query.OrderBy(inQuery.SortField).Select(x => x.SubjectId).Distinct();
+ var subjectIds = await subjectIdQuery.Skip((inQuery.PageIndex - 1) * inQuery.PageSize).Take(inQuery.PageSize).ToListAsync();
+ var subjectCount = subjectIdQuery.Count();
- // //是否是截止访视?
- // IsCanChangeCutOffVisit = false,
+ var viewList = await query.Where(x => subjectIds.Contains(x.SubjectId)).ToListAsync();
- // //需要签名数量计算 基线包含subject+访视级别的
- // NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true).
- // Where(t => sv.IsBaseLine ? t.TrialClinicalDataSet.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
- // + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true)
- // .Any(t => t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
+ var list= viewList.GroupBy(x => new { x.SubjectId, x.TrialSiteId, x.TrialSiteCode, x.SubjectCode })
+ .Select(x => new GetReadModuleDtoOut()
+ {
+ TrialSiteCode = x.Key.TrialSiteCode,
+ TrialSiteId = x.Key.TrialSiteId,
+ SubjectCode = x.Key.SubjectCode,
+ SubjectId = x.Key.SubjectId,
+ Data = x.OrderBy(x => x.ModuleType).ThenBy(x => x.VisitNum).ToList(),
+ }).ToList();
- // //签名的数量
-
- // SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
- // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
- // +
- // (sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
- // .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
-
-
-
-
-
- // //标准名 应该是可以不查询的,只要保证逻辑正确
- // CriterionName = criterionInfo.CriterionName
-
-
- //})
- //.Union(t.ReadModuleList.AsQueryable().Select(rm => new ReadModuleView()
- //{
- // Id = rm.Id,
- // CreateTime = rm.CreateTime,
- // PDState = PDStateEnum.None,
- // IsBaseLine = false,
- // SubjectCode = rm.SubjectVisit.Subject.Code,
- // IsEnrollmentConfirm = false,
- // IsFinalVisit = false,
- // SubjectId = rm.SubjectId,
- // SubjectVisitId = rm.SubjectVisitId,
- // IsUrgent = rm.SubjectVisit.IsUrgent,
- // SubjectVisitName = rm.SubjectVisit.VisitName,
- // IsVisit = false,
-
- // Name = rm.ModuleName,
- // TrialSiteId = rm.Subject.TrialSiteId,
- // TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
-
- // TrialId = rm.TrialId,
- // VisitNum = rm.SubjectVisit.VisitNum,
- // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
-
- // OutPlanPreviousVisitId = null,
-
- // OutPlanPreviousVisitName = null,
-
- // ModuleType = rm.ModuleType,
-
- // //只有阅片期有
- // CutOffVisitId = rm.SubjectVisit.Id,
- // CutOffVisitName = rm.SubjectVisit.VisitName,
- // ReadingSetType = null,
-
- // //之前视图返回的null 应该是没用的?
- // ReadModuleId = rm.Id,
- // ReadModuleName = rm.ModuleName,
-
- // //是否是截止访视?
- // IsCanChangeCutOffVisit = false,
-
-
- // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
- // ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
- // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
- // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
-
- // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
- // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate
- // )
- // ),
-
-
-
-
-
- // //需要签名数量计算 基线包含subject+访视级别的
- // NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
- // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
- // +
- // (rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
- // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.CRC &&
- // (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
- // ,
-
- // //签名的数量
-
- // SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
- // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
- // +
- // (rm.IsPMConfirm ? 1 : 0),
-
-
- // //标准名 应该是可以不查询的,只要保证逻辑正确
- // CriterionName = criterionInfo.CriterionName
-
- //})).ToList()
-
- #endregion
-
-
-
-
-
-
- });
-
- var pageList = await query.Where(t=> (t.VisitData.Count + t.ReadMouduleData.Count)>0)
- .ToPagedListAsync(inQuery);
-
-
- return ResponseOutput.Ok(pageList, new
+ var pageOutput = new PageOutput()
{
- MaxLength = pageList.CurrentPageData.MaxOrDefault(t => t.Data.Count(),0),
+ PageSize = inQuery.PageSize,
+ CurrentPageData = list,
+ PageIndex = inQuery.PageIndex,
+ TotalCount = subjectCount,
+ };
+
+ #endregion
+
+ return ResponseOutput.Ok(pageOutput, new
+ {
+ MaxLength = pageOutput.CurrentPageData.MaxOrDefault(t => t.Data.Count(), 0),
IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder,
IsClinicalReading = criterionInfo.IsOncologyReading,
// OnlyExistsMedicalHistory = !(await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId && x.ClinicalDataSetName != "既往局部治疗史" && x.IsConfirm)),
diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
index 31bd49dc1..c755e150e 100644
--- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
+++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
@@ -70,6 +70,7 @@ namespace IRaCIS.Core.Infra.EFCore
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
+
//遍历实体模型手动配置
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(q => q.GetInterface(typeof(IEntityTypeConfiguration<>).FullName) != null);
foreach (var type in typesToRegister)