From a0fe1db962620949f2d9600eeb01aa446d185b40 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 25 Apr 2023 16:48:36 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=99=84=E5=8A=A0=E8=AF=84?=
=?UTF-8?q?=E4=BC=B0=E7=B1=BB=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../TrialSiteUser/DTO/TrialConfigDTO.cs | 45 ++++---
.../TrialSiteUser/TrialConfigService.cs | 120 ++++++++++++++----
2 files changed, 119 insertions(+), 46 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs
index 57c1f8329..da05ba48e 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs
@@ -126,14 +126,14 @@ namespace IRaCIS.Core.Application.Contracts
public bool? IsClinicalReading { get; set; }
-
+
public int? DigitPlaces { get; set; }
- // ////读片任务显示是否顺序
- //// public bool IsReadingTaskViewInOrder { get; set; } = false;
+ // ////读片任务显示是否顺序
+ //// public bool IsReadingTaskViewInOrder { get; set; } = false;
///
@@ -188,7 +188,7 @@ namespace IRaCIS.Core.Application.Contracts
///
public bool IsTrialProcessConfirmed { get; set; } = false;
-
+
//阅片方式
public int ReadingMode { get; set; }
@@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application.Contracts
public ArbitrationRule ArbitrationRule { get; set; }
-
+
}
@@ -230,7 +230,7 @@ namespace IRaCIS.Core.Application.Contracts
///
/// 阅片是否显示受试者信息
///
- public bool IsReadingShowSubjectInfo { get; set; }
+ public bool IsReadingShowSubjectInfo { get; set; }
///
/// 阅片是否显示既往结果
@@ -269,7 +269,7 @@ namespace IRaCIS.Core.Application.Contracts
///
/// 阅片是否显示既往结果
///
- public bool IsReadingShowPreviousResults { get; set; }
+ public bool IsReadingShowPreviousResults { get; set; }
}
public class TrialJudgeTaskConfig
@@ -302,7 +302,7 @@ namespace IRaCIS.Core.Application.Contracts
public bool IsPDProgressView { get; set; }
-
+
}
@@ -425,8 +425,10 @@ namespace IRaCIS.Core.Application.Contracts
///
public DateTime? ReadingInfoSignTime { get; set; }
- public bool IsSign {
- get {
+ public bool IsSign
+ {
+ get
+ {
return this.ReadingInfoSignTime != null;
}
}
@@ -479,6 +481,9 @@ namespace IRaCIS.Core.Application.Contracts
public bool IsAutoCreate { get; set; }
+ public List TrialCriterionAdditionalAssessmentTypeList { get; set; } = new List();
+
+
}
@@ -524,7 +529,7 @@ namespace IRaCIS.Core.Application.Contracts
public Guid CreateUserId { get; set; }
}
- public class TrialReadQuestion :ReadingQuestionTrial
+ public class TrialReadQuestion : ReadingQuestionTrial
{
///
/// 分页名称
@@ -552,11 +557,11 @@ namespace IRaCIS.Core.Application.Contracts
public int? ParentQuestionShowOrder { get; set; }
-
+
}
- public class TrialAdditionaQuestion: TrialReadQuestion
+ public class TrialAdditionaQuestion : TrialReadQuestion
{
public List Childrens { get; set; } = new List();
public string Answer { get; set; } = string.Empty;
@@ -565,7 +570,7 @@ namespace IRaCIS.Core.Application.Contracts
public class TrialJudgeQuestion
{
-
+
public Guid ReadingQuestionCriterionTrialId { get; set; }
public Guid QuestionId { get; set; }
@@ -722,7 +727,7 @@ namespace IRaCIS.Core.Application.Contracts
public string EvaluationReason { get; set; } = string.Empty;
-
+
}
public class GetGlobalReadingOutDto
@@ -771,7 +776,7 @@ namespace IRaCIS.Core.Application.Contracts
///
/// IsBaseLineUse
///
- public bool IsBaseLineUse { get; set; }
+ public bool IsBaseLineUse { get; set; }
///
/// IsBaseUse
@@ -793,7 +798,7 @@ namespace IRaCIS.Core.Application.Contracts
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
-
+
}
public class SetTrialReadingCriterionInDto
@@ -801,7 +806,7 @@ namespace IRaCIS.Core.Application.Contracts
public Guid TrialReadingCriterionId { get; set; }
-
+
///
/// 表单类型
@@ -905,7 +910,7 @@ namespace IRaCIS.Core.Application.Contracts
///
public bool IsReadingShowPreviousResults { get; set; }
-
+
///
/// 仲裁规则/对象
@@ -935,6 +940,8 @@ namespace IRaCIS.Core.Application.Contracts
///
public bool IsOncologyReading { get; set; }
+ public List TrialCriterionAdditionalAssessmentTypeList { get; set; }=new List();
+
}
public class SignConfirmDTO
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
index 9259b46b9..e2a0e7997 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
@@ -19,6 +19,7 @@ using static IRaCIS.Core.Domain.Share.StaticData;
using IRaCIS.Core.Application.Service;
using DocumentFormat.OpenXml.Office.CustomUI;
using IRaCIS.Core.Application.Service;
+using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application
{
@@ -178,8 +179,6 @@ namespace IRaCIS.Core.Application
public async Task GetCriterionReadingInfo(GetTrialReadingInfoInDto inDto)
{
-
-
GetTrialReadingInfoOutDto trialInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync();
if (trialInfo.ReadingTool == null)
@@ -187,6 +186,9 @@ namespace IRaCIS.Core.Application
trialInfo.ReadingTool = ReadingTool.Dicom;
}
+ trialInfo.TrialCriterionAdditionalAssessmentTypeList = await _trialCriterionAdditionalAssessmentTypeRepository.Where(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId).ToListAsync();
+
+
return trialInfo;
}
@@ -206,6 +208,28 @@ namespace IRaCIS.Core.Application
if (trialCriterion.SynchronizeOriginalTime == null)
{
+
+ //同步附加评估类型
+
+ if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
+ {
+ AdditionalAssessment additional = new AdditionalAssessment();
+ var addList = additional.GetSystemDefeaultAdditionalAssessmentList(trialCriterion.CriterionType);
+
+ foreach (var addItem in addList)
+ {
+ await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
+ {
+ CriterionType = trialCriterion.CriterionType,
+ TrialReadingCriterionId = inDto.TrialReadingCriterionId,
+ AdditionalAssessmentType = addItem.AdditionalAssessmentType
+ });
+ }
+ }
+
+
+
+
// 同步器官
await _iOrganInfoService.SynchronizeSystemOrganToTrial(new SynchronizeSystemOrganToTrialInDto()
{
@@ -304,11 +328,6 @@ namespace IRaCIS.Core.Application
public async Task SetGlobalReadingInfo(SetGlobalReadingInfoInDto inDto)
{
- //await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial()
- //{
- // IsGlobalReading = inDto.IsGlobalReading
-
- //});
await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess);
await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.GlobalAssessList.Select(x => new ReadingCriterionDictionary
{
@@ -506,7 +525,7 @@ namespace IRaCIS.Core.Application
if (count == 0)
{
- //---当前标准下未配置问题
+ //---当前标准下未配置问题
throw new BusinessValidationFailedException(_localizer["TrialConfig_StdConfigMissing"]);
}
}
@@ -565,24 +584,68 @@ namespace IRaCIS.Core.Application
});
- //判断是否存在附加评估,存在,就将标准对应的附加评估选项加进去
+ //判断是否存在附加评估
if (inDto.IsAdditionalAssessment)
{
- if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
- {
- AdditionalAssessment additional = new AdditionalAssessment();
- var addList = additional.GetSystemDefeaultAdditionalAssessmentList(inDto.CriterionType);
+ #region 存在,就将标准对应的附加评估选项加进去--废弃 修改到同步标准的地方去了,不管存在附加评估与否,都增加附加评估类型
+ //if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
+ //{
+ // AdditionalAssessment additional = new AdditionalAssessment();
+ // var addList = additional.GetSystemDefeaultAdditionalAssessmentList(inDto.CriterionType);
- foreach (var addItem in addList)
+ // foreach (var addItem in addList)
+ // {
+ // await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
+ // {
+ // CriterionType = inDto.CriterionType,
+ // TrialReadingCriterionId = inDto.TrialReadingCriterionId,
+ // AdditionalAssessmentType = addItem.AdditionalAssessmentType
+ // });
+ // }
+ //}
+ #endregion
+
+
+ if (inDto.TrialCriterionAdditionalAssessmentTypeList.All(t => t.IsSelected != true))
+ {
+ throw new BusinessValidationFailedException("选择了附加评估,必须勾选附加评估类型");
+ }
+
+ var trialId = _readingQuestionTrialRepository.Where(t => t.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).Select(t => t.TrialId).FirstOrDefault();
+
+
+ if (inDto.TrialCriterionAdditionalAssessmentTypeList.Count != 0)
+ {
+ foreach (var updateItem in inDto.TrialCriterionAdditionalAssessmentTypeList)
{
- await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
+ if (updateItem.IsSelected == true)
{
- CriterionType = inDto.CriterionType,
- TrialReadingCriterionId = inDto.TrialReadingCriterionId,
- AdditionalAssessmentType = addItem.AdditionalAssessmentType
- });
+ //添加默认问题
+ AdditionalAssessment additional = new AdditionalAssessment();
+ var addTypeList = additional.GetSystemDefeaultAdditionalAssessmentList(updateItem.CriterionType, updateItem.AdditionalAssessmentType);
+
+ foreach (var addType in addTypeList)
+ {
+ foreach (var question in addType.AdditionalQuestionList)
+ {
+ question.ReadingQuestionCriterionTrialId = updateItem.TrialReadingCriterionId;
+ question.TrialId = trialId;
+
+ await _readingQuestionTrialRepository.AddAsync(question);
+ }
+ }
+ }
+ else
+ {
+ //删除附加问题
+
+ await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional == true);
+ }
+
+ await _trialCriterionAdditionalAssessmentTypeRepository.UpdatePartialFromQueryAsync(updateItem.Id, t => new TrialCriterionAdditionalAssessmentType() { IsSelected = updateItem.IsSelected });
}
}
+
}
else
{
@@ -601,6 +664,7 @@ namespace IRaCIS.Core.Application
///
///
///
+ [Obsolete]
public async Task> GetTrialCriterionAdditionalAssessmentOptionList(Guid trialReadingCriterionId)
{
return await _trialCriterionAdditionalAssessmentTypeRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).ToListAsync();
@@ -612,6 +676,7 @@ namespace IRaCIS.Core.Application
///
///
///
+ [Obsolete]
public async Task SetTrialCriterionAdditionalAssessment(List updateList)
{
@@ -620,7 +685,8 @@ namespace IRaCIS.Core.Application
return ResponseOutput.Ok();
}
- var trialId= _readingQuestionTrialRepository.Where(t=>t.ReadingQuestionCriterionTrialId==updateList.First().TrialReadingCriterionId).Select(t=>t.TrialId).FirstOrDefault();
+ var trialId = _readingQuestionTrialRepository.Where(t => t.ReadingQuestionCriterionTrialId == updateList.First().TrialReadingCriterionId).Select(t => t.TrialId).FirstOrDefault();
+
foreach (var updateItem in updateList)
{
if (updateItem.IsSelected == true)
@@ -716,7 +782,7 @@ namespace IRaCIS.Core.Application
{
if (showOrderList.Count == 0)
{
- //---当前未添加影像质控审核问题。请先添加影像质控审核问题,再进行确认。
+ //---当前未添加影像质控审核问题。请先添加影像质控审核问题,再进行确认。
throw new BusinessValidationFailedException(_localizer["TrialConfig_NoImageAuditQuestion"]);
}
}
@@ -786,26 +852,26 @@ namespace IRaCIS.Core.Application
{
if (showOrderList.Count == 0)
{
- //---当前未添加影像质控审核问题。请先添加影像质控审核问题,再进行确认。
+ //---当前未添加影像质控审核问题。请先添加影像质控审核问题,再进行确认。
throw new BusinessValidationFailedException(_localizer["TrialConfig_NoImageAuditQuestion"]);
}
}
if (showOrderList.Count() != showOrderList.Select(t => t.ShowOrder).Distinct().Count())
{
- //---影像质控审核问题显示序号不能重复。
+ //---影像质控审核问题显示序号不能重复。
throw new BusinessValidationFailedException(_localizer["TrialConfig_DuplicateAuditQuestionId"]);
}
if (showOrderList.Where(t => t.ParentShowOrder != null).Any(t => t.ParentShowOrder > t.ShowOrder))
{
- //---父问题的显示序号要比子问题的显示序号小,请确认。
+ //---父问题的显示序号要比子问题的显示序号小,请确认。
throw new BusinessValidationFailedException(_localizer["TrialConfig_InvalidParentQuestionId"]);
}
if (await _trialRepository.AnyAsync(t => t.Id == signConfirmDTO.TrialId && t.QCQuestionConfirmedUserId != null && t.QCQuestionConfirmedUserId != _userInfo.Id))
{
- //---影像质控审核问题已被其他人员确认,不允许再次确认。
+ //---影像质控审核问题已被其他人员确认,不允许再次确认。
throw new BusinessValidationFailedException(_localizer["TrialConfig_AuditQuestionConfirmed"]);
}
@@ -965,7 +1031,7 @@ namespace IRaCIS.Core.Application
var canOPt = await _trialRepository.AnyAsync(trial =>
trial.Id == trialId && trial.IsTrialBasicLogicConfirmed && trial.IsTrialProcessConfirmed &&
trial.IsTrialUrgentConfirmed && trial.VisitPlanConfirmed);
- //---该项目的项目配置(基础配置、流程配置、加急配置) 、访视管理,有配置未确认,不能设置项目状态为启动。
+ //---该项目的项目配置(基础配置、流程配置、加急配置) 、访视管理,有配置未确认,不能设置项目状态为启动。
return ResponseOutput.Ok(canOPt, msg: canOPt ? "" : _localizer["TrialConfig_UnconfirmedConfiguration"]);
}
@@ -993,7 +1059,7 @@ namespace IRaCIS.Core.Application
}
else
{
- //---无法变更项目状态。该项目的项目配置、访视管理中,有未确认项
+ //---无法变更项目状态。该项目的项目配置、访视管理中,有未确认项
return ResponseOutput.NotOk(_localizer["TrialConfig_UnconfirmedUNACKD"]);
}
}