算法修改
parent
e4d9bdf998
commit
1dc0219fa1
|
@ -1437,10 +1437,57 @@
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetIRECISTTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetIRECISTTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetNewTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetIRECISTNoTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||||
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetNewTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||||
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetNewNoTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetOtherNewTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取新靶病灶评估
|
获取其它既往新病灶评估
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
if(有其它既往新病灶消失或一直不存在任何其它既往新病灶)
|
||||||
|
{
|
||||||
|
疗效为 ND
|
||||||
|
}
|
||||||
|
else if (任一病灶从非“存在”状态改为“存在”状态)
|
||||||
|
{
|
||||||
|
疗效为 iUPD
|
||||||
|
}
|
||||||
|
else if (至少有一个其它既往新病灶无法评估)
|
||||||
|
{
|
||||||
|
疗效为 NE
|
||||||
|
}
|
||||||
|
else if (至少有一个其它既往新病灶为疑似状态)
|
||||||
|
{
|
||||||
|
疗效为 疑似
|
||||||
|
}
|
||||||
|
</remarks>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetNewLesionAfterTriggeringiRECSITAssessment(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
if现至少1个“存在”状态的触发iRECIST后新病灶)
|
||||||
|
{
|
||||||
|
疗效为 是
|
||||||
|
}
|
||||||
|
else if (只要有一个触发iRECIST后新病灶评估为NE)
|
||||||
|
{
|
||||||
|
疗效为 NE
|
||||||
|
}
|
||||||
|
else if (只要有一个触发iRECIST后新病灶评估为疑似)
|
||||||
|
{
|
||||||
|
疗效为 疑似
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
疗效为 否
|
||||||
|
}
|
||||||
|
|
||||||
|
</remarks>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
@ -7229,14 +7276,59 @@
|
||||||
与基线期SOD相比减小≥30 %
|
与基线期SOD相比减小≥30 %
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion">
|
||||||
|
<summary>
|
||||||
|
IRECIST 非靶病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.NotExistsNoTargetLesion">
|
||||||
|
<summary>
|
||||||
|
基线未选择任何非靶病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.LastNoTargetLesion">
|
||||||
|
<summary>
|
||||||
|
上次非靶病灶评估结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.ExistiCPD">
|
||||||
|
<summary>
|
||||||
|
任一非靶病灶状态评估为“进一步增大(iCPD)”
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.LastNoUPD">
|
||||||
|
<summary>
|
||||||
|
出现至少1个上一访视未评估为“显著增大(iUPD)”的病灶本次访视评估为“显著增大(iUPD)”
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.ExistiUPD">
|
||||||
|
<summary>
|
||||||
|
任一非靶病灶状态评估为 iUPD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.RECISTPD">
|
||||||
|
<summary>
|
||||||
|
满足RECIST1.1PD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.HaveNeLesion">
|
||||||
|
<summary>
|
||||||
|
有任一非靶病灶为NE状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion.AllVanish">
|
||||||
|
<summary>
|
||||||
|
全部为消失
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto">
|
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto">
|
||||||
<summary>
|
<summary>
|
||||||
新靶病灶评估Dto
|
新靶病灶评估Dto
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.ExistsNewTargetLesion">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.NotExistsNewTargetLesion">
|
||||||
<summary>
|
<summary>
|
||||||
存在新靶病灶
|
不存在新靶病灶
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.AllVanish">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.AllVanish">
|
||||||
|
@ -7244,9 +7336,9 @@
|
||||||
所有状态为消失
|
所有状态为消失
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.LastTaskIsiUPD">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.LastTaskNewTargetLesion">
|
||||||
<summary>
|
<summary>
|
||||||
上一访视新靶病灶评估为“iUPD”
|
上一访视新靶病灶评估
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.ISODAdd5mm">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.ISODAdd5mm">
|
||||||
|
@ -7264,9 +7356,39 @@
|
||||||
至少有一个新靶病无法评估
|
至少有一个新靶病无法评估
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.ExistsNewNoTargetLesion">
|
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto">
|
||||||
<summary>
|
<summary>
|
||||||
存在新非靶病灶
|
其他既往新病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto.NotExistsOtherNewTargetLesion">
|
||||||
|
<summary>
|
||||||
|
不存在其他既往新病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto.AllVanish">
|
||||||
|
<summary>
|
||||||
|
所有状态为消失
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto.LastTaskNoExists">
|
||||||
|
<summary>
|
||||||
|
当任一病灶从非“存在”状态改为“存在”状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto.ExixtsUnevaluableState">
|
||||||
|
<summary>
|
||||||
|
至少有一个病灶无法评估
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto.ExixtsSuspectedState">
|
||||||
|
<summary>
|
||||||
|
至少有一个其它既往新病灶为疑似状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.NotExistsNewNoTargetLesion">
|
||||||
|
<summary>
|
||||||
|
不存在新非靶病灶
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.AllVanish">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.AllVanish">
|
||||||
|
@ -7274,9 +7396,14 @@
|
||||||
所有状态为消失
|
所有状态为消失
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.LastTaskIsiUPD">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.LastTaskNewNoTargetLesion">
|
||||||
<summary>
|
<summary>
|
||||||
上一访视新靶病灶评估为“iUPD”
|
上一访视新非靶病灶评估
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.NewTargetLesion">
|
||||||
|
<summary>
|
||||||
|
当前访视的新靶病灶评估
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.ExixtsEnlargementState">
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewNoTargetLesionDto.ExixtsEnlargementState">
|
||||||
|
|
|
@ -107,7 +107,51 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IRECIST 非靶病灶
|
||||||
|
/// </summary>
|
||||||
|
public class IRECISTNoTargetLesion
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 基线未选择任何非靶病灶
|
||||||
|
/// </summary>
|
||||||
|
public bool NotExistsNoTargetLesion { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上次非靶病灶评估结果
|
||||||
|
/// </summary>
|
||||||
|
public string LastNoTargetLesion { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任一非靶病灶状态评估为“进一步增大(iCPD)”
|
||||||
|
/// </summary>
|
||||||
|
public bool ExistiCPD { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出现至少1个上一访视未评估为“显著增大(iUPD)”的病灶本次访视评估为“显著增大(iUPD)”
|
||||||
|
/// </summary>
|
||||||
|
public bool LastNoUPD { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任一非靶病灶状态评估为 iUPD
|
||||||
|
/// </summary>
|
||||||
|
public bool ExistiUPD { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 满足RECIST1.1PD
|
||||||
|
/// </summary>
|
||||||
|
public bool RECISTPD { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 有任一非靶病灶为NE状态
|
||||||
|
/// </summary>
|
||||||
|
public bool HaveNeLesion { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 全部为消失
|
||||||
|
/// </summary>
|
||||||
|
public bool AllVanish { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 新靶病灶评估Dto
|
/// 新靶病灶评估Dto
|
||||||
|
@ -115,9 +159,9 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public class IRECISTNewTargetLesionDto
|
public class IRECISTNewTargetLesionDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 存在新靶病灶
|
/// 不存在新靶病灶
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ExistsNewTargetLesion { get; set; }
|
public bool NotExistsNewTargetLesion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有状态为消失
|
/// 所有状态为消失
|
||||||
|
@ -125,9 +169,9 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public bool AllVanish { get; set; }
|
public bool AllVanish { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上一访视新靶病灶评估为“iUPD”
|
/// 上一访视新靶病灶评估
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool LastTaskIsiUPD { get; set; }
|
public string LastTaskNewTargetLesion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SOD增加5mm以上
|
/// SOD增加5mm以上
|
||||||
|
@ -145,12 +189,51 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public bool ExixtsUnevaluableState { get; set; }
|
public bool ExixtsUnevaluableState { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 其他既往新病灶
|
||||||
|
/// </summary>
|
||||||
|
public class IRECISTOtherNewTargetLesionDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 不存在其他既往新病灶
|
||||||
|
/// </summary>
|
||||||
|
public bool NotExistsOtherNewTargetLesion { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所有状态为消失
|
||||||
|
/// </summary>
|
||||||
|
public bool AllVanish { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当任一病灶从非“存在”状态改为“存在”状态
|
||||||
|
/// </summary>
|
||||||
|
public bool LastTaskNoExists { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 至少有一个病灶无法评估
|
||||||
|
/// </summary>
|
||||||
|
public bool ExixtsUnevaluableState { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 至少有一个其它既往新病灶为疑似状态
|
||||||
|
/// </summary>
|
||||||
|
public bool ExixtsSuspectedState { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 触发iRECIST后新病灶评估
|
||||||
|
///// </summary>
|
||||||
|
//public class NewLesionAfterTriggeringiRECSITAssessmentDto
|
||||||
|
//{
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
public class IRECISTNewNoTargetLesionDto
|
public class IRECISTNewNoTargetLesionDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 存在新非靶病灶
|
/// 不存在新非靶病灶
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ExistsNewNoTargetLesion { get; set; }
|
public bool NotExistsNewNoTargetLesion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有状态为消失
|
/// 所有状态为消失
|
||||||
|
@ -159,9 +242,14 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上一访视新靶病灶评估为“iUPD”
|
/// 上一访视新非靶病灶评估
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool LastTaskIsiUPD { get; set; }
|
public string LastTaskNewNoTargetLesion { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前访视的新靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
public string NewTargetLesion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任一新非靶病灶状态为“增大”
|
/// 任一新非靶病灶状态为“增大”
|
||||||
|
|
|
@ -1545,10 +1545,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// if(基线没有靶病灶)
|
/// if(基线没有靶病灶)
|
||||||
/// {
|
/// {
|
||||||
/// 靶病灶疗效为 ND
|
/// 靶病灶疗效为 ND
|
||||||
/// }else if ((上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件)|| 上一访视评估为iUPD || 本次访视SOD增加不小于5mm)
|
/// }
|
||||||
|
/// else if (上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件&&比整体访视期间最低点SOD增加≥20%&&比整体访视期间最低点SOD绝对增加值≥5 mm)
|
||||||
/// {
|
/// {
|
||||||
/// 靶病灶疗效为 ICPD
|
/// 靶病灶疗效为 ICPD
|
||||||
/// } else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
/// }
|
||||||
|
/// else if (上一访视评估为iUPD||本次访视SOD增加不小于5mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 ICPD
|
||||||
|
/// }
|
||||||
|
/// else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
||||||
/// {
|
/// {
|
||||||
/// 靶病灶疗效为 iUPD
|
/// 靶病灶疗效为 iUPD
|
||||||
/// } else if (有任一靶病灶为NE状态)
|
/// } else if (有任一靶病灶为NE状态)
|
||||||
|
@ -1639,18 +1645,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
// 靶病灶疗效为 ND
|
// 靶病灶疗效为 ND
|
||||||
result = TargetAssessment.ND;
|
result = TargetAssessment.ND;
|
||||||
}
|
}
|
||||||
// }else if ((上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件)|| 上一访视评估为iUPD || 本次访视SOD增加不小于5mm)
|
// else if (上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件&&比整体访视期间最低点SOD增加≥20%&&比整体访视期间最低点SOD绝对增加值≥5 mm)
|
||||||
else if ((resultData.LastTaskTarget.EqEnum(OverallAssessment.iCPD) && resultData.MeetRECISTPD) || resultData.LastTaskTarget.EqEnum(OverallAssessment.iUPD) || resultData.SODAddGreaterThan5)
|
else if (resultData.LastTaskTarget.EqEnum(OverallAssessment.iCPD) && resultData.MeetRECISTPD && resultData.LowSodAddGreaterThan20Percent && resultData.LowSodAddGreaterThan5)
|
||||||
|
{
|
||||||
|
// 靶病灶疗效为 ICPD
|
||||||
|
result = TargetAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (上一访视评估为iUPD||本次访视SOD增加不小于5mm)
|
||||||
|
else if (resultData.LastTaskTarget.EqEnum(OverallAssessment.iUPD) || resultData.SODAddGreaterThan5)
|
||||||
{
|
{
|
||||||
// 靶病灶疗效为 ICPD
|
// 靶病灶疗效为 ICPD
|
||||||
result = TargetAssessment.iCPD;
|
result = TargetAssessment.iCPD;
|
||||||
}
|
}
|
||||||
// } else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
// } else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
||||||
else if(resultData.MeetRECISTPD&&(resultData.LowSodAddGreaterThan20Percent&&resultData.LowSodAddGreaterThan5)|| (resultData.LastTaskTarget.EqEnum(OverallAssessment.iCR)&&resultData.HaveExistLesion))
|
else if (resultData.MeetRECISTPD && (resultData.LowSodAddGreaterThan20Percent && resultData.LowSodAddGreaterThan5) || (resultData.LastTaskTarget.EqEnum(OverallAssessment.iCR) && resultData.HaveExistLesion))
|
||||||
{
|
{
|
||||||
// 靶病灶疗效为 iUPD
|
// 靶病灶疗效为 iUPD
|
||||||
result = TargetAssessment.iUPD;
|
result = TargetAssessment.iUPD;
|
||||||
}
|
}
|
||||||
// else if (有任一靶病灶为NE状态)
|
// else if (有任一靶病灶为NE状态)
|
||||||
else if(resultData.HaveNeLesion)
|
else if(resultData.HaveNeLesion)
|
||||||
{
|
{
|
||||||
|
@ -1683,11 +1695,164 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
#region IRECIST非靶病灶评估
|
#region IRECIST非靶病灶评估
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IRECIST非靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// if(基线没有非靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 ND
|
||||||
|
/// }
|
||||||
|
/// else if (上次非靶病灶评估结果为非iUPD && (任一非靶病灶状态评估为“进一步增大(iCPD)||出现至少1个上一访视未评估为“显著增大(iUPD)”的病灶本次访视评估为“显著增大(iUPD)”))
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (上次非靶病灶评估结果为非iCPD && 任一非靶病灶状态评估为“进一步增大(iCPD)”或“显著增大(iUPD)”)
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (满足RECIST1.1的PD标准 && 任一非靶病灶状态评估为“显著增大(iUPD)”)
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 iUPD
|
||||||
|
/// }
|
||||||
|
/// else if (有任一非靶病灶为NE状态)
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 NE
|
||||||
|
/// }
|
||||||
|
/// else if (全部非靶病灶均为“消失”状态)
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 iCR
|
||||||
|
/// }
|
||||||
|
/// else
|
||||||
|
/// {
|
||||||
|
/// 非靶病灶疗效为 iNN
|
||||||
|
/// }
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetIRECISTNoTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
|
{
|
||||||
|
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NonTargetLesions).SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
|
var noTargetQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NoTargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
|
||||||
|
// 找上一次任务 未被评为显著增大的非靶病灶
|
||||||
|
ReadingCalculateDto lastTaskCalculateDto = await _generalCalculateService.GetReadingCalculateDto(lastVisitTaskId);
|
||||||
|
|
||||||
|
var lastTaskNoiUPDIndexs = lastTaskCalculateDto.QuestionInfo.Where(x => x.LesionType == LesionType.NonTargetLesions).SelectMany(x => x.TableRowInfoList)
|
||||||
|
.Where(x => x.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && !x.Answer.EqEnum(NoTargetState.IUPD))).Select(x => x.RowIndex).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
IRECISTNoTargetLesion data = new IRECISTNoTargetLesion()
|
||||||
|
{
|
||||||
|
// 基线没有非靶病灶
|
||||||
|
NotExistsNoTargetLesion = tableQuestion.Count() == 0,
|
||||||
|
|
||||||
|
// 上次非靶病灶评估结果
|
||||||
|
LastNoTargetLesion = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == noTargetQuestionId)
|
||||||
|
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
||||||
|
|
||||||
|
// 任一非靶病灶状态评估为“进一步增大(iCPD)”
|
||||||
|
ExistiCPD = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NoTargetState.ICPD)),
|
||||||
|
|
||||||
|
// 出现至少1个上一访视未评估为“显著增大(iUPD)”的病灶本次访视评估为“显著增大(iUPD)”
|
||||||
|
LastNoUPD = tableQuestion.Where(x => lastTaskNoiUPDIndexs.Contains(x.RowIndex)).SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NoTargetState.IUPD)),
|
||||||
|
|
||||||
|
// 任一非靶病灶状态评估为 iUPD
|
||||||
|
ExistiUPD = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NoTargetState.IUPD)),
|
||||||
|
|
||||||
|
// 满足RECIST1.1PD
|
||||||
|
RECISTPD = (await GetNoTargetLesionEvaluate(inDto)).EqEnum(NoTargetAssessment.PD),
|
||||||
|
|
||||||
|
// 有任一非靶病灶为NE状态
|
||||||
|
HaveNeLesion = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NoTargetState.UnableEvaluate)),
|
||||||
|
|
||||||
|
// 全部为消失
|
||||||
|
AllVanish = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var item in tableQuestion)
|
||||||
|
{
|
||||||
|
data.AllVanish = data.AllVanish && item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NoTargetState.Loss));
|
||||||
|
}
|
||||||
|
|
||||||
|
NoTargetAssessment result = NoTargetAssessment.iNN;
|
||||||
|
|
||||||
|
// if(基线没有非靶病灶)
|
||||||
|
if (data.NotExistsNoTargetLesion)
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 ND
|
||||||
|
result = NoTargetAssessment.ND;
|
||||||
|
}
|
||||||
|
// else if (上次非靶病灶评估结果为非iUPD && (任一非靶病灶状态评估为“进一步增大(iCPD)||出现至少1个上一访视未评估为“显著增大(iUPD)”的病灶本次访视评估为“显著增大(iUPD)”))
|
||||||
|
else if (!data.LastNoTargetLesion.EqEnum(NoTargetAssessment.iUPD) && (data.ExistiCPD || data.LastNoUPD))
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 iCPD
|
||||||
|
result = NoTargetAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (上次非靶病灶评估结果为非iCPD && 任一非靶病灶状态评估为“进一步增大(iCPD)”或“显著增大(iUPD)”)
|
||||||
|
else if (!data.LastNoTargetLesion.EqEnum(NoTargetAssessment.iCPD) && (data.ExistiCPD || data.ExistiUPD))
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 iCPD
|
||||||
|
result = NoTargetAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (满足RECIST1.1的PD标准 && 任一非靶病灶状态评估为“显著增大(iUPD)”)
|
||||||
|
else if (data.RECISTPD && data.ExistiUPD)
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 iUPD
|
||||||
|
result = NoTargetAssessment.iUPD;
|
||||||
|
}
|
||||||
|
// else if (有任一非靶病灶为NE状态)
|
||||||
|
else if (data.HaveNeLesion)
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 NE
|
||||||
|
result = NoTargetAssessment.NE;
|
||||||
|
}
|
||||||
|
// else if (全部非靶病灶均为“消失”状态)
|
||||||
|
else if (data.AllVanish)
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 iCR
|
||||||
|
result = NoTargetAssessment.iCR;
|
||||||
|
}
|
||||||
|
// else
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 非靶病灶疗效为 iNN
|
||||||
|
result = NoTargetAssessment.iNN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.GetEnumInt();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region IRECIST新靶病灶评估
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取新靶病灶评估
|
/// 获取IRECIST新靶病灶评估
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// if(所有新靶病灶消失或一直不存在任何新靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 ND
|
||||||
|
/// }
|
||||||
|
/// else if (上一访视新靶病灶评估为“iUPD” && 满足iSOD增加5mm)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (上一访视新靶病灶评估为“iCPD”&& 有"存在"状态的新靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (有存在状态的新靶病灶时评估为该结果)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iUPD
|
||||||
|
/// }
|
||||||
|
/// else if (至少有一个新靶病无法评估)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 NE
|
||||||
|
/// }
|
||||||
|
/// </remarks>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<string> GetNewTargetLesionEvaluate(ReadingCalculateDto inDto)
|
public async Task<string> GetNewTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
|
@ -1697,33 +1862,322 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
{
|
{
|
||||||
return TargetAssessment.NA.GetEnumInt();
|
return TargetAssessment.NA.GetEnumInt();
|
||||||
}
|
}
|
||||||
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
IRECISTNewTargetLesionDto resultData = new IRECISTNewTargetLesionDto()
|
var newTargetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewTargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
var sodQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SOD).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
IRECISTNewTargetLesionDto data = new IRECISTNewTargetLesionDto()
|
||||||
{
|
{
|
||||||
// 是否存在新靶病灶
|
// 不存在新靶病灶
|
||||||
ExistsNewTargetLesion = tableQuestion.Count() > 0,
|
NotExistsNewTargetLesion = tableQuestion.Count() == 0,
|
||||||
|
|
||||||
// 所有状态为消失
|
// 所有状态为消失
|
||||||
AllVanish = false,
|
AllVanish = true,
|
||||||
|
|
||||||
// 上一访视新靶病灶评估为“iUPD”
|
// 上一访视新靶病灶评估
|
||||||
LastTaskIsiUPD = true,
|
LastTaskNewTargetLesion = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == newTargetLesionQuestionId)
|
||||||
|
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
||||||
|
|
||||||
//SOD增加5mm以上
|
//SOD增加5mm以上
|
||||||
ISODAdd5mm = true,
|
ISODAdd5mm = await GetSODData(inDto) - (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == sodQuestionId)
|
||||||
|
.Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0() >= 5,
|
||||||
|
|
||||||
//有"存在"状态的新靶病灶
|
//有"存在"状态的新靶病灶
|
||||||
HaveExixtsState = true,
|
HaveExixtsState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist)),
|
||||||
|
|
||||||
// 至少有一个新靶病无法评估
|
// 至少有一个新靶病无法评估
|
||||||
ExixtsUnevaluableState = true,
|
ExixtsUnevaluableState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist)),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return string.Empty;
|
|
||||||
|
foreach (var item in tableQuestion)
|
||||||
|
{
|
||||||
|
data.AllVanish = data.AllVanish && item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Loss));
|
||||||
|
}
|
||||||
|
|
||||||
|
NewTargetLesionAssessment result = NewTargetLesionAssessment.NE;
|
||||||
|
|
||||||
|
// if(所有新靶病灶消失或一直不存在任何新靶病灶)
|
||||||
|
if(data.NotExistsNewTargetLesion||data.AllVanish)
|
||||||
|
{
|
||||||
|
// 疗效为 ND
|
||||||
|
result = NewTargetLesionAssessment.ND;
|
||||||
|
}
|
||||||
|
// else if (上一访视新靶病灶评估为“iUPD” && 满足iSOD增加5mm)
|
||||||
|
else if(data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iUPD)&&data.ISODAdd5mm)
|
||||||
|
{
|
||||||
|
// 疗效为 iCPD
|
||||||
|
result = NewTargetLesionAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (上一访视新靶病灶评估为“iCPD”&& 有"存在"状态的新靶病灶)
|
||||||
|
else if (data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iCPD) && data.HaveExixtsState)
|
||||||
|
{
|
||||||
|
// 疗效为 iCPD
|
||||||
|
result = NewTargetLesionAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (有存在状态的新靶病灶时评估为该结果)
|
||||||
|
else if ( data.HaveExixtsState)
|
||||||
|
{
|
||||||
|
// 疗效为 iUPD
|
||||||
|
result = NewTargetLesionAssessment.iUPD;
|
||||||
|
}
|
||||||
|
// else if (至少有一个新靶病无法评估)
|
||||||
|
else if (data.ExixtsUnevaluableState)
|
||||||
|
{
|
||||||
|
// 疗效为 NE
|
||||||
|
result = NewTargetLesionAssessment.iUPD;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.GetEnumInt();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 获取新非靶病灶评估
|
||||||
|
/// <summary>
|
||||||
|
/// 获取新非靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// if(所有新非靶病灶消失或一直不存在任何新非靶病灶时评估为该结果)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 ND
|
||||||
|
/// }
|
||||||
|
/// else if (上一访视新非靶病灶评估为“iUPD” && 满足任一新非靶病灶状态为“增大”)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (上一访视新非靶病灶评估为“iCPD”&& 有"存在"状态的新非靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iCPD
|
||||||
|
/// }
|
||||||
|
/// else if (当有存在状态的新非靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iUPD
|
||||||
|
/// }
|
||||||
|
/// else if (至少有一个新非靶病无法评估)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 NE
|
||||||
|
/// }
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetNewNoTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
|
{
|
||||||
|
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewNonTargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
|
|
||||||
|
var newTargetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewTargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
|
var newNoTargetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewNoTargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
IRECISTNewNoTargetLesionDto data = new IRECISTNewNoTargetLesionDto()
|
||||||
|
{
|
||||||
|
// 不存在新非靶病灶
|
||||||
|
NotExistsNewNoTargetLesion = tableQuestion.Count() == 0,
|
||||||
|
|
||||||
|
// 所有状态为消失
|
||||||
|
AllVanish = tableQuestion.Count() == tableQuestion.Where(x => x.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.Loss))).Count(),
|
||||||
|
|
||||||
|
// 上一访视新非靶病灶评估
|
||||||
|
LastTaskNewNoTargetLesion = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == newNoTargetLesionQuestionId)
|
||||||
|
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
||||||
|
|
||||||
|
//当前访视的新靶病灶评估
|
||||||
|
NewTargetLesion = inDto.QuestionInfo.Where(x=>x.QuestionId== newTargetLesionQuestionId).Select(x=>x.Answer).FirstIsNullReturnEmpty(),
|
||||||
|
|
||||||
|
// 任一新非靶病灶状态为“增大”
|
||||||
|
ExixtsEnlargementState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.Progression)),
|
||||||
|
|
||||||
|
// 有"存在"状态的病灶
|
||||||
|
HaveExixtsState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.Exist)),
|
||||||
|
|
||||||
|
// 至少有一个病灶无法评估
|
||||||
|
ExixtsUnevaluableState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewNoTargetLesionState.NotEvaluable)),
|
||||||
|
};
|
||||||
|
|
||||||
|
NewNoTargetLesionAssessment result = NewNoTargetLesionAssessment.NE;
|
||||||
|
|
||||||
|
// if(所有新非靶病灶消失或一直不存在任何新非靶病灶时评估为该结果)
|
||||||
|
if(data.NotExistsNewNoTargetLesion|| data.AllVanish)
|
||||||
|
{
|
||||||
|
// 疗效为 ND
|
||||||
|
result = NewNoTargetLesionAssessment.ND;
|
||||||
|
}
|
||||||
|
// else if (上一访视新非靶病灶评估为“iUPD” && 满足任一新非靶病灶状态为“增大”)
|
||||||
|
else if(data.LastTaskNewNoTargetLesion.EqEnum(NewNoTargetLesionAssessment.iUPD)&& data.ExixtsEnlargementState)
|
||||||
|
{
|
||||||
|
// 疗效为 iCPD
|
||||||
|
result = NewNoTargetLesionAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (上一访视新非靶病灶评估为“iCPD”&& 有"存在"状态的新非靶病灶)
|
||||||
|
else if (data.LastTaskNewNoTargetLesion.EqEnum(NewNoTargetLesionAssessment.iCPD) && data.HaveExixtsState)
|
||||||
|
{
|
||||||
|
// 疗效为 iCPD
|
||||||
|
result = NewNoTargetLesionAssessment.iCPD;
|
||||||
|
}
|
||||||
|
// else if (当有存在状态的新非靶病灶)
|
||||||
|
else if (data.HaveExixtsState)
|
||||||
|
{
|
||||||
|
// 疗效为 iUPD
|
||||||
|
result = NewNoTargetLesionAssessment.iUPD;
|
||||||
|
}
|
||||||
|
// else if (至少有一个新非靶病无法评估)
|
||||||
|
else if(data.ExixtsUnevaluableState)
|
||||||
|
{
|
||||||
|
// 疗效为 NE
|
||||||
|
result = NewNoTargetLesionAssessment.NE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.GetEnumInt();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 其它既往新病灶评估
|
||||||
|
/// <summary>
|
||||||
|
/// 获取其它既往新病灶评估
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// if(有其它既往新病灶消失或一直不存在任何其它既往新病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 ND
|
||||||
|
/// }
|
||||||
|
/// else if (任一病灶从非“存在”状态改为“存在”状态)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 iUPD
|
||||||
|
/// }
|
||||||
|
/// else if (至少有一个其它既往新病灶无法评估)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 NE
|
||||||
|
/// }
|
||||||
|
/// else if (至少有一个其它既往新病灶为疑似状态)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 疑似
|
||||||
|
/// }
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetOtherNewTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
|
{
|
||||||
|
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
|
|
||||||
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
|
|
||||||
|
|
||||||
|
// 找上一次任务 未被评为显著增大的非靶病灶
|
||||||
|
ReadingCalculateDto lastTaskCalculateDto = await _generalCalculateService.GetReadingCalculateDto(lastVisitTaskId);
|
||||||
|
|
||||||
|
var lastTaskNoExistIndexs = lastTaskCalculateDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList)
|
||||||
|
.Where(x => x.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && !x.Answer.EqEnum(OtherPreviousNewLesionState.Exists))).Select(x => x.RowIndex).ToList();
|
||||||
|
|
||||||
|
IRECISTOtherNewTargetLesionDto data = new IRECISTOtherNewTargetLesionDto()
|
||||||
|
{
|
||||||
|
// 不存在其他既往新病灶
|
||||||
|
NotExistsOtherNewTargetLesion = tableQuestion.Count() == 0,
|
||||||
|
|
||||||
|
// 所有状态为消失
|
||||||
|
AllVanish = tableQuestion.Count() == tableQuestion.Where(x => x.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Loss))).Count(),
|
||||||
|
|
||||||
|
// 当任一病灶从非“存在”状态改为“存在”状态
|
||||||
|
LastTaskNoExists = tableQuestion.Where(x => lastTaskNoExistIndexs.Contains(x.RowIndex)).SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Exists)),
|
||||||
|
|
||||||
|
// 至少有一个病灶无法评估
|
||||||
|
ExixtsUnevaluableState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.NotEvaluable)),
|
||||||
|
|
||||||
|
// 至少有一个其它既往新病灶为疑似状态
|
||||||
|
ExixtsSuspectedState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(OtherPreviousNewLesionState.Equivocal)),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
OtherPreviousNewLesionAssessment result = OtherPreviousNewLesionAssessment.Equivocal;
|
||||||
|
|
||||||
|
// if(有其它既往新病灶消失或一直不存在任何其它既往新病灶)
|
||||||
|
if (data.NotExistsOtherNewTargetLesion || data.AllVanish)
|
||||||
|
{
|
||||||
|
// 疗效为 ND
|
||||||
|
result = OtherPreviousNewLesionAssessment.ND;
|
||||||
|
}
|
||||||
|
// else if (任一病灶从非“存在”状态改为“存在”状态)
|
||||||
|
else if (data.LastTaskNoExists)
|
||||||
|
{
|
||||||
|
// 疗效为 iUPD
|
||||||
|
result = OtherPreviousNewLesionAssessment.iUPD;
|
||||||
|
}
|
||||||
|
// else if (至少有一个其它既往新病灶无法评估)
|
||||||
|
else if (data.ExixtsUnevaluableState)
|
||||||
|
{
|
||||||
|
// 疗效为 NE
|
||||||
|
result = OtherPreviousNewLesionAssessment.NE;
|
||||||
|
}
|
||||||
|
// else if (至少有一个其它既往新病灶为疑似状态)
|
||||||
|
else if (data.ExixtsSuspectedState)
|
||||||
|
{
|
||||||
|
// 疗效为 疑似
|
||||||
|
result = OtherPreviousNewLesionAssessment.Equivocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.GetEnumInt();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 触发iRECIST后新病灶评估
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// if现至少1个“存在”状态的触发iRECIST后新病灶)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 是
|
||||||
|
/// }
|
||||||
|
/// else if (只要有一个触发iRECIST后新病灶评估为NE)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 NE
|
||||||
|
/// }
|
||||||
|
/// else if (只要有一个触发iRECIST后新病灶评估为疑似)
|
||||||
|
/// {
|
||||||
|
/// 疗效为 疑似
|
||||||
|
/// }
|
||||||
|
/// else
|
||||||
|
/// {
|
||||||
|
/// 疗效为 否
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetNewLesionAfterTriggeringiRECSITAssessment(ReadingCalculateDto inDto)
|
||||||
|
{
|
||||||
|
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TriggeringIRECSIT).SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
|
|
||||||
|
NewLesionAfterTriggeringiRECSITAssessment result = NewLesionAfterTriggeringiRECSITAssessment.No;
|
||||||
|
|
||||||
|
// if现至少1个“存在”状态的触发iRECIST后新病灶)
|
||||||
|
if (tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Exist)))
|
||||||
|
{
|
||||||
|
// 疗效为 是
|
||||||
|
result = NewLesionAfterTriggeringiRECSITAssessment.Yes;
|
||||||
|
}
|
||||||
|
// else if (只要有一个触发iRECIST后新病灶评估为NE)
|
||||||
|
else if (tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.NotEvaluable)))
|
||||||
|
{
|
||||||
|
// 疗效为 NE
|
||||||
|
result = NewLesionAfterTriggeringiRECSITAssessment.NE;
|
||||||
|
}
|
||||||
|
// else if (只要有一个触发iRECIST后新病灶评估为疑似)
|
||||||
|
else if (tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionAfterTriggeringiRECSITState.Equivocal)))
|
||||||
|
{
|
||||||
|
// 疗效为 疑似
|
||||||
|
result = NewLesionAfterTriggeringiRECSITAssessment.Equivocal;
|
||||||
|
}
|
||||||
|
// else
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 疗效为 否
|
||||||
|
result = NewLesionAfterTriggeringiRECSITAssessment.No;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.GetEnumInt();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region 获取靶病灶评估
|
#region 获取靶病灶评估
|
||||||
|
|
|
@ -438,6 +438,106 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
Yes = 1
|
Yes = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 其他既往新病灶状态
|
||||||
|
/// </summary>
|
||||||
|
public enum OtherPreviousNewLesionState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 存在
|
||||||
|
/// </summary>
|
||||||
|
Exists = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 疑似
|
||||||
|
/// </summary>
|
||||||
|
Equivocal = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法评估
|
||||||
|
/// </summary>
|
||||||
|
NotEvaluable = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消失
|
||||||
|
/// </summary>
|
||||||
|
Loss = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 其他既往新病灶评估
|
||||||
|
/// </summary>
|
||||||
|
public enum OtherPreviousNewLesionAssessment
|
||||||
|
{
|
||||||
|
|
||||||
|
iUPD = 1,
|
||||||
|
|
||||||
|
iCPD = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 疑似
|
||||||
|
/// </summary>
|
||||||
|
Equivocal = 3,
|
||||||
|
|
||||||
|
NE = 4,
|
||||||
|
|
||||||
|
ND = 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发iRECIST后新病灶状态
|
||||||
|
/// </summary>
|
||||||
|
public enum NewLesionAfterTriggeringiRECSITState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 存在
|
||||||
|
/// </summary>
|
||||||
|
Exist=1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 疑似
|
||||||
|
/// </summary>
|
||||||
|
Equivocal=2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消失
|
||||||
|
/// </summary>
|
||||||
|
Loss =3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法评估
|
||||||
|
/// </summary>
|
||||||
|
NotEvaluable = 4,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发iRECIST后新病灶评估
|
||||||
|
/// </summary>
|
||||||
|
public enum NewLesionAfterTriggeringiRECSITAssessment
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是
|
||||||
|
/// </summary>
|
||||||
|
Yes = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 否
|
||||||
|
/// </summary>
|
||||||
|
No = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 疑似
|
||||||
|
/// </summary>
|
||||||
|
Equivocal = 3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// NE
|
||||||
|
/// </summary>
|
||||||
|
NE = 4
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 整体肿瘤评估
|
/// 整体肿瘤评估
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -598,7 +698,12 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NN = 4,
|
NN = 4,
|
||||||
|
|
||||||
|
iCR = 5,
|
||||||
|
|
||||||
|
iNN = 6,
|
||||||
|
iUPD = 7,
|
||||||
|
iCPD = 8,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1051,6 +1156,64 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
UpdateType = 3
|
UpdateType = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 新靶病灶状态
|
||||||
|
/// </summary>
|
||||||
|
public enum NewTargetLesionState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 存在
|
||||||
|
/// </summary>
|
||||||
|
Exist=1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消失
|
||||||
|
/// </summary>
|
||||||
|
Loss=2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法评估
|
||||||
|
/// </summary>
|
||||||
|
NotEvaluable=3,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 新非靶病灶状态
|
||||||
|
/// </summary>
|
||||||
|
public enum NewNoTargetLesionState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 存在
|
||||||
|
/// </summary>
|
||||||
|
Exist = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 增大
|
||||||
|
/// </summary>
|
||||||
|
Progression = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法评估
|
||||||
|
/// </summary>
|
||||||
|
NotEvaluable = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消失
|
||||||
|
/// </summary>
|
||||||
|
Loss = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 新非靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
public enum NewNoTargetLesionAssessment
|
||||||
|
{
|
||||||
|
iUPD = 1,
|
||||||
|
iCPD = 2,
|
||||||
|
NE = 3,
|
||||||
|
ND = 4,
|
||||||
|
}
|
||||||
|
|
||||||
public enum QuestionMark
|
public enum QuestionMark
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1277,6 +1440,24 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
IsConverted = 44,
|
IsConverted = 44,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 新靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
public enum NewTargetLesionAssessment
|
||||||
|
{
|
||||||
|
|
||||||
|
iUPD = 1,
|
||||||
|
|
||||||
|
|
||||||
|
iCPD = 2,
|
||||||
|
|
||||||
|
|
||||||
|
NE = 3,
|
||||||
|
|
||||||
|
|
||||||
|
ND = 4,
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 访视点肿瘤评估
|
/// 访视点肿瘤评估
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue