Uat_Study
parent
79c7dc7c48
commit
04b98e6e72
|
@ -38,8 +38,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 项目iD
|
/// 项目iD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public Guid? TrialId { get; set; }
|
||||||
public Guid TrialId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 中心
|
/// 中心
|
||||||
|
|
|
@ -17,6 +17,82 @@ namespace IRaCIS.Core.Infra.EFCore.Dto
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 稽查数据
|
||||||
|
/// </summary>
|
||||||
|
public class InspectionData
|
||||||
|
{
|
||||||
|
public dynamic Data { get; set; }
|
||||||
|
|
||||||
|
public InspectionGeneralData Inspection { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 稽查外层数据
|
||||||
|
/// </summary>
|
||||||
|
public class InspectionGeneralData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 项目iD
|
||||||
|
/// </summary>
|
||||||
|
public Guid? TrialId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 中心
|
||||||
|
/// </summary>
|
||||||
|
public Guid? SiteId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 受试者
|
||||||
|
/// </summary>
|
||||||
|
public Guid? SubjectId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 访视
|
||||||
|
/// </summary>
|
||||||
|
public Guid? SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建人名称
|
||||||
|
/// </summary>
|
||||||
|
public string CreateUserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 项目名称
|
||||||
|
/// </summary>
|
||||||
|
public string TrialName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 中心名称
|
||||||
|
/// </summary>
|
||||||
|
public string SiteName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 受试者名称
|
||||||
|
/// </summary>
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 访视名称
|
||||||
|
/// </summary>
|
||||||
|
public string SubjectVisitName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 角色名称
|
||||||
|
/// </summary>
|
||||||
|
public string RoleName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 中心Code
|
||||||
|
/// </summary>
|
||||||
|
public string SiteCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 项目编码
|
||||||
|
/// </summary>
|
||||||
|
public string ResearchProgramNo { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class SetInspectionEnum
|
public class SetInspectionEnum
|
||||||
{
|
{
|
||||||
public string Identification { get; set; }
|
public string Identification { get; set; }
|
||||||
|
|
|
@ -770,19 +770,24 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
/// 添加稽查记录
|
/// 添加稽查记录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="entity">实体</param>
|
/// <param name="entity">实体</param>
|
||||||
/// <param name="isSaveAudit"></param>
|
/// <param name="isSaveAudit">是否保存</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task AddInspectionAsync(TEntity entity, bool isSaveAudit = false)
|
private async Task AddInspectionAsync(TEntity entity, bool isSaveAudit = false)
|
||||||
{
|
{
|
||||||
List<DataInspection> datas = new List<DataInspection>();
|
bool needsave = true;
|
||||||
|
DataInspection inspectionData = new DataInspection() {
|
||||||
|
Identification = $"{GetRequestUrl()}/{ typeof(TEntity).ToString().Substring(typeof(TEntity).ToString().LastIndexOf('.') + 1)}/Add",
|
||||||
|
};
|
||||||
|
|
||||||
var createtime = DateTime.Now.AddMilliseconds(200);
|
|
||||||
|
|
||||||
|
MapData(entity, inspectionData);
|
||||||
|
|
||||||
|
var createtime = DateTime.Now;
|
||||||
// 项目
|
// 项目
|
||||||
if (typeof(TEntity) == typeof(Trial))
|
if (typeof(TEntity) == typeof(Trial))
|
||||||
{
|
{
|
||||||
Trial data = entity as Trial;
|
Trial data = entity as Trial;
|
||||||
datas.Add(new DataInspection()
|
inspectionData = new DataInspection()
|
||||||
{
|
{
|
||||||
TrialId = data.Id,
|
TrialId = data.Id,
|
||||||
SubjectId = data.Id,
|
SubjectId = data.Id,
|
||||||
|
@ -792,17 +797,18 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
CreateTime = createtime,
|
CreateTime = createtime,
|
||||||
Identification = "Init|Trial|Status|Trial Setting-Infomation", // 初始化项目
|
Identification = "Init|Trial|Status|Trial Setting-Infomation", // 初始化项目
|
||||||
JsonDetail = entity.ToJcJson()
|
JsonDetail = entity.ToJcJson()
|
||||||
});
|
};
|
||||||
|
}
|
||||||
|
// 项目人员
|
||||||
|
else if (typeof(TEntity) == typeof(TrialUser))
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 受试者
|
// 受试者
|
||||||
if (typeof(TEntity) == typeof(Subject))
|
else if (typeof(TEntity) == typeof(Subject))
|
||||||
{
|
{
|
||||||
Subject data = entity as Subject;
|
Subject data = entity as Subject;
|
||||||
datas.Add(new DataInspection()
|
inspectionData = new DataInspection()
|
||||||
{
|
{
|
||||||
TrialId = data.TrialId,
|
TrialId = data.TrialId,
|
||||||
SiteId = data.SiteId,
|
SiteId = data.SiteId,
|
||||||
|
@ -812,9 +818,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
CreateTime = createtime,
|
CreateTime = createtime,
|
||||||
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
|
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
|
||||||
JsonDetail = entity.ToJcJson()
|
JsonDetail = entity.ToJcJson()
|
||||||
});
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dicom序列 // 移动不进来
|
// Dicom序列 // 移动不进来
|
||||||
|
@ -857,6 +861,10 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
var subjectVisitId = await _dbContext.NoneDicomStudy.Where(x => x.Id == data.NoneDicomStudyId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
|
var subjectVisitId = await _dbContext.NoneDicomStudy.Where(x => x.Id == data.NoneDicomStudyId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
|
||||||
await UpdateSubjectVisit(subjectVisitId, SubmitStateEnum.ToSubmit, "上传非Dicom影像");
|
await UpdateSubjectVisit(subjectVisitId, SubmitStateEnum.ToSubmit, "上传非Dicom影像");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
needsave = false;
|
||||||
|
}
|
||||||
|
|
||||||
// 修改访视状态记录稽查
|
// 修改访视状态记录稽查
|
||||||
async Task UpdateSubjectVisit(Guid subvisitVisit, SubmitStateEnum submit, string reason)
|
async Task UpdateSubjectVisit(Guid subvisitVisit, SubmitStateEnum submit, string reason)
|
||||||
|
@ -866,7 +874,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
{
|
{
|
||||||
subjectvisit.SubmitState = submit;
|
subjectvisit.SubmitState = submit;
|
||||||
|
|
||||||
datas.Add(new DataInspection()
|
inspectionData = new DataInspection()
|
||||||
{
|
{
|
||||||
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
|
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
|
||||||
TrialId = subjectvisit.TrialId,
|
TrialId = subjectvisit.TrialId,
|
||||||
|
@ -876,15 +884,110 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
Reason = reason,
|
Reason = reason,
|
||||||
CreateTime = createtime.AddMilliseconds(100),
|
CreateTime = createtime.AddMilliseconds(100),
|
||||||
JsonDetail = subjectvisit.ToJcJson(),
|
JsonDetail = subjectvisit.ToJcJson(),
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
await AddListInspectionRecordAsync(datas);
|
if (needsave)
|
||||||
|
{
|
||||||
|
await AddInspectionRecordAsync(inspectionData, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取URl参数
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
private string GetRequestUrl()
|
||||||
|
{
|
||||||
|
return _userInfo.RequestUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 映射数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <param name="mapData">要赋值的对象</param>
|
||||||
|
private void MapData(dynamic data, dynamic mapData)
|
||||||
|
{
|
||||||
|
List<string> column = new List<string>() { "TrialId", "SiteId", "SubjectId", "SubjectVisitId", "CreateUserName", "TrialName", "SiteName", "SubjectCode", "SubjectVisitName", "RoleName", "SiteCode", "ResearchProgramNo" };
|
||||||
|
foreach (var item in column)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var i = mapData.GetType().GetProperty(item).GetValue(mapData);
|
||||||
|
if (i == null)
|
||||||
|
{
|
||||||
|
var value = data.GetType().GetProperty(item).GetValue(data);
|
||||||
|
mapData.GetType().GetProperty(item).SetValue(mapData, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加稽查记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="add">稽查数据</param>
|
||||||
|
/// <param name="data">实体信息</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task AddInspectionRecordAsync(DataInspection add, dynamic data)
|
||||||
|
{
|
||||||
|
InspectionGeneralData generalData = new InspectionGeneralData();
|
||||||
|
MapData(add, generalData);
|
||||||
|
await SetInspectionNameValue(generalData);
|
||||||
|
#region 处理标识
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var from = await _dbContext.FrontAuditConfig.FirstOrDefaultAsync(x => x.Identification == add.Identification);
|
||||||
|
add.ObjectType = from?.ObjectTypeId;
|
||||||
|
add.OptType = from?.OptTypeId;
|
||||||
|
add.ChildrenType = from?.ChildrenTypeId;
|
||||||
|
add.ModuleType = from?.ModuleTypeId;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw new BusinessValidationFailedException("操作标识异常");
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
if (add.ParentId == null)
|
||||||
|
{
|
||||||
|
add.ParentId = (await _dbContext.DataInspection.AsQueryable().Where(x => x.TrialId == add.TrialId && x.SubjectVisitId == add.SubjectVisitId && x.SubjectId == add.SubjectId && x.SiteId == add.SiteId && x.ChildrenType == add.ChildrenType && x.ObjectType == add.ObjectType && x.VisitStageId == add.VisitStageId && x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
|
||||||
|
|
||||||
|
}
|
||||||
|
add.CreateUserId = _userInfo.Id;
|
||||||
|
add.IP = _userInfo.IP;
|
||||||
|
if (add.CreateTime == default(DateTime))
|
||||||
|
{
|
||||||
|
add.CreateTime = DateTime.Now;
|
||||||
|
}
|
||||||
|
var inspectionData = new InspectionData()
|
||||||
|
{
|
||||||
|
Data = data,
|
||||||
|
Inspection = generalData
|
||||||
|
};
|
||||||
|
|
||||||
|
add.JsonDetail = inspectionData.ToJcJson();
|
||||||
|
await SetDataInspectionDateType(add);
|
||||||
|
|
||||||
|
await _dbContext.DataInspection.AddAsync(add);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加稽查记录
|
/// 添加稽查记录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1099,6 +1202,77 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置项目以及名称
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task SetInspectionNameValue(InspectionGeneralData Data)
|
||||||
|
{
|
||||||
|
#region 项目名称
|
||||||
|
|
||||||
|
var trialdata = await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == Data.TrialId);
|
||||||
|
if (IsNullOrEmpty(Data.ResearchProgramNo))
|
||||||
|
{
|
||||||
|
|
||||||
|
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsNullOrEmpty(Data.TrialName))
|
||||||
|
{
|
||||||
|
Data.TrialName = trialdata?.ExperimentName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 测试中心名称
|
||||||
|
|
||||||
|
|
||||||
|
Data.SiteCode = (await _dbContext.TrialSite.IgnoreQueryFilters().FirstOrDefaultAsync(x => x.TrialId == Data.TrialId && x.SiteId == Data.SiteId))?.TrialSiteCode;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (IsNullOrEmpty(Data.SiteName) && Data.SiteId != null)
|
||||||
|
{
|
||||||
|
var sitedata = await _dbContext.Site.Where(x => x.Id == Data.SiteId).Select(x => new { x.SiteName }).FirstOrDefaultAsync();
|
||||||
|
Data.SiteName = sitedata?.SiteName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 受试者
|
||||||
|
|
||||||
|
|
||||||
|
if (IsNullOrEmpty(Data.SubjectCode) && Data.SubjectId != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
Data.SubjectCode = (await _dbContext.Subject.Where(x => x.Id == Data.SubjectId).Select(x => new { x.Code }).FirstOrDefaultAsync())?.Code;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 访视
|
||||||
|
if (IsNullOrEmpty(Data.SubjectVisitName))
|
||||||
|
{
|
||||||
|
Data.SubjectVisitName = (await _dbContext.SubjectVisit.Where(x => x.Id == Data.SubjectVisitId).Select(x => new { x.VisitName }).FirstOrDefaultAsync())?.VisitName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 创建者
|
||||||
|
|
||||||
|
if (IsNullOrEmpty(Data.CreateUserName))
|
||||||
|
{
|
||||||
|
Data.CreateUserName = _userInfo.RealName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsNullOrEmpty(Data.RoleName))
|
||||||
|
{
|
||||||
|
Data.RoleName = _userInfo.UserTypeShortName;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue