From 19d109b3bfcd627f231089e31832662960830612 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 4 Jul 2023 13:34:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalAnswerService.cs | 17 ++++---- .../ReadingClinicalDataService.cs | 8 ++-- .../Interface/IClinicalAnswerService.cs | 14 +++++++ .../Triggers/AddCRCCliniaclDataTrigger.cs | 39 +++++++++++++++++++ 4 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs create mode 100644 IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 10486a722..b6102886c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -14,6 +14,7 @@ using MassTransit; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Infrastructure.Extention; +using IRaCIS.Core.Application.Service.Reading.Interface; namespace IRaCIS.Core.Application.Service { @@ -21,8 +22,8 @@ namespace IRaCIS.Core.Application.Service /// 临床答案 /// [ApiExplorerSettings(GroupName = "Reading")] - public class ClinicalAnswerService : BaseService - { + public class ClinicalAnswerService : BaseService, IClinicalAnswerService + { private readonly IRepository _trialClinicalQuestionRepository; @@ -106,7 +107,9 @@ namespace IRaCIS.Core.Application.Service x.IsBaseLine, }).ToListAsync(); - var clinicalDataList =await _readingClinicalDataRepository.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync(); + var clinicalDataList =await _readingClinicalDataRepository + .WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId) + .Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync(); List readingClinicalDatas = new List(); @@ -178,11 +181,11 @@ namespace IRaCIS.Core.Application.Service public async Task> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto) { - await AutoAddCRCClinical(new AutoAddClinicalInDto() - { + //await AutoAddCRCClinical(new AutoAddClinicalInDto() + //{ - TrialId = inDto.TrialId - }) ; + // TrialId = inDto.TrialId + //}) ; diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 0c072ec28..967d63a51 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -179,10 +179,10 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetCRCClinicalData(GetCRCClinicalDataInDto inDto) { - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator) - { - await this.AddCRCClinicalData(inDto); - } + //if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator) + //{ + // await this.AddCRCClinicalData(inDto); + //} List cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs new file mode 100644 index 000000000..29775bb1f --- /dev/null +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs @@ -0,0 +1,14 @@ +using IRaCIS.Core.Application.Service.Reading.Dto; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Service.Reading.Interface +{ + public interface IClinicalAnswerService + { + Task AutoAddCRCClinical(AutoAddClinicalInDto inDto); + } +} diff --git a/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs b/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs new file mode 100644 index 000000000..8ee6c4463 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs @@ -0,0 +1,39 @@ +using EntityFrameworkCore.Triggered; +using IRaCIS.Core.Application.Service.Reading.Interface; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Triggers +{ + public class AddCRCCliniaclDataTrigger : IAfterSaveTrigger + { + private readonly IRepository _subjectVisitRepository; + private readonly IRepository _repository; + private readonly IClinicalAnswerService _iClinicalAnswerService; + + public AddCRCCliniaclDataTrigger(IRepository subjectVisitRepository, IRepository repository, IClinicalAnswerService iClinicalAnswerService) + { + _subjectVisitRepository = subjectVisitRepository; + + _repository = repository; + this._iClinicalAnswerService = iClinicalAnswerService; + } + + //注意删除不能用扩展方法,必须用EF跟踪的实体 否则不能取到 SubjectVisitId + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var subjectVisit = context.Entity; + + await _iClinicalAnswerService.AutoAddCRCClinical(new Service.Reading.Dto.AutoAddClinicalInDto() + { + TrialId = subjectVisit.TrialId, + SubjectId = subjectVisit.SubjectId, + + }); + } + + } +}