修改一版
This commit is contained in:
@@ -329,7 +329,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
public List<GetReadModuleDtoOut> CurrentPageData { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
//public class GetReadModuleDtoOut
|
||||
|
||||
public class GetReadModuleDtoOut
|
||||
{
|
||||
@@ -337,12 +338,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
|
||||
public string TrialSiteCode { get; set; }
|
||||
|
||||
|
||||
public string SiteCode { get; set; }
|
||||
|
||||
public Guid SiteId { get; set; }
|
||||
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public List<GetReadModuleOutDto> Data { get; set; }
|
||||
|
||||
public List<GetReadModuleOutDto> ReadModuleData { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace IRaCIS.Application.Services
|
||||
private readonly IRepository<Subject> _subjectRepository;
|
||||
private readonly IRepository<VisitStage> _visitstageRepository;
|
||||
private readonly IRepository<User> _userRepository;
|
||||
private readonly IRepository<ReadModuleView> _readModuleViewRepository;
|
||||
private readonly IRepository<DicomInstance> _dicomInstanceRepository;
|
||||
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
|
||||
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
||||
@@ -36,6 +37,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<Subject> subjectRepository,
|
||||
IRepository<VisitStage> visitstageRepository,
|
||||
IRepository<User> UserRepository,
|
||||
IRepository<ReadModuleView> readModuleViewRepository,
|
||||
IRepository<DicomInstance> dicomInstanceRepository,
|
||||
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
|
||||
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
|
||||
@@ -46,6 +48,7 @@ namespace IRaCIS.Application.Services
|
||||
this._subjectRepository = subjectRepository;
|
||||
this._visitstageRepository = visitstageRepository;
|
||||
this._userRepository = UserRepository;
|
||||
this._readModuleViewRepository = readModuleViewRepository;
|
||||
this._dicomInstanceRepository = dicomInstanceRepository;
|
||||
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
|
||||
this._readingPeriodSetRepository = readingPeriodSetRepository;
|
||||
@@ -59,118 +62,212 @@ namespace IRaCIS.Application.Services
|
||||
[HttpPost]
|
||||
public async Task<(PageOutput<GetReadModuleDtoOut>,object)> GetReadModuleList(GetReadModuleDto dto)
|
||||
{
|
||||
var subjectQuery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId)
|
||||
.WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
|
||||
.Include(x => x.SubjectVisitList).Include(x => x.Site).Include(x => x.TrialSite)
|
||||
//.WhereIf(dto.TrialSiteCode != null, x => x.TrialSite.TrialSiteCode == dto.TrialSiteCode)
|
||||
// .WhereIf(dto.SubjectCode != null, x => x.Code == dto.SubjectCode)
|
||||
|
||||
.Select(x => new GetReadModuleDtoOut
|
||||
{
|
||||
|
||||
TrialSiteCode = x.TrialSite.TrialSiteCode,
|
||||
SiteId = x.SiteId,
|
||||
SubjectCode = x.Code,
|
||||
SubjectId = x.Id,
|
||||
Data=x.SubjectVisitList.OrderByDescending(y=>y.VisitNum).Select(y=>new GetReadModuleOutDto()
|
||||
{
|
||||
Id = y.Id, //id
|
||||
Name=y.VisitName,
|
||||
ModuleType = y.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit, // 模块类型
|
||||
IsUrgent = x.IsUrgent, // 是否加急
|
||||
SubjectVisitId = y.Id, // 访视ID
|
||||
SubjectVisitName=y.VisitName, // 访视名称
|
||||
Status= ReadingCommon.GetVisitSubmitStateEnum(y), // 状态
|
||||
CreateTime = y.CreateTime, // 创建时间
|
||||
SubjectCode = y.Subject.Code, // 受试者code
|
||||
TrialSiteCode = x.TrialSite.TrialSiteCode, // 中心Code
|
||||
VisitNum=y.VisitNum,
|
||||
var subjectQuery = _readModuleViewRepository.WhereIf(dto.TrialId != null, x => x.TrialId == dto.TrialId)
|
||||
.WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
|
||||
.WhereIf(dto.TrialSiteCode != null, x => x.TrialSiteCode == dto.TrialSiteCode)
|
||||
.WhereIf(dto.SubjectCode != null, x => x.SubjectCode == dto.SubjectCode)
|
||||
.WhereIf(dto.ModuleType != null, x => x.ModuleType == dto.ModuleType)
|
||||
.WhereIf(dto.Status != null, x => x.Status == dto.Status)
|
||||
.WhereIf(dto.Name != null, x => x.Name.Contains(x.Name)).OrderBy(x=>x.SiteCode);
|
||||
|
||||
IsFinalVisit=y.IsFinalVisit, // 是否为末次评估
|
||||
OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
|
||||
OutPlanPreviousVisitName = y.OutPlanPreviousVisit.VisitName, // 上一访视名称
|
||||
SiteId = x.Site.Id, // 中心ID
|
||||
IsVisit=true, // 是否为访视
|
||||
PDState = y.PDState, // PD 进展
|
||||
IsEnrollmentConfirm=y.IsEnrollmentConfirm, // 入组
|
||||
SubjectId = x.Id,
|
||||
}).ToList()
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var pageList = await subjectQuery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null|| dto.SortField==string.Empty ? "SiteCode" : dto.SortField,
|
||||
dto.Asc);
|
||||
|
||||
|
||||
pageList.CurrentPageData.ForEach(x =>
|
||||
{
|
||||
var outplan = x.Data.FirstOrDefault(x => x.IsFinalVisit);
|
||||
if (outplan != null)
|
||||
var subjectIds =await subjectQuery.Select(x => x.SubjectId).Distinct().Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
|
||||
List<ReadModuleView> ReadModuleViewList =await subjectQuery.Where(x => subjectIds.Contains(x.SubjectId)).ToListAsync();
|
||||
List<GetReadModuleDtoOut> getReadList = ReadModuleViewList.GroupBy(x => new { x.SubjectId, x.SiteId, x.TrialSiteCode, x.SubjectCode })
|
||||
.Select(x => new GetReadModuleDtoOut()
|
||||
{
|
||||
x.Data = x.Data.Where(y => y.VisitNum >= outplan.VisitNum).ToList();
|
||||
}
|
||||
});
|
||||
|
||||
var subjectIds = pageList.CurrentPageData.Select(x => x.SubjectId).ToList();
|
||||
|
||||
var readModules =await _readModuleRepository.Where(x => subjectIds.Contains(x.SubjectId)).Include(x=>x.SubjectVisit)
|
||||
.Include(x => x.ReadModuleModel).ToListAsync();
|
||||
|
||||
pageList.CurrentPageData.ForEach(x => {
|
||||
x.Data.AddRange(readModules.Where(y => y.SubjectId == x.SubjectId).Select(
|
||||
y => new GetReadModuleOutDto()
|
||||
TrialSiteCode = x.Key.TrialSiteCode,
|
||||
SiteId = x.Key.SiteId,
|
||||
SubjectCode = x.Key.SubjectCode,
|
||||
SubjectId = x.Key.SubjectId,
|
||||
Data = x.Select(y => new GetReadModuleOutDto()
|
||||
{
|
||||
CreateTime = y.CreateTime,
|
||||
CutOffVisitId = y.CutOffVisitId,
|
||||
SiteCode = y.SiteCode,
|
||||
SubjectId = y.SubjectId,
|
||||
CutOffVisitName = y.CutOffVisitName,
|
||||
SiteId = y.SiteId,
|
||||
Status = y.Status,
|
||||
SubjectCode = y.SubjectCode,
|
||||
Id = y.Id,
|
||||
Name=y.ModuleName,
|
||||
SubjectId=x.SubjectId,
|
||||
ModuleType=y.ModuleType,
|
||||
Status= ReadingCommon.GetVisitSubmitStateEnum(y.SubjectVisit),
|
||||
SubjectCode= x.SubjectCode,
|
||||
TrialSiteCode = x.TrialSiteCode,
|
||||
SubjectVisitId= y.SubjectVisitId,
|
||||
SubjectVisitName=y.SubjectVisit?.VisitName, // 截止访视名称
|
||||
CutOffVisitId = y.SubjectVisitId, // 截止访视
|
||||
CutOffVisitName = y.SubjectVisit?.VisitName, // 截止访视名称
|
||||
ReadModuleId=y.ReadModuleId,
|
||||
ReadModuleName=y.ReadModuleModel?.ModuleName,
|
||||
IsUrgent = y.IsUrgent
|
||||
IsEnrollmentConfirm = y.IsEnrollmentConfirm,
|
||||
IsFinalVisit = y.IsFinalVisit,
|
||||
SubjectVisitId = y.SubjectVisitId,
|
||||
SubjectVisitName = y.SubjectVisitName,
|
||||
PDState = y.PDState,
|
||||
TrialSiteCode = y.TrialSiteCode,
|
||||
IsUrgent = y.IsUrgent,
|
||||
IsVisit = y.IsVisit,
|
||||
ModuleType = y.ModuleType,
|
||||
Name = y.Name,
|
||||
OutPlanPreviousVisitId = y.OutPlanPreviousVisitId,
|
||||
OutPlanPreviousVisitName = y.CutOffVisitName,
|
||||
ReadModuleId = y.CutOffVisitId,
|
||||
ReadModuleName = y.ReadModuleName,
|
||||
VisitNum = y.VisitNum
|
||||
}).ToList()
|
||||
}).ToList();
|
||||
|
||||
}));
|
||||
|
||||
x.Data= x.Data.OrderBy(y => y.ModuleType).ThenBy(x=>x.VisitNum).ToList();
|
||||
});
|
||||
|
||||
pageList.CurrentPageData.ForEach(x => {
|
||||
|
||||
if (dto.ModuleType != null)
|
||||
{
|
||||
x.Data = x.Data.Where(y => y.ModuleType == dto.ModuleType).ToList();
|
||||
}
|
||||
if (dto.Status != null)
|
||||
{
|
||||
x.Data = x.Data.Where(y => y.Status == dto.Status).ToList();
|
||||
}
|
||||
|
||||
if (dto.Name != null)
|
||||
{
|
||||
x.Data = x.Data.Where(y => y.Name.Contains(y.Name)).ToList();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
return (pageList, new
|
||||
PageOutput<GetReadModuleDtoOut> pageOutput = new PageOutput<GetReadModuleDtoOut>()
|
||||
{
|
||||
MaxLength = pageList.CurrentPageData.ToList().Max(x => x.Data.Count)
|
||||
|
||||
PageSize = dto.PageSize,
|
||||
CurrentPageData = getReadList,
|
||||
PageIndex = dto.PageIndex,
|
||||
TotalCount =await subjectQuery.Select(x => x.SubjectId).Distinct().CountAsync(),
|
||||
};
|
||||
|
||||
return (pageOutput, new
|
||||
{
|
||||
MaxLength = pageOutput.CurrentPageData.ToList().Max(x => x.Data.Count)
|
||||
});
|
||||
|
||||
#region 用导航属性写的 有问题
|
||||
//var subjectQuery = _subjectRepository.WhereIf(dto.TrialId != null, x => x.TrialId == dto.TrialId)
|
||||
// .WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
|
||||
// .Include(x => x.SubjectVisitList).Include(x => x.Site).Include(x => x.TrialSite)
|
||||
// .WhereIf(dto.TrialSiteCode != null, x => x.TrialSite.TrialSiteCode == dto.TrialSiteCode)
|
||||
// .WhereIf(dto.SubjectCode != null, x => x.Code == dto.SubjectCode)
|
||||
|
||||
// .Select(x => new GetReadModuleDtoOut
|
||||
// {
|
||||
// TrialSiteCode = x.TrialSite.TrialSiteCode,
|
||||
// SiteCode = x.TrialSite.TrialSiteCode,
|
||||
// SiteId = x.SiteId,
|
||||
// SubjectCode = x.Code,
|
||||
// SubjectId = x.Id,
|
||||
// Data = x.SubjectVisitList.OrderByDescending(y => y.VisitNum).Select(y => new GetReadModuleOutDto()
|
||||
// {
|
||||
// Id = y.Id, //id
|
||||
// Name = y.VisitName,
|
||||
// ModuleType = y.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit, // 模块类型
|
||||
// IsUrgent = x.IsUrgent, // 是否加急
|
||||
// SubjectVisitId = y.Id, // 访视ID
|
||||
// SubjectVisitName = y.VisitName, // 访视名称
|
||||
// Status = ReadingCommon.GetVisitSubmitStateEnum(y), // 状态
|
||||
// CreateTime = y.CreateTime, // 创建时间
|
||||
// SubjectCode = y.Subject.Code, // 受试者code
|
||||
// TrialSiteCode = x.TrialSite.TrialSiteCode, // 中心Code
|
||||
// VisitNum = y.VisitNum,
|
||||
|
||||
// IsFinalVisit = y.IsFinalVisit, // 是否为末次评估
|
||||
// OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
|
||||
// OutPlanPreviousVisitName = y.OutPlanPreviousVisit.VisitName, // 上一访视名称
|
||||
// SiteId = x.Site.Id, // 中心ID
|
||||
// IsVisit = true, // 是否为访视
|
||||
// PDState = y.PDState, // PD 进展
|
||||
// IsEnrollmentConfirm = y.IsEnrollmentConfirm, // 入组
|
||||
// SubjectId = x.Id,
|
||||
// }).ToList(),
|
||||
|
||||
// ReadModuleData = x.ReadModuleList.Select(
|
||||
// z => new GetReadModuleOutDto()
|
||||
// {
|
||||
// CreateTime = z.CreateTime,
|
||||
// Id = z.Id,
|
||||
// Name = z.ModuleName,
|
||||
// SubjectId = x.Id,
|
||||
// ModuleType = z.ModuleType,
|
||||
// Status = ReadingCommon.GetVisitSubmitStateEnum(z.SubjectVisit),
|
||||
// SubjectCode = x.Code,
|
||||
// TrialSiteCode = x.TrialSite.TrialSiteCode,
|
||||
// SubjectVisitId = z.SubjectVisitId,
|
||||
// SubjectVisitName = z.SubjectVisit.VisitName, // 截止访视名称
|
||||
// CutOffVisitId = z.SubjectVisitId, // 截止访视
|
||||
// CutOffVisitName = z.SubjectVisit.VisitName, // 截止访视名称
|
||||
// ReadModuleId = z.ReadModuleId,
|
||||
// ReadModuleName = z.ReadModuleModel.ModuleName,
|
||||
// IsUrgent = z.IsUrgent
|
||||
// }).ToList(),
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// });
|
||||
|
||||
|
||||
|
||||
//if (dto.ModuleType != null)
|
||||
//{
|
||||
// subjectQuery.
|
||||
//}
|
||||
//if (dto.Status != null)
|
||||
//{
|
||||
// x.Data = x.Data.Where(y => y.Status == dto.Status).ToList();
|
||||
//}
|
||||
|
||||
//if (dto.Name != null)
|
||||
//{
|
||||
// x.Data = x.Data.Where(y => y.Name.Contains(y.Name)).ToList();
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
//var pageList = await subjectQuery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null || dto.SortField == string.Empty ? "SiteCode" : dto.SortField,
|
||||
// dto.Asc);
|
||||
|
||||
|
||||
|
||||
|
||||
//pageList.CurrentPageData.ForEach(x =>
|
||||
//{
|
||||
// var outplan = x.Data.FirstOrDefault(x => x.IsFinalVisit);
|
||||
// if (outplan != null)
|
||||
// {
|
||||
// x.Data = x.Data.Where(y => y.VisitNum >= outplan.VisitNum).ToList();
|
||||
// }
|
||||
//});
|
||||
|
||||
//var subjectIds = pageList.CurrentPageData.Select(x => x.SubjectId).ToList();
|
||||
|
||||
//var readModules = await _readModuleRepository.Where(x => subjectIds.Contains(x.SubjectId)).Include(x => x.SubjectVisit)
|
||||
// .Include(x => x.ReadModuleModel).ToListAsync();
|
||||
|
||||
////pageList.CurrentPageData.ForEach(x => {
|
||||
//// x.Data.AddRange(readModules.Where(y => y.SubjectId == x.SubjectId).Select(
|
||||
//// y => new GetReadModuleOutDto()
|
||||
//// {
|
||||
//// CreateTime = y.CreateTime,
|
||||
//// Id = y.Id,
|
||||
//// Name=y.ModuleName,
|
||||
//// SubjectId=x.SubjectId,
|
||||
//// ModuleType=y.ModuleType,
|
||||
//// Status= ReadingCommon.GetVisitSubmitStateEnum(y.SubjectVisit),
|
||||
//// SubjectCode= x.SubjectCode,
|
||||
//// TrialSiteCode = x.TrialSiteCode,
|
||||
//// SubjectVisitId= y.SubjectVisitId,
|
||||
//// SubjectVisitName=y.SubjectVisit?.VisitName, // 截止访视名称
|
||||
//// CutOffVisitId = y.SubjectVisitId, // 截止访视
|
||||
//// CutOffVisitName = y.SubjectVisit?.VisitName, // 截止访视名称
|
||||
//// ReadModuleId=y.ReadModuleId,
|
||||
//// ReadModuleName=y.ReadModuleModel?.ModuleName,
|
||||
//// IsUrgent = y.IsUrgent
|
||||
|
||||
//// }));
|
||||
|
||||
//// x.Data= x.Data.OrderBy(y => y.ModuleType).ThenBy(x=>x.VisitNum).ToList();
|
||||
////});
|
||||
|
||||
//pageList.CurrentPageData.ForEach(x => {
|
||||
|
||||
//});
|
||||
|
||||
|
||||
|
||||
|
||||
//return (pageList, new
|
||||
//{
|
||||
// MaxLength = pageList.CurrentPageData.ToList().Max(x => x.Data.Count)
|
||||
//});
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///// <summary>
|
||||
|
||||
Reference in New Issue
Block a user