修改标准附加评估类型

This commit is contained in:
2023-03-16 14:29:11 +08:00
parent 9403347d96
commit 3f33509c18
8 changed files with 248 additions and 20 deletions
@@ -1,5 +1,6 @@
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Reading;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -337,6 +338,8 @@ namespace IRaCIS.Core.Application.Contracts
/// </summary>
public Guid TrialId { get; set; }
public CriterionType CriterionType { get; set; }
/// <summary>
/// 是否有阅片期
/// </summary>
@@ -806,12 +809,29 @@ namespace IRaCIS.Core.Application.Contracts
public bool IsSignSave { get; set; } = false;
}
public class AddOrUpdateTrialCriterionAdditional
{
public Guid Id { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public CriterionType CriterionType { get; set; }
public AdditionalAssessmentType AdditionalAssessmentType { get; set; }
public bool? IsSelected { get; set; }
}
public class SetCriterionReadingInfoInDto
{
//是否附加评估
public bool IsAdditionalAssessment { get; set; }
public CriterionType CriterionType { get; set; }
//自动 手动生成任务
public bool IsAutoCreate { get; set; }
@@ -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>