邮件发布

Test.EIImageViewer
hang 2022-10-20 11:06:08 +08:00
parent f9409815be
commit 7458d9f398
16 changed files with 227 additions and 162 deletions

View File

@ -5378,6 +5378,11 @@
<member name="T:IRaCIS.Core.Application.Contracts.EmailNoticeConfigAddOrEdit">
<summary> EmailNoticeConfigAddOrEdit 列表查询参数模型</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.EmailNoticeConfigAddOrEdit.IsDistinguishCriteria">
<summary>
是否区分标准
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Contracts.SystemBasicDataView">
<summary> SystemBasicDataView 列表视图模型 </summary>
</member>
@ -5993,6 +5998,11 @@
阅片平台
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.GetTrialReadingInfoOutDto.IsGlobalReading">
<summary>
全局阅片
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.GetTrialReadingInfoOutDto.ReadingQuestionCriterionSystemId">
<summary>
系统标准ID

View File

@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
public async Task<List<TrialReadingCriterionDto>> GetTrialCriterionList(Guid trialId)
{
var list= await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm).OrderBy(t=>t.ShowOrder)
.Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName })
.Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName,CriterionType=t.CriterionType,ReadingType=t.ReadingType })
.ToListAsync();
if (list.Count == 0)

View File

@ -24,13 +24,15 @@ namespace IRaCIS.Core.Application.Service
_commonDocumentRepository = commonDocumentRepository;
}
[HttpPost]
public async Task<PageOutput<CommonDocumentView>> GetCommonDocumentList(CommonDocumentQuery queryCommonDocument)
{
var commonDocumentQueryable = _commonDocumentRepository.AsQueryable(true)
.WhereIf( queryCommonDocument.ModuleTypeId!=null ,t=>t.ModuleTypeId == queryCommonDocument.ModuleTypeId)
.WhereIf(queryCommonDocument.FileTypeId != null, t => t.FileTypeId == queryCommonDocument.FileTypeId)
.WhereIf( queryCommonDocument.CriterionTypeEnum!=null ,t=>t.CriterionTypeEnum == queryCommonDocument.CriterionTypeEnum)
.WhereIf(queryCommonDocument.FileTypeEnum != null, t => t.FileTypeEnum == queryCommonDocument.FileTypeEnum)
.WhereIf(queryCommonDocument.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == queryCommonDocument.BusinessScenarioEnum)
.WhereIf( string.IsNullOrEmpty(queryCommonDocument.Code) , t => t.Code.Contains(queryCommonDocument.Code) )
.WhereIf(string.IsNullOrEmpty(queryCommonDocument.Name), t => t.Name.Contains(queryCommonDocument.Name))
.ProjectTo<CommonDocumentView>(_mapper.ConfigurationProvider,new { token = _userInfo.UserToken, userId = _userInfo.Id });

View File

@ -8,16 +8,22 @@ using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.ViewModel
{
public class DocumentTypeDto
{
public Guid DictionaryId { get; set; }
public Guid DictionaryValue { get; set; }
public Guid DictionaryValueCN { get; set; }
}
/// <summary> CommonDocumentView 列表视图模型 </summary>
public class CommonDocumentView : CommonDocumentAddOrEdit
{
public string FileType { get; set; } = String.Empty;
public string ModuleType { get; set; } = String.Empty;
public string FullFilePath { get; set; } = String.Empty;
public string FullFilePath { get; set; } = String.Empty;
public DateTime? DeletedTime { get; set; }
public DateTime CreateTime { get; set; }
public DateTime UpdateTime { get; set; }
@ -25,10 +31,12 @@ namespace IRaCIS.Core.Application.ViewModel
}
///<summary>CommonDocumentQuery 列表查询参数模型</summary>
public class CommonDocumentQuery:PageInput
public class CommonDocumentQuery : PageInput
{
public Guid? FileTypeId { get; set; }
public Guid? ModuleTypeId { get; set; }
public CriterionType? CriterionTypeEnum { get; set; }
public CommonDocumentFileType? FileTypeEnum { get; set; }
public CommonDocumentBusinessScenario? BusinessScenarioEnum { get; set; }
public string Name { get; set; } = String.Empty;
public string Code { get; set; } = String.Empty;
@ -44,8 +52,14 @@ namespace IRaCIS.Core.Application.ViewModel
public string Description { get; set; } = String.Empty;
public bool IsDeleted { get; set; }
public string Code { get; set; } = String.Empty;
public Guid FileTypeId { get; set; }
public Guid ModuleTypeId { get; set; }
public CriterionType CriterionTypeEnum { get; set; } = CriterionType.NoCriterion;
public CommonDocumentFileType FileTypeEnum { get; set; }
public CommonDocumentBusinessScenario BusinessScenarioEnum { get; set; }
//public Guid FileTypeId { get; set; }
//public Guid ModuleTypeId { get; set; }
}

View File

@ -3,6 +3,7 @@
// 生成时间 2022-02-15 11:55:57
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Share;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Contracts
{
@ -16,21 +17,23 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime UpdateTime { get; set; }
[JsonIgnore]
public SystemBasicDataSelect Scenario { get; set; }
//public Guid? ScenarioParentId => Scenario.ParentId;
public string ScenarioName => Scenario.Value;
public string ScenarioNameCN => Scenario.ValueCN;
//[JsonIgnore]
//public SystemBasicDataSelect Scenario { get; set; }
////public Guid? ScenarioParentId => Scenario.ParentId;
//public string ScenarioName => Scenario.Value;
//public string ScenarioNameCN => Scenario.ValueCN;
//public List<CriterionType> CriteriaEnumList { get; set; }
}
///<summary>EmailNoticeConfigQuery 列表查询参数模型</summary>
public class EmailNoticeConfigQuery:PageInput
{
public Guid? ScenarioId { get; set; }
//public Guid? ScenarioId { get; set; }
public CommonDocumentBusinessScenario? BusinessScenarioEnum { get; set; }
public bool? IsReturnRequired { get; set; }
public bool? IsUrgent { get; set; }
@ -44,18 +47,28 @@ namespace IRaCIS.Core.Application.Contracts
public Guid Id { get; set; }
public string Code { get; set; } = String.Empty;
public string AuthorizationCode { get; set; } = String.Empty;
public Guid ScenarioId { get; set; }
public string Title { get; set; } = String.Empty;
public string Body { get; set; } = String.Empty;
public string FromEmail { get; set; } = String.Empty;
public string ReceiveEmail { get; set; } = String.Empty;
public string CopyEmail { get; set; } = String.Empty;
public CommonDocumentBusinessScenario BusinessScenarioEnum { get; set; }
/// <summary>
/// 是否区分标准
/// </summary>
public bool IsDistinguishCriteria { get; set; }
//public string AuthorizationCode { get; set; } = String.Empty;
//public Guid ScenarioId { get; set; }
//public string Title { get; set; } = String.Empty;
//public string Body { get; set; } = String.Empty;
//public string FromEmail { get; set; } = String.Empty;
//public string ReceiveEmail { get; set; } = String.Empty;
//public string CopyEmail { get; set; } = String.Empty;
public bool IsReturnRequired { get; set; }
public bool IsUrgent { get; set; }
public bool IsEnable { get; set; }
public bool IsAutoSend { get; set; }
public bool IsDeleted { get; set; }
}

View File

@ -27,7 +27,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<PageOutput<EmailNoticeConfigView>> GetEmailNoticeConfigList(EmailNoticeConfigQuery queryEmailNoticeConfig)
{
var emailNoticeConfigQueryable = _repository
.WhereIf<EmailNoticeConfig>(queryEmailNoticeConfig.ScenarioId != null, t => t.ScenarioId == queryEmailNoticeConfig.ScenarioId)
.WhereIf<EmailNoticeConfig>(queryEmailNoticeConfig.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == queryEmailNoticeConfig.BusinessScenarioEnum)
.WhereIf(queryEmailNoticeConfig.IsReturnRequired != null, t => t.IsReturnRequired == queryEmailNoticeConfig.IsReturnRequired)
.WhereIf(queryEmailNoticeConfig.IsUrgent != null, t => t.IsUrgent == queryEmailNoticeConfig.IsUrgent)
.WhereIf(queryEmailNoticeConfig.IsEnable != null, t => t.IsEnable == queryEmailNoticeConfig.IsEnable)

View File

@ -44,9 +44,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.ParentCode, t => t.MapFrom(u => u.Parent.Code));
var token = "";
CreateMap<CommonDocument, CommonDocumentView>()
.ForMember(o => o.FileType, t => t.MapFrom(u => u.FileType.Value))
.ForMember(o => o.ModuleType, t => t.MapFrom(u => u.ModuleType.Value))
CreateMap<CommonDocument, CommonDocumentView>()
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
CreateMap<CommonDocument, CommonDocumentAddOrEdit>().ReverseMap();

View File

@ -243,12 +243,19 @@ namespace IRaCIS.Application.Services
var syncClinicalDataTime = await _trialRepository.Where(x => x.Id == trialId).Select(x => x.SyncClinicalDataTime).FirstOrDefaultAsync();
if (syncClinicalDataTime == null)
{
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync();
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().Include(t=>t.SystemClinicalDataCriterionList).ToListAsync();
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
var trialSystemIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
var needAddids = systemIds.Except(trialSystemIds).ToList();
var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
var needAddids = systemIds.Except(trialSystemClinicalDataSetIds).ToList();
var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList();
var readingCriterionList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId).Where(t=>t.ReadingQuestionCriterionSystemId!=null)
.Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id }).ToList();
List<ClinicalDataTrialSet> dataSets = systemDataList.Select(x => new ClinicalDataTrialSet()
{
Id = NewId.NextGuid(),
@ -261,11 +268,22 @@ namespace IRaCIS.Application.Services
Path = x.Path,
TrialId = trialId,
TrialClinicalDataCriterionList = readingCriterionList.Where(t => x.SystemClinicalDataCriterionList.Select(c => (Guid?)c.SystemReadingCriterionId).ToList().Contains(t.ReadingQuestionCriterionSystemId)).Select(c =>
new TrialClinicalDataCriterion() { TrialReadingCriterionId = c.TrialReadingCriterionId }).ToList()
}).ToList();
dataSets.ForEach(x=>x.TrialClinicalDataCriterionList = systemClinicalDataList.Where(t=>t.Id==x.SystemClinicalDataSetId).Select(t => new TrialClinicalDataCriterion() { TrialReadingCriterionId =x.Id}).ToList());
#region 临床数据标准
// dataSets.ForEach(x =>
//x.TrialClinicalDataCriterionList = systemClinicalDataList.Where(t => t.Id == x.SystemClinicalDataSetId)
// .Select(t => new TrialClinicalDataCriterion() { TrialReadingCriterionId = x.cl }).ToList()
// );
#endregion
await _clinicalDataTrialSetRepository.AddRangeAsync(dataSets);

View File

@ -286,11 +286,13 @@ namespace IRaCIS.Application.Services
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
var criterionId = taskInfo.TrialReadingCriterionId;
//排除表格问题
var questions = await _readingQuestionTrialRepository.Where(x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == criterionId && x.Type != ReadingQestionType.Table)
.ProjectTo<DicomReadingQuestionAnswer>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
var answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ToListAsync();
//排除表格问题 同时排除组问题
var groups = questions.Where(x => x.Type != ReadingQestionType.Group).Select(x => x.GroupName).ToList();
var result = questions.Where(x => x.Type == ReadingQestionType.Group && groups.Contains(x.GroupName)).ToList();

View File

@ -291,7 +291,9 @@ namespace IRaCIS.Application.Contracts
public Guid TrialReadingCriterionId { get; set; }
public string TrialReadingCriterionName { get; set; }
public ReadingMethod ReadingType { get; set; }
public ReadingMethod ReadingType { get; set; }
public CriterionType? CriterionType { get; set; }
}
public class TrialCriterionReadingCategory

View File

@ -61,6 +61,17 @@ namespace IRaCIS.Application.Services
// Code = u.Code + 1
//});
var query = from item1 in _repository.Where<ReadingQuestionTrial>()
join item2 in _repository.Where<ReadingQuestionTrial>() on item1.ValueType equals item2.ValueType
select new
{
item1.ValueType,
dd = item2.ValueType
};
var list2 = query.ToList();
var list = await _repository.Where<ClinicalDataTrialSet>(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74")).ToListAsync();

View File

@ -4,14 +4,14 @@ namespace IRaCIS.Core.Domain.Share
{
public enum EmailScenarioEnum
{
None=0,
None = 0,
[Description("用户体系")]
User =1,
User = 1,
[Description("中心调研邀请")]
SiteSurveyInvite =2,
SiteSurveyInvite = 2,
[Description("中心调研审批通知")]
SiteSurveyApproval = 3,
@ -21,18 +21,40 @@ namespace IRaCIS.Core.Domain.Share
public enum CommonDocumentFileType
{
UploadDataTemplate = 1,
ExportDataTempalate = 2,
EmailTemplate = 3,
NormalDataTemplate = 4,
}
public enum CommonDocumentBusinessScenario
{
EnrollConfirmed = 1,
PDConfirmed = 2,
Trial=3,
Reviewer=4,
}
public enum BasicDataTypeEnum
{
None =0,
None = 0,
Email=1,
Email = 1,
Sign=2
Sign = 2
}
}

View File

@ -78,6 +78,9 @@ namespace IRaCIS.Core.Domain.Share
/// </summary>
public enum CriterionType
{
NoCriterion=-1,
None = 0,
/// <summary>

View File

@ -15,24 +15,23 @@ namespace IRaCIS.Core.Domain.Models
[Table("CommonDocument")]
public class CommonDocument : Entity, IAuditUpdate, IAuditAdd,ISoftDelete
{
/// <summary>
/// Name
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// Path
/// </summary>
public string Code { get; set; } = String.Empty;
[Required]
public string Path { get; set; }
public string Name { get; set; } = String.Empty;
/// <summary>
/// CreateTime
/// </summary>
/// Path
/// </summary>
[Required]
public string Path { get; set; } = String.Empty;
/// <summary>
/// CreateTime
/// </summary>
[Required]
public DateTime CreateTime { get; set; }
@ -53,12 +52,12 @@ namespace IRaCIS.Core.Domain.Models
/// </summary>
[Required]
public Guid UpdateUserId { get; set; }
/// <summary>
/// Description
/// </summary>
/// Description
/// </summary>
[Required]
public string Description { get; set; }
public string Description { get; set; } = String.Empty;
/// <summary>
/// IsDeleted
@ -70,26 +69,19 @@ namespace IRaCIS.Core.Domain.Models
public Guid? DeleteUserId { get; set; }
/// <summary>
/// Code
/// </summary>
[Required]
public string Code { get; set; }
/// <summary>
/// FileTypeId
/// </summary>
[Required]
public Guid FileTypeId { get; set; }
public Guid ModuleTypeId { get; set; }
public CriterionType CriterionTypeEnum { get; set; }
public CommonDocumentFileType FileTypeEnum { get; set; }
public CommonDocumentBusinessScenario BusinessScenarioEnum { get; set; }
public Dictionary FileType { get; set; }
//[Required]
//public Guid FileTypeId { get; set; }
//public Guid ModuleTypeId { get; set; }
public Dictionary ModuleType { get; set; }
//public Dictionary FileType { get; set; }
//public Dictionary ModuleType { get; set; }
}

View File

@ -5,104 +5,103 @@
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///EmailNoticeConfig
///</summary>
[Table("EmailNoticeConfig")]
public class EmailNoticeConfig : Entity, IAuditUpdate, IAuditAdd
public class EmailNoticeConfig : Entity, IAuditUpdate, IAuditAdd,ISoftDelete
{
public string Code { get; set; } = String.Empty;
public CommonDocumentBusinessScenario BusinessScenarioEnum { get; set; }
/// <summary>
/// 是否区分标准
/// </summary>
public bool IsDistinguishCriteria { get; set; }
/// <summary>
/// CreateTime
/// 是否需要回执
/// </summary>
[Required]
public bool IsReturnRequired { get; set; }
[Required]
public bool IsUrgent { get; set; }
public bool IsAutoSend { get; set; }
public bool IsEnable { get; set; }
[Required]
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
[Required]
public Guid CreateUserId { get; set; }
/// <summary>
/// UpdateUserId
/// </summary>
[Required]
public Guid UpdateUserId { get; set; }
[Required]
public DateTime UpdateTime { get; set; }
public bool IsDeleted { get; set; }
[Required]
public DateTime? DeletedTime { get; set; }
public Guid? DeleteUserId { get; set; }
//public string CriteriaEnumStr { get; set; } = String.Empty;
//[NotMapped]
//public List<CriterionType> CriteriaEnumList => CriteriaEnumStr.Split('|', StringSplitOptions.RemoveEmptyEntries)
// .Select(t=> (CriterionType)Enum.ToObject(typeof(CriterionType), Convert.ToInt32(t) )).ToList();
[Required]
public Guid ScenarioId { get; set; }
[ForeignKey("ScenarioId")]
public SystemBasicData Scenario { get; set; }
/// <summary>
/// UpdateTime
/// </summary>
[Required]
public DateTime UpdateTime { get; set; }
/// <summary>
/// Title
/// </summary>
[Required]
public string Title { get; set; } = String.Empty;
/// <summary>
/// Body
/// </summary>
[Required]
public string Body { get; set; } = String.Empty;
/// <summary>
/// FromEmail
/// </summary>
[Required]
public string FromEmail { get; set; } = String.Empty;
/// <summary>
/// ReceiveEmail
/// </summary>
public string AuthorizationCode { get; set; } = String.Empty;
[Required]
public string ReceiveEmail { get; set; } = String.Empty;
/// <summary>
/// CopyEmail
/// </summary>
[Required]
public string CopyEmail { get; set; } = String.Empty;
/// <summary>
/// IsReturnRequired
/// </summary>
[Required]
public bool IsReturnRequired { get; set; }
/// <summary>
/// IsUrgent
/// </summary>
[Required]
public bool IsUrgent { get; set; }
/// <summary>
/// IsEnable
/// </summary>
[Required]
public bool IsEnable { get; set; }
public string AuthorizationCode { get; set; } = String.Empty;
public string Code { get; set; } = String.Empty;
public bool IsAutoSend { get; set; }
}

View File

@ -17,57 +17,36 @@ namespace IRaCIS.Core.Domain.Models
public class SystemBasicData : Entity, IAuditUpdate, IAuditAdd
{
/// <summary>
/// Name
/// </summary>
[Required]
public string Name { get; set; }=string.Empty;
/// <summary>
/// Value
/// </summary>
[Required]
public string Value { get; set; } = string.Empty;
/// <summary>
/// Description
/// </summary>
[Required]
public string Description { get; set; } = string.Empty;
/// <summary>
/// ShowOrder
/// </summary>
[Required]
public int ShowOrder { get; set; }
/// <summary>
/// CreateTime
/// </summary>
[Required]
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
[Required]
public Guid CreateUserId { get; set; }
/// <summary>
/// UpdateTime
/// </summary>
[Required]
public DateTime UpdateTime { get; set; }
/// <summary>
/// UpdateUserId
/// </summary>
[Required]
public Guid UpdateUserId { get; set; }
/// <summary>
/// Code
/// </summary>
[Required]
public string Code { get; set; }