|
|
|
@@ -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.Filter;
|
|
|
|
|
using IRaCIS.Core.Application.Helper;
|
|
|
|
@@ -40,7 +41,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
IRepository<Enroll> _enrollRepository,
|
|
|
|
|
IRepository<TrialStateChange> _trialStateChangeRepository,
|
|
|
|
|
IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository,
|
|
|
|
|
IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository,
|
|
|
|
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, ITrialConfigService
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -319,7 +320,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="inDto"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> SetGlobalReadingInfo(SetGlobalReadingInfoInDto inDto)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -404,7 +405,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="inDto"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> SetOncologySet(SetOncologySetInDto inDto)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -548,7 +549,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="inDto"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> SetCriterionReadingInfo(SetCriterionReadingInfoInDto inDto)
|
|
|
|
|
{
|
|
|
|
|
ArbitrationRule arbitration = ArbitrationRule.NA;
|
|
|
|
@@ -898,7 +899,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> ConfigTrialBasicInfo(BasicTrialConfig trialConfig)
|
|
|
|
|
{
|
|
|
|
|
await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId);
|
|
|
|
@@ -906,6 +907,8 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
|
|
|
|
|
|
|
|
|
|
trialConfig.Modalitys = $"{String.Join('|', trialConfig.ModalityList)}";
|
|
|
|
|
|
|
|
|
|
trialConfig.TrialObjectNameConfigStr=JsonConvert.SerializeObject(trialConfig.TrialObjectNameList);
|
|
|
|
|
_mapper.Map(trialConfig, trialInfo);
|
|
|
|
|
trialInfo.UpdateTime = DateTime.Now;
|
|
|
|
|
|
|
|
|
@@ -923,7 +926,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task ConfigTrialProcessInfoVerification(ConfigTrialProcessInfoVerificationInDto trialConfig)
|
|
|
|
|
{
|
|
|
|
|
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>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> ConfigTrialProcessInfo(TrialProcessConfig trialConfig)
|
|
|
|
|
{
|
|
|
|
|
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>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -1113,7 +1116,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="trialConfig"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> ConfigTrialPACSInfo(TrialPACSConfig trialConfig)
|
|
|
|
|
{
|
|
|
|
|
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
|
|
|
|
@@ -1146,7 +1149,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
[HttpPut("{trialId:guid}/{trialStatusStr}/{reason?}")]
|
|
|
|
|
[UnitOfWork]
|
|
|
|
|
//[Authorize(Policy = IRaCISPolicy.PM)]
|
|
|
|
|
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> UpdateTrialState(Guid trialId, string trialStatusStr, string? reason)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -1221,7 +1224,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPut("{trialId:guid}/{isAbandon:bool}")]
|
|
|
|
|
//[Authorize(Policy = IRaCISPolicy.PM)]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -1260,7 +1263,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="trialConfig"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
//[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
public async Task<IResponseOutput> ConfigTrialTaskInfo(TrialTaskConfig trialConfig)
|
|
|
|
|
{
|
|
|
|
@@ -1278,7 +1281,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="trialConfig"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPut]
|
|
|
|
|
[TrialGlobalLimit( "BeforeOngoingCantOpt", "AfterStopCannNotOpt" )]
|
|
|
|
|
[TrialGlobalLimit("BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
|
|
|
|
|
//[TrialGlobalLimit( "AfterStopCannNotOpt" )]
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 添加更新 项目部位配置
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="incommand"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
var trialCode = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialCode).FirstOrDefaultAsync();
|
|
|
|
|