Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
						commit
						873e66d7a6
					
				| 
						 | 
				
			
			@ -9271,7 +9271,7 @@
 | 
			
		|||
        </member>
 | 
			
		||||
        <member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
 | 
			
		||||
            <summary>
 | 
			
		||||
              因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
 | 
			
		||||
             维护 IsFrontTaskNeedSignButNotSign 字段   另外附加评估结果
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:IRaCIS.Core.Application.MediatR.Handlers.AnonymizeCacheHandler.#ctor(IRaCIS.Core.Infra.EFCore.IRepository,EasyCaching.Core.IEasyCachingProvider)">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,11 +90,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            return await _visitTaskRepository.SaveChangesAsync();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task<List<TrialReadingCriterionDto>> GetTrialCriterionList(Guid trialId, bool isHaveSigned = true)
 | 
			
		||||
        public async Task<List<TrialReadingCriterionDto>> GetTrialCriterionList(Guid trialId, bool isHaveSigned = true,bool? isAutoCreate = null)
 | 
			
		||||
        {
 | 
			
		||||
            var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
 | 
			
		||||
              
 | 
			
		||||
                .OrderBy(t => t.ShowOrder)
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, ReadingType = t.ReadingType, ReadingInfoSignTime = t.ReadingInfoSignTime })
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, IsAutoCreate=t.IsAutoCreate,IsAdditionalAssessment=t.IsAdditionalAssessment, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, ReadingType = t.ReadingType, ReadingInfoSignTime = t.ReadingInfoSignTime })
 | 
			
		||||
                .ToListAsync();
 | 
			
		||||
 | 
			
		||||
            if (list.Count == 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +107,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return list.AsQueryable().WhereIf(isHaveSigned == true, t => t.ReadingInfoSignTime != null).ToList();
 | 
			
		||||
            return list.AsQueryable().WhereIf(isHaveSigned == true, t => t.ReadingInfoSignTime != null)
 | 
			
		||||
                 .WhereIf(isAutoCreate == false, t => t.IsAutoCreate == isAutoCreate).ToList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -412,6 +412,8 @@ namespace IRaCIS.Core.Application.Service.Common
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 阅片期信息表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,16 +32,17 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
        public string TrialSiteCode { get; set; }
 | 
			
		||||
        public SubjectStatus SubjectStatus { get; set; }
 | 
			
		||||
 | 
			
		||||
        public List<EvaluationInfo> EvaluationList { get; set; }
 | 
			
		||||
        public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public List<EvaluationInfo> ReadingEvaluationList { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public class EvaluationInfo
 | 
			
		||||
    {
 | 
			
		||||
        public string QuestioName { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string QuestioNameEn { get; set; }
 | 
			
		||||
 | 
			
		||||
        public Guid? QuestionId { get; set; }
 | 
			
		||||
        public string Answer { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string FinalTranslateDictionaryCode { get; set; } = string.Empty;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,15 +11,22 @@ using System.ComponentModel.DataAnnotations;
 | 
			
		|||
namespace IRaCIS.Core.Application.ViewModel
 | 
			
		||||
{
 | 
			
		||||
    /// <summary> SubjectCriteriaEvaluationVisitFilterView  列表视图模型 </summary>
 | 
			
		||||
    public class SubjectCriteriaEvaluationVisitFilterView: SubjectCriteriaEvaluationVisitFilterAddOrEdit
 | 
			
		||||
    public class SubjectCriteriaEvaluationVisitFilterView
 | 
			
		||||
    {
 | 
			
		||||
        public DateTime? CreateTime { get; set; }
 | 
			
		||||
        public Guid? CreateUserId { get; set; }
 | 
			
		||||
        public Guid? UpdateUserId { get; set; }
 | 
			
		||||
        public DateTime? UpdateTime { get; set; }
 | 
			
		||||
 | 
			
		||||
        public new ImageFilterState? ImageFilterState { get; set; }
 | 
			
		||||
        public new ImageDeterminationResultState? ImageDeterminationResultState { get; set; }
 | 
			
		||||
        public Guid? Id { get; set; }
 | 
			
		||||
        public Guid SubjectId { get; set; }
 | 
			
		||||
        public Guid TrialReadingCriterionId { get; set; }
 | 
			
		||||
        public Guid SubjectVisitId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public  ImageFilterState? ImageFilterState { get; set; }
 | 
			
		||||
        public  ImageDeterminationResultState? ImageDeterminationResultState { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public bool? IsGeneratedTask { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +36,7 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    ///<summary>SubjectCriteriaEvaluationVisitFilterQuery  列表查询参数模型</summary>
 | 
			
		||||
    public class SubjectCriteriaEvaluationVisitFilterQuery : PageInput
 | 
			
		||||
    public class SubjectCriteriaEvaluationVisitFilterQuery 
 | 
			
		||||
    {
 | 
			
		||||
        [NotDefault]
 | 
			
		||||
        public Guid TrialReadingCriterionId { get; set; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.Interfaces
 | 
			
		|||
    {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery);
 | 
			
		||||
        //Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery);
 | 
			
		||||
 | 
			
		||||
        //Task<IResponseOutput> AddOrUpdateSubjectCriteriaEvaluation(SubjectCriteriaEvaluationAddOrEdit addOrEditSubjectCriteriaEvaluation);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ using IRaCIS.Core.Domain.Share;
 | 
			
		|||
using IRaCIS.Core.Application.Contracts;
 | 
			
		||||
using DocumentFormat.OpenXml.Spreadsheet;
 | 
			
		||||
using Panda.DynamicWebApi.Attributes;
 | 
			
		||||
using IRaCIS.Core.Domain.Share.Reading;
 | 
			
		||||
 | 
			
		||||
namespace IRaCIS.Core.Application.Service
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -33,12 +34,14 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
        private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
 | 
			
		||||
 | 
			
		||||
        public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
 | 
			
		||||
            IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
 | 
			
		||||
            IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
 | 
			
		||||
            IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService)
 | 
			
		||||
            IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository)
 | 
			
		||||
        {
 | 
			
		||||
            _subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
 | 
			
		||||
            _subjectRepository = subjectRepository;
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
            _IVisitTaskHelpeService = IVisitTaskHelpeService;
 | 
			
		||||
 | 
			
		||||
            _trialReadingQuestionRepository = trialReadingQuestionRepository;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -58,20 +63,36 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        /// <param name="inQuery"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
 | 
			
		||||
        public async Task<(PageOutput<SubjectCriteriaEvaluationView>,object)> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var trialReadingCritionList = _trialReadingCriterionRepository.Where(t => t.TrialId == inQuery.TrialId).ToList();
 | 
			
		||||
 | 
			
		||||
            var resultTrialReadingCriterionId = Guid.Empty;
 | 
			
		||||
 | 
			
		||||
            var  resultTrialReadingCriterion = trialReadingCritionList.First();
 | 
			
		||||
 | 
			
		||||
            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;
 | 
			
		||||
 | 
			
		||||
                resultTrialReadingCriterion = trialReadingCritionList.First(t => t.CriterionType == CriterionType.RECIST1Point1);
 | 
			
		||||
                resultTrialReadingCriterionId = resultTrialReadingCriterion.Id;
 | 
			
		||||
 | 
			
		||||
                curentCriterionType = CriterionType.RECIST1Pointt1_MB;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var addtionalQustionInfoList = _trialReadingQuestionRepository.Where(t => t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId && t.IsAdditional == true && t.Type != "group").IgnoreQueryFilters().Select(t => new
 | 
			
		||||
            {
 | 
			
		||||
                QuestionId= t.Id,
 | 
			
		||||
                t.QuestionEnName,
 | 
			
		||||
                t.QuestionName
 | 
			
		||||
            }).ToList();
 | 
			
		||||
 | 
			
		||||
            var questionIdList= addtionalQustionInfoList.Select(t=>t.QuestionId).ToList();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t=>t.TrialId==inQuery.TrialId)
 | 
			
		||||
| 
						 | 
				
			
			@ -96,17 +117,110 @@ 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 &&
 | 
			
		||||
                                                        questionIdList.Contains(t.ReadingQuestionTrialId)
 | 
			
		||||
                                                         && t.VisitTask.TaskState==TaskState.Effect)
 | 
			
		||||
                                                         .Select(u=>new EvaluationInfo()
 | 
			
		||||
                                                         {
 | 
			
		||||
                                                             QuestionId=u.ReadingQuestionTrialId,
 | 
			
		||||
                                                             Answer=u.Answer,
 | 
			
		||||
                                                                                                                                                             
 | 
			
		||||
                                                             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);
 | 
			
		||||
 | 
			
		||||
            return pageList;
 | 
			
		||||
 | 
			
		||||
            foreach (var item in pageList.CurrentPageData)
 | 
			
		||||
            {
 | 
			
		||||
                switch (curentCriterionType)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                    case CriterionType.RECIST1Pointt1_MB:
 | 
			
		||||
 | 
			
		||||
                        if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Double)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (item.ReadingEvaluationList.Count==2)
 | 
			
		||||
                            {
 | 
			
		||||
                                if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
 | 
			
		||||
                                {
 | 
			
		||||
                                    item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId=item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
 | 
			
		||||
                                        });
 | 
			
		||||
                                }
 | 
			
		||||
                                else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
 | 
			
		||||
                                {
 | 
			
		||||
                                    item.FinalEvaluationList.Add(new EvaluationInfo() {
 | 
			
		||||
                                        QuestionId = item.ReadingEvaluationList.First().QuestionId,
 | 
			
		||||
                                        Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
 | 
			
		||||
                                       });
 | 
			
		||||
                                }
 | 
			
		||||
                                else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer)
 | 
			
		||||
                                {
 | 
			
		||||
                                    item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Maybe).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)});
 | 
			
		||||
                                }
 | 
			
		||||
                                else
 | 
			
		||||
                                {
 | 
			
		||||
 | 
			
		||||
                                }
 | 
			
		||||
                               
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId= addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        else if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Single)
 | 
			
		||||
                        {
 | 
			
		||||
 | 
			
		||||
                            if (item.ReadingEvaluationList.Count == 1)
 | 
			
		||||
                            {
 | 
			
		||||
                                if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
 | 
			
		||||
                                {
 | 
			
		||||
                                    item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
 | 
			
		||||
                                }
 | 
			
		||||
                                else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
 | 
			
		||||
                                {
 | 
			
		||||
                                    item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
 | 
			
		||||
                                }
 | 
			
		||||
                                else
 | 
			
		||||
                                {
 | 
			
		||||
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
 | 
			
		||||
                            }
 | 
			
		||||
                         
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        break;
 | 
			
		||||
                    default:
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return (pageList, addtionalQustionInfoList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +238,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
            {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (addOrEditSubjectCriteriaEvaluation.Id != null)
 | 
			
		||||
                if (addOrEditSubjectCriteriaEvaluation.Id == null)
 | 
			
		||||
                {
 | 
			
		||||
                    var entity = await _subjectCriteriaEvaluationRepository.InsertFromDTOAsync(addOrEditSubjectCriteriaEvaluation);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -310,6 +424,12 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                                                                    ImageDeterminationResultState = subjectCriteriaEvaluationVisitFilter.ImageDeterminationResultState,
 | 
			
		||||
                                                                    ImageFilterState = subjectCriteriaEvaluationVisitFilter.ImageFilterState,
 | 
			
		||||
                                                                    IsGeneratedTask = subjectCriteriaEvaluationVisitFilter.IsGeneratedTask,
 | 
			
		||||
                                                                    Id = subjectCriteriaEvaluationVisitFilter.Id,
 | 
			
		||||
 | 
			
		||||
                                                                    CreateTime = subjectCriteriaEvaluationVisitFilter.CreateTime,
 | 
			
		||||
                                                                    CreateUserId=subjectCriteriaEvaluationVisitFilter.CreateUserId,
 | 
			
		||||
                                                                    UpdateTime= subjectCriteriaEvaluationVisitFilter.UpdateTime,
 | 
			
		||||
                                                                    UpdateUserId= subjectCriteriaEvaluationVisitFilter.UpdateUserId,
 | 
			
		||||
 | 
			
		||||
                                                                };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -237,7 +237,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                 .ForMember(x => x.CreateUserName, y => y.MapFrom(n => n.CreateUser.UserName));
 | 
			
		||||
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            #region 阅片部位
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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<SubjectCriteriaEvaluationAddOrEdit, SubjectCriteriaEvaluation>().ReverseMap();
 | 
			
		||||
            CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap();
 | 
			
		||||
            CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -343,6 +343,12 @@ namespace IRaCIS.Application.Contracts
 | 
			
		|||
 | 
			
		||||
        public bool IsGlobalReading { get; set; } = true;
 | 
			
		||||
 | 
			
		||||
        //是否附加评估
 | 
			
		||||
        public bool IsAdditionalAssessment { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //自动  手动生成任务
 | 
			
		||||
        public bool IsAutoCreate { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool IsArbitrationReading { get; set; } = true;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,21 +10,34 @@ using System.Linq.Expressions;
 | 
			
		|||
namespace IRaCIS.Core.Application.Triggers
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    ///   因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
 | 
			
		||||
    ///  维护 IsFrontTaskNeedSignButNotSign 字段   另外附加评估结果
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger : IAfterSaveTrigger<VisitTask>
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<VisitTask> _visitTaskRepository;
 | 
			
		||||
        private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<SubjectAdditionalEvaluationResult> _subjectAdditionalEvaluationResultRepository;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
 | 
			
		||||
 | 
			
		||||
            IRepository<VisitTask> visitTaskRepository)
 | 
			
		||||
            IRepository<VisitTask> visitTaskRepository, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository
 | 
			
		||||
            , IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository, IRepository<SubjectAdditionalEvaluationResult> 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
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,4 +36,31 @@ namespace IRaCIS.Core.Domain.Share.Reading
 | 
			
		|||
        TNM = 2
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 阅片脑转移推断结果
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public enum BrainMetastasisResult
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 否
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        No = 0,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 是
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Yes = 1,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 可能
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Maybe = 3,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 未知
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Unknown = 4
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,16 +63,20 @@ namespace IRaCIS.Core.Domain.Models
 | 
			
		|||
		public DateTime UpdateTime { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		[JsonIgnore]
 | 
			
		||||
		public List<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilterList { get; set; }
 | 
			
		||||
	
 | 
			
		||||
		///// <summary>
 | 
			
		||||
  //      /// 是否影像筛选
 | 
			
		||||
  //      /// </summary>
 | 
			
		||||
		//[Required]
 | 
			
		||||
		//public bool IsImageFiltering { get; set; }
 | 
			
		||||
	 
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        ///// <summary>
 | 
			
		||||
        //      /// 是否影像筛选
 | 
			
		||||
        //      /// </summary>
 | 
			
		||||
        //[Required]
 | 
			
		||||
        //public bool IsImageFiltering { get; set; }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}	 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,22 +58,28 @@ namespace IRaCIS.Core.Domain.Models
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 影像确认结果
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public enum ImageDeterminationResultState
 | 
			
		||||
    {
 | 
			
		||||
        //待定
 | 
			
		||||
        None = 0,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //通过
 | 
			
		||||
        Passed = 1,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 影像筛选状态
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public enum ImageFilterState
 | 
			
		||||
    {
 | 
			
		||||
        //默认值 待筛选
 | 
			
		||||
        None = 0,
 | 
			
		||||
 | 
			
		||||
        //已完成
 | 
			
		||||
        //筛选已完成
 | 
			
		||||
        Finished = 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,49 +18,25 @@ namespace IRaCIS.Core.Domain.Models
 | 
			
		|||
	 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; }
 | 
			
		||||
 | 
			
		||||
	 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,9 @@ namespace IRaCIS.Core.Domain.Models
 | 
			
		|||
		public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,11 @@ namespace IRaCIS.Core.Domain.Models
 | 
			
		|||
 | 
			
		||||
        [JsonIgnore]
 | 
			
		||||
 | 
			
		||||
        public List <SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
 | 
			
		||||
        public List<SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [JsonIgnore]
 | 
			
		||||
        public List<ReadingTaskQuestionAnswer> ReadingTaskQuestionAnswerList { get; set; }
 | 
			
		||||
 | 
			
		||||
        [JsonIgnore]
 | 
			
		||||
        [ForeignKey("FinalSubjectVisitId")]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue