Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is running
Details
continuous-integration/drone/push Build is running
Details
commit
8dc2301184
|
@ -15328,13 +15328,14 @@
|
||||||
<member name="M:IRaCIS.Core.Application.Services.TrialMaintenanceService.DeleteTrialSite(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Services.TrialMaintenanceService.DeleteTrialSite(System.Guid)">
|
||||||
<summary>删除 项目 下某一site </summary>
|
<summary>删除 项目 下某一site </summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Services.SubjectVisitService.GetVisitStudyList(System.Guid,System.Guid,System.Int32)">
|
<member name="M:IRaCIS.Core.Application.Services.SubjectVisitService.GetVisitStudyList(System.Guid,System.Guid,System.Int32,System.Nullable{System.Guid})">
|
||||||
<summary>
|
<summary>
|
||||||
获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的
|
获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的
|
||||||
</summary>
|
</summary>
|
||||||
<param name="trialId"></param>
|
<param name="trialId"></param>
|
||||||
<param name="sujectVisitId"></param>
|
<param name="sujectVisitId"></param>
|
||||||
<param name="isReading"></param>
|
<param name="isReading"></param>
|
||||||
|
<param name="visitTaskId"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Services.SubjectVisitService.GetDicomSeriesInfo(IRaCIS.Core.Application.Contracts.GetDicomSeriesInfoInDto)">
|
<member name="M:IRaCIS.Core.Application.Services.SubjectVisitService.GetDicomSeriesInfo(IRaCIS.Core.Application.Contracts.GetDicomSeriesInfoInDto)">
|
||||||
|
@ -16111,16 +16112,6 @@
|
||||||
<param name="_qcChallengeRepository"></param>
|
<param name="_qcChallengeRepository"></param>
|
||||||
<param name="_subjectVisitRepository"></param>
|
<param name="_subjectVisitRepository"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
|
||||||
<summary>
|
|
||||||
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
|
|
||||||
<summary>
|
|
||||||
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
||||||
|
@ -16131,6 +16122,16 @@
|
||||||
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
||||||
|
<summary>
|
||||||
|
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
|
||||||
|
<summary>
|
||||||
|
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
<member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
||||||
<summary>
|
<summary>
|
||||||
因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
|
因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace IRaCIS.Core.Application.Interfaces
|
||||||
{
|
{
|
||||||
Task<IResponseOutput<string>> AddOrUpdateSV(SubjectVisitCommand svCommand);
|
Task<IResponseOutput<string>> AddOrUpdateSV(SubjectVisitCommand svCommand);
|
||||||
Task<IResponseOutput> DeleteSV(Guid id);
|
Task<IResponseOutput> DeleteSV(Guid id);
|
||||||
Task<List<VisitStudyDTO>> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading);
|
Task<List<VisitStudyDTO>> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading,Guid? visitTaskId);
|
||||||
Task<IResponseOutput> SetSVExecuted(Guid subjectVisitId);
|
Task<IResponseOutput> SetSVExecuted(Guid subjectVisitId);
|
||||||
|
|
||||||
Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent);
|
Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent);
|
||||||
|
|
|
@ -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.Contracts.Dicom.DTO;
|
||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
using IRaCIS.Core.Application.Interfaces;
|
using IRaCIS.Core.Application.Interfaces;
|
||||||
|
@ -207,19 +208,34 @@ namespace IRaCIS.Core.Application.Services
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <param name="sujectVisitId"></param>
|
/// <param name="sujectVisitId"></param>
|
||||||
/// <param name="isReading"></param>
|
/// <param name="isReading"></param>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet, Route("{trialId:guid}/{sujectVisitId:guid}/{isReading}")]
|
[HttpGet, Route("{trialId:guid}/{sujectVisitId:guid}/{isReading}")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<List<VisitStudyDTO>> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading)
|
public async Task<List<VisitStudyDTO>> 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,
|
var info = await _visitTaskRepository.Where(t => t.Id == visitTaskId)
|
||||||
Modalities = k.Modalities,
|
.Select(t => new { t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys }).FirstNotNullAsync();
|
||||||
//SeriesCount = k.SeriesCount,
|
isImageFilter = info.IsImageFilter;
|
||||||
StudyCode = k.StudyCode,
|
criterionModalitys = info.CriterionModalitys;
|
||||||
StudyId = k.Id
|
}
|
||||||
}).ToListAsync();
|
|
||||||
|
|
||||||
|
|
||||||
|
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 studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId))
|
var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId))
|
||||||
|
|
|
@ -6,12 +6,9 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
/// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
/// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TrialCriterionSignTrigger(
|
public class TrialCriterionSignTrigger(
|
||||||
IVisitTaskHelpeService _visitTaskHelpeService) : IBeforeSaveTrigger<ReadingQuestionCriterionTrial>
|
IVisitTaskHelpeService _visitTaskHelpeService) : IAfterSaveTrigger<ReadingQuestionCriterionTrial>
|
||||||
{
|
{
|
||||||
|
public async Task AfterSave(ITriggerContext<ReadingQuestionCriterionTrial> context, CancellationToken cancellationToken)
|
||||||
|
|
||||||
|
|
||||||
public async Task BeforeSave(ITriggerContext<ReadingQuestionCriterionTrial> context, CancellationToken cancellationToken)
|
|
||||||
{
|
{
|
||||||
var trialCriterion = context.Entity;
|
var trialCriterion = context.Entity;
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
|
|
||||||
await _subjectVisitRepository.AddRangeAsync(svList);
|
await _subjectVisitRepository.AddRangeAsync(svList);
|
||||||
|
|
||||||
await _subjectVisitRepository.SaveChangesAsync();
|
//await _subjectVisitRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
github 项目地址:https://github.com/koenbeuk/EntityFrameworkCore.Triggered
|
||||||
|
|
||||||
|
Trigger 使用一般分为两种 IBeforeSaveTrigger IAfterSaveTrigger
|
||||||
|
|
||||||
|
IBeforeSaveTrigger 在事务保存之前 然后在里面不需要提交事务(避免稽查那里反复进)
|
||||||
|
|
||||||
|
IAfterSaveTrigger 在事务保存之后(比如要维护 访视拍片日期,首先数据要落库后,才能找到最大的和最小的日期赋值给访视)
|
|
@ -28,10 +28,9 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
|
||||||
public override ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData,
|
public override ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData,
|
||||||
InterceptionResult<int> result, CancellationToken cancellationToken = default)
|
InterceptionResult<int> result, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
//领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑)
|
////领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑)
|
||||||
eventData.Context.AddDomainCommands();
|
//eventData.Context.AddDomainCommands();
|
||||||
|
//DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult();
|
||||||
DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult();
|
|
||||||
|
|
||||||
//领域事件
|
//领域事件
|
||||||
eventData.Context.AddDomainEvents();
|
eventData.Context.AddDomainEvents();
|
||||||
|
@ -46,8 +45,6 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
|
||||||
}
|
}
|
||||||
public override InterceptionResult<int> SavingChanges(DbContextEventData eventData, InterceptionResult<int> result)
|
public override InterceptionResult<int> SavingChanges(DbContextEventData eventData, InterceptionResult<int> result)
|
||||||
{
|
{
|
||||||
//领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑)
|
|
||||||
eventData.Context.AddDomainCommands();
|
|
||||||
|
|
||||||
//领域事件
|
//领域事件
|
||||||
eventData.Context.AddDomainEvents();
|
eventData.Context.AddDomainEvents();
|
||||||
|
|
Loading…
Reference in New Issue