diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 71f0abd1a..794eb3962 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -15328,13 +15328,14 @@ 删除 项目 下某一site - + 获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的 + @@ -16111,16 +16112,6 @@ - - - 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 - - - - - 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 - - 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 @@ -16131,6 +16122,16 @@ 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 + + + 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 + + + + + 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 + + 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 diff --git a/IRaCIS.Core.Application/Service/Visit/Interface/ISubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/Interface/ISubjectVisitService.cs index 91e782963..e950d5d0e 100644 --- a/IRaCIS.Core.Application/Service/Visit/Interface/ISubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/Interface/ISubjectVisitService.cs @@ -6,7 +6,7 @@ namespace IRaCIS.Core.Application.Interfaces { Task> AddOrUpdateSV(SubjectVisitCommand svCommand); Task DeleteSV(Guid id); - Task> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading); + Task> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading,Guid? visitTaskId); Task SetSVExecuted(Guid subjectVisitId); Task SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent); diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 3f7638f92..97e63a161 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -1,4 +1,5 @@ -using IRaCIS.Core.Application.Contracts; +using DocumentFormat.OpenXml.EMMA; +using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts.Dicom.DTO; using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Interfaces; @@ -207,19 +208,34 @@ namespace IRaCIS.Core.Application.Services /// /// /// + /// /// [HttpGet, Route("{trialId:guid}/{sujectVisitId:guid}/{isReading}")] [AllowAnonymous] - public async Task> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading) + public async Task> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading, [FromQuery] Guid? visitTaskId) { - var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).Select(k => new VisitStudyDTO() + var isImageFilter = false; + var criterionModalitys = ""; + if (visitTaskId != null) { - InstanceCount = k.InstanceCount, - Modalities = k.Modalities, - //SeriesCount = k.SeriesCount, - StudyCode = k.StudyCode, - StudyId = k.Id - }).ToListAsync(); + var info = await _visitTaskRepository.Where(t => t.Id == visitTaskId) + .Select(t => new { t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys }).FirstNotNullAsync(); + isImageFilter = info.IsImageFilter; + criterionModalitys = info.CriterionModalitys; + } + + + + var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId) + .Where(t => isImageFilter ? ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true) + .Select(k => new VisitStudyDTO() + { + InstanceCount = k.InstanceCount, + Modalities = k.Modalities, + //SeriesCount = k.SeriesCount, + StudyCode = k.StudyCode, + StudyId = k.Id + }).ToListAsync(); var studyIds = studyList.Select(t => t.StudyId).ToList(); var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId)) diff --git a/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TrialCriterionSignTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/TrialCriterionSignTrigger.cs similarity index 79% rename from IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TrialCriterionSignTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/TrialCriterionSignTrigger.cs index 693232369..f81f3f5f6 100644 --- a/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TrialCriterionSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/TrialCriterionSignTrigger.cs @@ -6,12 +6,9 @@ namespace IRaCIS.Core.Application.Triggers /// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 /// public class TrialCriterionSignTrigger( - IVisitTaskHelpeService _visitTaskHelpeService) : IBeforeSaveTrigger + IVisitTaskHelpeService _visitTaskHelpeService) : IAfterSaveTrigger { - - - - public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { var trialCriterion = context.Entity; diff --git a/IRaCIS.Core.Application/Triggers/SubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectTrigger.cs index 37e338a1c..0f936accf 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectTrigger.cs @@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Triggers await _subjectVisitRepository.AddRangeAsync(svList); - await _subjectVisitRepository.SaveChangesAsync(); + //await _subjectVisitRepository.SaveChangesAsync(); } diff --git a/IRaCIS.Core.Application/Triggers/使用说明 b/IRaCIS.Core.Application/Triggers/使用说明 new file mode 100644 index 000000000..b8930b505 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/使用说明 @@ -0,0 +1,7 @@ +github Ŀַ:https://github.com/koenbeuk/EntityFrameworkCore.Triggered + +Trigger ʹһΪ IBeforeSaveTrigger IAfterSaveTrigger + +IBeforeSaveTrigger 񱣴֮ǰ Ȼ治Ҫύ񣨱ﷴ + +IAfterSaveTrigger 񱣴֮󣨱Ҫά ƬڣҪ󣬲ҵĺСڸֵӣ \ No newline at end of file diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs index 1b6b389c3..750e96ae8 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs @@ -28,10 +28,9 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, public override ValueTask> SavingChangesAsync(DbContextEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - //领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑) - eventData.Context.AddDomainCommands(); - - DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult(); + ////领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑) + //eventData.Context.AddDomainCommands(); + //DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult(); //领域事件 eventData.Context.AddDomainEvents(); @@ -46,8 +45,6 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, } public override InterceptionResult SavingChanges(DbContextEventData eventData, InterceptionResult result) { - //领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑) - eventData.Context.AddDomainCommands(); //领域事件 eventData.Context.AddDomainEvents();