diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index be62b141e..c60da920d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -10,6 +10,7 @@ using System.Linq.Expressions; using IRaCIS.Core.Infrastructure; using System.Linq.Dynamic.Core; using Microsoft.Extensions.Logging; +using IRaCIS.Core.Infrastructure.Extention; namespace IRaCIS.Application.Services { @@ -84,7 +85,7 @@ namespace IRaCIS.Application.Services { var existsQuery = _readingClinicalDataRepository .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 +190,60 @@ namespace IRaCIS.Application.Services public async Task> GetStudyClinicalData(GetStudyClinicalDataInDto inDto) { - var cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) - .Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study).Select(x => new GetCRCClinicalDataOutDto() - { - Id = x.Id, - ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us), - ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, - ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, - ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName, - ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, - FileName = x.ClinicalDataTrialSet.FileName, - UploadRole = x.ClinicalDataTrialSet.UploadRole, - Path = x.ClinicalDataTrialSet.Path, - IsBlind = x.IsBlind, - IsComplete = x.IsComplete, - ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() - { - CheckDate = y.CheckDate, - ClinicalFormId = y.Id - }).ToList(), - PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() - { - Id = y.Id, + var cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) + .Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study).Select(x => new GetCRCClinicalDataOutDto() + { + Id = x.Id, + ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us), + ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, + ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, + ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName, + ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, + FileName = x.ClinicalDataTrialSet.FileName, + UploadRole = x.ClinicalDataTrialSet.UploadRole, + Path = x.ClinicalDataTrialSet.Path, + IsBlind = x.IsBlind, + IsComplete = x.IsComplete, + ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() + { + CheckDate = y.CheckDate, + ClinicalFormId = y.Id + }).ToList(), + PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() + { + Id = y.Id, Size = y.Size, Type = y.Type, FileName = y.FileName, - Path = y.Path, - CreateTime = y.CreateTime, - }).ToList(), + Path = y.Path, + CreateTime = y.CreateTime, + }).ToList(), - }).ToListAsync(); + }).ToListAsync(); - var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - foreach (var item in cRCClinicalDataList) - { - item.ClinicalTableData = new ClinicalDataTable() - { - PreviousHistoryList = previousHistoryList.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(), - }; + foreach (var item in cRCClinicalDataList) + { + item.ClinicalTableData = new ClinicalDataTable() + { + PreviousHistoryList = previousHistoryList.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(), + }; - } - return cRCClinicalDataList; - } + } + return cRCClinicalDataList; + } - /// - /// 获取CRC上传的文件 - /// - /// - /// - [HttpPost] + /// + /// 获取CRC上传的文件 + /// + /// + /// + [HttpPost] public async Task> GetCRCClinicalData(GetCRCClinicalDataInDto inDto) { @@ -258,26 +259,27 @@ namespace IRaCIS.Application.Services .WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit) .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC); - } + } - List cRCClinicalDataList = await query - .Select(x => new GetCRCClinicalDataOutDto() + List cRCClinicalDataList = await query + .Select(x => new GetCRCClinicalDataOutDto() { 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, - ClinicalDataLevel=x.ClinicalDataTrialSet.ClinicalDataLevel, - ClinicalDataSetEnName =x.ClinicalDataTrialSet.ClinicalDataSetEnName, + ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, + ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, FileName = x.ClinicalDataTrialSet.FileName, UploadRole = x.ClinicalDataTrialSet.UploadRole, Path = x.ClinicalDataTrialSet.Path, IsBlind = x.IsBlind, IsComplete = x.IsComplete, - ClinicalFromList=x.Subject.ClinicalFormList.Where(y=>y.ReadingId==x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y=> new ClinicalFromData() { - CheckDate=y.CheckDate, - ClinicalFormId=y.Id + ClinicalFromList = x.Subject.ClinicalFormList.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData() + { + CheckDate = y.CheckDate, + ClinicalFormId = y.Id }).ToList(), PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() { @@ -288,7 +290,7 @@ namespace IRaCIS.Application.Services Type = y.Type, CreateTime = y.CreateTime, }).ToList(), - + }).ToListAsync(); var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -310,7 +312,7 @@ namespace IRaCIS.Application.Services { cRCClinicalDataList = cRCClinicalDataList.Where(x => !(x.ClinicalFromList.Count() == 0 && x.ClinicalUploadType == ClinicalUploadType.Structuring)).ToList(); - } + } return cRCClinicalDataList; } @@ -367,7 +369,7 @@ namespace IRaCIS.Application.Services //} data.IsBlind = inDto.IsBlind; - data.IsComplete=inDto.IsComplete; + data.IsComplete = inDto.IsComplete; data.IsSign = true; data.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned; @@ -385,8 +387,8 @@ namespace IRaCIS.Application.Services //await this.iServiceProvider.GetService().AddOncologyTask(readingId); //如果先生成了任务,再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护 - - if (await _repository.AnyAsync(t=>t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject)) + + if (await _repository.AnyAsync(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject)) { var needDealTrialReadingCriterionIdList = _repository.Where(t => t.Id == data.ClinicalDataTrialSetId) .SelectMany(t => t.TrialClinicalDataSetCriteriaList) @@ -412,7 +414,7 @@ namespace IRaCIS.Application.Services 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(); @@ -427,7 +429,7 @@ namespace IRaCIS.Application.Services { var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync(); - + //判断是否基线 if (isBaseLine) @@ -513,7 +515,7 @@ namespace IRaCIS.Application.Services } //有序阅片才维护 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 +540,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.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); @@ -551,7 +553,7 @@ namespace IRaCIS.Application.Services var visitTaskIdQueryable2 = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务 - + .Where(t => t.IsFrontTaskNeedSignButNotSign == true && //前序任务 不存在需要签名 但是没签名 @@ -570,14 +572,14 @@ namespace IRaCIS.Application.Services } - + } // 废弃 接口合并到签名哪里 - + [HttpPut] public async Task PMClinicalDataConfirm(PMClinicalDataConfirmCommand command) { @@ -631,7 +633,7 @@ namespace IRaCIS.Application.Services keyValuePairs.Add(ModuleTypeEnum.Oncology, ClinicalLevel.OncologyRead); - + var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId); @@ -646,20 +648,20 @@ namespace IRaCIS.Application.Services .WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) .WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataLevel == ClinicalLevel.OncologyRead) .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}|")) .Select(x => new GetTrialClinicalDataSelectOutDto() { ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), - ClinicalDataSetEnName=x.ClinicalDataSetEnName, + ClinicalDataSetEnName = x.ClinicalDataSetEnName, ClinicalUploadType = x.ClinicalUploadType, FileName = x.FileName, Path = x.Path, Id = x.Id, CriterionEnumList = x.CriterionEnumList, }).ToListAsync(); - + return clinicalList; } @@ -713,8 +715,8 @@ namespace IRaCIS.Application.Services {ClinicalLevel.ImageRead,2 }, {ClinicalLevel.OncologyRead,3 }, {ClinicalLevel.Subject,4 }, - {ClinicalLevel.Study,5 }, - }; + {ClinicalLevel.Study,5 }, + }; result = result.OrderBy(x => keys[x.ClinicalDataLevel]).ToList(); @@ -749,7 +751,14 @@ namespace IRaCIS.Application.Services var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine); - var result = await this.GetReadingClinicalList(inDto); + var result = await this.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() { + ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId, + GetClinicalType=inDto.GetClinicalType, + SubjectId=inDto.SubjectId, + TrialId=inDto.TrialId, + ReadingId=inDto.ReadingId, + TrialReadingCriterionId = inDto.TrialReadingCriterionId, + }); var readingIds = result.Select(x => x.ReadingId).ToList(); var previousHistoryList = await _previousHistoryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -787,6 +796,7 @@ namespace IRaCIS.Application.Services .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId) .WhereIf(inDto.SelectIsSign, x => x.IsSign == true) .Where(x => x.ReadingId == inDto.ReadingId) + .WhereIf(inDto.TrialReadingCriterionId!=null, x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId)) .Select(x => new GetReadingClinicalDataListOutDto() { ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, @@ -802,6 +812,10 @@ namespace IRaCIS.Application.Services Id = x.Id, UploadRole = x.ClinicalDataTrialSet.UploadRole, IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, + IsBlind = x.IsBlind, + IsComplete = x.IsComplete, + FileCount = x.FileCount, + ReadingClinicalDataState = x.ReadingClinicalDataState, FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() { Id = y.Id, @@ -809,20 +823,21 @@ namespace IRaCIS.Application.Services Path = y.Path, CreateTime = y.CreateTime, }).ToList(), - + }); var result = new List(); if (!inDto.IsOnlyGetCRCReadModule) { - result = await resultQuery.ToListAsync(); + result = await resultQuery.ToListAsync(); } var readingIds = result.Select(x => x.ReadingId).ToList(); - var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId??default(Guid))).ToListAsync(); - result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => { + var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync(); + 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, ClinicalFormId = y.Id @@ -833,35 +848,37 @@ namespace IRaCIS.Application.Services // 这里处理CRC上传 阅片期的临床数据 var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId) - .WhereIf(inDto.SelectIsSign,x=>x.IsPMConfirm) - .WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm) - .FirstOrDefaultAsync(); + //.Where(x=>x.IsCRCConfirm) + .WhereIf(inDto.SelectIsSign, x => x.IsPMConfirm) + .WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm) + .FirstOrDefaultAsync(); if (readModule != null) { var moduleCriterionFromList = await _readModuleCriterionFromRepository .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId) - .Where(x => x.ReadModuleId == readModule.Id).Select(x => new{ - ClinicalFormId= x.ClinicalFormId, - CheckDate= x.ClinicalForm.CheckDate, - ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId - - - }).ToListAsync(); + .Where(x => x.ReadModuleId == readModule.Id).Select(x => new + { + ClinicalFormId = x.ClinicalFormId, + CheckDate = x.ClinicalForm.CheckDate, + ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId + + + }).ToListAsync(); 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.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() { ClinicalDataLevel = x.ClinicalDataLevel, SubjectId = inDto.SubjectId, ReadingId = default(Guid), - IsCRCApplicationRevoke=readModule.IsCRCApplicationRevoke, - IsCRCConfirm= readModule.IsCRCConfirm, - IsPMConfirm= readModule.IsPMConfirm, + IsCRCApplicationRevoke = readModule.IsCRCApplicationRevoke, + IsCRCConfirm = readModule.IsCRCConfirm, + IsPMConfirm = readModule.IsPMConfirm, ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), ClinicalDataSetEnName = x.ClinicalDataSetEnName, ClinicalDataTrialSetId = x.Id, @@ -872,7 +889,7 @@ namespace IRaCIS.Application.Services IsCRCUpload = x.UploadRole == UploadRole.CRC, IsNeedMerge = true, ReadModuleId = readModule.Id, - TrialClinicalDataSetCriteriaList=x.TrialClinicalDataSetCriteriaList, + TrialClinicalDataSetCriteriaList = x.TrialClinicalDataSetCriteriaList, //FileCount = x.FileCount, //ReadingClinicalDataState = x.ReadingClinicalDataState, @@ -901,8 +918,8 @@ namespace IRaCIS.Application.Services }); - result.AddRange(clinicalresult); - } + result.AddRange(clinicalresult); + } @@ -923,7 +940,7 @@ namespace IRaCIS.Application.Services result = result.Where(x => x.UploadRole == UploadRole.PM).ToList(); break; 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; case GetClinicalType.HasSign: result = result.Where(x => x.IsSign).ToList(); @@ -949,155 +966,6 @@ namespace IRaCIS.Application.Services return result; } - - /// - /// 获取临床数据集合 - /// - /// - [NonDynamicMethod] - public async Task> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto) - { - var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) - .Where(x => x.ReadingId == inDto.ReadingId) - .WhereIf(inDto.ClinicalDataTrialSetId!=null, x=>x.ClinicalDataTrialSetId==inDto.TrialReadingCriterionId) - .Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId)) - .Select(x => new GetReadingClinicalDataListOutDto() - { - ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, - SubjectId = x.SubjectId, - ReadingId = x.ReadingId, - ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us), - ClinicalDataSetEnName =x.ClinicalDataTrialSet.ClinicalDataSetEnName, - ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, - IsSign = x.IsSign, - ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, - Id = x.Id, - UploadRole = x.ClinicalDataTrialSet.UploadRole, - IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, - IsBlind = x.IsBlind, - IsComplete = x.IsComplete, - FileCount = x.FileCount, - - ReadingClinicalDataState = x.ReadingClinicalDataState, - - FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() - { - Id = y.Id, - FileName = y.FileName, - Path = y.Path, - CreateTime = y.CreateTime, - }).ToList() - }); - - var result = await resultQuery.ToListAsync(); - - - var readingIds = result.Select(x => x.ReadingId).ToList(); - var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync(); - 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() - { - CheckDate = y.CheckDate, - ClinicalFormId = y.Id - }).ToList(); - x.FileCount = x.ClinicalFromList.Count; - }); - - // 这里处理CRC上传 阅片期的临床数据 - var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId&&x.IsCRCConfirm) - .FirstOrDefaultAsync(); - if (readModule != null) - { - var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id) - - .WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId) - .Select(x => new { - ClinicalFormId = x.ClinicalFormId, - CheckDate = x.ClinicalForm.CheckDate, - ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId - - - }).ToListAsync(); - - - 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.TumorReading, x => x.ClinicalDataLevel == ClinicalLevel.OncologyRead) - .Where(x => x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == readModule.TrialReadingCriterionId)) - .Select(x => new GetReadingClinicalDataListOutDto() - { - - ClinicalDataLevel = x.ClinicalDataLevel, - SubjectId = inDto.SubjectId, - ReadingId = default(Guid), - IsCRCApplicationRevoke= readModule.IsCRCApplicationRevoke, - IsCRCConfirm = readModule.IsCRCConfirm, - IsPMConfirm=readModule.IsPMConfirm, - - ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), - ClinicalDataSetEnName = x.ClinicalDataSetEnName, - ClinicalDataTrialSetId = x.Id, - IsSign = readModule.IsPMConfirm, - ClinicalUploadType = x.ClinicalUploadType, - Id = default(Guid), - UploadRole = x.UploadRole, - IsCRCUpload = x.UploadRole == UploadRole.CRC, - IsNeedMerge = true, - ReadModuleId = readModule.Id, - //FileCount = x.FileCount, - - //ReadingClinicalDataState = x.ReadingClinicalDataState, - - //FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() - //{ - // Id = y.Id, - // FileName = y.FileName, - // Path = y.Path, - // CreateTime = y.CreateTime, - //}).ToList() - - }).ToListAsync(); - - clinicalresult.ForEach(x => - { - 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 - { - CheckDate = x.CheckDate, - ClinicalFormId = x.ClinicalFormId - - }).ToList(); - - x.IsSign = readModule.IsPMConfirm ?true : false; - x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked; - - }); - - result.AddRange(clinicalresult); - } - - - if (inDto.GetClinicalType != null) - { - switch (inDto.GetClinicalType) - { - case GetClinicalType.PMUpload: - result = result.Where(x => x.UploadRole == UploadRole.PM).ToList(); - break; - case GetClinicalType.CRCConfirm: - result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList(); - break; - case GetClinicalType.HasSign: - result = result.Where(x => x.IsSign).ToList(); - break; - } - } - - - return result; - } - #endregion diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index b4cca0cfa..6f2d364bb 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -199,7 +199,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetReadingOrTaskClinicalDataListInDto { - [NotDefault] + + public Guid? TrialReadingCriterionId { get; set; } + + [NotDefault] public Guid SubjectId { get; set; } [NotDefault] diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs index ccbbc510e..795bab0fc 100644 --- a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs @@ -22,7 +22,6 @@ namespace IRaCIS.Core.Application.Contracts // Task<(List, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto); - Task> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto); Task> GetStudyClinicalData(GetStudyClinicalDataInDto inDto); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs index 594aa2137..e4e374694 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs @@ -470,7 +470,7 @@ namespace IRaCIS.Application.Services if (finishReading) { // 获取临床数据 - var clinicalData = await _readingClinicalDataService.GetReadingClinicalList(new GetReadingClinicalDataListIndto() + var clinicalData = await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() { SubjectId = readModuleInfo.SubjectId, ReadingId = readModuleInfo.Id,