Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8

Uat_IRC_Net8
hang 2025-07-29 15:22:12 +08:00
commit 9082caa57c
3 changed files with 93 additions and 33 deletions

View File

@ -674,6 +674,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public CriterionType CriterionType { get; set; } public CriterionType CriterionType { get; set; }
} }
public class MarkAuditInfo
{
public string Param { get; set; }
public bool IsGeneralMark { get; set; }
}
public class ChangeDicomReadingQuestionAnswerInDto public class ChangeDicomReadingQuestionAnswerInDto
{ {
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }

View File

@ -1997,28 +1997,75 @@ namespace IRaCIS.Core.Application.Service
inDto.param= param; inDto.param= param;
List<MarkAuditInfo> markAuditInfos = new List<MarkAuditInfo>() {
// 自定义
new MarkAuditInfo (){Param="-10",IsGeneralMark=true },
// 保存脾尖
new MarkAuditInfo (){Param="4",IsGeneralMark=true },
// 保存脾底
new MarkAuditInfo (){Param="5",IsGeneralMark=true },
// 测量纵膈血池
new MarkAuditInfo (){Param="3",IsGeneralMark=false },
// 测量肝脏血池
new MarkAuditInfo (){Param="2",IsGeneralMark=false }
};
var markInfo= markAuditInfos.Where(x => x.Param == param).FirstOrDefault();
// 当 param == -10 时,为自定义标准 需要区分 绑定 更改 标记 // 当 param == -10 时,为自定义标准 需要区分 绑定 更改 标记
if (param == "-10") if (markInfo!=null)
{ {
// 自定义这边 移除标记 还是会传过来 不过 MeasureData 为空字符串
inDto.QuestionMarkInfoList = inDto.QuestionMarkInfoList.Where(x => x.MeasureData.IsNotNullOrEmpty()).ToList();
if (markInfo.IsGeneralMark)
var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId).ToList();
var existsMark = await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.MeasureData != string.Empty && questionMarkList.Contains(x.QuestionId));
if (!existsMark && inDto.QuestionMarkInfoList.Count(x=>x.MeasureData.IsNotNullOrEmpty()) > 0)
{ {
_userInfo.AuditIdentification = "AddMark"; // 自定义这边 移除标记 还是会传过来 不过 MeasureData 为空字符串
} inDto.QuestionMarkInfoList = inDto.QuestionMarkInfoList.Where(x => x.MeasureData.IsNotNullOrEmpty()).ToList();
else if (existsMark && inDto.QuestionMarkInfoList.Count(x => x.MeasureData.IsNotNullOrEmpty()) > 0)
{
_userInfo.AuditIdentification = "UpdateMark"; var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId).ToList();
var existsMark = await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.MeasureData != string.Empty && questionMarkList.Contains(x.QuestionId));
if (!existsMark && inDto.QuestionMarkInfoList.Count(x => x.MeasureData.IsNotNullOrEmpty()) > 0)
{
_userInfo.AuditIdentification = "AddMark";
}
else if (existsMark && inDto.QuestionMarkInfoList.Count(x => x.MeasureData.IsNotNullOrEmpty()) > 0)
{
_userInfo.AuditIdentification = "UpdateMark";
}
else
{
_userInfo.AuditIdentification = "DeleteMark";
}
} }
else else
{ {
_userInfo.AuditIdentification = "DeleteMark"; inDto.QuestionMarkInfoList = inDto.QuestionMarkInfoList.Where(x => x.OtherMeasureData.IsNotNullOrEmpty()).ToList();
var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId).ToList();
var existsMark = await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.OtherMeasureData != string.Empty && questionMarkList.Contains(x.QuestionId));
if (!existsMark && inDto.QuestionMarkInfoList.Count(x => x.OtherMeasureData.IsNotNullOrEmpty()) > 0)
{
_userInfo.AuditIdentification = "AddMark";
}
else if (existsMark && inDto.QuestionMarkInfoList.Count(x => x.OtherMeasureData.IsNotNullOrEmpty()) > 0)
{
_userInfo.AuditIdentification = "UpdateMark";
}
else
{
_userInfo.AuditIdentification = "DeleteMark";
}
} }
} }
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
@ -2132,13 +2179,13 @@ namespace IRaCIS.Core.Application.Service
var markquestionId = inDto.QuestionMarkInfoList.Select(y => (Guid?)y.QuestionId).ToList(); var markquestionId = inDto.QuestionMarkInfoList.Select(y => (Guid?)y.QuestionId).ToList();
List<Guid?> needDeleteMarkQuestonIds = inDto.Answers.Where(x => x.Answer == string.Empty).Select(x => (Guid?)x.Id).ToList(); List<Guid?> needDeleteMarkQuestonIds = inDto.Answers.Where(x => x.Answer == string.Empty).Select(x => (Guid?)x.Id).ToList();
var needDeleteMarkQuestionIds = questionList.Except(markquestionId).ToList();
switch (taskInfo.TrialReadingCriterion.CriterionType) switch (taskInfo.TrialReadingCriterion.CriterionType)
{ {
case CriterionType.SelfDefine: case CriterionType.SelfDefine:
// 先找到需要删除的 // 先找到需要删除的
var needDeleteMarkQuestionIds = questionList.Except(markquestionId).ToList();
foreach (var item in needDeleteMarkQuestionIds) foreach (var item in needDeleteMarkQuestionIds)
{ {
// 对于要删除的标记不能删除 要与问题解绑 // 对于要删除的标记不能删除 要与问题解绑
@ -2176,21 +2223,19 @@ namespace IRaCIS.Core.Application.Service
case CriterionType.Lugano2014: case CriterionType.Lugano2014:
await _readingTaskQuestionMarkRepository.BatchUpdateNoTrackingAsync(x => // 先找到需要删除的
(x.QuestionType == QuestionType.SplenicTopPosition || x.QuestionType == QuestionType.SplenicBottomPosition) &&
x.VisitTaskId == inDto.VisitTaskId && needDeleteMarkQuestonIds.Contains(x.QuestionId), x => new ReadingTaskQuestionMark() foreach (var item in needDeleteMarkQuestionIds)
{ {
PicturePath = string.Empty, // 对于要删除的标记不能删除 要与问题解绑
MeasureData = string.Empty, // 但是对于一个标记绑定多个问题的情况 相当于是要删除掉这条信息
}); var questionMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == item).FirstOrDefaultAsync();
if (questionMark != null)
{
await _readingTaskQuestionMarkRepository.DeleteAsync(questionMark);
}
await _readingTaskQuestionMarkRepository.BatchUpdateNoTrackingAsync(x => }
(x.QuestionType == QuestionType.LiverSUVmax || x.QuestionType == QuestionType.MediastinumSUVmax) &&
x.VisitTaskId == inDto.VisitTaskId && needDeleteMarkQuestonIds.Contains(x.QuestionId), x => new ReadingTaskQuestionMark()
{
OtherPicturePath = string.Empty,
OtherMeasureData = string.Empty,
});
await addOrEditmark(inDto.QuestionMarkInfoList); await addOrEditmark(inDto.QuestionMarkInfoList);

View File

@ -3368,12 +3368,14 @@ namespace IRaCIS.Core.Infra.EFCore.Common
// 这里本来就批量展示问题的 现在又需要单个展示 // 这里本来就批量展示问题的 现在又需要单个展示
var thisQuestinonAnswer = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(x => x.Entity as ReadingTaskQuestionAnswer).FirstOrDefault(); var thisQuestinonAnswer = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(x => x.Entity as ReadingTaskQuestionAnswer).FirstOrDefault();
var question = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == thisQuestinonAnswer.ReadingQuestionTrialId).FirstOrDefaultAsync();
string questionName = string.Empty; string questionName = string.Empty;
string questionAnswer = string.Empty; string questionAnswer = string.Empty;
if (thisQuestinonAnswer != null) if (thisQuestinonAnswer != null)
{ {
questionName = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == thisQuestinonAnswer.ReadingQuestionTrialId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync(); questionName = _userInfo.IsEn_Us ? question.QuestionEnName : question.QuestionName;
questionAnswer = thisQuestinonAnswer.Answer; questionAnswer = Translationunit(question.Type, question.Unit, question.CustomUnit, unitDataList, thisQuestinonAnswer.Answer) ;
} }
await InsertInspection<ReadingTaskQuestionAnswer>(cloneEntity, type, x => new InspectionConvertDTO() await InsertInspection<ReadingTaskQuestionAnswer>(cloneEntity, type, x => new InspectionConvertDTO()
@ -3429,7 +3431,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var entity = item.Entity as ReadingTableQuestionAnswer; var entity = item.Entity as ReadingTableQuestionAnswer;
var tableQuestionName = await _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync(); var tableQuestion = await _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).FirstOrDefaultAsync();
var questionName = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == entity.QuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync(); var questionName = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == entity.QuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync();
var generalId = IdentifierHelper.CreateGuid(entity.VisitTaskId.ToString(), entity.QuestionId.ToString(), entity.RowId.ToString(), entity.TableQuestionId.ToString(), "ReadingTableQuestionAnswer"); var generalId = IdentifierHelper.CreateGuid(entity.VisitTaskId.ToString(), entity.QuestionId.ToString(), entity.RowId.ToString(), entity.TableQuestionId.ToString(), "ReadingTableQuestionAnswer");
var rowMark = await _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefaultAsync(); var rowMark = await _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefaultAsync();
@ -3444,7 +3446,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
markName = mark.OrderMarkName; markName = mark.OrderMarkName;
} }
List<UnitData> unitDataList = (await _dbContext.Dictionary.Where(x => x.Parent.Code == "ValueUnit").Where(x => x.Code != "0").ToListAsync()).Select(x => new UnitData()
{
Unit = (ValueUnit)int.Parse(x.Code),
UnitName = x.Value.ToString(),
}).ToList();
await InsertInspection<ReadingTableQuestionAnswer>(entity, type, x => new InspectionConvertDTO() await InsertInspection<ReadingTableQuestionAnswer>(entity, type, x => new InspectionConvertDTO()
{ {
@ -3455,11 +3462,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}, new }, new
{ {
Answer= Translationunit(tableQuestion.Type, tableQuestion.Unit, tableQuestion.CustomUnit, unitDataList, entity.Answer),
MarkName = markName, MarkName = markName,
PicturePath = mark != null ? mark.PicturePath : string.Empty, PicturePath = mark != null ? mark.PicturePath : string.Empty,
QuestionName = questionName, QuestionName = questionName,
RowMark = rowMark, RowMark = rowMark,
TableQuestionName = tableQuestionName, TableQuestionName = _userInfo.IsEn_Us ? tableQuestion.QuestionEnName : tableQuestion.QuestionName,
}, _userInfo.AuditIdentification); }, _userInfo.AuditIdentification);
} }