From 0165688799eeee3ece03e5503a57a4f20f49e0ac Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Mon, 15 Apr 2024 15:14:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 21 ++++++++ .../Service/QC/QCOperationService.cs | 7 +-- .../ReadingClinicalDataService.cs | 53 +++++++++++++++++++ .../Reading/Dto/ReadingClinicalDataDto.cs | 5 +- .../Interface/IReadingClinicalDataService.cs | 4 +- .../ReadingImageTaskService.cs | 2 +- 6 files changed, 84 insertions(+), 8 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index e51bf5247..3e9cfbdce 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -852,6 +852,13 @@ 后台托管服务的方式运行 + + + 上传临床数据 + + + + 指定资源Id,渲染Dicom检查的Jpeg预览图像 Dicom检查的Id @@ -3200,6 +3207,20 @@ + + + 删除检查级别临床数据 + + + + + + + 添加检查级别临床数据 + + + + 自动添加CRC临床数据 (不包括检查级别) diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 44442d108..93ab00eea 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1235,15 +1235,12 @@ namespace IRaCIS.Core.Application.Image.QA #region 验证临床数据 是否有Pet类型 foreach (var item in cRCRequestToQCCommand.SubjectVisitIds) { - if (await _dicomStudyRepository.AnyAsync(x => x.SubjectVisitId == item && x.Modalities.Contains("PT"))) + if (await _dicomStudyRepository.AnyAsync(x => x.SubjectVisitId == item && (x.ModalityForEdit.Contains("PT")&& x.ModalityForEdit.Contains("CT")))) { var visit = await _subjectVisitRepository.Where(x => x.Id == item).FirstNotNullAsync(); - var clinicalData = await this._readingClinicalDataService.GetCRCClinicalData(new Service.Reading.Dto.GetCRCClinicalDataInDto() + var clinicalData = await this._readingClinicalDataService.GetStudyClinicalData(new Service.Reading.Dto.GetStudyClinicalDataInDto() { - IsBaseline = visit.IsBaseLine, - SubjectId = visit.SubjectId, SubjectVisitId = item, - TrialId = cRCRequestToQCCommand.TrialId, }); if (clinicalData.Any(x => x.ClinicalDataLevel == ClinicalLevel.Study && x.ClinicalUploadType == ClinicalUploadType.PDF && x.PDFFileList.Count() == 0)) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 920e01a7d..42db932d7 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -179,6 +179,59 @@ namespace IRaCIS.Application.Services #region 临床数据CRC 相关 + /// + /// 获取检查类型临床数据 + /// + /// + /// + 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, + FileName = y.FileName, + Path = y.Path, + CreateTime = y.CreateTime, + }).ToList(), + + }).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(), + }; + + } + return cRCClinicalDataList; + } /// /// 获取CRC上传的文件 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index a3f213303..18dd09e8a 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -141,7 +141,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } - + public class GetStudyClinicalDataInDto + { + public Guid SubjectVisitId { get; set; } + } public class GetCRCClinicalDataInDto { diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs index 82c175fb6..ccbbc510e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs @@ -24,7 +24,9 @@ namespace IRaCIS.Core.Application.Contracts Task> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto); - Task> GetCRCClinicalData(GetCRCClinicalDataInDto inDto); + Task> GetStudyClinicalData(GetStudyClinicalDataInDto inDto); + + Task> GetCRCClinicalData(GetCRCClinicalDataInDto inDto); Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index e6761b1d1..5dfa15cdb 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1947,7 +1947,7 @@ namespace IRaCIS.Application.Services } - await _readingTableAnswerRowInfoRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo() + await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo() { IsDeleted = true