计算修改

IRC_NewDev
he 2024-03-11 13:23:45 +08:00
parent c00e8eb809
commit f85bbc41c4
2 changed files with 378 additions and 308 deletions

View File

@ -2106,6 +2106,15 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.CalculationFDGPETOverallAssessment(System.String,System.String,System.String)">
<summary>
计算FDG-PET总体评估结果【测试】
</summary>
<param name="pET5PS">PET5PS评分</param>
<param name="uptakeChange"> 与基线相比摄取值变化</param>
<param name="evidenceFocalFDG">骨髓中是否存在局灶性 FDG亲和病灶的证据</param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetEvidenceFocalFDG(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
骨髓中是否存在局灶性 FDG亲和病灶的证据
@ -2148,6 +2157,15 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.CalculationGetImgOncology(System.String,System.String,System.String)">
<summary>
计算整体肿瘤评估 【测试】
</summary>
<param name="cTandMRIData"> CT/MRI总体评估</param>
<param name="fDGPETData"> FDG-PET总体评估</param>
<param name="lastFDGPETData">上一次 FDG-PET总体评估</param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetBaseLineSpleenLength(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取基线脾脏长度
@ -2190,6 +2208,17 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.CalculationCTMRIEvaluation(System.String,System.String,System.String,System.String,System.String)">
<summary>
计算CTMRI 总体评估 【测试】
</summary>
<param name="targetEvaluation">靶病灶评估</param>
<param name="noTargetEvaluation">非靶病灶评估</param>
<param name="existsNewTarget">存在新病灶</param>
<param name="liverEvaluation">肝脏评估</param>
<param name="spleenEvaluation">脾脏评估</param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.ReserveDecimal(System.Decimal,System.Int32)">
<summary>
保留小数

View File

@ -16,6 +16,7 @@ using NPOI.SS.Formula.Functions;
using DocumentFormat.OpenXml.Drawing.Charts;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Service.ReadingCalculate.Interface;
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
@ -2525,15 +2526,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//FDGPETOverallAssessment result = FDGPETOverallAssessment.NA;
// PET5PS
var PET5PS = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstOrDefault();
var pET5PS = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.PET5PS).Select(x => x.Answer).FirstOrDefault();
// UptakeChange
var UptakeChange = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.UptakeChange).Select(x => x.Answer).FirstOrDefault();
var uptakeChange = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.UptakeChange).Select(x => x.Answer).FirstOrDefault();
// EvidenceFocalFDG
var EvidenceFocalFDG = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefault();
var evidenceFocalFDG = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EvidenceFocalFDG).Select(x => x.Answer).FirstOrDefault();
return CalculationFDGPETOverallAssessment(pET5PS, uptakeChange, evidenceFocalFDG);
}
/// <summary>
/// 计算FDG-PET总体评估结果【测试】
/// </summary>
/// <param name="pET5PS">PET5PS评分</param>
/// <param name="uptakeChange"> 与基线相比摄取值变化</param>
/// <param name="evidenceFocalFDG">骨髓中是否存在局灶性 FDG亲和病灶的证据</param>
/// <returns></returns>
public string CalculationFDGPETOverallAssessment(string? pET5PS, string uptakeChange,string? evidenceFocalFDG)
{
List<CalculationDto> data = new List<CalculationDto>() {
//NE NE NE NE
@ -2595,9 +2609,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var resultdata = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(PET5PS) : x.Column1.Contains(PET5PS) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(UptakeChange) : x.Column2.Contains(UptakeChange) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(3) ? !x.Column3.Contains(EvidenceFocalFDG) : x.Column3.Contains(EvidenceFocalFDG) || x.Column3.Count() == 0))
(x.NotEq.Contains(1) ? !x.Column1.Contains(pET5PS) : x.Column1.Contains(pET5PS) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(uptakeChange) : x.Column2.Contains(uptakeChange) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(3) ? !x.Column3.Contains(evidenceFocalFDG) : x.Column3.Contains(evidenceFocalFDG) || x.Column3.Count() == 0))
.Select(x => x.Column4.FirstOrDefault())
.FirstOrDefault();
return resultdata ?? string.Empty;
@ -2738,15 +2752,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//}
// CTandMRI
var CTandMRIData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.CTandMRI).Select(x => x.Answer).FirstOrDefault();
var cTandMRIData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.CTandMRI).Select(x => x.Answer).FirstOrDefault();
// FDGPET
var FDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.FDGPET).Select(x => x.Answer).FirstOrDefault();
var fDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.FDGPET).Select(x => x.Answer).FirstOrDefault();
var baseLineTaskId = await GetBaseLineTaskId(inDto);
// lastFDGPET
var lastFDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LastFDGPET).Select(x => x.Answer).FirstOrDefault();
return CalculationGetImgOncology(cTandMRIData, fDGPETData, lastFDGPETData);
}
/// <summary>
/// 计算整体肿瘤评估 【测试】
/// </summary>
/// <param name="cTandMRIData"> CT/MRI总体评估</param>
/// <param name="fDGPETData"> FDG-PET总体评估</param>
/// <param name="lastFDGPETData">上一次 FDG-PET总体评估</param>
/// <returns></returns>
public string CalculationGetImgOncology(string? cTandMRIData,string? fDGPETData,string? lastFDGPETData)
{
List<CalculationDto> data = new List<CalculationDto>() {
//1、ND NE NE/NA ND
@ -2856,8 +2883,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
};
var resultdata = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(CTandMRIData) : x.Column1.Contains(CTandMRIData) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(FDGPETData) : x.Column2.Contains(FDGPETData) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(1) ? !x.Column1.Contains(cTandMRIData) : x.Column1.Contains(cTandMRIData) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(fDGPETData) : x.Column2.Contains(fDGPETData) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(3) ? !x.Column3.Contains(lastFDGPETData) : x.Column3.Contains(lastFDGPETData) || x.Column3.Count() == 0))
.Select(x => x.Column4.FirstOrDefault())
.FirstOrDefault();
@ -3141,6 +3168,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 脾脏评估
var spleenEvaluation = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SplenicEvaluation).Select(x => x.Answer).FirstOrDefault();
return CalculationCTMRIEvaluation(targetEvaluation, noTargetEvaluation, existsNewTarget, liverEvaluation, spleenEvaluation);
}
/// <summary>
/// 计算CTMRI 总体评估 【测试】
/// </summary>
/// <param name="targetEvaluation">靶病灶评估</param>
/// <param name="noTargetEvaluation">非靶病灶评估</param>
/// <param name="existsNewTarget">存在新病灶</param>
/// <param name="liverEvaluation">肝脏评估</param>
/// <param name="spleenEvaluation">脾脏评估</param>
/// <returns></returns>
[HttpPost]
public string CalculationCTMRIEvaluation(string? targetEvaluation,string? noTargetEvaluation,string? existsNewTarget,string? liverEvaluation,string? spleenEvaluation)
{
List<CalculationDto> data = new List<CalculationDto>() {
//ND ND 否/疑似 正常 正常 ND
@ -3322,7 +3364,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
(x.NotEq.Contains(4) ? !x.Column4.Contains(liverEvaluation) : x.Column4.Contains(liverEvaluation) || x.Column4.Count() == 0) &&
(x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0))
;
Console.WriteLine(index);
var result = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) &&
(x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&