IRC_NewDev
hang 2023-07-05 09:35:47 +08:00
commit 02ce0c993d
2 changed files with 58 additions and 39 deletions

View File

@ -178,18 +178,14 @@ namespace IRaCIS.Core.Application.Service
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<List<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto) public async Task<PageOutput<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
{ {
//await AutoAddCRCClinical(new AutoAddClinicalInDto() //await AutoAddCRCClinical(new AutoAddClinicalInDto()
//{ //{
// TrialId = inDto.TrialId // TrialId = inDto.TrialId
//}) ; //}) ;
var subjects = await _subjectRepository.Where(x => x.TrialId == inDto.TrialId).Select(x => new GetCRCSubjectClinicalResultDto() var subjects = await _subjectRepository.Where(x => x.TrialId == inDto.TrialId).Select(x => new GetCRCSubjectClinicalResultDto()
{ {
SubjectId = x.Id, SubjectId = x.Id,
@ -197,7 +193,7 @@ namespace IRaCIS.Core.Application.Service
}).ToListAsync(); }).ToListAsync();
var clinicalData=await _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC) var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit)
.Where(x=>!x.IsSign) .Where(x=>!x.IsSign)
.Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() { .Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() {
SubjectId=x.SubjectId, SubjectId=x.SubjectId,
@ -206,24 +202,20 @@ namespace IRaCIS.Core.Application.Service
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataSetEnName= x.ClinicalDataTrialSet.ClinicalDataSetEnName,
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
}).OrderBy(x=>x.SubjectCode).ToListAsync();
// 一次查询报错 分两次写
clinicalData.ForEach(x =>
{
x.ClinicalDataSetEnName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us);
}); });
var pageList = await clinicalData.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, string.IsNullOrWhiteSpace(inDto.SortField) ? nameof(GetCRCSubjectClinicalOutDto.SubjectCode) : inDto.SortField, inDto.Asc);
// 一次查询报错 分两次写
pageList.CurrentPageData.ForEach(x =>
{
x.ClinicalDataSetEnName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us);
});
var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync(); var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync();
clinicalData.ForEach(n => pageList.CurrentPageData.ForEach(n =>
{ {
n.ClinicalCount = clinicalFormData.Where(y => y.ClinicalDataTrialSetId == n.ClinicalDataTrialSetId && y.SubjectId == n.SubjectId).Count(); n.ClinicalCount = clinicalFormData.Where(y => y.ClinicalDataTrialSetId == n.ClinicalDataTrialSetId && y.SubjectId == n.SubjectId).Count();
}); });
return pageList;
return clinicalData;
} }
/// <summary> /// <summary>
@ -441,20 +433,27 @@ namespace IRaCIS.Core.Application.Service
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<List<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto) public async Task<PageOutput<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto)
{ {
List<GetCRCConfirmListOutDto> result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
.WhereIf(inDto.ReadModuleId!=null,x=>x.Id==inDto.ReadModuleId) .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
.Select(x => new GetCRCConfirmListOutDto() .Select(x => new GetCRCConfirmListOutDto()
{ {
SubjectId= x.SubjectId,
SubjectId = x.SubjectId,
IsCRCConfirm = x.IsCRCConfirm, IsCRCConfirm = x.IsCRCConfirm,
LatestScanDate = x.SubjectVisit.LatestScanDate, LatestScanDate = x.SubjectVisit.LatestScanDate,
ReadingSetType = x.ReadingSetType, ReadingSetType = x.ReadingSetType,
IsPMConfirm = x.IsPMConfirm, IsPMConfirm = x.IsPMConfirm,
SubjectCode=x.Subject.Code, SubjectCode = x.Subject.Code,
ReadModuleId = x.Id, ReadModuleId = x.Id,
}).OrderBy(x => x.LatestScanDate).ToListAsync(); });
var result = await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, string.IsNullOrWhiteSpace(inDto.SortField) ? nameof(GetCRCConfirmListOutDto.LatestScanDate) : inDto.SortField, inDto.Asc);
var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId) var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId)
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC) .Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead) .Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)
@ -469,7 +468,7 @@ namespace IRaCIS.Core.Application.Service
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
}).ToListAsync(); }).ToListAsync();
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync(); var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync();
result.ForEach(x => result.CurrentPageData.ForEach(x =>
{ {
if (x.IsCRCConfirm) if (x.IsCRCConfirm)
{ {
@ -524,8 +523,10 @@ namespace IRaCIS.Core.Application.Service
{ {
ReadModuleId = inDto.ReadModuleId, ReadModuleId = inDto.ReadModuleId,
TrialId = inDto.TrialId, TrialId = inDto.TrialId,
PageIndex=1,
PageSize=9999,
})).SelectMany(x => x.ClinicalFormIdList).ToList(); })).CurrentPageData.SelectMany(x => x.ClinicalFormIdList).ToList();
result.ForEach(x => { result.ForEach(x => {
@ -546,10 +547,17 @@ namespace IRaCIS.Core.Application.Service
[HttpPost] [HttpPost]
public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto) public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto)
{ {
var dataList =await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
var dataList =(await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
{ {
TrialId = inDto.TrialId TrialId = inDto.TrialId,
}); SubjectId= readModule.SubjectId,
TrialReadingCriterionId= readModule.TrialReadingCriterionId,
PageIndex=1,
PageSize=9999,
})).CurrentPageData;
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First(); var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
var confirmlist= dataList.Where(x =>(x.LatestScanDate < presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType) var confirmlist= dataList.Where(x =>(x.LatestScanDate < presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType)
@ -593,10 +601,16 @@ namespace IRaCIS.Core.Application.Service
[HttpPost] [HttpPost]
public async Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto) public async Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto)
{ {
var dataList = await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
var dataList = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
{ {
TrialId = inDto.TrialId TrialId = inDto.TrialId,
}); SubjectId = readModule.SubjectId,
TrialReadingCriterionId = readModule.TrialReadingCriterionId,
PageIndex = 1,
PageSize = 9999,
})).CurrentPageData;
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First(); var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();

View File

@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
} }
public class GetCRCSubjectClinicalInDto public class GetCRCSubjectClinicalInDto:PageInput
{ {
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
} }
@ -99,8 +99,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string Answer { get; set; } = string.Empty; public string Answer { get; set; } = string.Empty;
} }
public class GetCRCConfirmListInDto public class GetCRCConfirmListInDto:PageInput
{ {
public Guid? TrialReadingCriterionId { get; set; }
public Guid? SubjectId { get; set; }
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
public Guid? ReadModuleId { get; set; } public Guid? ReadModuleId { get; set; }