代码修改

IRC_NewDev
he 2023-09-05 17:44:29 +08:00
parent b006fff6ed
commit bad5f32ffc
4 changed files with 387 additions and 1 deletions

View File

@ -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<decimal> ShortBigger10Indexs { get; set; }
}
public class CalculationDto
{
public List<string> Column1 { get; set; } = new List<string>();
public List<string> Column2 { get; set; } = new List<string>();
public List<string> Column3 { get; set; } = new List<string>();
public List<string> Column4 { get; set; } = new List<string>();
public List<string> Column5 { get; set; } = new List<string>();
public List<string> Column6 { get; set; } = new List<string>();
public List<string> Column7 { get; set; } = new List<string>();
/// <summary>
/// 不等于
/// </summary>
public List<int> NotEq { get; set; } = new List<int>();
}
/// <summary>
/// 阅片计算Dto
/// </summary>

View File

@ -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();

View File

@ -67,6 +67,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// </summary>
private decimal? sODData;
/// <summary>
/// 基线任务Id
/// </summary>
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
/// <summary>
/// 获取基线任务的Id
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
private async Task<Guid> 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
/// <summary>
/// 获取基线SOD
@ -1676,8 +1710,190 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
#endregion
#region CTMRI 总体评估
/// <summary>
/// CTMRI 总体评估
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<string> 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>() { TargetAssessment.CR };
List<CalculationDto> data = new List<CalculationDto>() {
//ND ND 否/疑似 正常 正常 ND
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
//PD 任一结果 任一结果 任一结果 任一结果 PD
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.PD }),
Column2=EnumToString(new List<NoTargetAssessment>() { }),
Column3=EnumToString(new List<NewLesionAssessment>() { }),
Column4=EnumToString(new List<LiverAssessment>() { }),
Column5=EnumToString(new List<SpleenAssessment>() { }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
},
//任一结果 PD 任一结果 任一结果 任一结果 PD
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
Column3=EnumToString(new List<NewLesionAssessment>() {}),
Column4=EnumToString(new List<LiverAssessment>() { }),
Column5=EnumToString(new List<SpleenAssessment>() { }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.PD }),
},
//PD 任一结果 是 任一结果 任一结果 PD
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.PD }),
Column2=EnumToString(new List<NoTargetAssessment>() { }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.Yes }),
Column4=EnumToString(new List<LiverAssessment>() { }),
Column5=EnumToString(new List<SpleenAssessment>() { }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
//任一结果 任一结果 任一结果 显著增大 任一结果 PD
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { }),
Column2=EnumToString(new List<NoTargetAssessment>() { }),
Column3=EnumToString(new List<NewLesionAssessment>() { }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Increase }),
Column5=EnumToString(new List<SpleenAssessment>() { }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
//任一结果 任一结果 任一结果 任一结果 显著增大 PD
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { }),
Column2=EnumToString(new List<NoTargetAssessment>() { }),
Column3=EnumToString(new List<NewLesionAssessment>() {}),
Column4=EnumToString(new List<LiverAssessment>() { }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Increase }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
//CR CR/ND 否 正常 正常 CR
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR, NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
},
//ND CR 否 正常 正常 CR
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.ND }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.CR }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.CR }),
},
//NE 非PD 否/疑似/无法评估 显著增大 显著增大 NE
new CalculationDto(){
NotEq=new List<int>(){ 2},
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.NE }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.PD }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected,NewLesionAssessment. }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
new CalculationDto(){
Column1=EnumToString(new List<TargetAssessment>() { TargetAssessment.CR }),
Column2=EnumToString(new List<NoTargetAssessment>() { NoTargetAssessment.ND }),
Column3=EnumToString(new List<NewLesionAssessment>() { NewLesionAssessment.No,NewLesionAssessment.Suspected }),
Column4=EnumToString(new List<LiverAssessment>() { LiverAssessment.Normal }),
Column5=EnumToString(new List<SpleenAssessment>() { SpleenAssessment.Normal }),
Column6=EnumToString(new List<CTMRIOverallAssessment>() { CTMRIOverallAssessment.ND }),
},
};
return string.Empty;
}
#endregion
/// <summary>
/// 枚举数组转字符串数组 方法名简短
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="emus"></param>
/// <returns></returns>
private List<string> EnumToString<T>(List<T> emus) where T : Enum
{
return emus.Select(x => ((int)(object)x).ToString()).ToList();
}
#region 脾脏评估
///// <summary>
///// 获取脾脏评估
///// </summary>
///// <param name="inDto"></param>
///// <returns></returns>
//public async Task<string> GetSplenicEvaluation(ReadingCalculateDto inDto)
//{
//}
#endregion
#endregion
}
}

View File

@ -735,6 +735,147 @@ namespace IRaCIS.Core.Domain.Share
}
/// <summary>
/// CT/MRI总体评估
/// </summary>
public enum CTMRIOverallAssessment
{
/// <summary>
/// NA
/// </summary>
NA = -1,
/// <summary>
/// CR
/// </summary>
CR = 1,
/// <summary>
/// PR
/// </summary>
PR = 2,
/// <summary>
/// SD
/// </summary>
SD = 3,
/// <summary>
/// PD
/// </summary>
PD = 4,
/// <summary>
/// NE
/// </summary>
NE = 5,
/// <summary>
/// ND
/// </summary>
ND = 6,
}
/// <summary>
/// 脾脏评估
/// </summary>
public enum SpleenAssessment
{
/// <summary>
/// NA
/// </summary>
NA = -1,
/// <summary>
/// 正常
/// </summary>
Normal = 1,
/// <summary>
/// 缓解
/// </summary>
Remission = 2,
/// <summary>
/// 稳定
/// </summary>
Stabilization = 3,
/// <summary>
/// 显著增大
/// </summary>
Increase = 4,
/// <summary>
/// 无法评估
/// </summary>
NotEvaluable = 5,
}
/// <summary>
/// 肝脏评估
/// </summary>
public enum LiverAssessment
{
/// <summary>
/// NA
/// </summary>
NA = -1,
/// <summary>
/// 正常
/// </summary>
Normal = 1,
/// <summary>
/// 稳定
/// </summary>
Stabilization = 2,
/// <summary>
/// 显著增大
/// </summary>
Increase = 3,
/// <summary>
/// 无法评估
/// </summary>
NotEvaluable = 4,
}
/// <summary>
/// 脾脏状态
/// </summary>
public enum SpleenState
{
/// <summary>
/// 正常
/// </summary>
Normal = 1,
/// <summary>
/// 肿大
/// </summary>
Swelling = 2,
/// <summary>
/// 部分缓解稳定
/// </summary>
PartialRemission = 3,
/// <summary>
/// 显著增大
/// </summary>
Increase = 4,
/// <summary>
/// 无法评估
/// </summary>
NotEvaluable = 5,
}
/// <summary>
/// 触发iRECIST后新病灶评估
/// </summary>
@ -1214,7 +1355,7 @@ namespace IRaCIS.Core.Domain.Share
/// <summary>
/// 不显示
/// </summary>
NotShow =3
NotShow =3,
}
@ -1838,6 +1979,9 @@ namespace IRaCIS.Core.Domain.Share
}
/// <summary>
/// 新靶病灶评估
/// </summary>