Merge branch 'Test_IRC_Net8' of http://192.168.3.68:2000/XCKJ/irc-netcore-api into Test_IRC_Net8

IRC_NewDev
hang 2024-03-11 15:10:38 +08:00
commit cc8151caf8
3 changed files with 381 additions and 311 deletions

View File

@ -2106,6 +2106,15 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetEvidenceFocalFDG(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary> <summary>
骨髓中是否存在局灶性 FDG亲和病灶的证据 骨髓中是否存在局灶性 FDG亲和病灶的证据
@ -2148,6 +2157,15 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetBaseLineSpleenLength(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary> <summary>
获取基线脾脏长度 获取基线脾脏长度
@ -2190,6 +2208,17 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.ReserveDecimal(System.Decimal,System.Int32)">
<summary> <summary>
保留小数 保留小数

View File

@ -203,7 +203,7 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(inQuery.IsGetNextMedicalReviewTask, .WhereIf(inQuery.IsGetNextMedicalReviewTask,
x=>x.AuditState!= MedicalReviewAuditState.HaveSigned & x=>x.AuditState!= MedicalReviewAuditState.HaveSigned &
( x.ReadingMedicalReviewDialogList.Count()==0|| ( x.ReadingMedicalReviewDialogList.Count()!=0&&
x.ReadingMedicalReviewDialogList.Count()>0&& x.ReadingMedicalReviewDialogList.Count()>0&&
x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer)) x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer))
@ -221,7 +221,7 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid) .WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid)
.WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned) .WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned)
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
.OrderBy(x=>x.AuditState).ThenBy(x=>x.VisitTask.SubjectId).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum) .OrderBy(x=>x.VisitTask.SubjectId).ThenBy(x => x.AuditState).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum)
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider); .ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);

View File

@ -16,6 +16,7 @@ using NPOI.SS.Formula.Functions;
using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Drawing.Charts;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Service.ReadingCalculate.Interface; using IRaCIS.Core.Application.Service.ReadingCalculate.Interface;
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
namespace IRaCIS.Core.Application.Service.ReadingCalculate namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
@ -1357,7 +1358,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var addList = _mapper.Map<List<ReadingTableAnswerRowInfo>>(tableRowAnswers).OrderBy(x => x.RowIndex).ToList(); var addList = _mapper.Map<List<ReadingTableAnswerRowInfo>>(tableRowAnswers).OrderBy(x => x.RowIndex).ToList();
//await _readingTaskQuestionMarkRepository.AddRangeAsync(questionMarkList); await _readingTaskQuestionMarkRepository.AddRangeAsync(questionMarkList);
await _readingTableAnswerRowInfoRepository.AddRangeAsync(addList); await _readingTableAnswerRowInfoRepository.AddRangeAsync(addList);
await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers); await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers);
addList.ForEach(x => addList.ForEach(x =>
@ -2525,15 +2526,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//FDGPETOverallAssessment result = FDGPETOverallAssessment.NA; //FDGPETOverallAssessment result = FDGPETOverallAssessment.NA;
// PET5PS // 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 // 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 // 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>() { List<CalculationDto> data = new List<CalculationDto>() {
//NE NE NE NE //NE NE NE NE
@ -2595,9 +2609,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var resultdata = data.Where(x => var resultdata = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(PET5PS) : x.Column1.Contains(PET5PS) || x.Column1.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(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(3) ? !x.Column3.Contains(evidenceFocalFDG) : x.Column3.Contains(evidenceFocalFDG) || x.Column3.Count() == 0))
.Select(x => x.Column4.FirstOrDefault()) .Select(x => x.Column4.FirstOrDefault())
.FirstOrDefault(); .FirstOrDefault();
return resultdata ?? string.Empty; return resultdata ?? string.Empty;
@ -2738,15 +2752,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//} //}
// CTandMRI // 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 // 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); var baseLineTaskId = await GetBaseLineTaskId(inDto);
// lastFDGPET // lastFDGPET
var lastFDGPETData = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LastFDGPET).Select(x => x.Answer).FirstOrDefault(); 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>() { List<CalculationDto> data = new List<CalculationDto>() {
//1、ND NE NE/NA ND //1、ND NE NE/NA ND
@ -2856,8 +2883,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}; };
var resultdata = data.Where(x => var resultdata = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(CTandMRIData) : x.Column1.Contains(CTandMRIData) || x.Column1.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(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)) (x.NotEq.Contains(3) ? !x.Column3.Contains(lastFDGPETData) : x.Column3.Contains(lastFDGPETData) || x.Column3.Count() == 0))
.Select(x => x.Column4.FirstOrDefault()) .Select(x => x.Column4.FirstOrDefault())
.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(); 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>() { List<CalculationDto> data = new List<CalculationDto>() {
//ND ND 否/疑似 正常 正常 ND //ND ND 否/疑似 正常 正常 ND
@ -3315,14 +3357,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}, },
}; };
var index= data.FindIndex(x => var index = data.FindIndex(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) && (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) && (x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&
(x.NotEq.Contains(3) ? !x.Column3.Contains(existsNewTarget) : x.Column3.Contains(existsNewTarget) || x.Column3.Count() == 0) && (x.NotEq.Contains(3) ? !x.Column3.Contains(existsNewTarget) : x.Column3.Contains(existsNewTarget) || x.Column3.Count() == 0) &&
(x.NotEq.Contains(4) ? !x.Column4.Contains(liverEvaluation) : x.Column4.Contains(liverEvaluation) || x.Column4.Count() == 0) && (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)) (x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0))
; ;
Console.WriteLine(index);
var result = data.Where(x => var result = data.Where(x =>
(x.NotEq.Contains(1) ? !x.Column1.Contains(targetEvaluation) : x.Column1.Contains(targetEvaluation) || x.Column1.Count() == 0) && (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) && (x.NotEq.Contains(2) ? !x.Column2.Contains(noTargetEvaluation) : x.Column2.Contains(noTargetEvaluation) || x.Column2.Count() == 0) &&
@ -3331,7 +3372,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
(x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0)) (x.NotEq.Contains(5) ? !x.Column5.Contains(spleenEvaluation) : x.Column5.Contains(spleenEvaluation) || x.Column5.Count() == 0))
.Select(x => x.Column6.FirstOrDefault()) .Select(x => x.Column6.FirstOrDefault())
.FirstOrDefault(); .FirstOrDefault();
return result??string.Empty; return result ?? string.Empty;
} }
#endregion #endregion