增加视图查询
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
71fad05411
commit
5afe0be277
|
@ -15378,7 +15378,7 @@
|
|||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList_New(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
|
||||
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList_new(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
|
||||
<summary>
|
||||
用ef 实现之前视图的功能
|
||||
</summary>
|
||||
|
|
|
@ -271,7 +271,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public List<ReadModuleView> Data { get; set; } = new List<ReadModuleView>();
|
||||
|
||||
//public List<ReadModuleView> Data =>VisitData.Union(ReadMouduleData).ToList();
|
||||
//public List<ReadModuleView> Data => VisitData.Union(ReadMouduleData).ToList();
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
|
|
|
@ -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
|
|||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> GetReadModuleList_New(GetReadModuleDto inQuery)
|
||||
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> 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<GetReadModuleDtoOut>()
|
||||
{
|
||||
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)),
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue