修改标准附加评估类型

Uat_Study
hang 2023-03-16 14:29:11 +08:00
parent 9403347d96
commit 3f33509c18
8 changed files with 248 additions and 20 deletions

View File

@ -0,0 +1,45 @@
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Reading;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Service
{
public class CriterionAdditionalAssessment
{
public CriterionType CriterionType { get; set; }
public AdditionalAssessmentType AdditionalAssessmentType { get; set; }
//附加评估问题
public List<ReadingQuestionTrial> AdditionalQuestionList { get; set; }
}
public static class AdditionalAssessment
{
public static List<CriterionAdditionalAssessment> SystemDefeaultAdditionalAssessmentList { get; set; } = new List<CriterionAdditionalAssessment>();
static AdditionalAssessment()
{
//Resist1.1 脑转移 默认评估问题
SystemDefeaultAdditionalAssessmentList.Add(new CriterionAdditionalAssessment() { CriterionType = CriterionType.RECIST1Point1, AdditionalAssessmentType = AdditionalAssessmentType.BrainMetastasis });
}
public static List<CriterionAdditionalAssessment> GetSystemDefeaultAdditionalAssessmentList(CriterionType criterionType, AdditionalAssessmentType? additionalAssessmentType=null)
{
return SystemDefeaultAdditionalAssessmentList.Where(t => t.CriterionType == criterionType)
.WhereIf(additionalAssessmentType!=null,t=>t.AdditionalAssessmentType==additionalAssessmentType).ToList();
}
}
}

View File

@ -1710,8 +1710,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public Guid? Id { get; set; }
public Guid TrialId { get; set; }
public bool IsAdditional { get; set; }
public Guid TrialId { get; set; }
/// <summary>
/// 是否复制病灶

View File

@ -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; }

View File

@ -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>

View File

@ -24,5 +24,16 @@ namespace IRaCIS.Core.Domain.Share.Reading
}
public enum AdditionalAssessmentType
{
//脑转移
BrainMetastasis = 1,
//TNM分期
TNM = 2
}
}

View File

@ -0,0 +1,74 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2023-03-16 13:21:14
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using IRaCIS.Core.Domain.Share.Reading;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///TrialCriterionAdditionalAssessmentType
///</summary>
[Table("TrialCriterionAdditionalAssessmentType")]
public class TrialCriterionAdditionalAssessmentType : Entity, IAuditUpdate, IAuditAdd
{
/// <summary>
/// TrialReadingCriterionId
/// </summary>
[Required]
public Guid TrialReadingCriterionId { get; set; }
/// <summary>
/// CriterionType
/// </summary>
public CriterionType CriterionType { get; set; }
public AdditionalAssessmentType AdditionalAssessmentType { get; set; }
/// <summary>
/// IsSelected
/// </summary>
public bool? IsSelected { 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>
/// TrialId
/// </summary>
[Required]
public Guid TrialId { get; set; }
}
}

View File

@ -268,6 +268,9 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterion { get; set; }
public virtual DbSet<TrialCriterionAdditionalAssessmentType> TrialCriterionAdditionalAssessmentType { get; set; }
//public virtual DbSet<TrialClinicalDataCriterion> TrialClinicalDataCriterion { get; set; }
//public virtual DbSet<SystemClinicalDataCriterion> SystemClinicalDataCriterion { get; set; }

View File

@ -4,7 +4,7 @@
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
public static readonly string DbDatabase = "IRaCIS_New_Tet";
//表名称用字符串,拼接
public static readonly string TableName = "DefaultShortcutKey";
public static readonly string TableName = "TrialCriterionAdditionalAssessmentType";
//具体文件里面 例如service 可以配置是否分页
}
#>