diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index 4118d6553..5149bda7e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -54,6 +54,28 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string VisitName { get; set; } } + public class GetCanChangeReadVisitListInDto + { + /// + /// 受试者ID + /// + public Guid SubjectId { get; set; } + + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } + + public Guid Id { get; set; } + } + + public class ChangeCutOffVisitInDto + { + + [NotDefault] + public Guid Id { get; set; } + + + public Guid SubjectVisitIdId { get; set; } + } public class GetSubjectReadVisitsInDto { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs index 0f98bdc86..53ed4f94d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs @@ -15,7 +15,7 @@ namespace IRaCIS.Application.Services /// 生成的阅片模块(在大列表上展示的) 阅片期 /// [ApiExplorerSettings(GroupName = "Reading")] - public class ReadModuleService : BaseService + public class ReadModuleService : BaseService { public IRepository _subjectVisitRepository; @@ -66,6 +66,61 @@ namespace IRaCIS.Application.Services this._readModuleRepository = readModuleRepository; } + #region 获取修改时可选择的阅片期截止访视 + + /// + /// 获取修改截止访视下拉 + /// + /// + /// + [HttpPost] + public async Task> GetCanChangeReadVisitList(GetCanChangeReadVisitListInDto inDto) + { + //增加标准 + var mixReadVisitNum = await _visitTaskRepository.Where(x => + x.TrialReadingCriterionId == inDto.TrialReadingCriterionId + && x.ReadingTaskState == ReadingTaskState.HaveSigned + && x.ReadingCategory == ReadingCategory.Visit + && x.SubjectId == inDto.SubjectId + && x.TaskState == TaskState.Effect).MaxAsync(x => x.VisitTaskNum); + + + 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 resultlist = await visitQuery.WhereIf(finalVisitNum != null && finalVisitNum != 0, x => x.VisitNum <= finalVisitNum) + .Where(x => x.VisitNum > mixReadVisitNum) + .Where(x => !x.IsBaseLine) // 排除基线 + .Where(x => readModulequery.Where(y => y.Id != inDto.Id && y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() == 0) + .Select(x => new GetSubjectReadVisitsOutDto() + { + SubjectVisitId = x.Id, + VisitName = x.VisitName, + VisitNum = x.VisitNum, + }).OrderBy(x => x.VisitNum).ToListAsync(); + + return resultlist; + } + #endregion + + + /// + /// 修改全局阅片截止访视 + /// + /// + /// + [HttpPost] + public async Task ChangeCutOffVisit(ChangeCutOffVisitInDto inDto) + { + await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.Id, x => new ReadModule() { + SubjectVisitId=inDto.SubjectVisitIdId + }); + + return await _readModuleRepository.SaveChangesAsync(); + } /// /// 获取读片模块 //加了标准参数 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs index 051be5b91..497573f8a 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs @@ -239,11 +239,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate + var index = 0; addrowInfo.ForEach(x => { + if (needRowIds.Contains(x.Id)) { + index++; + x.RowIndex = index; x.FristAddTaskId = x.FristAddTaskId==beforeConvertedTaskId? visitTaskId: x.FristAddTaskId; x.QuestionId = otherLesionQuestion.Id; diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs index aa09506c0..90be395aa 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs @@ -75,10 +75,11 @@ namespace IRaCIS.Core.Domain.Models public DateTime UpdateTime { get; set; } + - public bool IsDeleted { get; set; } + public bool IsDeleted { get; set; } public DateTime? DeletedTime { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs index 5c9687998..7a843b8c0 100644 --- a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs +++ b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs @@ -40,6 +40,11 @@ namespace IRaCIS.Core.Domain.Models /// public bool? IsUrgent { get; set; } + /// + /// 是否可改截止访视 + /// + public bool IsCanChangeCutOffVisit { get; set; } + /// /// 访视ID ///