入组或者PD 增加触发和消费者
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
2d1785f513
commit
9ad11b16d1
|
@ -12727,6 +12727,21 @@
|
||||||
<param name="_trialRepository"></param>
|
<param name="_trialRepository"></param>
|
||||||
<param name="_mapper"></param>
|
<param name="_mapper"></param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer">
|
||||||
|
<summary>
|
||||||
|
加急的医学反馈任务 通知MIM
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMIMRepliedMedicalReviewConsumer">
|
||||||
|
<summary>
|
||||||
|
MIM 回复医学返回通知IR
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UrgentIRApplyedReReadingConsumer">
|
||||||
|
<summary>
|
||||||
|
加急阅片 IR 申请重阅
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UserSiteSurveySubmitedEventConsumer">
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UserSiteSurveySubmitedEventConsumer">
|
||||||
<summary>
|
<summary>
|
||||||
用户提交 发送邮件 通知SPM 或者PM
|
用户提交 发送邮件 通知SPM 或者PM
|
||||||
|
@ -12742,6 +12757,36 @@
|
||||||
调研表驳回发送邮件 之前已有,需要迁移过来
|
调研表驳回发送邮件 之前已有,需要迁移过来
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CRCSubmitedAndQCToAuditEventConsumer">
|
||||||
|
<summary>
|
||||||
|
CRC 提交了 通知QC进行质控
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedQCChallengeEventConsumer">
|
||||||
|
<summary>
|
||||||
|
CRC 回复质控质疑 通知QC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.QCRepliedQCChallengeEventConsumer">
|
||||||
|
<summary>
|
||||||
|
QC回复 质控质疑,通知CRC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedCheckChallengeEventConsumer">
|
||||||
|
<summary>
|
||||||
|
CRC 回复一致性核查质疑 通知PM
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.PMRepliedCheckChallengeEventConsumer">
|
||||||
|
<summary>
|
||||||
|
PM 一致性核查 通知CRC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CheckStateChangedToAuditEventConsumer">
|
||||||
|
<summary>
|
||||||
|
通知PM 进行一致性核查
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.MediatorHttpContextScopeFilterExtensions">
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.MediatorHttpContextScopeFilterExtensions">
|
||||||
<summary>
|
<summary>
|
||||||
参考链接:https://github.com/MassTransit/MassTransit/discussions/2498
|
参考链接:https://github.com/MassTransit/MassTransit/discussions/2498
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
using IRaCIS.Core.Application.MassTransit.Command;
|
||||||
|
using IRaCIS.Core.Domain;
|
||||||
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
|
using MassTransit;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急的医学反馈任务 通知MIM
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentMedicalReviewAddedEventConsumer : IConsumer<UrgentMedicalReviewAddedEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<UrgentMedicalReviewAddedEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//IR 回复医学反馈通知MIM
|
||||||
|
public class UrgentIRRepliedMedicalReviewConsumer : IConsumer<UrgentIRRepliedMedicalReview>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<UrgentIRRepliedMedicalReview> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class UrgentIRRepliedMedicalReview : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid ReadingMedicalReviewDialogId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MIM 回复医学返回通知IR
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentMIMRepliedMedicalReviewConsumer : IConsumer<UrgentMIMRepliedMedicalReview>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<UrgentMIMRepliedMedicalReview> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急阅片 IR 申请重阅
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentIRApplyedReReadingConsumer : IConsumer<UrgentIRApplyedReReading>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<UrgentIRApplyedReReading> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,41 +8,38 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.MassTransit.Consumer
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户提交 发送邮件 通知SPM 或者PM
|
||||||
|
/// </summary>
|
||||||
|
public class UserSiteSurveySubmitedEventConsumer : IConsumer<UserSiteSurveySubmitedEvent>
|
||||||
{
|
{
|
||||||
/// <summary>
|
public Task Consume(ConsumeContext<UserSiteSurveySubmitedEvent> context)
|
||||||
/// 用户提交 发送邮件 通知SPM 或者PM
|
|
||||||
/// </summary>
|
|
||||||
public class UserSiteSurveySubmitedEventConsumer : IConsumer<UserSiteSurveySubmitedEvent>
|
|
||||||
{
|
{
|
||||||
public Task Consume(ConsumeContext<UserSiteSurveySubmitedEvent> context)
|
throw new NotImplementedException();
|
||||||
{
|
}
|
||||||
throw new NotImplementedException();
|
}
|
||||||
}
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调研表初审通过,进行复审发送邮件
|
||||||
|
/// </summary>
|
||||||
|
public class SiteSurveySPMSubmitedEventConsumer : IConsumer<SiteSurveySPMSubmitedEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<SiteSurveySPMSubmitedEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调研表驳回发送邮件 之前已有,需要迁移过来
|
||||||
|
/// </summary>
|
||||||
|
public class SiteSurverRejectedEventConsumer : IConsumer<SiteSurverRejectedEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<SiteSurverRejectedEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 调研表初审通过,进行复审发送邮件
|
|
||||||
/// </summary>
|
|
||||||
public class SiteSurveySPMSubmitedEventConsumer : IConsumer<SiteSurveySPMSubmitedEvent>
|
|
||||||
{
|
|
||||||
public Task Consume(ConsumeContext<SiteSurveySPMSubmitedEvent> context)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 调研表驳回发送邮件 之前已有,需要迁移过来
|
|
||||||
/// </summary>
|
|
||||||
public class SiteSurverRejectedEventConsumer : IConsumer<SiteSurverRejectedEvent>
|
|
||||||
{
|
|
||||||
public Task Consume(ConsumeContext<SiteSurverRejectedEvent> context)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
using IRaCIS.Core.Application.MassTransit.Command;
|
||||||
|
using IRaCIS.Core.Domain;
|
||||||
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
|
using MassTransit;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 提交了 通知QC进行质控
|
||||||
|
/// </summary>
|
||||||
|
public class CRCSubmitedAndQCToAuditEventConsumer : IConsumer<CRCSubmitedAndQCToAuditEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<CRCSubmitedAndQCToAuditEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 回复质控质疑 通知QC
|
||||||
|
/// </summary>
|
||||||
|
public class CRCRepliedQCChallengeEventConsumer : IConsumer<CRCRepliedQCChallengeEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<CRCRepliedQCChallengeEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// QC回复 质控质疑,通知CRC
|
||||||
|
/// </summary>
|
||||||
|
public class QCRepliedQCChallengeEventConsumer : IConsumer<QCRepliedQCChallengeEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<QCRepliedQCChallengeEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 回复一致性核查质疑 通知PM
|
||||||
|
/// </summary>
|
||||||
|
public class CRCRepliedCheckChallengeEventConsumer : IConsumer<CRCRepliedCheckChallengeEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<CRCRepliedCheckChallengeEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PM 一致性核查 通知CRC
|
||||||
|
/// </summary>
|
||||||
|
public class PMRepliedCheckChallengeEventConsumer : IConsumer<PMRepliedCheckChallengeEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<PMRepliedCheckChallengeEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通知PM 进行一致性核查
|
||||||
|
/// </summary>
|
||||||
|
public class CheckStateChangedToAuditEventConsumer : IConsumer<CheckStateChangedToAuditEvent>
|
||||||
|
{
|
||||||
|
public Task Consume(ConsumeContext<CheckStateChangedToAuditEvent> context)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Domain;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急的医学反馈任务 通知MIM
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentMedicalReviewAddedEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid VisitTaskId { get; set; }
|
||||||
|
public Guid MedicalReviewId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//IR 回复医学反馈通知MIM
|
||||||
|
public class UrgentIRRepliedMedicalReview : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid ReadingMedicalReviewDialogId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MIM 回复医学返回通知IR
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentMIMRepliedMedicalReview : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid ReadingMedicalReviewDialogId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急阅片 IR 申请重阅
|
||||||
|
/// </summary>
|
||||||
|
public class UrgentIRApplyedReReading : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid VisitTaskId { get; set; }
|
||||||
|
}
|
|
@ -1,13 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Domain._DomainEvent
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Domain;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 提交了 通知QC进行质控
|
||||||
|
/// </summary>
|
||||||
|
public class CRCSubmitedAndQCToAuditEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 回复质控质疑 通知QC
|
||||||
|
/// </summary>
|
||||||
|
public class CRCRepliedQCChallengeEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid QCChallengeDialogId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// QC回复 质控质疑,通知CRC
|
||||||
|
/// </summary>
|
||||||
|
public class QCRepliedQCChallengeEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid QCChallengeDialogId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 回复一致性核查质疑 通知PM
|
||||||
|
/// </summary>
|
||||||
|
public class CRCRepliedCheckChallengeEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid CheckChallengeDialogId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 回复一致性核查质疑 通知PM
|
||||||
|
/// </summary>
|
||||||
|
public class PMRepliedCheckChallengeEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid CheckChallengeDialogId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通知PM 进行一致性核查
|
||||||
|
/// </summary>
|
||||||
|
public class CheckStateChangedToAuditEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
}
|
|
@ -5,23 +5,21 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Domain
|
namespace IRaCIS.Core.Domain;
|
||||||
|
|
||||||
|
public class UserSiteSurveySubmitedEvent:DomainEvent
|
||||||
{
|
{
|
||||||
public class UserSiteSurveySubmitedEvent:DomainEvent
|
public Guid TrialSiteSurveyId { get; set; }
|
||||||
{
|
|
||||||
public Guid TrialSiteSurveyId { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SiteSurveySPMSubmitedEvent : DomainEvent
|
|
||||||
{
|
|
||||||
public Guid TrialSiteSurveyId { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SiteSurverRejectedEvent : DomainEvent
|
|
||||||
{
|
|
||||||
public Guid TrialSiteSurveyId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class SiteSurveySPMSubmitedEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid TrialSiteSurveyId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SiteSurverRejectedEvent : DomainEvent
|
||||||
|
{
|
||||||
|
public Guid TrialSiteSurveyId { get; set; }
|
||||||
|
}
|
||||||
|
|
|
@ -70,21 +70,173 @@ public static class DBContext_Ext
|
||||||
//入组或者PD 才执行下面的逻辑
|
//入组或者PD 才执行下面的逻辑
|
||||||
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
{
|
{
|
||||||
|
var originSubmitState = entry.Property(p => p.SubmitState).OriginalValue;
|
||||||
|
var originAuditState = entry.Property(p => p.AuditState).OriginalValue;
|
||||||
|
var originCheckState = entry.Property(p => p.CheckState).OriginalValue;
|
||||||
|
|
||||||
|
//质控状态变为待审核的时候
|
||||||
|
|
||||||
|
if (originSubmitState == SubmitStateEnum.ToSubmit && subjectVisit.SubmitState == SubmitStateEnum.Submitted &&
|
||||||
|
originAuditState == AuditStateEnum.None && subjectVisit.AuditState == AuditStateEnum.ToAudit
|
||||||
|
)
|
||||||
|
{
|
||||||
|
subjectVisit.AddDomainEvent(new CRCSubmitedAndQCToAuditEvent() { SubjectVisitId = subjectVisit.Id });
|
||||||
|
}
|
||||||
|
|
||||||
|
//一致性核查通知PM发送邮件
|
||||||
|
if (originCheckState == CheckStateEnum.None && subjectVisit.CheckState == CheckStateEnum.ToCheck
|
||||||
|
)
|
||||||
|
{
|
||||||
|
subjectVisit.AddDomainEvent(new CheckStateChangedToAuditEvent() { SubjectVisitId = subjectVisit.Id });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(subjectVisit.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var entry in changeTracker.Entries<QCChallengeDialog>())
|
||||||
|
{
|
||||||
|
var qCChallengeDialog = entry.Entity;
|
||||||
|
|
||||||
|
//跟踪的方式查询 不会查询数据库多次
|
||||||
|
var findSubjectVisit = dbContext.SubjectVisit.Find(qCChallengeDialog.SubjectVisitId);
|
||||||
|
var findTrial = dbContext.Trial.Find(findSubjectVisit.TrialId);
|
||||||
|
|
||||||
|
//入组或者PD 才执行下面的逻辑
|
||||||
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
|
{
|
||||||
|
//CRC 针对质控质疑进行回复
|
||||||
|
if (entry.State == EntityState.Added && qCChallengeDialog.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)
|
||||||
|
{
|
||||||
|
qCChallengeDialog.AddDomainEvent(new CRCRepliedQCChallengeEvent() { QCChallengeDialogId = qCChallengeDialog.Id, SubjectVisitId = findSubjectVisit.Id, TrialId = findSubjectVisit.TrialId });
|
||||||
|
}
|
||||||
|
//QC 针对质控质疑进行回复
|
||||||
|
else if (entry.State == EntityState.Added && qCChallengeDialog.UserTypeEnum == UserTypeEnum.IQC)
|
||||||
|
{
|
||||||
|
qCChallengeDialog.AddDomainEvent(new QCRepliedQCChallengeEvent() { QCChallengeDialogId = qCChallengeDialog.Id, SubjectVisitId = findSubjectVisit.Id, TrialId = findSubjectVisit.TrialId });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(qCChallengeDialog.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var entry in changeTracker.Entries<CheckChallengeDialog>())
|
||||||
|
{
|
||||||
|
var checkChallengeDialog = entry.Entity;
|
||||||
|
|
||||||
|
//跟踪的方式查询 不会查询数据库多次
|
||||||
|
var findSubjectVisit = dbContext.SubjectVisit.Find(checkChallengeDialog.SubjectVisitId);
|
||||||
|
var findTrial = dbContext.Trial.Find(findSubjectVisit.TrialId);
|
||||||
|
|
||||||
|
//入组或者PD 才执行下面的逻辑
|
||||||
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
|
{
|
||||||
|
//CRC 针对质控质疑进行回复
|
||||||
|
if (entry.State == EntityState.Added && checkChallengeDialog.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)
|
||||||
|
{
|
||||||
|
checkChallengeDialog.AddDomainEvent(new CRCRepliedCheckChallengeEvent() { CheckChallengeDialogId = checkChallengeDialog.Id, SubjectVisitId = findSubjectVisit.Id, TrialId = findSubjectVisit.TrialId });
|
||||||
|
}
|
||||||
|
else if (entry.State == EntityState.Added && checkChallengeDialog.UserTypeEnum == UserTypeEnum.ProjectManager)
|
||||||
|
{
|
||||||
|
checkChallengeDialog.AddDomainEvent(new PMRepliedCheckChallengeEvent() { CheckChallengeDialogId = checkChallengeDialog.Id, SubjectVisitId = findSubjectVisit.Id, TrialId = findSubjectVisit.TrialId });
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(checkChallengeDialog.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//医学审核任务
|
||||||
|
foreach (var entry in changeTracker.Entries<TaskMedicalReview>())
|
||||||
|
{
|
||||||
|
var taskMedicalReview = entry.Entity;
|
||||||
|
|
||||||
|
//跟踪的方式查询 不会查询数据库多次
|
||||||
|
var findVisitTask = dbContext.VisitTask.Find(taskMedicalReview.VisitTaskId);
|
||||||
|
var findTrial = dbContext.Trial.Find(findVisitTask.TrialId);
|
||||||
|
|
||||||
|
//入组或者PD 才执行下面的逻辑
|
||||||
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (entry.State == EntityState.Added)
|
||||||
|
{
|
||||||
|
taskMedicalReview.AddDomainEvent(new UrgentMedicalReviewAddedEvent() { MedicalReviewId = taskMedicalReview.Id, VisitTaskId = taskMedicalReview.VisitTaskId });
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(taskMedicalReview.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//医学反馈
|
||||||
|
foreach (var entry in changeTracker.Entries<ReadingMedicalReviewDialog>())
|
||||||
|
{
|
||||||
|
var readingMedicalReviewDialog = entry.Entity;
|
||||||
|
|
||||||
|
//跟踪的方式查询 不会查询数据库多次
|
||||||
|
var findVisitTask = dbContext.VisitTask.Find(readingMedicalReviewDialog.VisitTaskId);
|
||||||
|
var findTrial = dbContext.Trial.Find(findVisitTask.TrialId);
|
||||||
|
|
||||||
|
//入组或者PD 才执行下面的逻辑
|
||||||
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
|
{
|
||||||
|
if (entry.State == EntityState.Added && readingMedicalReviewDialog.UserTypeEnumInt == (int)UserTypeEnum.MIM)
|
||||||
|
{
|
||||||
|
readingMedicalReviewDialog.AddDomainEvent(new UrgentMIMRepliedMedicalReview() { ReadingMedicalReviewDialogId = readingMedicalReviewDialog.Id });
|
||||||
|
}
|
||||||
|
else if (entry.State == EntityState.Added && readingMedicalReviewDialog.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer)
|
||||||
|
{
|
||||||
|
readingMedicalReviewDialog.AddDomainEvent(new UrgentIRRepliedMedicalReview() { ReadingMedicalReviewDialogId = readingMedicalReviewDialog.Id });
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(readingMedicalReviewDialog.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//任务 申请重阅ReReadingApplyState
|
||||||
|
|
||||||
|
foreach (var entry in changeTracker.Entries<VisitTask>())
|
||||||
|
{
|
||||||
|
|
||||||
|
var visitTask = entry.Entity;
|
||||||
|
|
||||||
|
//跟踪的方式查询 不会查询数据库多次
|
||||||
|
var findTrial = dbContext.Trial.Find(visitTask.TrialId);
|
||||||
|
|
||||||
|
//入组或者PD 才执行下面的逻辑
|
||||||
|
if (findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView)
|
||||||
|
{
|
||||||
|
var originReReadingApplyState = entry.Property(p => p.ReReadingApplyState).OriginalValue;
|
||||||
|
|
||||||
|
if (originReReadingApplyState == ReReadingApplyState.Default && visitTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed)
|
||||||
|
{
|
||||||
|
visitTask.AddDomainEvent(new UrgentIRApplyedReReading() { VisitTaskId = visitTask.Id });
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加进记录
|
||||||
|
eventStoreList.AddRange(visitTask.DomainEvents.Select(t => new EventStoreRecord() { EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//跟随事务一起保存数据库
|
//跟随事务一起保存数据库
|
||||||
dbContext.EventStoreRecord.AddRange(eventStoreList);
|
dbContext.EventStoreRecord.AddRange(eventStoreList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 暂时废弃
|
#region 暂时废弃
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 暂时废弃,没有场景使用
|
/// 暂时废弃,没有场景使用
|
||||||
|
@ -128,6 +280,4 @@ public static class DBContext_Ext
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue