新增项目
parent
76be637e50
commit
0b5d41c8b7
|
@ -11,6 +11,7 @@ using IRaCIS.Application.Services;
|
||||||
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
|
||||||
namespace IRaCIS.Core.API.Controllers.Special
|
namespace IRaCIS.Core.API.Controllers.Special
|
||||||
{
|
{
|
||||||
|
@ -43,7 +44,10 @@ namespace IRaCIS.Core.API.Controllers.Special
|
||||||
|
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrialInspection(DataInspectionDto<TrialCommand> opt)
|
public async Task<IResponseOutput> AddOrUpdateTrialInspection(DataInspectionDto<TrialCommand> opt)
|
||||||
{
|
{
|
||||||
var fun = AddOrUpdateTrial;
|
var fun =await AddOrUpdateTrial(opt.OptCommand);
|
||||||
|
opt.AuditInfo.TrialId = fun.Data.Id;
|
||||||
|
opt.AuditInfo.TrialName = fun.Data.ExperimentName;
|
||||||
|
opt.AuditInfo.ResearchProgramNo = fun.Data.ResearchProgramNo;
|
||||||
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
|
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +57,7 @@ namespace IRaCIS.Core.API.Controllers.Special
|
||||||
/// <returns>新记录Id</returns>
|
/// <returns>新记录Id</returns>
|
||||||
[HttpPost, Route("trial/addOrUpdateTrial")]
|
[HttpPost, Route("trial/addOrUpdateTrial")]
|
||||||
|
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrial(TrialCommand param)
|
public async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand param)
|
||||||
{
|
{
|
||||||
var userId = Guid.Parse(User.FindFirst("id").Value);
|
var userId = Guid.Parse(User.FindFirst("id").Value);
|
||||||
var result = await _trialService.AddOrUpdateTrial(param);
|
var result = await _trialService.AddOrUpdateTrial(param);
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
ITrialDocumentService trialDocumentService,
|
ITrialDocumentService trialDocumentService,
|
||||||
IRepository<DataInspection> dataInspectionRepository,
|
IRepository<DataInspection> dataInspectionRepository,
|
||||||
IQCListService _qCListService,
|
IQCListService _qCListService,
|
||||||
IHttpContextAccessor httpContext,
|
IHttpContextAccessor httpContext,
|
||||||
IInspectionService sinspectionService,
|
IInspectionService sinspectionService,
|
||||||
ITrialConfigService _trialConfigService,
|
ITrialConfigService _trialConfigService,
|
||||||
INoneDicomStudyService noneDicomStudyService,
|
INoneDicomStudyService noneDicomStudyService,
|
||||||
|
|
|
@ -114,6 +114,9 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
|
||||||
|
|
||||||
public bool NeedSava { get; set; } = true;
|
public bool NeedSava { get; set; } = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
|
||||||
{
|
{
|
||||||
bool TrialExpeditedChange { get; set; }
|
bool TrialExpeditedChange { get; set; }
|
||||||
|
|
||||||
Task<IResponseOutput> AddOrUpdateTrial(TrialCommand trialAddModel);
|
Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel);
|
||||||
|
|
||||||
Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId, bool confirmOrCancel = true);
|
Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId, bool confirmOrCancel = true);
|
||||||
Task<IResponseOutput> DeleteTrial(Guid trialId);
|
Task<IResponseOutput> DeleteTrial(Guid trialId);
|
||||||
|
|
|
@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Panda.DynamicWebApi.Attributes;
|
using Panda.DynamicWebApi.Attributes;
|
||||||
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -128,21 +129,22 @@ namespace IRaCIS.Application.Services
|
||||||
/// <param name="trialAddModel"></param>
|
/// <param name="trialAddModel"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonDynamicMethod]
|
[NonDynamicMethod]
|
||||||
public virtual async Task<IResponseOutput> AddOrUpdateTrial(TrialCommand trialAddModel)
|
public virtual async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// 到时候 策略授权 统一改 归类
|
// 到时候 策略授权 统一改 归类
|
||||||
if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin))
|
if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("仅PM/APM可以操作!");
|
throw new BusinessValidationFailedException("仅PM/APM可以操作!");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
|
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
|
||||||
{
|
{
|
||||||
if (await _trialRepository.AnyAsync(u => u.TrialCode == trialAddModel.TrialCode))
|
if (await _trialRepository.AnyAsync(u => u.TrialCode == trialAddModel.TrialCode))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("Same Trial ID already exists.");
|
throw new BusinessValidationFailedException("Same Trial ID already exists.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var dbMaxCode = await _trialRepository.Where(t => t.CreateTime.Year == DateTime.Now.Year && t.TrialType == trialAddModel.TrialType).Select(t => t.Code).DefaultIfEmpty().MaxAsync();
|
var dbMaxCode = await _trialRepository.Where(t => t.CreateTime.Year == DateTime.Now.Year && t.TrialType == trialAddModel.TrialType).Select(t => t.Code).DefaultIfEmpty().MaxAsync();
|
||||||
|
@ -171,7 +173,7 @@ namespace IRaCIS.Application.Services
|
||||||
//状态变更详细表
|
//状态变更详细表
|
||||||
trial.ClinicalTrialProjectDetails.Add(new TrialStatusDetail() { TrialId = trial.Id, TrialStatus = (int)TrialEnrollStatus.ChooseDoctor });
|
trial.ClinicalTrialProjectDetails.Add(new TrialStatusDetail() { TrialId = trial.Id, TrialStatus = (int)TrialEnrollStatus.ChooseDoctor });
|
||||||
|
|
||||||
trial = await _repository.AddAsync(trial);
|
trial = await _trialRepository.AddAsync(trial);
|
||||||
|
|
||||||
//如果是PM, 则需要将该人员添加到 运维人员表
|
//如果是PM, 则需要将该人员添加到 运维人员表
|
||||||
//添加运维人员PM
|
//添加运维人员PM
|
||||||
|
@ -189,7 +191,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
_provider.Set(trial.Id.ToString(), StaticData.TrialInitializing, TimeSpan.FromDays(7));
|
_provider.Set(trial.Id.ToString(), StaticData.TrialInitializing, TimeSpan.FromDays(7));
|
||||||
|
|
||||||
return ResponseOutput.Result(success, new { Id = trial.Id, TrialCode = trial.TrialCode });
|
return ResponseOutput.Ok(trial);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -197,13 +199,13 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
if (!await _repository.AnyAsync<Trial>(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialInitializing || u.TrialStatusStr == StaticData.TrialOngoing)))
|
if (!await _repository.AnyAsync<Trial>(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialInitializing || u.TrialStatusStr == StaticData.TrialOngoing)))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("项目初始化或者进行中时 才允许操作");
|
throw new BusinessValidationFailedException("项目初始化或者进行中时 才允许操作");
|
||||||
|
|
||||||
}
|
}
|
||||||
// 判断项目Id 是否已经存在
|
// 判断项目Id 是否已经存在
|
||||||
if (await _repository.AnyAsync<Trial>(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id))
|
if (await _repository.AnyAsync<Trial>(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("Same Trial ID already exists.");
|
throw new BusinessValidationFailedException("Same Trial ID already exists.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -229,8 +231,8 @@ namespace IRaCIS.Application.Services
|
||||||
_mapper.Map(updateModel, trial);
|
_mapper.Map(updateModel, trial);
|
||||||
|
|
||||||
var success = await _repository.SaveChangesAsync();
|
var success = await _repository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok(trial);
|
||||||
return ResponseOutput.Result(success);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -675,7 +675,24 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
{
|
{
|
||||||
List<DataInspection> datas = new List<DataInspection>();
|
List<DataInspection> datas = new List<DataInspection>();
|
||||||
|
|
||||||
var createtime = DateTime.Now.AddSeconds(1);
|
var createtime = DateTime.Now.AddMilliseconds(200);
|
||||||
|
|
||||||
|
// 项目
|
||||||
|
if (typeof(TEntity) == typeof(Trial))
|
||||||
|
{
|
||||||
|
Trial data = entity as Trial;
|
||||||
|
datas.Add(new DataInspection()
|
||||||
|
{
|
||||||
|
TrialId = data.Id,
|
||||||
|
SubjectId = data.Id,
|
||||||
|
TrialName=data.ExperimentName,
|
||||||
|
ResearchProgramNo=data.ResearchProgramNo,
|
||||||
|
IsSign = false,
|
||||||
|
CreateTime = createtime,
|
||||||
|
Identification = "Init|Trial|Status|Trial Setting-Infomation", // 初始化项目
|
||||||
|
JsonDetail = entity.ToJcJson()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 受试者
|
// 受试者
|
||||||
if (typeof(TEntity) == typeof(Subject))
|
if (typeof(TEntity) == typeof(Subject))
|
||||||
|
@ -687,6 +704,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
SiteId = data.SiteId,
|
SiteId = data.SiteId,
|
||||||
SubjectId = data.Id,
|
SubjectId = data.Id,
|
||||||
SubjectCode = data.Code,
|
SubjectCode = data.Code,
|
||||||
|
|
||||||
IsSign = false,
|
IsSign = false,
|
||||||
CreateTime = createtime,
|
CreateTime = createtime,
|
||||||
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
|
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
|
||||||
|
@ -874,7 +892,12 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
#region 项目名称
|
#region 项目名称
|
||||||
|
|
||||||
var trialdata = await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == Data.TrialId);
|
var trialdata = await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == Data.TrialId);
|
||||||
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
|
if (IsNullOrEmpty(Data.ResearchProgramNo))
|
||||||
|
{
|
||||||
|
|
||||||
|
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
|
||||||
|
}
|
||||||
|
|
||||||
if (IsNullOrEmpty(Data.TrialName))
|
if (IsNullOrEmpty(Data.TrialName))
|
||||||
{
|
{
|
||||||
Data.TrialName = trialdata?.ExperimentName;
|
Data.TrialName = trialdata?.ExperimentName;
|
||||||
|
|
Loading…
Reference in New Issue