From 2281c50747d8094d9df2652e52ad8599c5cb2b40 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 30 Jun 2022 15:22:53 +0800 Subject: [PATCH] xiu --- .../Service/Reading/ClinicalDataSetService.cs | 17 ++++ .../Reading/Dto/ReadingClinicalDataDto.cs | 14 +++ .../Reading/ReadingClinicalDataService.cs | 85 ++++++++++++++++++- 3 files changed, 113 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index bb53bd225..aef9d951f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -51,6 +51,14 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateClinicalDataTrialSet(ClinicalDataTrialSetAddOrEdit indto) { + var existsQuery = _clinicalDataTrialSetRepository + .WhereIf(indto.Id != null, x => x.Id != indto.Id) + .Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName); + + if (await existsQuery.AnyAsync()) + { + return ResponseOutput.NotOk("存在同类型的临床数据,操作失败"); + } var entity = await _clinicalDataTrialSetRepository.InsertOrUpdateAsync(indto,true); return ResponseOutput.Ok(entity.Id.ToString()); } @@ -63,6 +71,15 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateClinicalDataSystemSet(ClinicalDataSystemSetAddOrEdit indto) { + + var existsQuery = _clinicalDataSystemSetRepository + .WhereIf(indto.Id != null, x => x.Id != indto.Id) + .Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName); + + if (await existsQuery.AnyAsync()) + { + return ResponseOutput.NotOk("存在同类型的临床数据,操作失败"); + } var entity = await _clinicalDataSystemSetRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index e9e6c24ec..f439fd376 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -154,6 +154,20 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string Path { get; set; } } + + public class GetReadingOrTaskClinicalDataListInDto + { + [NotDefault] + public Guid SubjectId { get; set; } + + [NotDefault] + public Guid TrialId { get; set; } + + public Guid? ReadingId { get; set; } + + public Guid? VisitTaskId { get; set; } + } + /// /// 获取访视列表 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index 4d44ebf99..c322e9bdb 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -25,12 +25,15 @@ namespace IRaCIS.Application.Services { private readonly IRepository _readingClinicalDataRepository; private readonly IRepository _clinicalDataTrialSetRepository; - + + private readonly IRepository _visitTaskRepository; private readonly IRepository _previousPDFRepository; private readonly IRepository _subjectVisitRepository; private readonly IRepository _previousHistoryRepository; private readonly IRepository _previousOtherRepository; private readonly IRepository _previousSurgeryRepository; + private readonly IRepository _subjectRepository; + private readonly IRepository _readModuleRepository; private readonly IRepository _readingClinicalDataPDFRepository; public ReadingClinicalDataService(IRepository readingClinicalDataRepository, @@ -40,8 +43,10 @@ namespace IRaCIS.Application.Services IRepository previousHistoryRepository, IRepository previousOtherRepository, IRepository previousSurgeryRepository, - IRepository readingClinicalDataPDFRepository - ) + IRepository subjectRepository, + IRepository readModuleRepository, + IRepository readingClinicalDataPDFRepository, + IRepository visitTaskRepository) { this._readingClinicalDataRepository = readingClinicalDataRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; @@ -50,7 +55,10 @@ namespace IRaCIS.Application.Services this._previousHistoryRepository = previousHistoryRepository; this._previousOtherRepository = previousOtherRepository; this._previousSurgeryRepository = previousSurgeryRepository; + this._subjectRepository = subjectRepository; + this._readModuleRepository = readModuleRepository; this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository; + this._visitTaskRepository = visitTaskRepository; } @@ -276,6 +284,77 @@ namespace IRaCIS.Application.Services return ResponseOutput.Result(result); } + /// + /// 获取访视 阅片或任务临床数据 + /// + /// + /// + public async Task<(List,object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto) + { + var readingNameOrTaskBlindName = string.Empty; + if (inDto.ReadingId == null) + { + var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId); + inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId; + readingNameOrTaskBlindName = visitTask.TaskBlindName; + } + + if (readingNameOrTaskBlindName.IsNullOrEmpty()) + { + readingNameOrTaskBlindName = await _subjectVisitRepository.Where(x => x.Id == inDto.ReadingId).Select(x => x.VisitName).FirstOrDefaultAsync(); + if (readingNameOrTaskBlindName.IsNullOrEmpty()) + { + readingNameOrTaskBlindName = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId).Select(x => x.ModuleName).FirstOrDefaultAsync(); + + } + } + + var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) + .Where(x => x.ReadingId == inDto.ReadingId||(x.SubjectId==inDto.SubjectId&&x.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.Subject)) + .Select(x => new GetReadingClinicalDataListOutDto() + { + ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, + SubjectId = x.SubjectId, + ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, + ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, + IsSign = x.IsSign, + ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, + Id = x.Id, + UploadRole = x.ClinicalDataTrialSet.UploadRole, + IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, + 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(); + result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList(); + + var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + foreach (var item in result) + { + 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 (result, new + { + SubjectCode = await _subjectRepository.Where(x => x.Id == inDto.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(), + ReadingNameOrTaskBlindName = readingNameOrTaskBlindName, + }); + } /// /// 获取阅片临床数据列表