|
|
|
@@ -16,6 +16,9 @@ using IRaCIS.Core.Application.ViewModel;
|
|
|
|
|
using MassTransit;
|
|
|
|
|
using IRaCIS.Core.Application.Filter;
|
|
|
|
|
using static IRaCIS.Core.Domain.Share.StaticData;
|
|
|
|
|
using IRaCIS.Core.Application.Service.Fixed;
|
|
|
|
|
using DocumentFormat.OpenXml.Office.CustomUI;
|
|
|
|
|
using IRaCIS.Core.Application.Service;
|
|
|
|
|
|
|
|
|
|
namespace IRaCIS.Core.Application
|
|
|
|
|
{
|
|
|
|
@@ -36,7 +39,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
private readonly IRepository<TaskAllocationRule> _taskAllocationRuleRepository;
|
|
|
|
|
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
|
|
|
|
private readonly IReadingQuestionService iReadingQuestionService;
|
|
|
|
|
|
|
|
|
|
private readonly IRepository<TrialCriterionAdditionalAssessmentType> _trialCriterionAdditionalAssessmentTypeRepository;
|
|
|
|
|
|
|
|
|
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer;
|
|
|
|
|
|
|
|
|
@@ -60,7 +63,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
IReadingQuestionService iReadingQuestionService,
|
|
|
|
|
IEasyCachingProvider provider,
|
|
|
|
|
IOrganInfoService iOrganInfoService,
|
|
|
|
|
|
|
|
|
|
IRepository<TrialCriterionAdditionalAssessmentType> trialCriterionAdditionalAssessmentTypeRepository,
|
|
|
|
|
IRepository<VisitTask> visitTaskRepository,
|
|
|
|
|
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
|
|
|
|
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
|
|
|
|
@@ -69,6 +72,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
_trialCriterionAdditionalAssessmentTypeRepository = trialCriterionAdditionalAssessmentTypeRepository
|
|
|
|
|
_trialRepository = trialRepository;
|
|
|
|
|
_taskAllocationRuleRepository = taskAllocationRuleRepository;
|
|
|
|
|
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
|
|
|
@@ -154,7 +158,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial()
|
|
|
|
|
{
|
|
|
|
|
IsSigned=true,
|
|
|
|
|
IsSigned = true,
|
|
|
|
|
ReadingInfoSignTime = DateTime.Now
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@@ -196,7 +200,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (trialCriterion.SynchronizeOriginalTime == null)
|
|
|
|
|
{
|
|
|
|
@@ -222,10 +226,11 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
await _trialCriterionDictionaryCode.BatchDeleteNoTrackingAsync(x => x.TrialCriterionId == trialCriterion.Id);
|
|
|
|
|
await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id);
|
|
|
|
|
|
|
|
|
|
var criterionDictionaryCodeList=await _systemCriterionDictionaryCode.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
|
|
|
|
|
.Select(x=>new TrialCriterionDictionaryCode() {
|
|
|
|
|
Code=x.Code,
|
|
|
|
|
TrialCriterionId= trialCriterion.Id,
|
|
|
|
|
var criterionDictionaryCodeList = await _systemCriterionDictionaryCode.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
|
|
|
|
|
.Select(x => new TrialCriterionDictionaryCode()
|
|
|
|
|
{
|
|
|
|
|
Code = x.Code,
|
|
|
|
|
TrialCriterionId = trialCriterion.Id,
|
|
|
|
|
}).ToListAsync();
|
|
|
|
|
|
|
|
|
|
criterionDictionaryCodeList.ForEach(x =>
|
|
|
|
@@ -265,13 +270,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
var tableQuestionQuery = _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).AsQueryable();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId&&x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId== inDto.TrialReadingCriterionId && questionQuery.Count(y => y.Id == x.ReadingQuestionTrialId) == 0);
|
|
|
|
|
await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && questionQuery.Count(y => y.Id == x.QuestionId) == 0);
|
|
|
|
|
await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId &&x.ReadingTableQuestionTrial.TrialCriterionId== inDto.TrialReadingCriterionId && tableQuestionQuery.Count(y => y.Id == x.TableQuestionId) == 0);
|
|
|
|
|
await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && questionQuery.Count(y => y.Id == x.ReadingQuestionTrialId) == 0);
|
|
|
|
|
await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && questionQuery.Count(y => y.Id == x.QuestionId) == 0);
|
|
|
|
|
await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTask.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && x.ReadingTableQuestionTrial.TrialCriterionId == inDto.TrialReadingCriterionId && tableQuestionQuery.Count(y => y.Id == x.TableQuestionId) == 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial()
|
|
|
|
|
{
|
|
|
|
@@ -281,7 +286,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
await _readingCriterionDictionaryRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(true);
|
|
|
|
@@ -458,7 +463,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="inDto"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<(GetTrialReadingCriterionInfoOutDto,bool)> GetTrialReadingCriterionInfo(GetTrialReadingInfoInDto inDto)
|
|
|
|
|
public async Task<(GetTrialReadingCriterionInfoOutDto, bool)> GetTrialReadingCriterionInfo(GetTrialReadingInfoInDto inDto)
|
|
|
|
|
{
|
|
|
|
|
GetTrialReadingCriterionInfoOutDto result = new GetTrialReadingCriterionInfoOutDto();
|
|
|
|
|
result.ReadingCriterionPageList = await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo<ReadingCriterionPageDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
|
|
|
@@ -477,7 +482,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
&& x.ReadingCriterionPageId == null)
|
|
|
|
|
.ProjectTo<TrialReadQuestion>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
|
|
|
|
|
|
|
|
|
return (result,true);
|
|
|
|
|
return (result, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -552,12 +557,34 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
IsGlobalReading = inDto.IsGlobalReading,
|
|
|
|
|
IsArbitrationReading = inDto.IsArbitrationReading,
|
|
|
|
|
IsOncologyReading = inDto.IsOncologyReading,
|
|
|
|
|
IsAdditionalAssessment=inDto.IsAdditionalAssessment,
|
|
|
|
|
IsAutoCreate=inDto.IsAutoCreate
|
|
|
|
|
IsAdditionalAssessment = inDto.IsAdditionalAssessment,
|
|
|
|
|
IsAutoCreate = inDto.IsAutoCreate
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//判断是否存在附加评估,存在,就将标准对应的附加评估选项加进去
|
|
|
|
|
if (inDto.IsAdditionalAssessment)
|
|
|
|
|
{
|
|
|
|
|
if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
|
|
|
|
{
|
|
|
|
|
var addList = AdditionalAssessment.GetSystemDefeaultAdditionalAssessmentList(inDto.CriterionType);
|
|
|
|
|
|
|
|
|
|
foreach (var addItem in addList)
|
|
|
|
|
{
|
|
|
|
|
await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
|
|
|
|
|
{
|
|
|
|
|
CriterionType = inDto.CriterionType,
|
|
|
|
|
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
|
|
|
|
AdditionalAssessmentType = addItem.AdditionalAssessmentType
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//删除附加问题
|
|
|
|
|
await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(t => t.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && t.IsAdditional == true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var result = await _readingQuestionCriterionTrialRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
@@ -565,6 +592,54 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
return ResponseOutput.Ok(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取附加评估选项列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="trialReadingCriterionId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<List<TrialCriterionAdditionalAssessmentType>> GetTrialCriterionAdditionalAssessmentOptionList(Guid trialReadingCriterionId)
|
|
|
|
|
{
|
|
|
|
|
return await _trialCriterionAdditionalAssessmentTypeRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).ToListAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存附加评估设置 (自动添加 或者删除附加评估问题)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="updateList"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<IResponseOutput> SetTrialCriterionAdditionalAssessment(List<AddOrUpdateTrialCriterionAdditional> updateList)
|
|
|
|
|
{
|
|
|
|
|
foreach (var updateItem in updateList)
|
|
|
|
|
{
|
|
|
|
|
if (updateItem.IsSelected == true)
|
|
|
|
|
{
|
|
|
|
|
//添加默认问题
|
|
|
|
|
|
|
|
|
|
var addTypeList = AdditionalAssessment.GetSystemDefeaultAdditionalAssessmentList(updateItem.CriterionType, updateItem.AdditionalAssessmentType);
|
|
|
|
|
|
|
|
|
|
foreach (var addType in addTypeList)
|
|
|
|
|
{
|
|
|
|
|
foreach (var question in addType.AdditionalQuestionList)
|
|
|
|
|
{
|
|
|
|
|
await _readingQuestionTrialRepository.AddAsync(question);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//删除附加问题
|
|
|
|
|
|
|
|
|
|
await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional == true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await _trialCriterionAdditionalAssessmentTypeRepository.UpdatePartialFromQueryAsync(updateItem.Id, t => new TrialCriterionAdditionalAssessmentType() { IsSelected = updateItem.IsSelected });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取签名文本
|
|
|
|
|
/// </summary>
|
|
|
|
|