病灶合并
parent
8b86bc6b3f
commit
df187bed58
|
@ -323,12 +323,24 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public Guid QuestionId { get; set; }
|
public Guid QuestionId { get; set; }
|
||||||
|
|
||||||
public Guid MainRowId { get; set; }
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 融合的病灶
|
||||||
|
/// </summary>
|
||||||
public Guid MergeRowId { get; set; }
|
public Guid MergeRowId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 融向的病灶
|
||||||
|
/// </summary>
|
||||||
|
public List<Guid> MeltingInToLesionList { get; set; }
|
||||||
|
|
||||||
}
|
/// <summary>
|
||||||
|
/// 融合后病灶状态
|
||||||
|
/// </summary>
|
||||||
|
public string LesionState { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public class SplitLesionInDto
|
public class SplitLesionInDto
|
||||||
{
|
{
|
||||||
|
|
|
@ -1467,52 +1467,21 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
await VerifyTaskIsSign(inDto.VisitTaskId);
|
await VerifyTaskIsSign(inDto.VisitTaskId);
|
||||||
await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
|
await this.VerifyIsBaseLineTask(inDto.VisitTaskId);
|
||||||
|
var mergeRow =await _readingTableAnswerRowInfoRepository.Where(x => x.Id == inDto.MergeRowId).FirstNotNullAsync();
|
||||||
var rowsInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.Id == inDto.MainRowId || x.Id == inDto.MergeRowId)).ToListAsync();
|
if (inDto.LesionState != string.Empty)
|
||||||
|
|
||||||
if (rowsInfo.Count != 2)
|
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException(_localizer["ReadingImage_NotaTask"]);
|
await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeRow.Id && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State, x => new ReadingTableQuestionAnswer()
|
||||||
}
|
{
|
||||||
|
Answer = inDto.LesionState,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(inDto.MergeRowId, x => new ReadingTableAnswerRowInfo()
|
||||||
var minaid = rowsInfo.Where(x => x.Id == inDto.MainRowId).Select(x => x.Id).FirstOrDefault();
|
|
||||||
var mergeid = rowsInfo.Where(x => x.Id == inDto.MergeRowId).Select(x => x.Id).FirstOrDefault();
|
|
||||||
|
|
||||||
List<QuestionMark?> needRemoveMark = new List<QuestionMark?>()
|
|
||||||
{
|
{
|
||||||
QuestionMark.MajorAxis,
|
MeltingInToLesion=JsonConvert.SerializeObject(inDto.MeltingInToLesionList),
|
||||||
QuestionMark.ShortAxis,
|
|
||||||
};
|
|
||||||
|
|
||||||
var mainAnswer = await _readingTableQuestionAnswerRepository.Where(x => x.RowId == minaid).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
|
|
||||||
|
|
||||||
foreach (var item in mainAnswer)
|
|
||||||
{
|
|
||||||
await _readingTableQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.RowId == mergeid && x.TableQuestionId == item.TableQuestionId, x => new ReadingTableQuestionAnswer()
|
|
||||||
{
|
|
||||||
Answer = needRemoveMark.Contains(item.ReadingTableQuestionTrial.QuestionMark) ? string.Empty : item.Answer,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo()
|
|
||||||
{
|
|
||||||
MergeRowId = minaid,
|
|
||||||
SplitOrMergeType = SplitOrMergeType.Merge,
|
SplitOrMergeType = SplitOrMergeType.Merge,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(mergeid, x => new ReadingTableAnswerRowInfo()
|
|
||||||
{
|
|
||||||
MergeRowId = minaid,
|
|
||||||
SplitOrMergeType = SplitOrMergeType.Merge,
|
|
||||||
});
|
|
||||||
|
|
||||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1545,6 +1514,7 @@ namespace IRaCIS.Application.Services
|
||||||
var result = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == rowinfo.VisitTaskId && x.QuestionId == rowinfo.QuestionId && x.Id != rowinfo.Id)
|
var result = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == rowinfo.VisitTaskId && x.QuestionId == rowinfo.QuestionId && x.Id != rowinfo.Id)
|
||||||
// 筛选状态
|
// 筛选状态
|
||||||
.Where(x => x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && !needFilterState.Contains(y.Answer)))
|
.Where(x => x.LesionAnswerList.Any(y => y.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && !needFilterState.Contains(y.Answer)))
|
||||||
|
.Where(x=>x.SplitOrMergeType!=SplitOrMergeType.Split&&x.SplitOrMergeType!=SplitOrMergeType.SplitMain)
|
||||||
.Select(x => new GetCanMergeLesionOutDto()
|
.Select(x => new GetCanMergeLesionOutDto()
|
||||||
{
|
{
|
||||||
RowId = x.Id,
|
RowId = x.Id,
|
||||||
|
|
|
@ -207,6 +207,24 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string MarkTool { get; set; } = string.Empty;
|
public string MarkTool { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 融向的病灶
|
||||||
|
/// </summary>
|
||||||
|
public string MeltingInToLesion { get; set; } = "[]";
|
||||||
|
|
||||||
|
public List<Guid> MeltingInToLesionList { get {
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject<List<Guid>>(this.MeltingInToLesion);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return new List<Guid>();
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("VisitTaskId")]
|
[ForeignKey("VisitTaskId")]
|
||||||
|
|
Loading…
Reference in New Issue