病灶合并

IRC_NewDev
he 2024-02-20 14:28:52 +08:00
parent 8b86bc6b3f
commit df187bed58
3 changed files with 44 additions and 44 deletions

View File

@ -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
{ {

View File

@ -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,

View File

@ -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")]