Uat_Study
he 2022-10-10 15:59:09 +08:00
parent e92579781d
commit c05644ecfb
9 changed files with 108 additions and 33 deletions

View File

@ -1704,6 +1704,16 @@
序号标记 序号标记
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingReportDto.ValueType">
<summary>
数值类型
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingReportDto.Unit">
<summary>
单位
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.VistTaskTableQuestionRowInfo.OrderMark"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.VistTaskTableQuestionRowInfo.OrderMark">
<summary> <summary>
序号标记 序号标记
@ -2334,6 +2344,16 @@
问题标识 问题标识
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.ValueType">
<summary>
数值类型
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.Unit">
<summary>
单位
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum">
<summary> <summary>
阅片人是否认同 阅片人是否认同
@ -6011,9 +6031,9 @@
项目问题集合 项目问题集合
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.TrialId"> <member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.TrialReadingCriterionId">
<summary> <summary>
项目ID 项目标准ID
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.EvaluationResult"> <member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.EvaluationResult">
@ -6056,7 +6076,7 @@
修约小数点 修约小数点
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Contracts.SetCriterionReadingInfoInDto.TrialCriterionId"> <member name="P:IRaCIS.Core.Application.Contracts.SetCriterionReadingInfoInDto.TrialReadingCriterionId">
<summary> <summary>
项目标准ID 项目标准ID
</summary> </summary>
@ -6685,6 +6705,12 @@
<returns></returns> <returns></returns>
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception> <exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
</member> </member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialConfirmCriterionList(IRaCIS.Core.Application.Contracts.GetTrialConfirmCriterionListInDto)">
<summary>
获取项目已经确认的标准
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.TrialReadingInfoSign(IRaCIS.Core.Application.Contracts.TrialReadingInfoSignInDto)"> <member name="M:IRaCIS.Core.Application.TrialConfigService.TrialReadingInfoSign(IRaCIS.Core.Application.Contracts.TrialReadingInfoSignInDto)">
<summary> <summary>
阅片信息签名 阅片信息签名
@ -6692,7 +6718,7 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialReadingInfo(IRaCIS.Core.Application.Contracts.GetTrialReadingInfoInDto)"> <member name="M:IRaCIS.Core.Application.TrialConfigService.GetCriterionReadingInfo(IRaCIS.Core.Application.Contracts.GetTrialReadingInfoInDto)">
<summary> <summary>
获取项目阅片信息 获取项目阅片信息
</summary> </summary>

View File

@ -162,7 +162,7 @@ namespace IRaCIS.Core.Application.ViewModel
public class SynchronizeSystemOrganToTrialInDto public class SynchronizeSystemOrganToTrialInDto
{ {
public Guid TrialCriterionId { get; set; } public Guid TrialReadingCriterionId { get; set; }
@ -177,7 +177,9 @@ namespace IRaCIS.Core.Application.ViewModel
} }
public class GetTrialOrganListInDto public class GetTrialOrganListInDto
{ {
public Guid TrialReadingCriterionId { get; set; } public Guid? TrialReadingCriterionId { get; set; }
public Guid? VisitTaskId { get; set; }
public OrganType? OrganType { get; set; } public OrganType? OrganType { get; set; }

View File

@ -311,13 +311,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class SynchronizeCriterionInDto public class SynchronizeCriterionInDto
{ {
[NotDefault] [NotDefault]
public Guid TrialCriterionId { get; set; } public Guid TrialReadingCriterionId { get; set; }
} }
public class VerifyeCriterionNeedSynchronizeInDto public class VerifyeCriterionNeedSynchronizeInDto
{ {
[NotDefault] [NotDefault]
public Guid TrialId { get; set; } public Guid TrialReadingCriterionId { get; set; }
} }
public class GetTrialJudgyInfoInDto public class GetTrialJudgyInfoInDto
{ {

View File

@ -24,6 +24,7 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<OrganInfo> _organInfoRepository; private readonly IRepository<OrganInfo> _organInfoRepository;
private readonly IRepository<Dictionary> _dictionaryRepository; private readonly IRepository<Dictionary> _dictionaryRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<OrganTrialInfo> _organTrialInfoRepository; private readonly IRepository<OrganTrialInfo> _organTrialInfoRepository;
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrial; private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrial;
private readonly IRepository<CriterionNidus> _criterionNidusRepository; private readonly IRepository<CriterionNidus> _criterionNidusRepository;
@ -31,7 +32,7 @@ namespace IRaCIS.Core.Application.Service
public OrganInfoService( public OrganInfoService(
IRepository<OrganInfo> organInfoRepository, IRepository<OrganInfo> organInfoRepository,
IRepository<Dictionary> dictionaryRepository, IRepository<Dictionary> dictionaryRepository,
IRepository<VisitTask> visitTaskRepository,
IRepository<OrganTrialInfo> organTrialInfoRepository, IRepository<OrganTrialInfo> organTrialInfoRepository,
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrial, IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrial,
IRepository<CriterionNidus> criterionNidusRepository IRepository<CriterionNidus> criterionNidusRepository
@ -39,6 +40,7 @@ namespace IRaCIS.Core.Application.Service
{ {
_organInfoRepository = organInfoRepository; _organInfoRepository = organInfoRepository;
this._dictionaryRepository = dictionaryRepository; this._dictionaryRepository = dictionaryRepository;
this._visitTaskRepository = visitTaskRepository;
this._organTrialInfoRepository = organTrialInfoRepository; this._organTrialInfoRepository = organTrialInfoRepository;
this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; this._readingQuestionCriterionTrial = readingQuestionCriterionTrial;
this._criterionNidusRepository = criterionNidusRepository; this._criterionNidusRepository = criterionNidusRepository;
@ -233,6 +235,12 @@ namespace IRaCIS.Core.Application.Service
List<OrganType> organs = new List<OrganType>(); List<OrganType> organs = new List<OrganType>();
if (inDto.TrialReadingCriterionId == null)
{
inDto.TrialReadingCriterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync();
}
if (inDto.LesionType != null) if (inDto.LesionType != null)
{ {
var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
@ -310,7 +318,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> SynchronizeSystemOrganToTrial(SynchronizeSystemOrganToTrialInDto inDto) public async Task<IResponseOutput> SynchronizeSystemOrganToTrial(SynchronizeSystemOrganToTrialInDto inDto)
{ {
// 选中的标准进行修改 // 选中的标准进行修改
var readingQuestionCriterionTrial = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialCriterionId).FirstOrDefaultAsync(); var readingQuestionCriterionTrial = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
if (readingQuestionCriterionTrial != null) if (readingQuestionCriterionTrial != null)
{ {

View File

@ -921,11 +921,8 @@ namespace IRaCIS.Application.Services
throw new BusinessValidationFailedException("当前任务不是肿瘤学任务"); throw new BusinessValidationFailedException("当前任务不是肿瘤学任务");
} }
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == taskInfo.TrialId && x.IsConfirm).FirstOrDefaultAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id== taskInfo.TrialReadingCriterionId).FirstOrDefaultAsync();
if (trialCriterion == null)
{
throw new BusinessValidationFailedException("请先确认一个项目标准。");
}
GetOncologyReadingInfoOutDto result = new GetOncologyReadingInfoOutDto() { GetOncologyReadingInfoOutDto result = new GetOncologyReadingInfoOutDto() {
TrialEvaluationResult = trialCriterion.EvaluationResult, TrialEvaluationResult = trialCriterion.EvaluationResult,
@ -2336,9 +2333,53 @@ namespace IRaCIS.Application.Services
// 修改编号 // 修改编号
//var taskinfo var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
// 获取标准表格外层问题
var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType != null && x.ReadingTableQuestionTrialList.Any(x => x.QuestionMark == QuestionMark.AutoId))
.SelectMany(x => x.ReadingTableQuestionTrialList).Where(x => x.QuestionMark == QuestionMark.AutoId).Select(x => new
{
x.ReadingQuestionId,
TableQuestionId=x.Id,
}).ToListAsync();
var questionIds = questionList.Select(x => x.ReadingQuestionId).ToList();
var questionMarkList = await _readingQuestionTrialRepository.Where(x => questionIds.Contains(x.Id)).Select(x => new
{
QuestionId=x.Id,
x.OrderMark,
}).ToListAsync();
var rowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && questionIds.Contains(x.QuestionId)).ToListAsync();
List<ReadingTableQuestionAnswer> questionAnswerList = new List< ReadingTableQuestionAnswer >();
foreach (var item in questionList)
{
await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.QuestionId == item.ReadingQuestionId
&& x.TableQuestionId == item.TableQuestionId && x.VisitTaskId == inDto.VisitTaskId);
var orderMark= questionMarkList.Where(x=>x.QuestionId==item.ReadingQuestionId).Select(x=>x.OrderMark).FirstOrDefault();
foreach (var row in rowInfo.Where(x=>x.QuestionId== item.ReadingQuestionId))
{
questionAnswerList.Add(new ReadingTableQuestionAnswer() {
Answer= orderMark+row.RowIndex.GetLesionMark(),
Id=NewId.NextGuid(),
QuestionId= item.ReadingQuestionId,
RowId= row.Id,
RowIndex=row.RowIndex,
TableQuestionId=item.TableQuestionId,
TrialId= taskInfo.TrialId,
VisitTaskId= taskInfo.Id,
});
}
}
await _readingTableQuestionAnswerRepository.AddRangeAsync(questionAnswerList);
await _readingTableQuestionAnswerRepository.SaveChangesAsync();
await this.SubmitTaskChangeState(inDto.VisitTaskId); await this.SubmitTaskChangeState(inDto.VisitTaskId);
return ResponseOutput.Ok(true); return ResponseOutput.Ok(true);
} }

View File

@ -447,7 +447,7 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<NeedSynchronize> VerifyeCriterionNeedSynchronize(VerifyeCriterionNeedSynchronizeInDto inDto) public async Task<NeedSynchronize> VerifyeCriterionNeedSynchronize(VerifyeCriterionNeedSynchronizeInDto inDto)
{ {
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm).FirstOrDefaultAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
if (trialCriterion == null) if (trialCriterion == null)
{ {
return NeedSynchronize.NotNeed; return NeedSynchronize.NotNeed;
@ -504,7 +504,7 @@ namespace IRaCIS.Application.Services
/// <returns></returns> /// <returns></returns>
public async Task SynchronizeCriterion(SynchronizeCriterionInDto inDto) public async Task SynchronizeCriterion(SynchronizeCriterionInDto inDto)
{ {
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialCriterionId).AsNoTracking().FirstOrDefaultAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).AsNoTracking().FirstOrDefaultAsync();
if (trialCriterion != null) if (trialCriterion != null)
{ {

View File

@ -148,10 +148,7 @@ namespace IRaCIS.Core.Application
{ {
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
if (trialCriterion == null)
{
throw new BusinessValidationFailedException("请先确认一个项目标准。");
}
return new GetOncologySetOutDto return new GetOncologySetOutDto
{ {
@ -193,10 +190,7 @@ namespace IRaCIS.Core.Application
public async Task<(List<TrialJudgeQuestion>,object)> GetTrialReadingJudgeList(GetTrialReadingInfoInDto inDto) public async Task<(List<TrialJudgeQuestion>,object)> GetTrialReadingJudgeList(GetTrialReadingInfoInDto inDto)
{ {
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
if (trialCriterion == null)
{
throw new BusinessValidationFailedException("请先确认一个项目标准。");
}
var judgeQuestionList= await _readingQuestionTrialRepository var judgeQuestionList= await _readingQuestionTrialRepository
.WhereIf(trialCriterion.FormType==FormType.SinglePage,x=>x.ReadingCriterionPageId==null) .WhereIf(trialCriterion.FormType==FormType.SinglePage,x=>x.ReadingCriterionPageId==null)
.WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null) .WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null)
@ -257,7 +251,7 @@ namespace IRaCIS.Core.Application
// 同步器官 // 同步器官
await _iOrganInfoService.SynchronizeSystemOrganToTrial(new SynchronizeSystemOrganToTrialInDto() await _iOrganInfoService.SynchronizeSystemOrganToTrial(new SynchronizeSystemOrganToTrialInDto()
{ {
TrialCriterionId = inDto.TrialReadingCriterionId, TrialReadingCriterionId = inDto.TrialReadingCriterionId,
SystemCriterionId = trialCriterion.ReadingQuestionCriterionSystemId SystemCriterionId = trialCriterion.ReadingQuestionCriterionSystemId
}); });
@ -265,7 +259,7 @@ namespace IRaCIS.Core.Application
await iReadingQuestionService.SynchronizeCriterion(new SynchronizeCriterionInDto() await iReadingQuestionService.SynchronizeCriterion(new SynchronizeCriterionInDto()
{ {
TrialCriterionId = inDto.TrialReadingCriterionId, TrialReadingCriterionId = inDto.TrialReadingCriterionId,
}); });
} }
@ -539,10 +533,7 @@ namespace IRaCIS.Core.Application
return ResponseOutput.NotOk("该项目当前状态不是初始化,不允许进行该操作。"); return ResponseOutput.NotOk("该项目当前状态不是初始化,不允许进行该操作。");
} }
if (trialConfig.TrialCriterionIds.Count() > 1)
{
throw new BusinessValidationFailedException("项目最多可选择一个标准。");
}
var trialInfo = await _trialRepository.Where(t => t.Id == trialConfig.TrialId, true).Include(t => t.TrialDicList.Where(u => u.KeyName == StaticData.Criterion)).FirstOrDefaultAsync(); var trialInfo = await _trialRepository.Where(t => t.Id == trialConfig.TrialId, true).Include(t => t.TrialDicList.Where(u => u.KeyName == StaticData.Criterion)).FirstOrDefaultAsync();

View File

@ -200,6 +200,9 @@ namespace IRaCIS.Core.Domain.Models
public ReadingQuestionCriterionTrial ReadingQuestionCriterionTrial { get; set; } public ReadingQuestionCriterionTrial ReadingQuestionCriterionTrial { get; set; }
public List<ReadingTableQuestionTrial> ReadingTableQuestionTrialList { get; set; }
} }

View File

@ -156,6 +156,10 @@ namespace IRaCIS.Core.Domain.Models
[ForeignKey("DependParentId")] [ForeignKey("DependParentId")]
public ReadingTableQuestionTrial DependParentQuestion { get; set; } public ReadingTableQuestionTrial DependParentQuestion { get; set; }
[JsonIgnore]
[ForeignKey("ReadingQuestionId")]
public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
} }