Uat_Study
parent
eef042b469
commit
fbc639030a
|
@ -2,6 +2,7 @@
|
|||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using MassTransit;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
@ -11,7 +12,7 @@ namespace IRaCIS.Application.Services
|
|||
[ApiExplorerSettings(GroupName = "Reading")]
|
||||
public class ClinicalDataSetService : BaseService
|
||||
{
|
||||
|
||||
public IClinicalQuestionService _iClinicalQuestionService;
|
||||
public IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
|
||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||
|
@ -22,7 +23,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
|
||||
public ClinicalDataSetService(IRepository<SubjectVisit> subjectVisitRepository,
|
||||
|
||||
IClinicalQuestionService iClinicalQuestionService,
|
||||
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
||||
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
||||
IRepository<PreviousPDF> previousPDFRepository,
|
||||
|
@ -32,7 +33,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
)
|
||||
{
|
||||
|
||||
_iClinicalQuestionService = iClinicalQuestionService;
|
||||
_subjectVisitRepository = subjectVisitRepository;
|
||||
|
||||
_clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
||||
|
@ -260,7 +261,7 @@ namespace IRaCIS.Application.Services
|
|||
//不存在的时候,就将系统数据同步到项目临床数据配置
|
||||
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 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();
|
||||
|
||||
|
||||
await _iClinicalQuestionService.SynchronizationQuestion(dataSets.Select(x => new SynchronizationQuestionDto()
|
||||
{
|
||||
SystemClinicalId = x.SystemClinicalDataSetId.Value,
|
||||
TrialClinicalId = x.Id,
|
||||
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -10,6 +10,7 @@ using IRaCIS.Core.Application.ViewModel;
|
|||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using MassTransit;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
@ -17,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// 临床数据问题
|
||||
/// </summary>
|
||||
[ApiExplorerSettings(GroupName = "Reading")]
|
||||
public class ClinicalQuestionService : BaseService
|
||||
public class ClinicalQuestionService : BaseService, IClinicalQuestionService
|
||||
{
|
||||
|
||||
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
||||
|
@ -303,24 +304,120 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
#region 同步系统问题
|
||||
|
||||
/// <summary>
|
||||
/// 同步系统问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task SynchronizationQuestion(List<SynchronizationQuestionDto> inDto)
|
||||
{
|
||||
var trialClinicalId = inDto.Select(x => x.TrialClinicalId).ToList();
|
||||
|
||||
var systemClinicalId = inDto.Select(x => x.SystemClinicalId).ToList();
|
||||
var questionRelation = _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary(
|
||||
x => x.SystemClinicalQuestionId ?? default(Guid),
|
||||
x => x.Id
|
||||
);
|
||||
var questionRelationList =await _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||
{
|
||||
SystemQuestionId=x.SystemClinicalQuestionId?? default(Guid),
|
||||
TrialQuestionId=x.Id,
|
||||
TrialClinicalId=x.TrialClinicalId,
|
||||
}).ToListAsync();
|
||||
|
||||
var tableQuestionRelation = _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary(
|
||||
x => x.SystemTableQuestionId ?? default(Guid),
|
||||
x => x.Id
|
||||
);
|
||||
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();
|
||||
|
||||
|
||||
//var
|
||||
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 newTrialQuestionList = newTrialQuestionAll.Where(x => x.SystemClinicalQuestionId == item.SystemClinicalId).ToList();
|
||||
newTrialQuestionList.ForEach(x =>
|
||||
{
|
||||
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();
|
||||
|
||||
|
||||
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 class QuestionDic
|
||||
{
|
||||
public Guid SystemQuestionId { get; set; }
|
||||
|
||||
public Guid TrialQuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目临床数据Id
|
||||
/// </summary>
|
||||
public Guid TrialClinicalId { get; set; }
|
||||
}
|
||||
|
||||
#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;
|
||||
});
|
||||
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>();
|
||||
|
||||
foreach (var x in newTrialQuestionList)
|
||||
|
|
|
@ -26,10 +26,15 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// </summary>
|
||||
public string ClinicalDataSetName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 英文名称
|
||||
/// </summary>
|
||||
public string ClinicalDataSetEnName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 是否配置完成
|
||||
/// </summary>
|
||||
public bool IsFinish { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 英文名称
|
||||
/// </summary>
|
||||
public string ClinicalDataSetEnName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 临床级别
|
||||
|
|
|
@ -63,6 +63,12 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// </summary>
|
||||
public bool IsConfirm { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否配置完成
|
||||
/// </summary>
|
||||
public bool IsFinish { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 上传角色
|
||||
/// </summary>
|
||||
|
|
Loading…
Reference in New Issue