项目顶级术语修改

IRC_NewDev
hang 2024-11-07 10:37:06 +08:00
parent bf0ab3411d
commit 656b1cf252
10 changed files with 18240 additions and 59 deletions

View File

@ -16877,6 +16877,35 @@
<param name="trialConfig"></param> <param name="trialConfig"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialBodyPartList(System.Guid)">
<summary>
获取项目部位配置列表
</summary>
<param name="trialId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.AddOrUpdateTrialBodyPart(IRaCIS.Core.Application.Contracts.AddOrUpdateTrialBodyPartCommand)">
<summary>
添加更新 项目部位配置
</summary>
<param name="incommand"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialExtralConfig(System.Guid)">
<summary>
获取项目额外配置
</summary>
<param name="trialId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialPacsConfigInfo(System.Guid,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemPacsConfig})">
<summary>
获取项目Pacs 配置
</summary>
<param name="trialId"></param>
<param name="optionsMonitor"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Triggers.ChallengeStateTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.ChallengeStateTrigger">
<summary> <summary>
访视 质疑状态 触发修改 访视 质疑状态 触发修改

View File

@ -4,6 +4,7 @@
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//-------------------------------------------------------------------- //--------------------------------------------------------------------
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Contracts namespace IRaCIS.Core.Application.Contracts

View File

@ -1,7 +1,9 @@
using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Reading; using IRaCIS.Core.Domain.Share.Reading;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Application.Contracts namespace IRaCIS.Core.Application.Contracts
{ {
@ -66,6 +68,10 @@ namespace IRaCIS.Core.Application.Contracts
public List<string> ModalityList { get; set; } = new List<string>(); public List<string> ModalityList { get; set; } = new List<string>();
public string TrialObjectNameConfigStr { get; set; }
public List<TrialObjectNameConfig> TrialObjectNameList { get; set; }
} }

View File

@ -236,7 +236,48 @@ namespace IRaCIS.Application.Contracts
} }
public class TrialExtraConfig
{
#region QC 影像下载
//QC质控
public bool IsSupportQCDownloadImage { get; set; } = false;
#endregion
#region 中心调研
public List<string> NotShowFieldList { get; set; } = new List<string>();
public List<SiteSurveyModifyFiled> ModifyFiledList { get; set; } = new List<SiteSurveyModifyFiled>();
#endregion
#region 项目术语配置
public List<TrialObjectNameConfig> TrialObjectNameList { get; set; }
#endregion
}
public class TrialPacsInfo
{
public int Port { get; set; }
public string Ip { get; set; }
public string TrialCalledAE { get; set; }
}
public class SiteSurveyModifyFiled
{
public string NeedModifyFiled { get; set; }
public string ReplaceContent { get; set; }
public string ReplaceContentCN { get; set; }
}

View File

@ -1,4 +1,5 @@
using IRaCIS.Application.Interfaces; using IRaCIS.Application.Contracts;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Helper;
@ -319,7 +320,7 @@ namespace IRaCIS.Core.Application
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[TrialGlobalLimit( "AfterStopCannNotOpt" )] [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> SetGlobalReadingInfo(SetGlobalReadingInfoInDto inDto) public async Task<IResponseOutput> SetGlobalReadingInfo(SetGlobalReadingInfoInDto inDto)
{ {
@ -404,7 +405,7 @@ namespace IRaCIS.Core.Application
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[TrialGlobalLimit( "AfterStopCannNotOpt" )] [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> SetOncologySet(SetOncologySetInDto inDto) public async Task<IResponseOutput> SetOncologySet(SetOncologySetInDto inDto)
{ {
@ -548,7 +549,7 @@ namespace IRaCIS.Core.Application
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[TrialGlobalLimit( "AfterStopCannNotOpt" )] [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> SetCriterionReadingInfo(SetCriterionReadingInfoInDto inDto) public async Task<IResponseOutput> SetCriterionReadingInfo(SetCriterionReadingInfoInDto inDto)
{ {
ArbitrationRule arbitration = ArbitrationRule.NA; ArbitrationRule arbitration = ArbitrationRule.NA;
@ -898,7 +899,7 @@ namespace IRaCIS.Core.Application
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
//[Authorize(Policy = IRaCISPolicy.PM_APM)] //[Authorize(Policy = IRaCISPolicy.PM_APM)]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task<IResponseOutput> ConfigTrialBasicInfo(BasicTrialConfig trialConfig) public async Task<IResponseOutput> ConfigTrialBasicInfo(BasicTrialConfig trialConfig)
{ {
await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId); await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId);
@ -906,6 +907,8 @@ namespace IRaCIS.Core.Application
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException(); var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
trialConfig.Modalitys = $"{String.Join('|', trialConfig.ModalityList)}"; trialConfig.Modalitys = $"{String.Join('|', trialConfig.ModalityList)}";
trialConfig.TrialObjectNameConfigStr=JsonConvert.SerializeObject(trialConfig.TrialObjectNameList);
_mapper.Map(trialConfig, trialInfo); _mapper.Map(trialConfig, trialInfo);
trialInfo.UpdateTime = DateTime.Now; trialInfo.UpdateTime = DateTime.Now;
@ -923,7 +926,7 @@ namespace IRaCIS.Core.Application
/// <returns></returns> /// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception> /// <exception cref="BusinessValidationFailedException"></exception>
[HttpPost] [HttpPost]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task ConfigTrialProcessInfoVerification(ConfigTrialProcessInfoVerificationInDto trialConfig) public async Task ConfigTrialProcessInfoVerification(ConfigTrialProcessInfoVerificationInDto trialConfig)
{ {
if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialState.TrialInitializing)) if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialState.TrialInitializing))
@ -950,7 +953,7 @@ namespace IRaCIS.Core.Application
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
//[Authorize(Policy = IRaCISPolicy.PM_APM)] //[Authorize(Policy = IRaCISPolicy.PM_APM)]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task<IResponseOutput> ConfigTrialProcessInfo(TrialProcessConfig trialConfig) public async Task<IResponseOutput> ConfigTrialProcessInfo(TrialProcessConfig trialConfig)
{ {
if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialState.TrialInitializing)) if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialState.TrialInitializing))
@ -1078,7 +1081,7 @@ namespace IRaCIS.Core.Application
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
//[Authorize(Policy = IRaCISPolicy.PM_APM)] //[Authorize(Policy = IRaCISPolicy.PM_APM)]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task<IResponseOutput> ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig) public async Task<IResponseOutput> ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig)
{ {
@ -1113,7 +1116,7 @@ namespace IRaCIS.Core.Application
/// <param name="trialConfig"></param> /// <param name="trialConfig"></param>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task<IResponseOutput> ConfigTrialPACSInfo(TrialPACSConfig trialConfig) public async Task<IResponseOutput> ConfigTrialPACSInfo(TrialPACSConfig trialConfig)
{ {
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException(); var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
@ -1146,7 +1149,7 @@ namespace IRaCIS.Core.Application
[HttpPut("{trialId:guid}/{trialStatusStr}/{reason?}")] [HttpPut("{trialId:guid}/{trialStatusStr}/{reason?}")]
[UnitOfWork] [UnitOfWork]
//[Authorize(Policy = IRaCISPolicy.PM)] //[Authorize(Policy = IRaCISPolicy.PM)]
[TrialGlobalLimit( "AfterStopCannNotOpt" )] [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> UpdateTrialState(Guid trialId, string trialStatusStr, string? reason) public async Task<IResponseOutput> UpdateTrialState(Guid trialId, string trialStatusStr, string? reason)
{ {
@ -1221,7 +1224,7 @@ namespace IRaCIS.Core.Application
/// <returns></returns> /// <returns></returns>
[HttpPut("{trialId:guid}/{isAbandon:bool}")] [HttpPut("{trialId:guid}/{isAbandon:bool}")]
//[Authorize(Policy = IRaCISPolicy.PM)] //[Authorize(Policy = IRaCISPolicy.PM)]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon) public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon)
{ {
@ -1260,7 +1263,7 @@ namespace IRaCIS.Core.Application
/// <param name="trialConfig"></param> /// <param name="trialConfig"></param>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
//[TrialGlobalLimit( "AfterStopCannNotOpt" )] //[TrialGlobalLimit( "AfterStopCannNotOpt" )]
public async Task<IResponseOutput> ConfigTrialTaskInfo(TrialTaskConfig trialConfig) public async Task<IResponseOutput> ConfigTrialTaskInfo(TrialTaskConfig trialConfig)
{ {
@ -1278,7 +1281,7 @@ namespace IRaCIS.Core.Application
/// <param name="trialConfig"></param> /// <param name="trialConfig"></param>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )] [TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
//[TrialGlobalLimit( "AfterStopCannNotOpt" )] //[TrialGlobalLimit( "AfterStopCannNotOpt" )]
public async Task<IResponseOutput> ConfigTrialReadingTaskViewRule(TrialReadingTaskViewConfig trialConfig) public async Task<IResponseOutput> ConfigTrialReadingTaskViewRule(TrialReadingTaskViewConfig trialConfig)
{ {
@ -1290,14 +1293,22 @@ namespace IRaCIS.Core.Application
} }
/// <summary>
/// 获取项目部位配置列表
/// </summary>
/// <param name="trialId"></param>
/// <returns></returns>
public async Task<IResponseOutput<List<TrialBodyPartView>>> GetTrialBodyPartList(Guid trialId) public async Task<IResponseOutput<List<TrialBodyPartView>>> GetTrialBodyPartList(Guid trialId)
{ {
var list = await _trialRepository.Where(t => t.Id == trialId).SelectMany(t => t.TrialBodyPartList).Select(t => new TrialBodyPartView() { Code = t.Code, Name = _userInfo.IsEn_Us ? t.Name : t.NameCN, Id = t.Id, IsHandAdd = t.IsHandAdd }).ToListAsync(); var list = await _trialRepository.Where(t => t.Id == trialId).SelectMany(t => t.TrialBodyPartList).Select(t => new TrialBodyPartView() { Code = t.Code, Name = _userInfo.IsEn_Us ? t.Name : t.NameCN, Id = t.Id, IsHandAdd = t.IsHandAdd }).ToListAsync();
return ResponseOutput.Ok(list); return ResponseOutput.Ok(list);
} }
/// <summary>
/// 添加更新 项目部位配置
/// </summary>
/// <param name="incommand"></param>
/// <returns></returns>
public async Task<IResponseOutput> AddOrUpdateTrialBodyPart(AddOrUpdateTrialBodyPartCommand incommand) public async Task<IResponseOutput> AddOrUpdateTrialBodyPart(AddOrUpdateTrialBodyPartCommand incommand)
{ {
@ -1333,13 +1344,27 @@ namespace IRaCIS.Core.Application
} }
/// <summary>
/// 获取项目额外配置
/// </summary>
/// <param name="trialId"></param>
/// <returns></returns>
public async Task<TrialExtraConfig> GetTrialExtralConfig(Guid trialId) public async Task<TrialExtraConfig> GetTrialExtralConfig(Guid trialId)
{ {
var extralConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty; var extralObj = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.TrialExtraConfigJsonStr, t.TrialObjectNameConfigStr }).FirstOrDefault();
return JsonConvert.DeserializeObject<TrialExtraConfig>(extralConfig) ?? new TrialExtraConfig(); var extralConfig = JsonConvert.DeserializeObject<TrialExtraConfig>(extralObj?.TrialExtraConfigJsonStr) ?? new TrialExtraConfig();
extralConfig.TrialObjectNameList = JsonConvert.DeserializeObject<List<TrialObjectNameConfig>>(extralObj?.TrialObjectNameConfigStr) ?? new List<TrialObjectNameConfig>();
return extralConfig;
} }
/// <summary>
/// 获取项目Pacs 配置
/// </summary>
/// <param name="trialId"></param>
/// <param name="optionsMonitor"></param>
/// <returns></returns>
public async Task<TrialPacsInfo> GetTrialPacsConfigInfo(Guid trialId, [FromServices] IOptionsMonitor<SystemPacsConfig> optionsMonitor) public async Task<TrialPacsInfo> GetTrialPacsConfigInfo(Guid trialId, [FromServices] IOptionsMonitor<SystemPacsConfig> optionsMonitor)
{ {
var trialCode = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialCode).FirstOrDefaultAsync(); var trialCode = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialCode).FirstOrDefaultAsync();

View File

@ -41,46 +41,7 @@ namespace IRaCIS.Core.Domain.Share
} }
public class TrialExtraConfig
{
#region MyRegion
//QC质控
public bool IsSupportQCDownloadImage { get; set; } = false;
#endregion
#region 中心调研
public List<string> NotShowFieldList { get; set; } = new List<string>();
public List<SiteSurveyModifyFiled> ModifyFiledList { get; set; } = new List<SiteSurveyModifyFiled>();
#endregion
}
public class TrialPacsInfo
{
public int Port { get; set; }
public string Ip { get; set; }
public string TrialCalledAE { get; set; }
}
public class SiteSurveyModifyFiled
{
public string NeedModifyFiled { get; set; }
public string ReplaceContent { get; set; }
public string ReplaceContentCN { get; set; }
}
public enum DeclarationType public enum DeclarationType
{ {

View File

@ -258,4 +258,19 @@ public partial class Trial : BaseFullDeleteAuditEntity
public bool IsPACSConnect { get; set; } public bool IsPACSConnect { get; set; }
public bool IsTrialPACSConfirmed { get; set; } public bool IsTrialPACSConfirmed { get; set; }
[Comment("项目术语配置Json字符串")]
[StringLength(1000)]
public string TrialObjectNameConfigStr { get; set; }
[NotMapped]
public List<TrialObjectNameConfig> TrialObjectNameList => JsonConvert.DeserializeObject<List<TrialObjectNameConfig>>(TrialObjectNameConfigStr) ?? new List<TrialObjectNameConfig>();
}
public class TrialObjectNameConfig
{
public string Name { get; set; }
public string TrialName { get; set; }
} }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Infra.EFCore.Migrations
{
/// <inheritdoc />
public partial class TrialConfigAddTrialName : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "TrialObjectNameConfigStr",
table: "Trial",
type: "nvarchar(1000)",
maxLength: 1000,
nullable: false,
defaultValue: "",
comment: "项目术语配置Json字符串");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "TrialObjectNameConfigStr",
table: "Trial");
}
}
}

View File

@ -10407,6 +10407,12 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
b.Property<DateTime?>("TrialFinishedTime") b.Property<DateTime?>("TrialFinishedTime")
.HasColumnType("datetime2"); .HasColumnType("datetime2");
b.Property<string>("TrialObjectNameConfigStr")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)")
.HasComment("项目术语配置Json字符串");
b.Property<string>("TrialStatusStr") b.Property<string>("TrialStatusStr")
.IsRequired() .IsRequired()
.HasMaxLength(400) .HasMaxLength(400)