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 获取靶病灶评估
///
/// 获取靶病灶评估