From b9e0c3369ddce62893269a92dbd873e06cc84f87 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Sun, 9 Oct 2022 17:03:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/ReadingMedicineQuestionViewModel.cs | 3 ++ .../Reading/Dto/ReadingQuestionViewModel.cs | 5 ++- .../Service/Reading/ReadModuleService.cs | 29 +++++++++++---- .../Reading/ReadingImageTaskService.cs | 27 +++++++------- .../Reading/ReadingMedicalReviewService.cs | 13 +++++-- .../Reading/ReadingMedicineQuestionService.cs | 36 ++++++++++++++----- .../Reading/ReadingPeriodSetService.cs | 13 +++++-- .../Service/Reading/ReadingQuestionService.cs | 8 ++--- .../TrialSiteUser/TrialConfigService.cs | 16 ++++----- .../Triggers/SubjectVisitFinalVisitTrigger.cs | 24 ++++++++----- .../Reading/ReadingMedicineTrialQuestion.cs | 7 +++- 11 files changed, 127 insertions(+), 54 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs index 33830ba87..56867ac30 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs @@ -117,6 +117,9 @@ namespace IRaCIS.Core.Application.ViewModel { [NotDefault] public Guid TrialId { get; set; } + + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } } public class TrialQuestion diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index 9238f71bb..d7245cedc 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -255,7 +255,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class SetTrialJudgyInfoInDto : GetTrialJudgyInfoOutDto { - + public Guid TrialReadingCriterionId { get; set; } } public class GetTrialJudgyInfoOutDto @@ -323,6 +323,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { [NotDefault] public Guid TrialId { get; set; } + + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs index 6ee76557f..4f5c05360 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs @@ -26,6 +26,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _visitTaskRepository; private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _readModuleViewRepository; + private readonly IRepository _readingQuestionCriterionTrialRepository; private readonly IRepository _dicomInstanceRepository; private readonly IRepository _noneDicomStudyFileRepository; private readonly IRepository _readingPeriodSetRepository; @@ -41,6 +42,7 @@ namespace IRaCIS.Application.Services IRepository visitTaskRepository, IRepository clinicalDataTrialSetRepository, IRepository readModuleViewRepository, + IRepository readingQuestionCriterionTrialRepository, IRepository dicomInstanceRepository, IRepository noneDicomStudyFileRepository, IRepository readingPeriodSetRepository, @@ -56,6 +58,7 @@ namespace IRaCIS.Application.Services this._visitTaskRepository = visitTaskRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; this._readModuleViewRepository = readModuleViewRepository; + this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._dicomInstanceRepository = dicomInstanceRepository; this._noneDicomStudyFileRepository = noneDicomStudyFileRepository; this._readingPeriodSetRepository = readingPeriodSetRepository; @@ -107,17 +110,24 @@ namespace IRaCIS.Application.Services { maxcount = maxcount < x.Data.Count ? x.Data.Count : maxcount; }); - var trialinfo = await _trialRepository.Where(x => x.Id == dto.TrialId).FirstNotNullAsync(); + + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == dto.TrialReadingCriterionId).Select(x => new + { + x.IsReadingTaskViewInOrder, + x.IsOncologyReading, + x.IsGlobalReading, + }).FirstNotNullAsync(); + return (pageOutput, new { MaxLength = maxcount, - IsReadingTaskViewInOrder=trialinfo.IsReadingTaskViewInOrder, - IsClinicalReading = trialinfo.IsClinicalReading, + IsReadingTaskViewInOrder= criterionInfo.IsReadingTaskViewInOrder, + IsClinicalReading = criterionInfo.IsOncologyReading, OnlyExistsMedicalHistory = !(await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId && x.ClinicalDataSetName != "既往局部治疗史" && x.IsConfirm)), IsExistsSubjectClinicalData= await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId&&x.ClinicalDataLevel== ClinicalLevel.Subject && x.IsConfirm), IsExistsVisitClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit && x.IsConfirm), IsExistsReadingClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId && x.ClinicalDataLevel == ClinicalLevel.ImageRead && x.IsConfirm), - IsGlobalReading= trialinfo.IsGlobalReading, + IsGlobalReading= criterionInfo.IsGlobalReading, }) ; @@ -295,7 +305,14 @@ namespace IRaCIS.Application.Services case ModuleTypeEnum.Oncology: - var trialInfo = await _trialRepository.Where(x => x.Id == visit.TrialId).FirstNotNullAsync(); + + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == dto.TrialReadingCriterionId).Select(x => new + { + x.ReadingType, + + }).FirstNotNullAsync(); + + //增加标准 var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId&& x.ModuleType == ModuleTypeEnum.Global && x.TrialReadingCriterionId == dto.TrialReadingCriterionId).FirstOrDefaultAsync(); @@ -303,7 +320,7 @@ namespace IRaCIS.Application.Services { var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned&&!x.IsAnalysisCreate).ToListAsync(); - if (globalTaskInfoList.Count() > 0 && globalTaskInfoList.Count == (int)trialInfo.ReadingType) + if (globalTaskInfoList.Count() > 0 && globalTaskInfoList.Count == (int)criterionInfo.ReadingType) { var isAdd = false; if (globalTaskInfoList[0].JudgeVisitTaskId == null) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 47d6c7167..607fd471d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -1778,15 +1778,16 @@ namespace IRaCIS.Application.Services var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstOrDefaultAsync(); var subjectCode = await _subjectRepository.Where(x => x.Id == visitTask.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(); - - var trialInfo = await _trialRepository.Where(x => x.Id == visitTask.TrialId).Select(x => new + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == visitTask.TrialReadingCriterionId).Select(x => new { x.IsReadingShowPreviousResults, - x.IsReadingShowSubjectInfo, + x.IsReadingShowSubjectInfo + }).FirstOrDefaultAsync(); + var trialInfo = await _trialRepository.Where(x => x.Id == visitTask.TrialId).Select(x => new + { x.ClinicalInformationTransmissionEnum, }).FirstOrDefaultAsync(); - return new GetReadingSubjectInfoOutDto() { VisitTaskId = visitTask.Id, @@ -1794,8 +1795,8 @@ namespace IRaCIS.Application.Services SubjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? subjectCode : visitTask.BlindSubjectCode, ReadingCategory = visitTask.ReadingCategory, TaskBlindName = visitTask.TaskBlindName, - IsReadingShowPreviousResults = trialInfo.IsReadingShowPreviousResults, - IsReadingShowSubjectInfo = trialInfo.IsReadingShowSubjectInfo, + IsReadingShowPreviousResults = criterionInfo.IsReadingShowPreviousResults, + IsReadingShowSubjectInfo = criterionInfo.IsReadingShowSubjectInfo, }; } @@ -2558,7 +2559,7 @@ namespace IRaCIS.Application.Services && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.JudgeVisitTaskId).FirstOrDefaultAsync(); // 获取系统配置 - var readingType = await _trialRepository.Where(x => x.Id == readModuleInfo.TrialId).Select(x => x.ReadingType).FirstOrDefaultAsync(); + var readingType = await _readingQuestionCriterionTrialRepository.Where(x=>x.Id== readModuleInfo.TrialReadingCriterionId).Select(x=>x.ReadingType).FirstOrDefaultAsync(); // 判断阅片是否完成 if (judgeVisitTaskId == null && (await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global @@ -2643,15 +2644,17 @@ namespace IRaCIS.Application.Services && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync(); } - var trialInfo = await _trialRepository.Where(x => x.Id == visitTask.TrialId).Select(x=> new { - x.IsArbitrationReading, - x.ArbitrationRule + + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == visitTask.TrialReadingCriterionId).Select(x => new + { + x.IsArbitrationReading, + x.ArbitrationRule }).FirstNotNullAsync(); var noteEqual = false; // 判断项目是否设置了裁判 - if (trialInfo.IsArbitrationReading ?? false) + if (criterionInfo.IsArbitrationReading) { // 判断数量是否为2 是否仲裁 if (visitTaskids.Count == 2) @@ -2813,7 +2816,7 @@ namespace IRaCIS.Application.Services else { - if ((visitTask.SourceSubjectVisitId != null && trialInfo.ArbitrationRule == ArbitrationRule.Visit) || (visitTask.SouceReadModuleId != null && trialInfo.ArbitrationRule == ArbitrationRule.Reading)) + if ((visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Visit) || (visitTask.SouceReadModuleId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading)) { await this.SaveJudgeTask(new SaveJudgeTaskDto() { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs index 7ca34756c..431d07047 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs @@ -27,6 +27,7 @@ namespace IRaCIS.Core.Application.Service private readonly IVisitTaskService _visitTaskService; private readonly IRepository _taskMedicalReviewRepository; private readonly IRepository _readingMedicalReviewDialogRepository; + private readonly IRepository _readingQuestionCriterionTrial; private readonly IRepository _readingMedicineQuestionAnswerRepository; private readonly IRepository _readingMedicineSystemQuestionRepository; @@ -38,6 +39,7 @@ namespace IRaCIS.Core.Application.Service IVisitTaskService visitTaskService, IRepository taskMedicalReviewRepository, IRepository readingMedicalReviewDialogRepository, + IRepository readingQuestionCriterionTrial, IRepository readingMedicineQuestionAnswerRepository, IRepository readingMedicineSystemQuestionRepository ) @@ -49,6 +51,7 @@ namespace IRaCIS.Core.Application.Service this._visitTaskService = visitTaskService; this._taskMedicalReviewRepository = taskMedicalReviewRepository; this._readingMedicalReviewDialogRepository = readingMedicalReviewDialogRepository; + this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; this._readingMedicineQuestionAnswerRepository = readingMedicineQuestionAnswerRepository; this._readingMedicineSystemQuestionRepository = readingMedicineSystemQuestionRepository; } @@ -61,15 +64,19 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task GetMedicalReviewReadingTask(GetMedicalReviewReadingTaskInDto inDto) { - var medicalReviewInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetMedicalReviewReadingTaskOutDto() + MedicalReviewInfo reviewInfo= await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId) + .ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + + var visitTaskfInfo = await _visitTaskRepository.Where(x => x.Id == reviewInfo.VisitTaskId).FirstNotNullAsync(); + + var medicalReviewInfo = await _readingQuestionCriterionTrial.Where(x => x.Id == visitTaskfInfo.TrialReadingCriterionId).Select(x => new GetMedicalReviewReadingTaskOutDto() { ReadingType=x.ReadingType, IsReadingTaskViewInOrder=x.IsReadingTaskViewInOrder, }).FirstNotNullAsync(); - medicalReviewInfo.MedicalReviewInfo = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId) - .ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + medicalReviewInfo.MedicalReviewInfo = reviewInfo; var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReviewInfo.MedicalReviewInfo.VisitTaskId).FirstNotNullAsync(); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs index 1306578de..c857c23c3 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs @@ -19,16 +19,19 @@ namespace IRaCIS.Core.Application.Service { private readonly IRepository _readingMedicineTrialQuestionRepository; + private readonly IRepository _readingQuestionCriterionTrialRepository; private readonly IRepository _trialRepository; private readonly IRepository _readingMedicineSystemQuestionRepository; public ReadingMedicineQuestionService( IRepository readingMedicineTrialQuestionRepository, + IRepository readingQuestionCriterionTrial, IRepository trialRepository, IRepository readingMedicineSystemQuestionRepository ) { this._readingMedicineTrialQuestionRepository = readingMedicineTrialQuestionRepository; + this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrial; this._trialRepository = trialRepository; this._readingMedicineSystemQuestionRepository = readingMedicineSystemQuestionRepository; } @@ -312,7 +315,7 @@ namespace IRaCIS.Core.Application.Service /// public async Task VerifyReadingMedicineQuestion(ConfirmReadingMedicineQuestionInDto inDto) { - var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId) + var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) .Select(x => new TrialQuestion() { Id = x.Id, @@ -336,20 +339,28 @@ namespace IRaCIS.Core.Application.Service throw new BusinessValidationFailedException("父问题的显示序号要比子问题的显示序号小,请确认。"); } + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => new + { + x.IsGlobalReading, + x.IsOncologyReading, + x.IsArbitrationReading, + }).FirstNotNullAsync(); - var trialInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).FirstNotNullAsync(); + - if (trialInfo.IsGlobalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Global)) + + + if (criterionInfo.IsGlobalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Global)) { throw new BusinessValidationFailedException("当前项目启用了全局阅片,但未配置全局医学审核问题"); } - if ((trialInfo.IsArbitrationReading ?? false) && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Judge)) + if (criterionInfo.IsArbitrationReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Judge)) { throw new BusinessValidationFailedException("当前项目启用了仲裁阅片,但未配置仲裁医学审核问题"); } - if (trialInfo.IsClinicalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Oncology)) + if (criterionInfo.IsOncologyReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Oncology)) { throw new BusinessValidationFailedException("当前项目启用了肿瘤学阅片,但未配置肿瘤学医学审核问题"); } @@ -364,7 +375,14 @@ namespace IRaCIS.Core.Application.Service /// public async Task ConfirmReadingMedicineQuestion(ConfirmReadingMedicineQuestionInDto inDto) { - var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId) + + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => new + { + x.IsGlobalReading, + x.IsOncologyReading, + x.IsArbitrationReading, + }).FirstNotNullAsync(); + var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) .Select(x => new TrialQuestion() { Id = x.Id, @@ -391,17 +409,17 @@ namespace IRaCIS.Core.Application.Service var trialInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).FirstNotNullAsync(); - if (trialInfo.IsGlobalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Global)) + if (criterionInfo.IsGlobalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Global)) { throw new BusinessValidationFailedException("当前项目启用了全局阅片,但未配置全局医学审核问题"); } - if ((trialInfo.IsArbitrationReading ?? false) && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Judge)) + if (criterionInfo.IsArbitrationReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Judge)) { throw new BusinessValidationFailedException("当前项目启用了仲裁阅片,但未配置仲裁医学审核问题"); } - if (trialInfo.IsClinicalReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Oncology)) + if (criterionInfo.IsOncologyReading && !readingMedicineQuestionList.Any(x => x.ReadingCategory == ReadingCategory.Oncology)) { throw new BusinessValidationFailedException("当前项目启用了肿瘤学阅片,但未配置肿瘤学医学审核问题"); } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index 7aef1463b..4f8b86aea 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -30,6 +30,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _visitStageRepository; private readonly IRepository _trialRepository; private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingQuestionCriterionTrialRepository; private readonly IVisitTaskHelpeService _visitTaskHelpeService; private readonly IRepository _readingPeriodPlanRepository; private readonly IRepository _siteSetRepository; @@ -42,6 +43,7 @@ namespace IRaCIS.Application.Services IRepository visitStageRepository, IRepository trialRepository, IRepository visitTaskRepository, + IRepository readingQuestionCriterionTrialRepository, IVisitTaskHelpeService visitTaskHelpeService, IRepository readingPeriodPlanRepository, IRepository SiteSetRepository, @@ -54,6 +56,7 @@ namespace IRaCIS.Application.Services this._visitStageRepository = visitStageRepository; this._trialRepository = trialRepository; this._visitTaskRepository = visitTaskRepository; + this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._visitTaskHelpeService = visitTaskHelpeService; this._readingPeriodPlanRepository = readingPeriodPlanRepository; _siteSetRepository = SiteSetRepository; @@ -391,7 +394,13 @@ namespace IRaCIS.Application.Services case ReadingSetType.TumorReading: - var trialInfo = await _trialRepository.Where(x => x.Id == readingPeriodSet.TrialId).FirstNotNullAsync(); + + + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == readingPeriodSet.TrialReadingCriterionId).Select(x => new + { + x.ReadingType, + + }).FirstNotNullAsync(); //增加标准 var globalModuleIds = await _readModuleRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync(); @@ -410,7 +419,7 @@ namespace IRaCIS.Application.Services foreach (var item in globalTaskInfo) { - if (item.Count == (int)trialInfo.ReadingType) + if (item.Count == (int)criterionInfo.ReadingType) { //没有裁判 或者有裁判,并且裁判任务做完了 if (item.JudgeTaskId == null || item.JudgeTaskResultId != null) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs index 6f5b7d4e4..51e3981bf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs @@ -418,7 +418,7 @@ namespace IRaCIS.Application.Services public async Task SetTrialJudgyInfo(SetTrialJudgyInfoInDto inDto) { - var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm).FirstOrDefaultAsync(); + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.Id== inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); var judgeCount = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id && x.IsJudgeQuestion) .WhereIf(trialCriterion.FormType == FormType.SinglePage, x => x.ReadingCriterionPageId == null) @@ -428,7 +428,7 @@ namespace IRaCIS.Application.Services { throw new BusinessValidationFailedException("无裁判问题却有仲裁对象,操作失败"); } - await _trialRepository.UpdatePartialFromQueryAsync(inDto.TrialId, x => new Trial() + await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { ArbitrationRule = inDto.ArbitrationRule, //IsArbitrationReading = inDto.IsArbitrationReading, @@ -636,9 +636,9 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task GetTrialJudgyInfo(GetTrialJudgyInfoInDto inDto) { - GetTrialJudgyInfoOutDto result = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetTrialJudgyInfoOutDto + GetTrialJudgyInfoOutDto result = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => new GetTrialJudgyInfoOutDto { - TrialId = x.Id, + TrialId = x.TrialId, IsReadingTaskViewInOrder = x.IsReadingTaskViewInOrder, ArbitrationRule = x.ArbitrationRule, IsArbitrationReading = x.IsArbitrationReading diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 6f9f81c83..296bf5ab6 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -553,15 +553,15 @@ namespace IRaCIS.Core.Application _mapper.Map(trialConfig, trialInfo); - if (trialInfo.IsGlobalReading && (trialInfo.IsArbitrationReading ?? false)) - { - trialInfo.ArbitrationRule = ArbitrationRule.Reading; - } + //if (trialInfo.IsGlobalReading && (trialInfo.IsArbitrationReading ?? false)) + //{ + // trialInfo.ArbitrationRule = ArbitrationRule.Reading; + //} - if (!trialInfo.IsGlobalReading && (trialInfo.IsArbitrationReading ?? false)) - { - trialInfo.ArbitrationRule = ArbitrationRule.Visit; - } + //if (!trialInfo.IsGlobalReading && (trialInfo.IsArbitrationReading ?? false)) + //{ + // trialInfo.ArbitrationRule = ArbitrationRule.Visit; + //} trialInfo.UpdateTime = DateTime.Now; // 修改临床数据 diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs index 56e2c1d09..41ee5f33f 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs @@ -100,15 +100,18 @@ namespace IRaCIS.Core.Application.Triggers var trialId = subjectVisit.TrialId; var subjectVisitId= subjectVisit.Id; // 是否全局阅片 + + + var trial = await _repository.Where(x => x.Id == trialId).FirstNotNullAsync(); + var criterionList = await _repository.Where(x => x.TrialId == trialId && x.IsConfirm && x.IsGlobalReading && x.IsReadingTaskViewInOrder).ToListAsync(); - if (trial.IsGlobalReading&&trial.IsReadingTaskViewInOrder) + foreach (var item in criterionList) { + ReadingPeriodSet? readingPeriodSet = await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == trialId && x.IsGlobal&&x.TrialReadingCriterionId==item.Id); - ReadingPeriodSet? readingPeriodSet =await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == trialId && x.IsGlobal); - - if (readingPeriodSet==null) + if (readingPeriodSet == null) { readingPeriodSet = new ReadingPeriodSet() { @@ -120,6 +123,7 @@ namespace IRaCIS.Core.Application.Triggers TrialId = trialId, EffectOfTime = DateTime.Now, IsGlobal = true, + TrialReadingCriterionId=item.Id, }; await _readingPeriodSetRepository.AddAsync(readingPeriodSet); @@ -133,8 +137,8 @@ namespace IRaCIS.Core.Application.Triggers }); - await _readModuleRepository.DeleteFromQueryAsync(x => x.ReadingSetType == ReadingSetType.ImageReading && x.SubjectVisitId == subjectVisitId, true); - + await _readModuleRepository.DeleteFromQueryAsync(x => x.ReadingSetType == ReadingSetType.ImageReading&&x.TrialReadingCriterionId==item.Id && x.SubjectVisitId == subjectVisitId, true); + await _readModuleRepository.AddAsync(new ReadModule() { ReadingPeriodSetId = readingPeriodSet.Id, @@ -147,11 +151,15 @@ namespace IRaCIS.Core.Application.Triggers ModuleType = ModuleTypeEnum.Global, TrialId = subjectVisit.TrialId, VisitNum = subjectVisit.VisitNum, + TrialReadingCriterionId=item.Id, }); - - await _readModuleRepository.SaveChangesAsync(); + + } + await _readModuleRepository.SaveChangesAsync(); + + } } diff --git a/IRaCIS.Core.Domain/Reading/ReadingMedicineTrialQuestion.cs b/IRaCIS.Core.Domain/Reading/ReadingMedicineTrialQuestion.cs index f019bdea6..276808a6d 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingMedicineTrialQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingMedicineTrialQuestion.cs @@ -91,7 +91,12 @@ namespace IRaCIS.Core.Domain.Models /// public ReadingCategory ReadingCategory { get; set; } - [JsonIgnore] + /// + /// 项目标准 + /// + public Guid TrialReadingCriterionId { get; set; } + + [JsonIgnore] [ForeignKey("ParentId")] public ReadingMedicineTrialQuestion ParentQuestion { get; set; }