Uat_Study
hang 2023-03-24 13:31:42 +08:00
commit 638de8c386
2 changed files with 84 additions and 70 deletions

View File

@ -400,6 +400,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid QuestionId { get; set; } public Guid QuestionId { get; set; }
public Guid RowId { get; set; } public Guid RowId { get; set; }
public bool IsNeedSort { get; set; } = true;
} }
public class GetDicomReadingQuestionAnswerInDto public class GetDicomReadingQuestionAnswerInDto
@ -1329,6 +1331,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid TrialReadingCriterionId { get; set; } public Guid TrialReadingCriterionId { get; set; }
public bool IsFirstChangeTask { get; set; } = false;
/// <summary>
/// 是否是转变的任务(转为IRECIST)
/// </summary>
public bool IsConvertedTask { get; set; } = false;
} }
public class GetReadingImgInDto public class GetReadingImgInDto

View File

@ -1402,96 +1402,100 @@ namespace IRaCIS.Application.Services
await _readingTableAnswerRowInfoRepository.SaveChangesAsync(); await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).Include(x => x.ReadingQuestionTrial).OrderBy(x => x.RowIndex).ToListAsync(); if (inDto.IsNeedSort)
var answerlist = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).ToListAsync();
foreach (var item in rowInfoList.Where(x => x.RowIndex % 1 == 0))
{ {
string measureDataStr = string.Empty; var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).Include(x => x.ReadingQuestionTrial).OrderBy(x => x.RowIndex).ToListAsync();
if (item.MeasureData != null && item.MeasureData != string.Empty)
var answerlist = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId, true).ToListAsync();
foreach (var item in rowInfoList.Where(x => x.RowIndex % 1 == 0))
{ {
dynamic measureData = JObject.Parse(item.MeasureData); string measureDataStr = string.Empty;
measureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index).GetLesionMark(); if (item.MeasureData != null && item.MeasureData != string.Empty)
measureDataStr = JsonConvert.SerializeObject(measureData);
}
foreach (var answerItem in answerlist.Where(x => x.RowIndex == item.RowIndex))
{
answerItem.RowIndex = index;
}
foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == item.RowIndex))
{
rowAnswerItem.RowIndex = index;
rowAnswerItem.MeasureData = measureDataStr;
}
//await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer()
//{
// RowIndex = index
//});
//await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo()
//{
// RowIndex = index,
// MeasureData = measureDataStr,
//});
var spiltList = rowInfoList.Where(x => x.RowIndex % 1 != 0 && x.RowIndex > item.RowIndex && x.RowIndex < Math.Floor(item.RowIndex + 1)).OrderBy(x => x.RowIndex).ToList();
decimal spiltindex = 0.01M;
foreach (var spiltitem in spiltList)
{
string spiltmeasureDataStr = string.Empty;
if (spiltitem.MeasureData != null && spiltitem.MeasureData != string.Empty)
{ {
dynamic spiltmeasureData = JObject.Parse(spiltitem.MeasureData); dynamic measureData = JObject.Parse(item.MeasureData);
spiltmeasureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index + spiltindex).GetLesionMark(); measureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index).GetLesionMark();
spiltmeasureDataStr = JsonConvert.SerializeObject(spiltmeasureData); measureDataStr = JsonConvert.SerializeObject(measureData);
} }
foreach (var answerItem in answerlist.Where(x => x.RowIndex == spiltitem.RowIndex))
foreach (var answerItem in answerlist.Where(x => x.RowIndex == item.RowIndex))
{ {
answerItem.RowIndex = index + spiltindex;
answerItem.RowIndex = index;
} }
foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == spiltitem.RowIndex)) foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == item.RowIndex))
{ {
rowAnswerItem.RowIndex = index + spiltindex; rowAnswerItem.RowIndex = index;
rowAnswerItem.MeasureData = spiltmeasureDataStr; rowAnswerItem.MeasureData = measureDataStr;
} }
//await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer()
//await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer()
//{ //{
// RowIndex = index + spiltindex // RowIndex = index
//});
//await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo()
//{
// RowIndex = index + spiltindex,
// MeasureData = spiltmeasureDataStr,
//}); //});
spiltindex += 0.01M; //await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == item.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo()
//{
// RowIndex = index,
// MeasureData = measureDataStr,
//});
var spiltList = rowInfoList.Where(x => x.RowIndex % 1 != 0 && x.RowIndex > item.RowIndex && x.RowIndex < Math.Floor(item.RowIndex + 1)).OrderBy(x => x.RowIndex).ToList();
decimal spiltindex = 0.01M;
foreach (var spiltitem in spiltList)
{
string spiltmeasureDataStr = string.Empty;
if (spiltitem.MeasureData != null && spiltitem.MeasureData != string.Empty)
{
dynamic spiltmeasureData = JObject.Parse(spiltitem.MeasureData);
spiltmeasureData.data.remark = item.ReadingQuestionTrial.OrderMark + ((decimal)index + spiltindex).GetLesionMark();
spiltmeasureDataStr = JsonConvert.SerializeObject(spiltmeasureData);
}
foreach (var answerItem in answerlist.Where(x => x.RowIndex == spiltitem.RowIndex))
{
answerItem.RowIndex = index + spiltindex;
}
foreach (var rowAnswerItem in rowInfoList.Where(x => x.RowIndex == spiltitem.RowIndex))
{
rowAnswerItem.RowIndex = index + spiltindex;
rowAnswerItem.MeasureData = spiltmeasureDataStr;
}
//await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableQuestionAnswer()
//{
// RowIndex = index + spiltindex
//});
//await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.RowIndex == spiltitem.RowIndex && x.QuestionId == inDto.QuestionId, x => new ReadingTableAnswerRowInfo()
//{
// RowIndex = index + spiltindex,
// MeasureData = spiltmeasureDataStr,
//});
spiltindex += 0.01M;
}
index++;
} }
index++;
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
} }
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
// 自动计算 // 自动计算
await this._readingCalculateService.CalculateTask(new CalculateTaskInDto() await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
{ {
@ -2270,7 +2274,8 @@ namespace IRaCIS.Application.Services
task.DigitPlaces = criterionInfo.DigitPlaces; task.DigitPlaces = criterionInfo.DigitPlaces;
task.CriterionType = criterionInfo.CriterionType; task.CriterionType = criterionInfo.CriterionType;
task.IseCRFShowInDicomReading = criterionInfo.IseCRFShowInDicomReading; task.IseCRFShowInDicomReading = criterionInfo.IseCRFShowInDicomReading;
task.IsFirstChangeTask = visitTaskInfo.IsConvertedTask && visitTaskInfo.BeforeConvertedTaskId != null;
task.IsConvertedTask = visitTaskInfo.IsConvertedTask;
var blindSubjectCode = await _visitTaskRepository.Where(x => x.Id == task.VisitTaskId).Select(x => x.BlindSubjectCode).FirstNotNullAsync(); var blindSubjectCode = await _visitTaskRepository.Where(x => x.Id == task.VisitTaskId).Select(x => x.BlindSubjectCode).FirstNotNullAsync();
task.SubjectCode = blindSubjectCode.IsNullOrEmpty() ? task.SubjectCode : blindSubjectCode; task.SubjectCode = blindSubjectCode.IsNullOrEmpty() ? task.SubjectCode : blindSubjectCode;
return task; return task;