修改标准附加评估类型
parent
9403347d96
commit
3f33509c18
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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>
|
||||
/// 是否复制病灶
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -24,5 +24,16 @@ namespace IRaCIS.Core.Domain.Share.Reading
|
|||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public enum AdditionalAssessmentType
|
||||
{
|
||||
//脑转移
|
||||
BrainMetastasis = 1,
|
||||
|
||||
//TNM分期
|
||||
|
||||
TNM = 2
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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; }
|
||||
|
|
|
@ -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 可以配置是否分页
|
||||
}
|
||||
#>
|
||||
|
|
Loading…
Reference in New Issue