格式化

IRC_NewDev
he 2024-07-24 13:33:48 +08:00
parent fc36cbcb75
commit 4f4dda7a09
1 changed files with 156 additions and 151 deletions

View File

@ -84,7 +84,7 @@ namespace IRaCIS.Application.Services
{ {
var existsQuery = _readingClinicalDataRepository var existsQuery = _readingClinicalDataRepository
.WhereIf(indto.Id != null, x => x.Id != indto.Id) .WhereIf(indto.Id != null, x => x.Id != indto.Id)
.Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId&&x.StudyId==indto.StudyId); .Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId && x.StudyId == indto.StudyId);
@ -189,60 +189,60 @@ namespace IRaCIS.Application.Services
public async Task<List<GetCRCClinicalDataOutDto>> GetStudyClinicalData(GetStudyClinicalDataInDto inDto) public async Task<List<GetCRCClinicalDataOutDto>> GetStudyClinicalData(GetStudyClinicalDataInDto inDto)
{ {
var cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) var cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study).Select(x => new GetCRCClinicalDataOutDto() .Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study).Select(x => new GetCRCClinicalDataOutDto()
{ {
Id = x.Id, Id = x.Id,
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
FileName = x.ClinicalDataTrialSet.FileName, FileName = x.ClinicalDataTrialSet.FileName,
UploadRole = x.ClinicalDataTrialSet.UploadRole, UploadRole = x.ClinicalDataTrialSet.UploadRole,
Path = x.ClinicalDataTrialSet.Path, Path = x.ClinicalDataTrialSet.Path,
IsBlind = x.IsBlind, IsBlind = x.IsBlind,
IsComplete = x.IsComplete, IsComplete = x.IsComplete,
ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
{ {
CheckDate = y.CheckDate, CheckDate = y.CheckDate,
ClinicalFormId = y.Id ClinicalFormId = y.Id
}).ToList(), }).ToList(),
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
{ {
Id = y.Id, Id = y.Id,
Size = y.Size, Size = y.Size,
Type = y.Type, Type = y.Type,
FileName = y.FileName, FileName = y.FileName,
Path = y.Path, Path = y.Path,
CreateTime = y.CreateTime, CreateTime = y.CreateTime,
}).ToList(), }).ToList(),
}).ToListAsync(); }).ToListAsync();
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync(); var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync(); var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync(); var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
foreach (var item in cRCClinicalDataList) foreach (var item in cRCClinicalDataList)
{ {
item.ClinicalTableData = new ClinicalDataTable() item.ClinicalTableData = new ClinicalDataTable()
{ {
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(), PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
PreviousOtherList = previousOtherList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(), PreviousOtherList = previousOtherList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
PreviousSurgeryList = previousSurgeryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(), PreviousSurgeryList = previousSurgeryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
}; };
} }
return cRCClinicalDataList; return cRCClinicalDataList;
} }
/// <summary> /// <summary>
/// 获取CRC上传的文件 /// 获取CRC上传的文件
/// </summary> /// </summary>
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto) public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto)
{ {
@ -258,26 +258,27 @@ namespace IRaCIS.Application.Services
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit) .WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC); .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC);
} }
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await query List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await query
.Select(x => new GetCRCClinicalDataOutDto() .Select(x => new GetCRCClinicalDataOutDto()
{ {
Id = x.Id, Id = x.Id,
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us) , ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
ClinicalDataLevel=x.ClinicalDataTrialSet.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
ClinicalDataSetEnName =x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id,
FileName = x.ClinicalDataTrialSet.FileName, FileName = x.ClinicalDataTrialSet.FileName,
UploadRole = x.ClinicalDataTrialSet.UploadRole, UploadRole = x.ClinicalDataTrialSet.UploadRole,
Path = x.ClinicalDataTrialSet.Path, Path = x.ClinicalDataTrialSet.Path,
IsBlind = x.IsBlind, IsBlind = x.IsBlind,
IsComplete = x.IsComplete, IsComplete = x.IsComplete,
ClinicalFromList=x.Subject.ClinicalFormList.Where(y=>y.ReadingId==x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y=> new ClinicalFromData() { ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
CheckDate=y.CheckDate, {
ClinicalFormId=y.Id CheckDate = y.CheckDate,
ClinicalFormId = y.Id
}).ToList(), }).ToList(),
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
{ {
@ -288,7 +289,7 @@ namespace IRaCIS.Application.Services
Type = y.Type, Type = y.Type,
CreateTime = y.CreateTime, CreateTime = y.CreateTime,
}).ToList(), }).ToList(),
}).ToListAsync(); }).ToListAsync();
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync(); var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
@ -310,7 +311,7 @@ namespace IRaCIS.Application.Services
{ {
cRCClinicalDataList = cRCClinicalDataList.Where(x => !(x.ClinicalFromList.Count() == 0 && x.ClinicalUploadType == ClinicalUploadType.Structuring)).ToList(); cRCClinicalDataList = cRCClinicalDataList.Where(x => !(x.ClinicalFromList.Count() == 0 && x.ClinicalUploadType == ClinicalUploadType.Structuring)).ToList();
} }
return cRCClinicalDataList; return cRCClinicalDataList;
} }
@ -367,7 +368,7 @@ namespace IRaCIS.Application.Services
//} //}
data.IsBlind = inDto.IsBlind; data.IsBlind = inDto.IsBlind;
data.IsComplete=inDto.IsComplete; data.IsComplete = inDto.IsComplete;
data.IsSign = true; data.IsSign = true;
data.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned; data.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned;
@ -385,8 +386,8 @@ namespace IRaCIS.Application.Services
//await this.iServiceProvider.GetService<IReadingImageTaskService>().AddOncologyTask(readingId); //await this.iServiceProvider.GetService<IReadingImageTaskService>().AddOncologyTask(readingId);
//如果先生成了任务再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护 //如果先生成了任务再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护
if (await _repository.AnyAsync<ClinicalDataTrialSet>(t=>t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject)) if (await _repository.AnyAsync<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject))
{ {
var needDealTrialReadingCriterionIdList = _repository.Where<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId) var needDealTrialReadingCriterionIdList = _repository.Where<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId)
.SelectMany(t => t.TrialClinicalDataSetCriteriaList) .SelectMany(t => t.TrialClinicalDataSetCriteriaList)
@ -412,7 +413,7 @@ namespace IRaCIS.Application.Services
public async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId) public async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
{ {
//获取确认的临床数据配置 //获取确认的临床数据配置
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList(); var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
//var criterionType = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCritrialId).Select(t => t.CriterionType).FirstOrDefaultAsync(); //var criterionType = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCritrialId).Select(t => t.CriterionType).FirstOrDefaultAsync();
@ -427,7 +428,7 @@ namespace IRaCIS.Application.Services
{ {
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync(); var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
//判断是否基线 //判断是否基线
if (isBaseLine) if (isBaseLine)
@ -513,7 +514,7 @@ namespace IRaCIS.Application.Services
} }
//有序阅片才维护 IsFrontTaskNeedSignButNotSign 这个状态 //有序阅片才维护 IsFrontTaskNeedSignButNotSign 这个状态
if (_readingQuestionCriterionTrialRepository.Any(t=>t.Id==trialReadingCritrialId && t.IsReadingTaskViewInOrder == ReadingOrder.InOrder)) if (_readingQuestionCriterionTrialRepository.Any(t => t.Id == trialReadingCritrialId && t.IsReadingTaskViewInOrder == ReadingOrder.InOrder))
{ {
@ -538,8 +539,8 @@ namespace IRaCIS.Application.Services
(t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum) (t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum)
// 前序存在 未一致性核查未通过的 // 前序存在 未一致性核查未通过的
|| t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum>sv.VisitNum) || t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum)
)) ))
.Select(t => t.Id); .Select(t => t.Id);
@ -551,7 +552,7 @@ namespace IRaCIS.Application.Services
var visitTaskIdQueryable2 = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务 var visitTaskIdQueryable2 = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务
.Where(t => t.IsFrontTaskNeedSignButNotSign == true && .Where(t => t.IsFrontTaskNeedSignButNotSign == true &&
//前序任务 不存在需要签名 但是没签名 //前序任务 不存在需要签名 但是没签名
@ -570,14 +571,14 @@ namespace IRaCIS.Application.Services
} }
} }
// 废弃 接口合并到签名哪里 // 废弃 接口合并到签名哪里
[HttpPut] [HttpPut]
public async Task<IResponseOutput> PMClinicalDataConfirm(PMClinicalDataConfirmCommand command) public async Task<IResponseOutput> PMClinicalDataConfirm(PMClinicalDataConfirmCommand command)
{ {
@ -631,7 +632,7 @@ namespace IRaCIS.Application.Services
keyValuePairs.Add(ModuleTypeEnum.Oncology, ClinicalLevel.OncologyRead); keyValuePairs.Add(ModuleTypeEnum.Oncology, ClinicalLevel.OncologyRead);
var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId); var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId);
@ -646,20 +647,20 @@ namespace IRaCIS.Application.Services
.WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) .WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataLevel == ClinicalLevel.OncologyRead) .WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
.WhereIf(readModule != null, x => x.ClinicalDataLevel == keyValuePairs[readModule!.ModuleType]) .WhereIf(readModule != null, x => x.ClinicalDataLevel == keyValuePairs[readModule!.ModuleType])
.WhereIf(inDto.TrialReadingCriterionId!=null,x=>x.TrialClinicalDataSetCriteriaList.Any(y=>y.TrialReadingCriterionId== inDto.TrialReadingCriterionId)) .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
//.WhereIf(criterion!=null,x=>x.CriterionEnumListStr.Contains($"|{(int)criterion.CriterionType}|")) //.WhereIf(criterion!=null,x=>x.CriterionEnumListStr.Contains($"|{(int)criterion.CriterionType}|"))
.Select(x => new GetTrialClinicalDataSelectOutDto() .Select(x => new GetTrialClinicalDataSelectOutDto()
{ {
ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataLevel,
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalDataSetEnName=x.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataSetEnName,
ClinicalUploadType = x.ClinicalUploadType, ClinicalUploadType = x.ClinicalUploadType,
FileName = x.FileName, FileName = x.FileName,
Path = x.Path, Path = x.Path,
Id = x.Id, Id = x.Id,
CriterionEnumList = x.CriterionEnumList, CriterionEnumList = x.CriterionEnumList,
}).ToListAsync(); }).ToListAsync();
return clinicalList; return clinicalList;
} }
@ -713,8 +714,8 @@ namespace IRaCIS.Application.Services
{ClinicalLevel.ImageRead,2 }, {ClinicalLevel.ImageRead,2 },
{ClinicalLevel.OncologyRead,3 }, {ClinicalLevel.OncologyRead,3 },
{ClinicalLevel.Subject,4 }, {ClinicalLevel.Subject,4 },
{ClinicalLevel.Study,5 }, {ClinicalLevel.Study,5 },
}; };
result = result.OrderBy(x => keys[x.ClinicalDataLevel]).ToList(); result = result.OrderBy(x => keys[x.ClinicalDataLevel]).ToList();
@ -809,20 +810,21 @@ namespace IRaCIS.Application.Services
Path = y.Path, Path = y.Path,
CreateTime = y.CreateTime, CreateTime = y.CreateTime,
}).ToList(), }).ToList(),
}); });
var result = new List<GetReadingClinicalDataListOutDto>(); var result = new List<GetReadingClinicalDataListOutDto>();
if (!inDto.IsOnlyGetCRCReadModule) if (!inDto.IsOnlyGetCRCReadModule)
{ {
result = await resultQuery.ToListAsync(); result = await resultQuery.ToListAsync();
} }
var readingIds = result.Select(x => x.ReadingId).ToList(); var readingIds = result.Select(x => x.ReadingId).ToList();
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId??default(Guid))).ToListAsync(); var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync();
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => { result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x =>
{
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
{ {
CheckDate = y.CheckDate, CheckDate = y.CheckDate,
ClinicalFormId = y.Id ClinicalFormId = y.Id
@ -833,35 +835,36 @@ namespace IRaCIS.Application.Services
// 这里处理CRC上传 阅片期的临床数据 // 这里处理CRC上传 阅片期的临床数据
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId) var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId)
.WhereIf(inDto.SelectIsSign,x=>x.IsPMConfirm) .WhereIf(inDto.SelectIsSign, x => x.IsPMConfirm)
.WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm) .WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (readModule != null) if (readModule != null)
{ {
var moduleCriterionFromList = await _readModuleCriterionFromRepository var moduleCriterionFromList = await _readModuleCriterionFromRepository
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId) .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
.Where(x => x.ReadModuleId == readModule.Id).Select(x => new{ .Where(x => x.ReadModuleId == readModule.Id).Select(x => new
ClinicalFormId= x.ClinicalFormId, {
CheckDate= x.ClinicalForm.CheckDate, ClinicalFormId = x.ClinicalFormId,
ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId CheckDate = x.ClinicalForm.CheckDate,
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
}).ToListAsync();
}).ToListAsync();
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.Structuring) var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.Structuring)
.WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead) .WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead)
.WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead) .WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
.Where(x=>x.TrialClinicalDataSetCriteriaList.Any(y=>y.TrialReadingCriterionId==readModule.TrialReadingCriterionId)) .Where(x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == readModule.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto() .Select(x => new GetReadingClinicalDataListOutDto()
{ {
ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataLevel,
SubjectId = inDto.SubjectId, SubjectId = inDto.SubjectId,
ReadingId = default(Guid), ReadingId = default(Guid),
IsCRCApplicationRevoke=readModule.IsCRCApplicationRevoke, IsCRCApplicationRevoke = readModule.IsCRCApplicationRevoke,
IsCRCConfirm= readModule.IsCRCConfirm, IsCRCConfirm = readModule.IsCRCConfirm,
IsPMConfirm= readModule.IsPMConfirm, IsPMConfirm = readModule.IsPMConfirm,
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalDataSetEnName = x.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataSetEnName,
ClinicalDataTrialSetId = x.Id, ClinicalDataTrialSetId = x.Id,
@ -872,7 +875,7 @@ namespace IRaCIS.Application.Services
IsCRCUpload = x.UploadRole == UploadRole.CRC, IsCRCUpload = x.UploadRole == UploadRole.CRC,
IsNeedMerge = true, IsNeedMerge = true,
ReadModuleId = readModule.Id, ReadModuleId = readModule.Id,
TrialClinicalDataSetCriteriaList=x.TrialClinicalDataSetCriteriaList, TrialClinicalDataSetCriteriaList = x.TrialClinicalDataSetCriteriaList,
//FileCount = x.FileCount, //FileCount = x.FileCount,
//ReadingClinicalDataState = x.ReadingClinicalDataState, //ReadingClinicalDataState = x.ReadingClinicalDataState,
@ -901,8 +904,8 @@ namespace IRaCIS.Application.Services
}); });
result.AddRange(clinicalresult); result.AddRange(clinicalresult);
} }
@ -923,7 +926,7 @@ namespace IRaCIS.Application.Services
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList(); result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
break; break;
case GetClinicalType.CRCConfirm: case GetClinicalType.CRCConfirm:
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList(); result = result.Where(x => x.UploadRole == UploadRole.CRC && x.IsCRCConfirm && !x.IsPMConfirm).ToList();
break; break;
case GetClinicalType.HasSign: case GetClinicalType.HasSign:
result = result.Where(x => x.IsSign).ToList(); result = result.Where(x => x.IsSign).ToList();
@ -959,15 +962,15 @@ namespace IRaCIS.Application.Services
{ {
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId) .Where(x => x.ReadingId == inDto.ReadingId)
.WhereIf(inDto.ClinicalDataTrialSetId!=null, x=>x.ClinicalDataTrialSetId==inDto.TrialReadingCriterionId) .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId)
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId)) .Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto() .Select(x => new GetReadingClinicalDataListOutDto()
{ {
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
SubjectId = x.SubjectId, SubjectId = x.SubjectId,
ReadingId = x.ReadingId, ReadingId = x.ReadingId,
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalDataSetEnName =x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
IsSign = x.IsSign, IsSign = x.IsSign,
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
@ -994,7 +997,8 @@ namespace IRaCIS.Application.Services
var readingIds = result.Select(x => x.ReadingId).ToList(); var readingIds = result.Select(x => x.ReadingId).ToList();
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync(); var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync();
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => { result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x =>
{
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
{ {
@ -1005,77 +1009,78 @@ namespace IRaCIS.Application.Services
}); });
// 这里处理CRC上传 阅片期的临床数据 // 这里处理CRC上传 阅片期的临床数据
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId&&x.IsCRCConfirm) var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId && x.IsCRCConfirm)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (readModule != null) if (readModule != null)
{ {
var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id) var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id)
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId) .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId)
.Select(x => new { .Select(x => new
ClinicalFormId = x.ClinicalFormId, {
CheckDate = x.ClinicalForm.CheckDate, ClinicalFormId = x.ClinicalFormId,
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId CheckDate = x.ClinicalForm.CheckDate,
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
}).ToListAsync(); }).ToListAsync();
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC&&x.ClinicalUploadType== ClinicalUploadType.Structuring) var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.Structuring)
.WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading,x=>x.ClinicalDataLevel== ClinicalLevel.ImageRead) .WhereIf(readModule.ReadingSetType == ReadingSetType.ImageReading, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead)
.WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead) .WhereIf(readModule.ReadingSetType == ReadingSetType.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead)
.Where(x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == readModule.TrialReadingCriterionId)) .Where(x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == readModule.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto() .Select(x => new GetReadingClinicalDataListOutDto()
{ {
ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataLevel = x.ClinicalDataLevel,
SubjectId = inDto.SubjectId, SubjectId = inDto.SubjectId,
ReadingId = default(Guid), ReadingId = default(Guid),
IsCRCApplicationRevoke= readModule.IsCRCApplicationRevoke, IsCRCApplicationRevoke = readModule.IsCRCApplicationRevoke,
IsCRCConfirm = readModule.IsCRCConfirm, IsCRCConfirm = readModule.IsCRCConfirm,
IsPMConfirm=readModule.IsPMConfirm, IsPMConfirm = readModule.IsPMConfirm,
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
ClinicalDataSetEnName = x.ClinicalDataSetEnName, ClinicalDataSetEnName = x.ClinicalDataSetEnName,
ClinicalDataTrialSetId = x.Id, ClinicalDataTrialSetId = x.Id,
IsSign = readModule.IsPMConfirm, IsSign = readModule.IsPMConfirm,
ClinicalUploadType = x.ClinicalUploadType, ClinicalUploadType = x.ClinicalUploadType,
Id = default(Guid), Id = default(Guid),
UploadRole = x.UploadRole, UploadRole = x.UploadRole,
IsCRCUpload = x.UploadRole == UploadRole.CRC, IsCRCUpload = x.UploadRole == UploadRole.CRC,
IsNeedMerge = true, IsNeedMerge = true,
ReadModuleId = readModule.Id, ReadModuleId = readModule.Id,
//FileCount = x.FileCount, //FileCount = x.FileCount,
//ReadingClinicalDataState = x.ReadingClinicalDataState, //ReadingClinicalDataState = x.ReadingClinicalDataState,
//FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() //FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
//{ //{
// Id = y.Id, // Id = y.Id,
// FileName = y.FileName, // FileName = y.FileName,
// Path = y.Path, // Path = y.Path,
// CreateTime = y.CreateTime, // CreateTime = y.CreateTime,
//}).ToList() //}).ToList()
}).ToListAsync(); }).ToListAsync();
clinicalresult.ForEach(x => clinicalresult.ForEach(x =>
{ {
x.FileCount = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count(); x.FileCount = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count();
x.ClinicalFromList = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).OrderBy(y => y.CheckDate).Select(x => new ClinicalFromData x.ClinicalFromList = moduleCriterionFromList.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).OrderBy(y => y.CheckDate).Select(x => new ClinicalFromData
{ {
CheckDate = x.CheckDate, CheckDate = x.CheckDate,
ClinicalFormId = x.ClinicalFormId ClinicalFormId = x.ClinicalFormId
}).ToList(); }).ToList();
x.IsSign = readModule.IsPMConfirm ?true : false; x.IsSign = readModule.IsPMConfirm ? true : false;
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked; x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
}); });
result.AddRange(clinicalresult); result.AddRange(clinicalresult);
} }
if (inDto.GetClinicalType != null) if (inDto.GetClinicalType != null)
@ -1086,7 +1091,7 @@ namespace IRaCIS.Application.Services
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList(); result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
break; break;
case GetClinicalType.CRCConfirm: case GetClinicalType.CRCConfirm:
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList(); result = result.Where(x => x.UploadRole == UploadRole.CRC && x.IsCRCConfirm && !x.IsPMConfirm).ToList();
break; break;
case GetClinicalType.HasSign: case GetClinicalType.HasSign:
result = result.Where(x => x.IsSign).ToList(); result = result.Where(x => x.IsSign).ToList();
@ -1094,7 +1099,7 @@ namespace IRaCIS.Application.Services
} }
} }
return result; return result;
} }