Uat_Study
parent
eef042b469
commit
fbc639030a
|
@ -2,6 +2,7 @@
|
||||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using IRaCIS.Core.Application.Interfaces;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -11,7 +12,7 @@ namespace IRaCIS.Application.Services
|
||||||
[ApiExplorerSettings(GroupName = "Reading")]
|
[ApiExplorerSettings(GroupName = "Reading")]
|
||||||
public class ClinicalDataSetService : BaseService
|
public class ClinicalDataSetService : BaseService
|
||||||
{
|
{
|
||||||
|
public IClinicalQuestionService _iClinicalQuestionService;
|
||||||
public IRepository<SubjectVisit> _subjectVisitRepository;
|
public IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
|
|
||||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||||
|
@ -22,7 +23,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
public ClinicalDataSetService(IRepository<SubjectVisit> subjectVisitRepository,
|
public ClinicalDataSetService(IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
|
IClinicalQuestionService iClinicalQuestionService,
|
||||||
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
||||||
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
||||||
IRepository<PreviousPDF> previousPDFRepository,
|
IRepository<PreviousPDF> previousPDFRepository,
|
||||||
|
@ -32,7 +33,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
_iClinicalQuestionService = iClinicalQuestionService;
|
||||||
_subjectVisitRepository = subjectVisitRepository;
|
_subjectVisitRepository = subjectVisitRepository;
|
||||||
|
|
||||||
_clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
_clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
||||||
|
@ -260,7 +261,7 @@ namespace IRaCIS.Application.Services
|
||||||
//不存在的时候,就将系统数据同步到项目临床数据配置
|
//不存在的时候,就将系统数据同步到项目临床数据配置
|
||||||
if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null))
|
if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null))
|
||||||
{
|
{
|
||||||
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync();
|
var systemClinicalDataList = await _clinicalDataSystemSetRepository.Where(x=>x.IsFinish).AsQueryable().ToListAsync();
|
||||||
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
|
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
|
||||||
|
|
||||||
var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
|
var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
|
||||||
|
@ -299,6 +300,13 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var result = await _clinicalDataTrialSetRepository.SaveChangesAsync();
|
var result = await _clinicalDataTrialSetRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
await _iClinicalQuestionService.SynchronizationQuestion(dataSets.Select(x => new SynchronizationQuestionDto()
|
||||||
|
{
|
||||||
|
SystemClinicalId = x.SystemClinicalDataSetId.Value,
|
||||||
|
TrialClinicalId = x.Id,
|
||||||
|
|
||||||
|
}).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -10,6 +10,7 @@ using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using MassTransit;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -17,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// 临床数据问题
|
/// 临床数据问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ApiExplorerSettings(GroupName = "Reading")]
|
[ApiExplorerSettings(GroupName = "Reading")]
|
||||||
public class ClinicalQuestionService : BaseService
|
public class ClinicalQuestionService : BaseService, IClinicalQuestionService
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
||||||
|
@ -303,24 +304,120 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
#region 同步系统问题
|
#region 同步系统问题
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步系统问题
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task SynchronizationQuestion(List<SynchronizationQuestionDto> inDto)
|
public async Task SynchronizationQuestion(List<SynchronizationQuestionDto> inDto)
|
||||||
{
|
{
|
||||||
var trialClinicalId = inDto.Select(x => x.TrialClinicalId).ToList();
|
var trialClinicalId = inDto.Select(x => x.TrialClinicalId).ToList();
|
||||||
|
|
||||||
var systemClinicalId = inDto.Select(x => x.SystemClinicalId).ToList();
|
var systemClinicalId = inDto.Select(x => x.SystemClinicalId).ToList();
|
||||||
var questionRelation = _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary(
|
var questionRelationList =await _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||||
x => x.SystemClinicalQuestionId ?? default(Guid),
|
{
|
||||||
x => x.Id
|
SystemQuestionId=x.SystemClinicalQuestionId?? default(Guid),
|
||||||
|
TrialQuestionId=x.Id,
|
||||||
|
TrialClinicalId=x.TrialClinicalId,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var tableQuestionRelationList = await _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||||
|
{
|
||||||
|
SystemQuestionId = x.SystemTableQuestionId ?? default(Guid),
|
||||||
|
TrialQuestionId = x.Id,
|
||||||
|
TrialClinicalId = x.TrialClinicalId,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var newTrialQuestionAll = await _systemClinicalQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId))
|
||||||
|
.ProjectTo<TrialClinicalQuestion>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
var newTrialTableQuestionAll = await _systemClinicalTableQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId))
|
||||||
|
.ProjectTo<TrialClinicalTableQuestion>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
List<TrialClinicalQuestion> addTrialDataList = new List<TrialClinicalQuestion>();
|
||||||
|
List<TrialClinicalTableQuestion> addTrialTableList = new List<TrialClinicalTableQuestion>();
|
||||||
|
foreach (var item in inDto)
|
||||||
|
{
|
||||||
|
var questionRelation = questionRelationList.Where(x=>x.TrialClinicalId==item.TrialClinicalId).ToDictionary(
|
||||||
|
x => x.SystemQuestionId,
|
||||||
|
x => x.TrialQuestionId
|
||||||
);
|
);
|
||||||
|
|
||||||
var tableQuestionRelation = _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary(
|
var newTrialQuestionList = newTrialQuestionAll.Where(x => x.SystemClinicalQuestionId == item.SystemClinicalId).ToList();
|
||||||
x => x.SystemTableQuestionId ?? default(Guid),
|
newTrialQuestionList.ForEach(x =>
|
||||||
x => x.Id
|
{
|
||||||
|
if (questionRelation.ContainsKey(x.Id))
|
||||||
|
{
|
||||||
|
x.Id = questionRelation[x.Id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var newid = NewId.NextGuid();
|
||||||
|
questionRelation.Add(x.Id, newid);
|
||||||
|
x.Id = newid;
|
||||||
|
}
|
||||||
|
|
||||||
|
x.TrialClinicalId = item.TrialClinicalId;
|
||||||
|
});
|
||||||
|
|
||||||
|
var copyNewQuestionList = newTrialQuestionList.Clone();
|
||||||
|
foreach (var x in newTrialQuestionList)
|
||||||
|
{
|
||||||
|
var question = x.Clone();
|
||||||
|
if (question.ParentId != null)
|
||||||
|
{
|
||||||
|
question.ParentId = questionRelation[question.ParentId ?? default(Guid)];
|
||||||
|
}
|
||||||
|
if (question.GroupId != null)
|
||||||
|
{
|
||||||
|
question.GroupId = questionRelation[question.GroupId ?? default(Guid)];
|
||||||
|
}
|
||||||
|
addTrialDataList.Add(question);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var tableQuestionRelation = tableQuestionRelationList.Where(x => x.TrialClinicalId == item.TrialClinicalId).ToDictionary(
|
||||||
|
x => x.SystemQuestionId,
|
||||||
|
x => x.TrialQuestionId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
var newTrialTableQuestionList = newTrialTableQuestionAll.Where(x => x.TrialClinicalId == item.TrialClinicalId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
//var
|
|
||||||
|
|
||||||
|
newTrialTableQuestionList.ForEach(x =>
|
||||||
|
{
|
||||||
|
if (tableQuestionRelation.ContainsKey(x.Id))
|
||||||
|
{
|
||||||
|
x.Id = tableQuestionRelation[x.Id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var newid = NewId.NextGuid();
|
||||||
|
tableQuestionRelation.Add(x.Id, newid);
|
||||||
|
x.Id = newid;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (var x in newTrialTableQuestionList)
|
||||||
|
{
|
||||||
|
var tableQuestion = x.Clone();
|
||||||
|
tableQuestion.TrialClinicalId = item.TrialClinicalId;
|
||||||
|
|
||||||
|
tableQuestion.QuestionId = copyNewQuestionList.Where(y => y.SystemClinicalQuestionId == x.QuestionId).Select(y => y.Id).FirstOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
addTrialTableList.Add(tableQuestion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
await _trialClinicalQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId));
|
||||||
|
await _trialClinicalQuestionRepository.AddRangeAsync(addTrialDataList);
|
||||||
|
await _trialClinicalTableQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId) );
|
||||||
|
await _trialClinicalTableQuestionRepository.AddRangeAsync(addTrialTableList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -334,5 +334,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid TrialClinicalId { get; set; }
|
public Guid TrialClinicalId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class QuestionDic
|
||||||
|
{
|
||||||
|
public Guid SystemQuestionId { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialQuestionId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 项目临床数据Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid TrialClinicalId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||||
|
// 生成时间 2022-08-12 14:07:43
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
namespace IRaCIS.Core.Application.Interfaces
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// IClinicalQuestionService
|
||||||
|
/// </summary>
|
||||||
|
public interface IClinicalQuestionService
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
Task SynchronizationQuestion(List<SynchronizationQuestionDto> inDto);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -980,7 +980,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.TrialId = trialCriterion.TrialId;
|
x.TrialId = trialCriterion.TrialId;
|
||||||
});
|
});
|
||||||
var copyNewQuestionList = newTrialQuestionList.Clone();
|
var copyNewQuestionList = newTrialQuestionList.Clone();
|
||||||
var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync();
|
// var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync();
|
||||||
var needAddDatas = new List<ReadingQuestionTrial>();
|
var needAddDatas = new List<ReadingQuestionTrial>();
|
||||||
|
|
||||||
foreach (var x in newTrialQuestionList)
|
foreach (var x in newTrialQuestionList)
|
||||||
|
|
|
@ -26,6 +26,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ClinicalDataSetName { get; set; }
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否配置完成
|
||||||
|
/// </summary>
|
||||||
|
public bool IsFinish { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 英文名称
|
/// 英文名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -63,6 +63,12 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsConfirm { get; set; }
|
public bool IsConfirm { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否配置完成
|
||||||
|
/// </summary>
|
||||||
|
public bool IsFinish { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上传角色
|
/// 上传角色
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue