diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 2653783d8..f12165325 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -8293,19 +8293,19 @@ - 获取读片模块 + 获取读片模块 //加了标准参数 - 获取单条详情信息 + 获取单条详情信息 - 添加阅片的时候 获取访视 + 添加阅片的时候 获取访视 //标准参数必传 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index b320be376..1941611e6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -1,6 +1,7 @@ using IRaCIS.Core.Domain.Share; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -38,6 +39,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string? Name { get; set; } + + + public Guid? TrialReadingCriterionId { get; set; } + } public class GetSubjectReadVisitsOutDto @@ -61,6 +66,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 受试者ID /// public Guid SubjectId { get; set; } + + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } } public class ReadModuleAddDto @@ -96,6 +104,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 阅片配置的类型 /// public ReadingSetType ReadingSetType { get; set; } + + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs index 816d322a6..9f3c9f688 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs @@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto [NotDefault] public Guid TrialId { get; set; } - + [NotDefault] public Guid TrialReadingCriterionId { get; set; } /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs index e9c38a484..e051907d2 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs @@ -64,7 +64,7 @@ namespace IRaCIS.Application.Services /// - /// 获取读片模块 + /// 获取读片模块 //加了标准参数 /// [HttpPost] public async Task<(PageOutput,object)> GetReadModuleList(GetReadModuleDto dto) @@ -79,7 +79,9 @@ namespace IRaCIS.Application.Services .WhereIf(dto.SubjectCode != null && dto.SubjectCode != string.Empty, x => x.SubjectCode == dto.SubjectCode) .WhereIf(dto.ModuleType != null, x => x.ModuleType == dto.ModuleType) .WhereIf(dto.ReadingStatus != null, x => x.ReadingStatus == dto.ReadingStatus) - .WhereIf(dto.Name != null, x => x.Name.Contains(dto.Name!)).OrderBy(x => x.SiteCode); + .WhereIf(dto.Name != null, x => x.Name.Contains(dto.Name!)).OrderBy(x => x.SiteCode) + + .WhereIf(dto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId== dto.TrialReadingCriterionId); var subjectIds = await subjectQuery.OrderBy(dto.SortField).Select(x => x.SubjectId).Distinct().Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); @@ -125,7 +127,7 @@ namespace IRaCIS.Application.Services /// - /// 获取单条详情信息 + /// 获取单条详情信息 /// /// /// @@ -192,19 +194,22 @@ namespace IRaCIS.Application.Services } /// - /// 添加阅片的时候 获取访视 + /// 添加阅片的时候 获取访视 //标准参数必传 /// /// /// public async Task> GetSubjectReadVisitList(GetSubjectReadVisitsInDto inDto) { - var maxReadVisit = await _readModuleRepository.Where(x => x.SubjectId == inDto.SubjectId&&x.ReadingSetType==inDto.ReadingSetType).OrderByDescending(x=>x.VisitNum).FirstOrDefaultAsync(); + //增加标准 + var maxReadVisit = await _readModuleRepository.Where(x => x.SubjectId == inDto.SubjectId&&x.ReadingSetType==inDto.ReadingSetType && x.TrialReadingCriterionId==inDto.TrialReadingCriterionId).OrderByDescending(x=>x.VisitNum).FirstOrDefaultAsync(); + var maxReadVisitNum= maxReadVisit==null?-1:maxReadVisit.VisitNum; var visitQuery = _subjectVisitRepository.Where(x => x.SubjectId == inDto.SubjectId && x.LatestScanDate != null&&!x.IsLostVisit); var finalVisitNum = await visitQuery.Where(x => x.IsFinalVisit).Select(x => x.VisitNum).FirstOrDefaultAsync(); + //增加标准 + var readModulequery = _readModuleRepository.AsQueryable().Where(x=>x.TrialReadingCriterionId == inDto.TrialReadingCriterionId); - var readModulequery = _readModuleRepository.AsQueryable(); var resultlist= await visitQuery.WhereIf(finalVisitNum != null&& finalVisitNum!=0, x => x.VisitNum <= finalVisitNum) .WhereIf(inDto.ReadingSetType== ReadingSetType.TumorReading, x => readModulequery.Where(y => y.SubjectVisitId == x.Id && y.ReadingSetType == ReadingSetType.ImageReading).Count() > 0) .Where(x=>x.VisitNum> maxReadVisitNum) @@ -250,6 +255,9 @@ namespace IRaCIS.Application.Services VisitNum = visit.VisitNum, ReadingStatus = ReadingStatusEnum.TaskAllocate, + //增加标准 + TrialReadingCriterionId = dto.TrialReadingCriterionId, + }; await _readModuleRepository.AddAsync(readModuleData); @@ -258,8 +266,9 @@ namespace IRaCIS.Application.Services switch (readModuleData.ModuleType) { case ModuleTypeEnum.Global: + //增加标准 var taskListInfo = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == readModuleData.SubjectVisitId&&x.TaskState==TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned - &&!x.IsAnalysisCreate + &&!x.IsAnalysisCreate && x.TrialReadingCriterionId==dto.TrialReadingCriterionId ).ToListAsync(); foreach (var taskInfo in taskListInfo) @@ -287,8 +296,9 @@ namespace IRaCIS.Application.Services case ModuleTypeEnum.Oncology: var trialInfo = await _trialRepository.Where(x => x.Id == visit.TrialId).FirstNotNullAsync(); + //增加标准 + var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId&& x.ModuleType == ModuleTypeEnum.Global && x.TrialReadingCriterionId == dto.TrialReadingCriterionId).FirstOrDefaultAsync(); - var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId&& x.ModuleType == ModuleTypeEnum.Global).FirstOrDefaultAsync(); if (globalModule != null) { var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync(); diff --git a/IRaCIS.Core.Domain/Reading/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadModule.cs index 33fc10682..6b24f9cf9 100644 --- a/IRaCIS.Core.Domain/Reading/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadModule.cs @@ -19,7 +19,7 @@ namespace IRaCIS.Core.Domain.Models /// public Guid SubjectId { get; set; } - public Guid? TrialReadingCriterionId { get; set; } + public Guid TrialReadingCriterionId { get; set; } /// /// 模块类型 diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs index 0c79a99dd..3f30a53ba 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs @@ -20,7 +20,7 @@ namespace IRaCIS.Core.Domain.Models /// public Guid TrialId { get; set; } - public Guid? TrialReadingCriterionId { get; set; } + public Guid TrialReadingCriterionId { get; set; } /// /// 阅片期名称 diff --git a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs index c79515a3c..28fb42a16 100644 --- a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs +++ b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs @@ -145,5 +145,10 @@ namespace IRaCIS.Core.Domain.Models /// 是否是基线 /// public bool IsBaseLine { get; set; } = false; + + + + + public Guid TrialReadingCriterionId { get; set; } } }