Compare commits
No commits in common. "1c673e11aca263006eaad9c967937d52e5517a34" and "33a0b8f11f5f3b5dfffc230504fac7dbaec0e33a" have entirely different histories.
1c673e11ac
...
33a0b8f11f
|
@ -22,11 +22,6 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetSplitPPdInDto
|
|
||||||
{
|
|
||||||
public Guid RowId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer
|
public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer
|
||||||
{
|
{
|
||||||
public QuestionType QuestionType { get; set; }
|
public QuestionType QuestionType { get; set; }
|
||||||
|
|
|
@ -13,7 +13,6 @@ using MassTransit;
|
||||||
using System.Reflection.Metadata.Ecma335;
|
using System.Reflection.Metadata.Ecma335;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NPOI.SS.Formula.Functions;
|
using NPOI.SS.Formula.Functions;
|
||||||
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
{
|
{
|
||||||
|
@ -886,106 +885,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var stateQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.State).FirstOrDefaultAsync();
|
var stateQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.State).FirstOrDefaultAsync();
|
||||||
if (stateQuestion != null)
|
if (stateQuestion != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
// 找到主病灶的状态
|
|
||||||
var state =await _readingTableQuestionAnswerRepository.Where(x=>x.VisitTaskId==inDto.VisitTaskId&&x.RowIndex== (int)Math.Floor(inDto.RowNumber)&&x.TableQuestionId== stateQuestion.Id).Select(x=>x.Answer).FirstOrDefaultAsync();
|
var state =await _readingTableQuestionAnswerRepository.Where(x=>x.VisitTaskId==inDto.VisitTaskId&&x.RowIndex== (int)Math.Floor(inDto.RowNumber)&&x.TableQuestionId== stateQuestion.Id).Select(x=>x.Answer).FirstOrDefaultAsync();
|
||||||
|
|
||||||
// 长径
|
|
||||||
var majorAxis = (await _readingTableQuestionAnswerRepository.Where(x =>
|
|
||||||
x.VisitTaskId == inDto.VisitTaskId &&
|
|
||||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis &&
|
|
||||||
x.QuestionId== targetQuestion.Id
|
|
||||||
).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
|
||||||
|
|
||||||
// 短径
|
|
||||||
var shortAxis = (await _readingTableQuestionAnswerRepository.Where(x =>
|
|
||||||
x.VisitTaskId == inDto.VisitTaskId &&
|
|
||||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis &&
|
|
||||||
x.QuestionId == targetQuestion.Id
|
|
||||||
).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
|
||||||
|
|
||||||
// 找到ppd问题
|
// 找到ppd问题
|
||||||
var ppdQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.PPD).FirstOrDefaultAsync();
|
var ppdQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.PPD).FirstOrDefaultAsync();
|
||||||
|
|
||||||
if(ppdQuestion!=null)
|
if(ppdQuestion!=null)
|
||||||
{
|
{
|
||||||
var ppdAnswerList= await _readingTableQuestionAnswerRepository.Where(x =>
|
var ppdAnswerList= await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.TableQuestionId == stateQuestion.Id)
|
||||||
x.VisitTaskId == inDto.VisitTaskId &&
|
.Where(x=> x.RowIndex >= (int)Math.Floor(inDto.RowNumber) && x.RowIndex< ((int)Math.Floor(inDto.RowNumber)+1))
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.PPD &&
|
.Select(x => x.Answer).ToListAsync();
|
||||||
x.QuestionId == targetQuestion.Id &&
|
|
||||||
x.RowIndex >= (int)Math.Floor(inDto.RowNumber) && x.RowIndex < ((int)Math.Floor(inDto.RowNumber) + 1)
|
|
||||||
).Select(x => x.Answer).ToListAsync();
|
|
||||||
|
|
||||||
var allPPd = ppdAnswerList.Select(x => x.IsNullOrEmptyReturn0()).Sum();
|
var allPPd = ppdAnswerList.Select(x => x.IsNullOrEmptyReturn0()).Sum();
|
||||||
|
|
||||||
// 是否符合疾病进展
|
|
||||||
var accord = false;
|
|
||||||
|
|
||||||
var lowPPDInfo = await GetLowPPDInfo(new GetPPDInfoInDto()
|
|
||||||
{
|
|
||||||
RowIndex = (int)Math.Floor(inDto.RowNumber),
|
|
||||||
VisitTaskId = inDto.VisitTaskId,
|
|
||||||
QuestionId = inDto.QuestionId,
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
if (lowPPDInfo.NadirPPD != 0)
|
|
||||||
{
|
|
||||||
//15mm < 当前靶病灶LDi≤20mm &&
|
|
||||||
//&& 相比最低点PPD增加百分比 ≥50% &&
|
|
||||||
//(相比PPD最低点LDi增加值 ≥5 mm
|
|
||||||
//or相比PPD最低点SDi增加值≥5 mm)
|
|
||||||
if (15 < majorAxis && majorAxis <= 20 &&
|
|
||||||
(allPPd - lowPPDInfo.NadirPPD) * 100 / lowPPDInfo.NadirPPD >= 50 &&
|
|
||||||
(majorAxis - lowPPDInfo.LowPPDLDi >= 5 ||
|
|
||||||
shortAxis - lowPPDInfo.LowPPDSDi >= 5)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
accord = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//当前靶病灶LDi>20 mm
|
|
||||||
//相比最低点PPD增加百分比 ≥50%
|
|
||||||
// (相比PPD最低点LDi增加值 ≥10 mm
|
|
||||||
// 或者相比PPD最低点SDi增加值Sdi ≥10 mm)
|
|
||||||
if ( majorAxis > 20 &&
|
|
||||||
(allPPd - lowPPDInfo.NadirPPD) * 100 / lowPPDInfo.NadirPPD >= 50 &&
|
|
||||||
(majorAxis - lowPPDInfo.LowPPDLDi >= 10 ||
|
|
||||||
shortAxis - lowPPDInfo.LowPPDSDi >= 10)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
accord = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// 符合疾病进展
|
|
||||||
if (accord)
|
|
||||||
{
|
|
||||||
await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x =>
|
|
||||||
x.VisitTaskId == inDto.VisitTaskId &&
|
|
||||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State &&
|
|
||||||
x.QuestionId == targetQuestion.Id, x => new ReadingTableQuestionAnswer()
|
|
||||||
{
|
|
||||||
Answer = TargetState.DiseaseProgression.GetEnumInt()
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else if (state == TargetState.DiseaseProgression.GetEnumInt())
|
|
||||||
{
|
|
||||||
await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x =>
|
|
||||||
x.VisitTaskId == inDto.VisitTaskId &&
|
|
||||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State &&
|
|
||||||
x.QuestionId == targetQuestion.Id, x => new ReadingTableQuestionAnswer()
|
|
||||||
{
|
|
||||||
Answer = TargetState.Exist.GetEnumInt()
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -998,28 +910,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取分裂病灶的PPd之和 不包括当前的主病灶
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<decimal> GetSplitPPdSum(GetSplitPPdInDto inDto)
|
|
||||||
{
|
|
||||||
var rowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.RowId).FirstNotNullAsync();
|
|
||||||
|
|
||||||
|
|
||||||
var ppdAnswerList = await _readingTableQuestionAnswerRepository.Where(x =>
|
|
||||||
x.VisitTaskId == rowinfo.VisitTaskId &&
|
|
||||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.PPD &&
|
|
||||||
x.QuestionId == rowinfo.QuestionId &&
|
|
||||||
x.RowIndex > (int)Math.Floor(rowinfo.RowIndex) && x.RowIndex < ((int)Math.Floor(rowinfo.RowIndex) + 1)
|
|
||||||
).Select(x => x.Answer).ToListAsync();
|
|
||||||
|
|
||||||
var allPPd = ppdAnswerList.Select(x => x.IsNullOrEmptyReturn0()).Sum();
|
|
||||||
|
|
||||||
return allPPd;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 将上一次的访视病灶添加到这一次
|
#region 将上一次的访视病灶添加到这一次
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue