diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 85840b02d..cdbc3bcc5 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -9259,7 +9259,7 @@ - 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 + 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index cc35e0c0b..a58d864f8 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -412,6 +412,8 @@ namespace IRaCIS.Core.Application.Service.Common + + /// /// 阅片期信息表 /// diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs index 8f6792956..c4ded2679 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationViewModel.cs @@ -32,7 +32,10 @@ namespace IRaCIS.Core.Application.ViewModel public string TrialSiteCode { get; set; } public SubjectStatus SubjectStatus { get; set; } - public List EvaluationList { get; set; } + public List FinalEvaluationList { get; set; } + + + public List ReadingEvaluationList { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index 1316bbfd5..0cf7b9dce 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -65,11 +65,15 @@ namespace IRaCIS.Core.Application.Service var resultTrialReadingCriterionId = Guid.Empty; + var curentCriterionType = CriterionType.NoCriterion; + //BM 需要找基线 两个人做的结果 if (trialReadingCritionList.First(t => t.Id == inQuery.TrialReadingCriterionId).CriterionType == CriterionType.RECIST1Pointt1_MB) { resultTrialReadingCriterionId = trialReadingCritionList.First(t => t.CriterionType == CriterionType.RECIST1Point1).Id; + + curentCriterionType = CriterionType.RECIST1Pointt1_MB; } @@ -96,16 +100,43 @@ namespace IRaCIS.Core.Application.Service IsJoinEvaluation = subjectCriteriaEvaluation.IsJoinEvaluation, - EvaluationList=subject.SubjectAdditionalEvaluationResult.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId).Select(u=>new EvaluationInfo() - { Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList() + + ReadingEvaluationList= subject.ReadingTaskQuestionAnswerList + .Where(t=>t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId && t.ReadingQuestionTrial.IsAdditional==true && t.ReadingQuestionTrial.Type!="group" && t.VisitTask.SourceSubjectVisit.IsBaseLine) + .Select(u=>new EvaluationInfo() + { + Answer=u.Answer, + QuestioName=u.ReadingQuestionTrial.QuestionName, + QuestioNameEn=u.ReadingQuestionTrial.QuestionEnName, + FinalTranslateDictionaryCode=u.ReadingQuestionTrial.DictionaryCode + }).ToList() + + //EvaluationList=subject + //.SubjectAdditionalEvaluationResult + //.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId) + //.Select(u=>new EvaluationInfo() + //{ Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList() + + }; - - - - var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc); + switch (curentCriterionType) + { + + case CriterionType.RECIST1Pointt1_MB: + + + break; + default: + break; + } + + + + + return pageList; } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 7abf0c702..ab9cfe420 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -254,6 +254,8 @@ namespace IRaCIS.Core.Application.Service // .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.subject.Code)) // .ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.subject.Status)); + + CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs index 5a3523799..f528dbd6c 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs @@ -10,21 +10,34 @@ using System.Linq.Expressions; namespace IRaCIS.Core.Application.Triggers { /// - /// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 + /// 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 /// public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger : IAfterSaveTrigger { private readonly IRepository _visitTaskRepository; + private readonly IRepository _trialReadingCriterionRepository; + + private readonly IRepository _trialReadingQuestionRepository; + + private readonly IRepository _readingTaskQuestionAnswerRepository; + + private readonly IRepository _subjectAdditionalEvaluationResultRepository; + public VisitTaskIsFrontTaskNeedSignButNotSignTrigger( - IRepository visitTaskRepository) + IRepository visitTaskRepository, IRepository trialReadingCriterionRepository, IRepository trialReadingQuestionRepository + , IRepository readingTaskQuestionAnswerRepository, IRepository subjectAdditionalEvaluationResultRepository) { - + _trialReadingCriterionRepository = trialReadingCriterionRepository; _visitTaskRepository = visitTaskRepository; + _trialReadingQuestionRepository = trialReadingQuestionRepository; + + _readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; + _subjectAdditionalEvaluationResultRepository = subjectAdditionalEvaluationResultRepository; } @@ -38,7 +51,7 @@ namespace IRaCIS.Core.Application.Triggers if (context.ChangeType == ChangeType.Added) { - if (visitTask.IsNeedClinicalDataSign ) + if (visitTask.IsNeedClinicalDataSign) { var visitTaskIdQueryable = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务 @@ -67,6 +80,110 @@ namespace IRaCIS.Core.Application.Triggers } } + + + #region 附加评估 暂时废弃 +// //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余 +// if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned) +// { + +// var criterion = _trialReadingCriterionRepository.Where(t => t.Id == visitTask.TrialReadingCriterionId).FirstOrDefault(); + +// //如果是附加评估 +// if (criterion.IsAdditionalAssessment) +// { + + +// if (visitTask.ReadingCategory == ReadingCategory.Visit) +// { + + +// switch (criterion.CriterionType) +// { +// case CriterionType.RECIST1Point1: +// var isbaseLine = _visitTaskRepository.Where(t => t.Id == visitTask.Id).Select(t => t.SourceSubjectVisit.IsBaseLine).FirstOrDefault(); + + + +// if (isbaseLine) +// { +// var currentTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTask.Id && +// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group" +// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync(); + + +// //双重阅片完成了 +// if (criterion.ReadingType == ReadingMethod.Double && +//(_visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() == 2) +// ) +// { + +// var otherTaskId = await _visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.Id != visitTask.Id) +// .Select(t => t.Id).FirstOrDefaultAsync(); + + +// var otherTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == otherTaskId && +// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group" +// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync(); + + + +// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult() +// { +// TrialReadingCriterionId = visitTask.TrialReadingCriterionId, +// IsFinalResult = true, +// SubjectId = visitTask.SubjectId, +// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId, +// FinalAnswer = currentTaskAdditionarlAnswer.Answer, +// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode, + +// }); + +// } +// if (criterion.ReadingType == ReadingMethod.Single) +// { + +// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult() +// { +// TrialReadingCriterionId = visitTask.TrialReadingCriterionId, +// IsFinalResult = true, +// SubjectId = visitTask.SubjectId, +// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId, +// FinalAnswer = currentTaskAdditionarlAnswer.Answer, +// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode, + +// }); + +// } + + + +// } + +// break; +// default: +// break; +// } + + + + + +// } + + + + + + + + +// } +// } + + + #endregion + } diff --git a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluation.cs b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluation.cs index b70fab15c..72d1a76c0 100644 --- a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluation.cs +++ b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluation.cs @@ -63,16 +63,20 @@ namespace IRaCIS.Core.Domain.Models public DateTime UpdateTime { get; set; } - + [JsonIgnore] public List SubjectCriteriaEvaluationVisitFilterList { get; set; } - - ///// - // /// 是否影像筛选 - // /// - //[Required] - //public bool IsImageFiltering { get; set; } - - } + + + + + + ///// + // /// 是否影像筛选 + // /// + //[Required] + //public bool IsImageFiltering { get; set; } + + } } diff --git a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs index 05f2f7539..28135100b 100644 --- a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs +++ b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs @@ -58,22 +58,28 @@ namespace IRaCIS.Core.Domain.Models } - + /// + /// 影像确认结果 + /// public enum ImageDeterminationResultState { //待定 None = 0, + //通过 Passed = 1, } + /// + /// 影像筛选状态 + /// public enum ImageFilterState { //默认值 待筛选 None = 0, - //已完成 + //筛选已完成 Finished = 1 } diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/TrialCriterionAdditionalAssessmentType.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/TrialCriterionAdditionalAssessmentType.cs index 3f385cdde..c46d0fef0 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/TrialCriterionAdditionalAssessmentType.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/TrialCriterionAdditionalAssessmentType.cs @@ -18,49 +18,25 @@ namespace IRaCIS.Core.Domain.Models public class TrialCriterionAdditionalAssessmentType : Entity, IAuditUpdate, IAuditAdd { - - /// - /// TrialReadingCriterionId - /// - [Required] public Guid TrialReadingCriterionId { get; set; } - /// - /// CriterionType - /// - public CriterionType CriterionType { get; set; } public AdditionalAssessmentType AdditionalAssessmentType { get; set; } - /// - /// IsSelected - /// public bool? IsSelected { get; set; } - /// - /// CreateTime - /// - [Required] + public DateTime CreateTime { get; set; } - /// - /// CreateUserId - /// - [Required] + public Guid CreateUserId { get; set; } - /// - /// UpdateTime - /// - [Required] + public DateTime UpdateTime { get; set; } - /// - /// UpdateUserId - /// - [Required] + public Guid UpdateUserId { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs index 38c8fdff9..ccc45dda0 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs @@ -74,7 +74,9 @@ namespace IRaCIS.Core.Domain.Models public ReadingQuestionTrial ReadingQuestionTrial { get; set; } - } + + + } diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index 0a16d6309..2a901ed65 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -31,7 +31,11 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] - public List SubjectAdditionalEvaluationResult { get; set; } + public List SubjectAdditionalEvaluationResult { get; set; } + + + [JsonIgnore] + public List ReadingTaskQuestionAnswerList { get; set; } [JsonIgnore] [ForeignKey("FinalSubjectVisitId")]