入组和PD 邮件修改
parent
a3e773cb4f
commit
85261bc3cf
|
|
@ -147,7 +147,7 @@ public static class SendEmailHelper
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task SendEmailAsync(SMTPEmailConfig sMTPEmailConfig,Trial? trial, EventHandler<MessageSentEventArgs>? messageSentSuccess = null)
|
public static async Task SendEmailAsync(SMTPEmailConfig sMTPEmailConfig, Trial? trial, EventHandler<MessageSentEventArgs>? messageSentSuccess = null)
|
||||||
{
|
{
|
||||||
var messageToSend = new MimeMessage();
|
var messageToSend = new MimeMessage();
|
||||||
|
|
||||||
|
|
@ -161,8 +161,9 @@ public static class SendEmailHelper
|
||||||
|
|
||||||
if (sMTPEmailConfig.ToMailAddressList.Count == 0)
|
if (sMTPEmailConfig.ToMailAddressList.Count == 0)
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
//---没有收件人
|
//---没有收件人
|
||||||
throw new ArgumentException(I18n.T("SendEmail_NoRecipient"));
|
//throw new ArgumentException(I18n.T("SendEmail_NoRecipient"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2340,7 +2340,7 @@
|
||||||
<param name="sendFileRelativePath"></param>
|
<param name="sendFileRelativePath"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.DealEnrollAnswer(System.Guid,System.Guid,IRaCIS.Core.Domain.Share.CriterionType,System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.DealEnrollAnswer(System.Guid,System.Guid,IRaCIS.Core.Domain.Share.CriterionType,System.Guid,IRaCIS.Core.Domain.Models.UserWorkLanguage)">
|
||||||
<summary>
|
<summary>
|
||||||
获取入组结果
|
获取入组结果
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -2348,9 +2348,10 @@
|
||||||
<param name="subjectVisitId"></param>
|
<param name="subjectVisitId"></param>
|
||||||
<param name="criterionType"></param>
|
<param name="criterionType"></param>
|
||||||
<param name="trialReadingCriterionId"></param>
|
<param name="trialReadingCriterionId"></param>
|
||||||
|
<param name="userWorkLanguage"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.TranslatePdStateAsync(System.Guid,IRaCIS.Core.Domain.Share.ReadingCategory,IRaCIS.Core.Domain.Share.CriterionType,System.Nullable{System.Boolean})">
|
<member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.TranslatePdStateAsync(System.Guid,IRaCIS.Core.Domain.Share.ReadingCategory,IRaCIS.Core.Domain.Share.CriterionType,IRaCIS.Core.Domain.Models.UserWorkLanguage,System.Nullable{System.Boolean})">
|
||||||
<summary>
|
<summary>
|
||||||
获取PD 结果
|
获取PD 结果
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -2358,6 +2359,7 @@
|
||||||
<param name="readingCategory"> 任务类型</param>
|
<param name="readingCategory"> 任务类型</param>
|
||||||
<param name="criterionType">标准类型</param>
|
<param name="criterionType">标准类型</param>
|
||||||
<param name="IsGlobalGenerate"> 是否是全局产生(区分裁判任务)</param>
|
<param name="IsGlobalGenerate"> 是否是全局产生(区分裁判任务)</param>
|
||||||
|
<param name="userWorkLanguage"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
</member>
|
</member>
|
||||||
|
|
|
||||||
|
|
@ -62,42 +62,51 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}).FirstNotNullAsync();
|
}).FirstNotNullAsync();
|
||||||
|
|
||||||
var isEn_us = _userInfo.IsEn_Us;
|
//找到当前收件人语言
|
||||||
|
var workLanguageList = _trialUserRoleRepository.Where(t => t.TrialId == taskInfo.TrialId && t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => t.UserRole.IdentityUser.UserWorkLanguage).Distinct().ToList();
|
||||||
|
|
||||||
var resultStr = isEn_us ? (result == true ? "Yes" : "No") : (result == true ? "是" : "否");
|
foreach (var workLanguage in workLanguageList)
|
||||||
|
|
||||||
if (isEnrollment == true)
|
|
||||||
{
|
{
|
||||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
//设置工作语言
|
||||||
|
var isEn_us = workLanguage == UserWorkLanguage.US;
|
||||||
|
|
||||||
|
var resultStr = isEn_us ? (result == true ? "Yes" : "No") : (result == true ? "是" : "否");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (isEnrollment == true)
|
||||||
{
|
{
|
||||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode);
|
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||||
|
{
|
||||||
|
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode);
|
||||||
|
|
||||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||||
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr);
|
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr);
|
||||||
|
|
||||||
|
|
||||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendTrialEmailAsync(taskInfo.TrialId, taskInfo.CriterionType, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
await SendTrialEmailAsync(taskInfo.TrialId, taskInfo.CriterionType, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
|
||||||
{
|
{
|
||||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName);
|
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||||
|
{
|
||||||
|
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName);
|
||||||
|
|
||||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||||
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName, resultStr);
|
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName, resultStr);
|
||||||
|
|
||||||
|
|
||||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
await SendTrialEmailAsync(taskInfo.TrialId, taskInfo.CriterionType, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
||||||
|
}
|
||||||
|
|
||||||
await SendTrialEmailAsync(taskInfo.TrialId, taskInfo.CriterionType, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -133,8 +142,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var (topicStr, htmlBodyStr, isEn_us, onlyToUserId) = topicAndHtmlFunc(trialEmailConfig);
|
var (topicStr, htmlBodyStr, isEn_us, onlyToUserId) = topicAndHtmlFunc(trialEmailConfig);
|
||||||
|
|
||||||
|
//设置工作语言
|
||||||
|
var workLanguage = isEn_us ? UserWorkLanguage.US : UserWorkLanguage.CN;
|
||||||
|
|
||||||
|
|
||||||
//处理替换公司名
|
//处理替换公司名
|
||||||
htmlBodyStr = CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, htmlBodyStr);
|
htmlBodyStr = CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, htmlBodyStr, workLanguage);
|
||||||
|
|
||||||
|
|
||||||
sendEmailConfig.TopicDescription = topicStr;
|
sendEmailConfig.TopicDescription = topicStr;
|
||||||
|
|
@ -150,10 +163,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList();
|
var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList();
|
||||||
|
|
||||||
var allUserList = await _trialUserRoleRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.UserRole.UserTypeEnum)).Select(t => new { t.UserId, t.UserRole.IdentityUser.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum }).ToListAsync();
|
var allUserList = await _trialUserRoleRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.UserRole.UserTypeEnum)).Select(t => new { t.UserId, t.UserRole.IdentityUser.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum, t.UserRole.IdentityUser.UserWorkLanguage }).ToListAsync();
|
||||||
|
|
||||||
|
//过滤当前语言
|
||||||
var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum))
|
var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)).Where(t=>t.UserWorkLanguage==workLanguage)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
//收件人 有CRC CRA , CRC CRA的账户要按照中心发送
|
//收件人 有CRC CRA , CRC CRA的账户要按照中心发送
|
||||||
|
|
@ -191,11 +204,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
sendEmailConfig.HtmlBodyStr = htmlBodyStr.Replace(EmailNamePlaceholder, string.Join(isEn_us ? ", " : "、", toUserList.Select(t => t.FullName).ToList()));
|
sendEmailConfig.HtmlBodyStr = htmlBodyStr.Replace(EmailNamePlaceholder, string.Join(isEn_us ? ", " : "、", toUserList.Select(t => t.FullName).ToList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (toUserList.Count == 0)
|
|
||||||
{
|
|
||||||
//---没有收件人,无法发送邮件
|
|
||||||
throw new BusinessValidationFailedException(_localizer["TrialEmailN_NoRecipient"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (trialEmailConfig.FromEmail.Contains("@") && !string.IsNullOrEmpty(trialEmailConfig.FromEmail))
|
if (trialEmailConfig.FromEmail.Contains("@") && !string.IsNullOrEmpty(trialEmailConfig.FromEmail))
|
||||||
|
|
@ -235,20 +243,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//邮件附件 这里是原格式发送,不是PDF
|
|
||||||
|
|
||||||
//if (trialEmailConfig.AttachCNPath != string.Empty && trialEmailConfig.AttachPath != string.Empty)
|
|
||||||
//{
|
|
||||||
// var phyPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, isEn_us? trialEmailConfig.AttachName: trialEmailConfig.AttachNameCN);
|
|
||||||
|
|
||||||
// //先预先生成了邮件,发送预先生成的邮件
|
|
||||||
// sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig()
|
|
||||||
// {
|
|
||||||
// FileName = $"{attachPrefix}_{Path.GetFileName(_userInfo.IsEn_Us ? trialEmailConfig.AttachName : trialEmailConfig.AttachNameCN)}",
|
|
||||||
|
|
||||||
// FileStream = File.OpenRead(phyPath),
|
|
||||||
// });
|
|
||||||
//}
|
|
||||||
|
|
||||||
return (trialEmailConfig, sendEmailConfig);
|
return (trialEmailConfig, sendEmailConfig);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Spire.Doc;
|
using Spire.Doc;
|
||||||
using System.Linq.Dynamic.Core;
|
using System.Linq.Dynamic.Core;
|
||||||
|
using System.Runtime;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
|
|
@ -194,7 +195,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
public async Task<string> BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isHandSend, EmailStoreSendMode emailStoreMode, string sendFileRelativePath)
|
public async Task<string> BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isHandSend, EmailStoreSendMode emailStoreMode, string sendFileRelativePath)
|
||||||
{
|
{
|
||||||
var isEn_us = _userInfo.IsEn_Us;
|
|
||||||
|
//简单处理,找到该中心的语言 设置工作语言
|
||||||
|
|
||||||
|
var country = _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => t.Subject.TrialSite.Country).First();
|
||||||
|
|
||||||
|
var isEn_us = country == StaticData.SiteCountry.US;
|
||||||
|
|
||||||
|
var workLanguage = isEn_us ? UserWorkLanguage.US : UserWorkLanguage.CN;
|
||||||
|
|
||||||
EmailBusinessScenario businessScenarioEnum = EmailBusinessScenario.None;
|
EmailBusinessScenario businessScenarioEnum = EmailBusinessScenario.None;
|
||||||
|
|
||||||
var enrollReplace = "";
|
var enrollReplace = "";
|
||||||
|
|
@ -330,7 +339,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_Enroll_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault();
|
var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_Enroll_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault();
|
||||||
|
|
||||||
enrollReplace = _userInfo.IsEn_Us ? findItem.Value : findItem.ValueCN;
|
enrollReplace = isEn_us ? findItem.Value : findItem.ValueCN;
|
||||||
|
|
||||||
//如果其他阅片人已经做了,说明发送了入组确认报告,第二个人做完就不发送了
|
//如果其他阅片人已经做了,说明发送了入组确认报告,第二个人做完就不发送了
|
||||||
|
|
||||||
|
|
@ -348,7 +357,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
bool isEnroll = false;
|
bool isEnroll = false;
|
||||||
|
|
||||||
(answer, isEnroll) = await DealEnrollAnswer(visitTaskId, (Guid)taskInfo.SourceSubjectVisitId, taskInfo.CriterionType, taskInfo.TrialReadingCriterionId);
|
(answer, isEnroll) = await DealEnrollAnswer(visitTaskId, (Guid)taskInfo.SourceSubjectVisitId, taskInfo.CriterionType, taskInfo.TrialReadingCriterionId, workLanguage);
|
||||||
|
|
||||||
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, new List<Guid>() { visitTaskId }, minUserIdList);
|
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, new List<Guid>() { visitTaskId }, minUserIdList);
|
||||||
}
|
}
|
||||||
|
|
@ -357,7 +366,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_PD_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault();
|
var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_PD_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault();
|
||||||
|
|
||||||
PdReplace = _userInfo.IsEn_Us ? findItem.Value : findItem.ValueCN;
|
PdReplace = isEn_us ? findItem.Value : findItem.ValueCN;
|
||||||
|
|
||||||
//有序
|
//有序
|
||||||
|
|
||||||
|
|
@ -384,7 +393,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (taskList.Count == 2 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit) == 2)
|
if (taskList.Count == 2 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit) == 2)
|
||||||
{
|
{
|
||||||
|
|
||||||
answer = await TranslatePdStateAsync(visitTaskId, taskInfo.ReadingCategory, taskInfo.CriterionType);
|
answer = await TranslatePdStateAsync(visitTaskId, taskInfo.ReadingCategory, taskInfo.CriterionType, workLanguage);
|
||||||
|
|
||||||
|
|
||||||
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Select(t => t.Id).ToList(), minUserIdList);
|
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Select(t => t.Id).ToList(), minUserIdList);
|
||||||
|
|
@ -394,7 +403,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
else if (taskList.Count == 3 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) == 3 && taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Count() == 1)
|
else if (taskList.Count == 3 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) == 3 && taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Count() == 1)
|
||||||
{
|
{
|
||||||
var judgeResultId = taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).First()!.JudgeResultTaskId!.Value;
|
var judgeResultId = taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).First()!.JudgeResultTaskId!.Value;
|
||||||
answer = await TranslatePdStateAsync(judgeResultId, ReadingCategory.Visit, taskInfo.CriterionType);
|
answer = await TranslatePdStateAsync(judgeResultId, ReadingCategory.Visit, taskInfo.CriterionType, workLanguage);
|
||||||
|
|
||||||
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.Id).ToList(), minUserIdList);
|
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.Id).ToList(), minUserIdList);
|
||||||
|
|
||||||
|
|
@ -431,7 +440,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (taskList.Count == 2 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Global) == 2)
|
if (taskList.Count == 2 && taskList.Count(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Global) == 2)
|
||||||
{
|
{
|
||||||
|
|
||||||
answer = await TranslatePdStateAsync(visitTaskId, taskInfo.ReadingCategory, taskInfo.CriterionType);
|
answer = await TranslatePdStateAsync(visitTaskId, taskInfo.ReadingCategory, taskInfo.CriterionType, workLanguage);
|
||||||
|
|
||||||
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Select(t => t.Id).ToList(), minUserIdList);
|
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Select(t => t.Id).ToList(), minUserIdList);
|
||||||
}
|
}
|
||||||
|
|
@ -440,7 +449,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
var judgeResultId = taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).First().JudgeResultTaskId!.Value;
|
var judgeResultId = taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).First().JudgeResultTaskId!.Value;
|
||||||
answer = await TranslatePdStateAsync(judgeResultId, ReadingCategory.Global, taskInfo.CriterionType);
|
answer = await TranslatePdStateAsync(judgeResultId, ReadingCategory.Global, taskInfo.CriterionType, workLanguage);
|
||||||
|
|
||||||
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.Id).ToList(), minUserIdList);
|
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, taskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.Id).ToList(), minUserIdList);
|
||||||
|
|
||||||
|
|
@ -613,7 +622,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//先预先生成了邮件,发送预先生成的邮件
|
//先预先生成了邮件,发送预先生成的邮件
|
||||||
sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig()
|
sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig()
|
||||||
{
|
{
|
||||||
FileName = $"{attachPrefix}_{Path.GetFileNameWithoutExtension(_userInfo.IsEn_Us ? trialEmailConfig.AttachName : trialEmailConfig!.AttachNameCN)}.pdf",
|
FileName = $"{attachPrefix}_{Path.GetFileNameWithoutExtension(isEn_us ? trialEmailConfig.AttachName : trialEmailConfig!.AttachNameCN)}.pdf",
|
||||||
|
|
||||||
FileStream = File.OpenRead(phyPath),
|
FileStream = File.OpenRead(phyPath),
|
||||||
});
|
});
|
||||||
|
|
@ -639,7 +648,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var path = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, _userInfo.IsEn_Us ? trialEmailConfig.AttachPath : trialEmailConfig.AttachCNPath);
|
var path = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, isEn_us ? trialEmailConfig.AttachPath : trialEmailConfig.AttachCNPath);
|
||||||
|
|
||||||
//获取从word 到 PDF的路径
|
//获取从word 到 PDF的路径
|
||||||
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.TrialSiteId, taskInfo.SubjectId, true);
|
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.TrialSiteId, taskInfo.SubjectId, true);
|
||||||
|
|
@ -729,7 +738,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
pdfMemoryStream.Seek(0, SeekOrigin.Begin);
|
pdfMemoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig()
|
sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig()
|
||||||
{
|
{
|
||||||
FileName = $"{taskInfo.SubjectCode}_{Path.GetFileNameWithoutExtension(_userInfo.IsEn_Us ? trialEmailConfig.AttachName : trialEmailConfig.AttachNameCN)}.pdf",
|
FileName = $"{taskInfo.SubjectCode}_{Path.GetFileNameWithoutExtension(isEn_us ? trialEmailConfig.AttachName : trialEmailConfig.AttachNameCN)}.pdf",
|
||||||
|
|
||||||
FileStream = pdfMemoryStream
|
FileStream = pdfMemoryStream
|
||||||
});
|
});
|
||||||
|
|
@ -1067,11 +1076,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="subjectVisitId"></param>
|
/// <param name="subjectVisitId"></param>
|
||||||
/// <param name="criterionType"></param>
|
/// <param name="criterionType"></param>
|
||||||
/// <param name="trialReadingCriterionId"></param>
|
/// <param name="trialReadingCriterionId"></param>
|
||||||
|
/// <param name="userWorkLanguage"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<(string enrollAnswer, bool isEnroll)> DealEnrollAnswer(Guid visitTaskId, Guid subjectVisitId, CriterionType criterionType, Guid trialReadingCriterionId)
|
private async Task<(string enrollAnswer, bool isEnroll)> DealEnrollAnswer(Guid visitTaskId, Guid subjectVisitId, CriterionType criterionType, Guid trialReadingCriterionId, UserWorkLanguage userWorkLanguage)
|
||||||
{
|
{
|
||||||
|
|
||||||
var enrollAnswer = _userInfo.IsEn_Us ? "No" : "否";
|
var isEn_us = userWorkLanguage == UserWorkLanguage.US;
|
||||||
|
|
||||||
|
var enrollAnswer = isEn_us ? "No" : "否";
|
||||||
var isEnroll = false;
|
var isEnroll = false;
|
||||||
|
|
||||||
switch (criterionType)
|
switch (criterionType)
|
||||||
|
|
@ -1088,7 +1100,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (await _readingTableQuestionAnswerRepository.Where().AnyAsync(x => x.VisitTaskId == visitTaskId && x.Answer == TargetState.Exist.GetEnumInt() &&
|
if (await _readingTableQuestionAnswerRepository.Where().AnyAsync(x => x.VisitTaskId == visitTaskId && x.Answer == TargetState.Exist.GetEnumInt() &&
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion))
|
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion))
|
||||||
{
|
{
|
||||||
enrollAnswer = _userInfo.IsEn_Us ? "Yes" : "是";
|
enrollAnswer = isEn_us ? "Yes" : "是";
|
||||||
isEnroll = true;
|
isEnroll = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1102,7 +1114,7 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
bool exists = list.Any(s => int.TryParse(s, out var n) && n >= 1);
|
bool exists = list.Any(s => int.TryParse(s, out var n) && n >= 1);
|
||||||
if (exists)
|
if (exists)
|
||||||
{
|
{
|
||||||
enrollAnswer = _userInfo.IsEn_Us ? "Yes" : "是";
|
enrollAnswer = isEn_us ? "Yes" : "是";
|
||||||
isEnroll = true;
|
isEnroll = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1168,9 +1180,10 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
/// <param name="readingCategory"> 任务类型</param>
|
/// <param name="readingCategory"> 任务类型</param>
|
||||||
/// <param name="criterionType">标准类型</param>
|
/// <param name="criterionType">标准类型</param>
|
||||||
/// <param name="IsGlobalGenerate"> 是否是全局产生(区分裁判任务)</param>
|
/// <param name="IsGlobalGenerate"> 是否是全局产生(区分裁判任务)</param>
|
||||||
|
/// <param name="userWorkLanguage"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
private async Task<string> TranslatePdStateAsync(Guid visitTaskId, ReadingCategory readingCategory, CriterionType criterionType, bool? IsGlobalGenerate = null)
|
private async Task<string> TranslatePdStateAsync(Guid visitTaskId, ReadingCategory readingCategory, CriterionType criterionType, UserWorkLanguage userWorkLanguage, bool? IsGlobalGenerate = null )
|
||||||
{
|
{
|
||||||
|
|
||||||
var answer = string.Empty;
|
var answer = string.Empty;
|
||||||
|
|
@ -1361,6 +1374,7 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidTaskTypeForEmailSending"]);
|
throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidTaskTypeForEmailSending"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isEn_us = userWorkLanguage == UserWorkLanguage.US;
|
||||||
|
|
||||||
switch (criterionType)
|
switch (criterionType)
|
||||||
{
|
{
|
||||||
|
|
@ -1372,11 +1386,11 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
|
|
||||||
if (answer == OverallAssessment.PD.GetEnumInt())
|
if (answer == OverallAssessment.PD.GetEnumInt())
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "Yes" : "是";
|
answer = isEn_us ? "Yes" : "是";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "No" : "否";
|
answer = isEn_us ? "No" : "否";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -1384,11 +1398,11 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
|
|
||||||
if (answer == OverallAssessment.iCPD.GetEnumInt())
|
if (answer == OverallAssessment.iCPD.GetEnumInt())
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "Yes" : "是";
|
answer = isEn_us ? "Yes" : "是";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "No" : "否";
|
answer = isEn_us ? "No" : "否";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -1396,11 +1410,11 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
|
|
||||||
if (answer == CTMRIOverallAssessment.PD.GetEnumInt())
|
if (answer == CTMRIOverallAssessment.PD.GetEnumInt())
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "Yes" : "是";
|
answer = isEn_us ? "Yes" : "是";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "No" : "否";
|
answer = isEn_us ? "No" : "否";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -1408,11 +1422,11 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
|
|
||||||
if (answer == ImagingOverallAssessment_Lugano.PMDPD.GetEnumInt())
|
if (answer == ImagingOverallAssessment_Lugano.PMDPD.GetEnumInt())
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "Yes" : "是";
|
answer = isEn_us ? "Yes" : "是";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "No" : "否";
|
answer = isEn_us ? "No" : "否";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -1423,11 +1437,11 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
|
||||||
|
|
||||||
if (answer == VisitTumorEvaluation.PD.GetEnumInt())
|
if (answer == VisitTumorEvaluation.PD.GetEnumInt())
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "Yes" : "是";
|
answer = isEn_us ? "Yes" : "是";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answer = _userInfo.IsEn_Us ? "No" : "否";
|
answer = isEn_us ? "No" : "否";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue