diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 2488f0e40..a0eebe9de 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -7177,6 +7177,86 @@ 检查日期 + + + 基线未选择任何靶病灶 + + + + + 上一访视评估为iCPD + + + + + 满足RECISTPD + + + + + 新靶病灶评估Dto + + + + + 存在新靶病灶 + + + + + 所有状态为消失 + + + + + 上一访视新靶病灶评估为“iUPD” + + + + + SOD增加5mm以上 + + + + + 有"存在"状态的新靶病灶 + + + + + 至少有一个新靶病无法评估 + + + + + 存在新非靶病灶 + + + + + 所有状态为消失 + + + + + 上一访视新靶病灶评估为“iUPD” + + + + + 任一新非靶病灶状态为“增大” + + + + + 有"存在"状态的病灶 + + + + + 至少有一个病灶无法评估 + + SubjectCriteriaEvaluationView 列表视图模型 diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json index 676cd6d63..4cb655ec8 100644 --- a/IRaCIS.Core.Application/Resources/en-US.json +++ b/IRaCIS.Core.Application/Resources/en-US.json @@ -14,20 +14,21 @@ "ReadingImage_NotaTask": "The coalesced lesions are not from the same timepoint. ", "ReadingImage_DeleteError": "Other lesions have split from or coalesced into the current lesion. Deletion failed.", "ReadingImage_Idnotcorrespond": "Failed to add the lesion mark. The Instance ID and Series ID of the image do not match.", - "ReadingImage_IsLymphNotbigger": "The short diameter of this nodal non-target lesion on the current visit is smaller than the value on the previous visit, and the state cannot be set to \"Unequivocal progression\".", - "ReadingImage_NotLymphNotbigger": "The long diameter of this non-nodal non-target lesion on the current visit is smaller than the value on the previous visit, and the state cannot be set to \"Unequivocal progression\".", + "ReadingImage_IsLymphNotbigger": "The short diameter of this nodal non-target lesion on the current visit is smaller than the value on the previous visit, and the state cannot be set to 'Unequivocal progression'.", + "ReadingImage_NotLymphNotbigger": "The long diameter of this non-nodal non-target lesion on the current visit is smaller than the value on the previous visit, and the state cannot be set to 'Unequivocal progression'.", "ReadingImage_Twice": "System call error. Questions & answers submitted are duplicated.", "ReadingImage_MaxQuestion": "According to the imaging charter, the number of the current type of lesion cannot exceed {0}.", "ReadingImage_Maxlesion": "According to the imaging charter, the number of target lesions in the same organ cannot exceed {0}. Please confirm.", - "ReadingImage_Maximum": "\"{0}\" can only be repeated {1} times, and it has been repeated {2} times so far.", + "ReadingImage_Maximum": "{0} can only be repeated {1} times, and it has been repeated {2} times so far.", "ReadingImage_PCWGMaximum": "According to the imaging charter, the number of baseline lesions at the same location should enter only {0} time. Please confirm.", - "ReadingImage_RequiredQuestion": "Before submission, please fill in \"{0}\".", + "ReadingImage_NotNewFocus": "There should be no new lesions in the converted task", + "ReadingImage_RequiredQuestion": "Before submission, please fill in {0}.", "ReadingImage_ClinicalRead": "The clinical data has not been read. Please confirm!", "ReadingImage_IDMust": "System call failed. When there is no Read ID, the standard ID must be passed.", "ReadingImage_TaskFinish": "Please note that all reads of the current subject have been completed.", "ReadingImage_NeedRest": "You have been continuously reading for {0} hours. Please take a break of {1} minutes before resumption.", //ReadingJudgeTaskService - "ReadingJudge_SouceIdNull": "'System call failed. The Source ID of the global review which is being adjudicated currently is 'null'. '", + "ReadingJudge_SouceIdNull": "System call failed. The Source ID of the global review which is being adjudicated currently is 'null'. ", //ReadingOncologyTaskService "ReadingOncology_TaskError": "System call error. The current read is not an oncology read.", "ReadingOncology_Abnormal": "System call exception. The result of adjudication is null", @@ -50,6 +51,9 @@ "Repository_UpdateError": "Updated data does not exist in the database. ", "Repository_DeleteError": "Deleted data does not exist in the database.", + + + // ------------------------------------------------------------Allocation-------------------------------------------------------------------- //TaskAllocationRuleService "TaskAllocation_DoctorIdNotFound": "Error, the doctor is account Id was not found in the enrollment table.", diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json index 5ed57bd95..c413f4073 100644 --- a/IRaCIS.Core.Application/Resources/zh-CN.json +++ b/IRaCIS.Core.Application/Resources/zh-CN.json @@ -3,6 +3,8 @@ "RequiredAttribute": "{0} 字段是必须的", // ------------------------------------------------------------Reading-------------------------------------------------------------------- + //ReadingGlobalTaskService + "ReadingGlobal_NotGlobal": "系统调用错误,当前任务不是全局阅片任务。", //ReadingImageTaskService "ReadingImage_NotVisit": "系统调用错误,当前任务不是访视任务。", "ReadingImage_CantSplit": "当前任务是基线任务,不能执行分裂病灶的操作。", @@ -11,14 +13,15 @@ "ReadingImage_NotaTask": "合并的病灶并非同一个访视任务", "ReadingImage_DeleteError": "当前病灶分裂出其他病灶或者其他病灶合并到了当前病灶,删除失败。", "ReadingImage_Idnotcorrespond": "病灶标记添加失败,影像的Instance ID和Series ID不对应。", - "ReadingImage_IsLymphNotbigger": "当前访视该淋巴结病灶的短径小于上一访视的值,不能设置为显著增大。", - "ReadingImage_NotLymphNotbigger": "当前访视该非淋巴结病灶的长径小于上一访视的值,不能设置为显著增大。", + "ReadingImage_IsLymphNotbigger": "当前访视该淋巴结非靶病灶的短径小于上一访视的值,不能设置为显著增大。", + "ReadingImage_NotLymphNotbigger": "当前访视该非淋巴结非靶病灶的长径小于上一访视的值,不能设置为显著增大。", "ReadingImage_Twice": "系统调用错误,提交的问题及答案重复。", "ReadingImage_MaxQuestion": "按照《独立影像评估章程》的相关规则,当前病灶类型的病灶数量不超过{0}个。", "ReadingImage_Maxlesion": "按照《独立影像评估章程》的相关规则,同一器官的靶病灶数量不超过{0}个,请确认", - "ReadingImage_Maximum": "\"{0}\"的重复次数限制为{1},目前已重复{2}次。", + "ReadingImage_Maximum": "{0}的重复次数限制为{1},目前已重复{2}次。", "ReadingImage_PCWGMaximum": "按照《独立影像评估章程》的相关规则,同一部位的基线病灶只需录入{0}次,请确认。", - "ReadingImage_RequiredQuestion": "提交前,请完成\"{0}\"", + "ReadingImage_NotNewFocus": "转换后的任务不应该存在新病灶", + "ReadingImage_RequiredQuestion": "提交前,请完成{0}", "ReadingImage_ClinicalRead": "临床数据未阅读,请确认!", "ReadingImage_IDMust": "系统调用失败,当没有任务ID的时候,标准ID必传。", "ReadingImage_TaskFinish": "当前受试者所有阅片任务已完成,请知悉。", @@ -47,6 +50,8 @@ "Repository_UpdateError": "修改的数据在数据库不存在。", "Repository_DeleteError": "删除的数据在数据库不存在。", + + // ------------------------------------------------------------Allocation-------------------------------------------------------------------- //TaskAllocationRuleService "TaskAllocation_DoctorIdNotFound": "错误,未在入组表中找到该医生的账号Id", diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 9de00eeca..41896725d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2046,6 +2046,7 @@ namespace IRaCIS.Application.Services return ResponseOutput.Ok(true); } + /// /// 验证访视提交 @@ -2057,6 +2058,16 @@ namespace IRaCIS.Application.Services { await VerifyTaskIsSign(inDto.VisitTaskId); await VerifyDefaultQuestionBeAnswer(inDto); + + // 转化后的任务不应该有新病灶 + + var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x=>x.IsConvertedTask).FirstNotNullAsync(); + + if (await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.ReadingQuestionTrial.LesionType == LesionType.NewLesions && x.VisitTaskId == inDto.VisitTaskId)) + { + throw new BusinessValidationFailedException(_localizer["ReadingImage_NotNewFocus"]); + } + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var isBaseline = await _subjectVisitRepository.Where(x => x.Id == taskInfo.SourceSubjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync(); var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs index 5aa3a03ab..7f3579e0d 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs @@ -1574,6 +1574,41 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion + + public async Task GetNewTargetLesionEvaluate(ReadingCalculateDto inDto) + { + var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewTargetLesion).SelectMany(x => x.TableRowInfoList).ToList(); + if (inDto.IsBaseLine) + { + return TargetAssessment.NA.GetEnumInt(); + } + + IRECISTNewTargetLesionDto resultData = new IRECISTNewTargetLesionDto() + { + // 是否存在新靶病灶 + ExistsNewTargetLesion = tableQuestion.Count() > 0, + + // 所有状态为消失 + AllVanish = false, + + // 上一访视新靶病灶评估为“iUPD” + LastTaskIsiUPD = true, + + //SOD增加5mm以上 + ISODAdd5mm = true, + + //有"存在"状态的新靶病灶 + HaveExixtsState = true, + + // 至少有一个新靶病无法评估 + ExixtsUnevaluableState = true, + + }; + + return string.Empty; + } + + #region 获取靶病灶评估 /// /// 获取靶病灶评估