diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index 59d8244ce..8ee8b195c 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -6,6 +6,8 @@ using System; using IRaCIS.Core.Domain.Share; using System.Collections.Generic; +using System.Reflection.Metadata.Ecma335; + namespace IRaCIS.Core.Application.Service.Reading.Dto { @@ -153,6 +155,27 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public List ShortBigger10Indexs { get; set; } } + public class CalculationDto + { + public List Column1 { get; set; } = new List(); + + public List Column2 { get; set; } = new List(); + + public List Column3 { get; set; } = new List(); + public List Column4 { get; set; } = new List(); + + public List Column5 { get; set; } = new List(); + + public List Column6 { get; set; } = new List(); + + public List Column7 { get; set; } = new List(); + + /// + /// 不等于 + /// + public List NotEq { get; set; } = new List(); + } + /// /// 阅片计算Dto /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs index 488f36dda..342439ac0 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs @@ -358,6 +358,8 @@ namespace IRaCIS.Application.Services .Select(x => new CriterionOtherQuestionOutDto() { + DictionaryCode=x.DictionaryCode, + QuestionId = x.Id, QuestionName = x.QuestionName, TypeValue = x.TypeValue, @@ -678,6 +680,7 @@ namespace IRaCIS.Application.Services .Select(x => new CriterionOtherQuestionOutDto() { QuestionId = x.Id, + DictionaryCode = x.DictionaryCode, QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us), TypeValue = x.TypeValue, }).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index f7048717a..56f37f3fa 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -67,6 +67,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// private decimal? sODData; + /// + /// 基线任务Id + /// + private Guid? BaseLineTaskId; + private string nAString = "NA"; #endregion @@ -495,6 +500,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate //新病灶评估 new ReadingCalculateData (){QuestionType=QuestionType.NewLesions,GetStringFun=GetNewLesionEvaluate}, + // //脾脏评估 + //new ReadingCalculateData (){QuestionType=QuestionType.SplenicEvaluation,GetStringFun=GetNewLesionEvaluate}, + // //整体肿瘤评估 // new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetTumor}, @@ -1325,6 +1333,32 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion + #region 获取基线任务ID + + /// + /// 获取基线任务的Id + /// + /// + /// + private async Task GetBaseLineTaskId(ReadingCalculateDto inDto) + { + if (this.BaseLineTaskId == null) + { + this.BaseLineTaskId = await _visitTaskRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ReadingCategory == ReadingCategory.Visit + && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && + + x.SourceSubjectVisit.IsBaseLine && x.TaskState == TaskState.Effect && + x.IsAnalysisCreate == inDto.IsAnalysisCreate + && x.DoctorUserId == inDto.DoctorUserId + && x.IsSelfAnalysis == inDto.IsSelfAnalysis && x.ArmEnum == inDto.ArmEnum) + .Select(x => x.Id).FirstOrDefaultAsync(); + } + + return this.BaseLineTaskId.Value; + + } + #endregion + #region 获取基线SOD /// /// 获取基线SOD @@ -1676,8 +1710,190 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion + + #region CTMRI 总体评估 + + /// + /// CTMRI 总体评估 + /// + /// + /// + public async Task CTMRIEvaluation(ReadingCalculateDto inDto) + { + // 靶病灶评估 + var targetEvaluation = string.Empty; + + // 非靶病灶评估 + var noTargetEvaluation = string.Empty; + + // 存在新病灶 + var existsNewTarget = string.Empty; + + // 肝脏评估 + var liverEvaluation = string.Empty; + + // 脾脏评估 + var spleenEvaluation = string.Empty; + var c = new List() { TargetAssessment.CR }; + List data = new List() { + + //ND ND 否/疑似 正常 正常 ND + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.ND }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + + //PD 任一结果 任一结果 任一结果 任一结果 PD + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.PD }), + Column2=EnumToString(new List() { }), + Column3=EnumToString(new List() { }), + Column4=EnumToString(new List() { }), + Column5=EnumToString(new List() { }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.PD }), + }, + //任一结果 PD 任一结果 任一结果 任一结果 PD + new CalculationDto(){ + Column1=EnumToString(new List() { }), + Column2=EnumToString(new List() { NoTargetAssessment.PD }), + Column3=EnumToString(new List() {}), + Column4=EnumToString(new List() { }), + Column5=EnumToString(new List() { }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.PD }), + }, + //PD 任一结果 是 任一结果 任一结果 PD + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.PD }), + Column2=EnumToString(new List() { }), + Column3=EnumToString(new List() { NewLesionAssessment.Yes }), + Column4=EnumToString(new List() { }), + Column5=EnumToString(new List() { }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + //任一结果 任一结果 任一结果 显著增大 任一结果 PD + new CalculationDto(){ + Column1=EnumToString(new List() { }), + Column2=EnumToString(new List() { }), + Column3=EnumToString(new List() { }), + Column4=EnumToString(new List() { LiverAssessment.Increase }), + Column5=EnumToString(new List() { }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + //任一结果 任一结果 任一结果 任一结果 显著增大 PD + new CalculationDto(){ + Column1=EnumToString(new List() { }), + Column2=EnumToString(new List() { }), + Column3=EnumToString(new List() {}), + Column4=EnumToString(new List() { }), + Column5=EnumToString(new List() { SpleenAssessment.Increase }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + //CR CR/ND 否 正常 正常 CR + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.CR, NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.CR }), + }, + //ND CR 否 正常 正常 CR + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.ND }), + Column2=EnumToString(new List() { NoTargetAssessment.CR }), + Column3=EnumToString(new List() { NewLesionAssessment.No }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.CR }), + }, + //NE 非PD 否/疑似/无法评估 显著增大 显著增大 NE + new CalculationDto(){ + NotEq=new List(){ 2}, + Column1=EnumToString(new List() { TargetAssessment.NE }), + Column2=EnumToString(new List() { NoTargetAssessment.PD }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected,NewLesionAssessment. }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + new CalculationDto(){ + Column1=EnumToString(new List() { TargetAssessment.CR }), + Column2=EnumToString(new List() { NoTargetAssessment.ND }), + Column3=EnumToString(new List() { NewLesionAssessment.No,NewLesionAssessment.Suspected }), + Column4=EnumToString(new List() { LiverAssessment.Normal }), + Column5=EnumToString(new List() { SpleenAssessment.Normal }), + Column6=EnumToString(new List() { CTMRIOverallAssessment.ND }), + }, + + }; + + return string.Empty; + } + #endregion + /// + /// 枚举数组转字符串数组 方法名简短 + /// + /// + /// + /// + private List EnumToString(List emus) where T : Enum + { + return emus.Select(x => ((int)(object)x).ToString()).ToList(); + } + + #region 脾脏评估 + + ///// + ///// 获取脾脏评估 + ///// + ///// + ///// + //public async Task GetSplenicEvaluation(ReadingCalculateDto inDto) + //{ + + //} + #endregion + + #endregion + } } diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index eacb7397f..e88bf9725 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -735,6 +735,147 @@ namespace IRaCIS.Core.Domain.Share } + /// + /// CT/MRI总体评估 + /// + public enum CTMRIOverallAssessment + { + /// + /// NA + /// + NA = -1, + + /// + /// CR + /// + CR = 1, + + /// + /// PR + /// + PR = 2, + + /// + /// SD + /// + SD = 3, + + /// + /// PD + /// + PD = 4, + + /// + /// NE + /// + NE = 5, + + /// + /// ND + /// + ND = 6, + + } + /// + /// 脾脏评估 + /// + public enum SpleenAssessment + { + /// + /// NA + /// + NA = -1, + + /// + /// 正常 + /// + Normal = 1, + + /// + /// 缓解 + /// + Remission = 2, + + /// + /// 稳定 + /// + Stabilization = 3, + + /// + /// 显著增大 + /// + Increase = 4, + + /// + /// 无法评估 + /// + NotEvaluable = 5, + + } + + /// + /// 肝脏评估 + /// + public enum LiverAssessment + { + /// + /// NA + /// + NA = -1, + + /// + /// 正常 + /// + Normal = 1, + + /// + /// 稳定 + /// + Stabilization = 2, + + /// + /// 显著增大 + /// + Increase = 3, + + /// + /// 无法评估 + /// + NotEvaluable = 4, + + } + /// + /// 脾脏状态 + /// + public enum SpleenState + { + /// + /// 正常 + /// + Normal = 1, + + /// + /// 肿大 + /// + Swelling = 2, + + /// + /// 部分缓解稳定 + /// + PartialRemission = 3, + + /// + /// 显著增大 + /// + Increase = 4, + + /// + /// 无法评估 + /// + NotEvaluable = 5, + + } + /// /// 触发iRECIST后新病灶评估 /// @@ -1214,7 +1355,7 @@ namespace IRaCIS.Core.Domain.Share /// /// 不显示 /// - NotShow =3 + NotShow =3, } @@ -1838,6 +1979,9 @@ namespace IRaCIS.Core.Domain.Share } + + + /// /// 新靶病灶评估 ///