diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index 732caaef4..6a12c5c6f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -64,6 +64,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto [NotDefault] public Guid TrialReadingCriterionId { get; set; } + /// + /// 阅片配置的类型 + /// + public ReadingSetType ReadingSetType { get; set; } + public Guid Id { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index 9cb77bc89..787c80a9e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -384,13 +384,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ReadingUser { get; set; } - + public Guid SubjectId { get; set; } public bool IsReadingTaskViewInOrder { get; set; } public Guid VisitTaskId { get; set; } public Arm ArmEnum { get; set; } + public bool IsExistsClinicalData { get; set; } + + public MedicalReviewAuditState AuditState { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index 9917ab527..b173ddc47 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -33,6 +33,7 @@ namespace IRaCIS.Core.Application.Service private readonly IReadingImageTaskService _iReadingImageTaskService; private readonly IRepository _userTaskRepository; private readonly IVisitTaskService _visitTaskService; + private readonly IReadingClinicalDataService _readingClinicalDataService; private readonly IRepository _taskMedicalReviewRepository; private readonly IRepository _readingMedicalReviewDialogRepository; private readonly IRepository _readingQuestionCriterionTrial; @@ -52,6 +53,7 @@ namespace IRaCIS.Core.Application.Service IRepository readingCriterionDictionaryRepository, IRepository userTaskRepository, IVisitTaskService visitTaskService, + IReadingClinicalDataService readingClinicalDataService, IRepository taskMedicalReviewRepository, IRepository readingMedicalReviewDialogRepository, IRepository readingQuestionCriterionTrial, @@ -71,6 +73,7 @@ namespace IRaCIS.Core.Application.Service this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._userTaskRepository = userTaskRepository; this._visitTaskService = visitTaskService; + this._readingClinicalDataService = readingClinicalDataService; this._taskMedicalReviewRepository = taskMedicalReviewRepository; this._readingMedicalReviewDialogRepository = readingMedicalReviewDialogRepository; this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; @@ -109,11 +112,22 @@ namespace IRaCIS.Core.Application.Service medicalReviewInfo.VisitTaskId = taskInfo.Id; + + var clinicalDataList = await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() + { + + SubjectId = taskInfo.SubjectId, + TrialId = taskInfo.TrialId, + VisitTaskId = taskInfo.Id, + }); + + medicalReviewInfo.IsExistsClinicalData = clinicalDataList.Count > 0; + medicalReviewInfo.ArmEnum = taskInfo.ArmEnum; medicalReviewInfo.SubjectCode = taskInfo.IsAnalysisCreate?taskInfo.BlindSubjectCode: taskInfo.Subject.Code; medicalReviewInfo.TaskBlindName = taskInfo.TaskBlindName; medicalReviewInfo.ReadingUser = taskInfo.DoctorUser.FirstName + taskInfo.DoctorUser.LastName; - + medicalReviewInfo.SubjectId = taskInfo.SubjectId; medicalReviewInfo.IsClosedDialog = medicalReviewInfo.MedicalReviewInfo.IsClosedDialog; medicalReviewInfo.AuditState = medicalReviewInfo.MedicalReviewInfo.AuditState; medicalReviewInfo.IsSendMessage = medicalReviewInfo.MedicalReviewInfo.IsSendMessage; diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs index fc8869b44..6174c5b50 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs @@ -98,7 +98,8 @@ namespace IRaCIS.Application.Services var resultlist = await visitQuery.WhereIf(finalVisitNum != null && finalVisitNum != 0, x => x.VisitNum <= finalVisitNum) .Where(x => x.VisitNum > mixReadVisitNum) .Where(x => !x.IsBaseLine) // 排除基线 - .Where(x => readModulequery.Where(y => y.Id != inDto.Id && y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() == 0) + .WhereIf(inDto.ReadingSetType == ReadingSetType.TumorReading, x => readModulequery.Where(y => y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() > 0) + .WhereIf(inDto.ReadingSetType == ReadingSetType.ImageReading, x => readModulequery.Where(y => y.Id != inDto.Id && y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() == 0) .Select(x => new GetSubjectReadVisitsOutDto() { SubjectVisitId = x.Id, diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index ee59f65bf..31af7b5a4 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -2210,7 +2210,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }).OrderByDescending(x=>x.Answer).FirstOrDefault(); - if (maxSuv == null) + if (maxSuv == null|| maxSuv .Answer == 0m) { return string.Empty; } @@ -2258,7 +2258,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate VisitTaskId=inDto.VisitTaskId, }); - return studyList.Any(x => x.Modalities.Contains("PET")) ? ReadingYesOrNo.Yes.GetEnumInt() : ReadingYesOrNo.No.GetEnumInt(); + return studyList.Any(x => x.Modalities.Contains("PT")) ? ReadingYesOrNo.Yes.GetEnumInt() : ReadingYesOrNo.No.GetEnumInt(); } #region 影像学整体肿瘤评估 diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs index 68837dbd2..de36657b6 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs @@ -91,7 +91,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 评估原因 /// - public string EvaluationReason { get; set; } = "肿瘤学阅片评估原因请依据临床数据填写,在与影像学结果不一致时必填。"; + public string EvaluationReason { get; set; } = StaticData.International("CriterionTrial_EvaluationReason"); ///