This commit is contained in:
he
2022-05-23 17:49:16 +08:00
parent 13ef3e69b9
commit ffa87ed1c3
6 changed files with 5 additions and 659 deletions
@@ -28,14 +28,6 @@ namespace IRaCIS.Core.Infra.EFCore
/// <returns></returns>
Task SetInspectionNameValue(DataInspection Data);
/// <summary>
/// 添加稽查记录
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
Task AddListInspectionRecordAsync(List<DataInspection> datas);
/// <summary>
/// 格式化日期和时间
/// </summary>
@@ -860,7 +860,7 @@ namespace IRaCIS.Core.Infra.EFCore
catch (Exception)
{
//throw new BusinessValidationFailedException("Json 对象枚举异常");
}
}
@@ -873,266 +873,9 @@ namespace IRaCIS.Core.Infra.EFCore
}
/// <summary>
/// 添加稽查记录
/// </summary>
/// <param name="entity">实体</param>
/// <param name="isSaveAudit">是否保存</param>
/// <returns></returns>
private async Task AddInspectionAsync(TEntity entity, bool isSaveAudit = false)
{
bool needsave = true;
DataInspection inspectionData = new DataInspection()
{
Identification = $"{GetRequestUrl()}/{ typeof(TEntity).ToString().Substring(typeof(TEntity).ToString().LastIndexOf('.') + 1)}/Add",
};
MapData(entity, inspectionData);
var createtime = DateTime.Now;
// 项目
if (typeof(TEntity) == typeof(Trial))
{
Trial data = entity as Trial;
inspectionData = 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()
};
}
// 项目人员
else if (typeof(TEntity) == typeof(TrialUser))
{
}
// 受试者
else if (typeof(TEntity) == typeof(Subject))
{
Subject data = entity as Subject;
inspectionData = new DataInspection()
{
TrialId = data.TrialId,
SiteId = data.SiteId,
SubjectId = data.Id,
SubjectCode = data.Code,
IsSign = false,
CreateTime = createtime,
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
JsonDetail = entity.ToJcJson()
};
}
// Dicom序列 // 移动不进来
//if (typeof(TEntity) == typeof(DicomSeries))
//{
// DicomSeries dicomStudy = entity as DicomSeries;
// datas.Add(new DataInspection()
// {
// SiteId = dicomStudy.SiteId,
// SubjectId = dicomStudy.SubjectId,
// TrialId = dicomStudy.TrialId,
// GeneralId = dicomStudy.StudyId,
// SubjectVisitId = dicomStudy.SubjectVisitId,
// CreateTime = createtime.AddMilliseconds(10),
// Identification = "Init|DICOM Series|Status|Visit-Image Upload",
// JsonDetail = JsonConvert.SerializeObject(new
// {
// StudyCode = dicomStudy.StudyCode,
// Modalities = dicomStudy.Modalities,
// SeriesNumber = dicomSeries.SeriesNumber,
// InstanceCount = dicomSeries.InstanceCount,
// SeriesTime = dicomSeries.SeriesTime,
// IsReading = dicomSeries.IsReading,
// IsDeleted = dicomSeries.IsReading,
// })
// });
//}
// dicom影像
else if (typeof(TEntity) == typeof(DicomStudy))
{
DicomStudy data = entity as DicomStudy;
await UpdateSubjectVisit(data.SubjectVisitId, SubmitStateEnum.ToSubmit, "上传Dicom影像");
}
// 非Dicom影像
else if (typeof(TEntity) == typeof(NoneDicomStudyFile))
{
NoneDicomStudyFile data = entity as NoneDicomStudyFile;
var subjectVisitId = await _dbContext.NoneDicomStudy.Where(x => x.Id == data.NoneDicomStudyId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
await UpdateSubjectVisit(subjectVisitId, SubmitStateEnum.ToSubmit, "上传非Dicom影像");
}
else
{
needsave = false;
}
// 修改访视状态记录稽查
async Task UpdateSubjectVisit(Guid subvisitVisit, SubmitStateEnum submit, string reason)
{
var subjectvisit = await _dbContext.SubjectVisit.AsNoTracking().AsQueryable().Where(x => x.Id == subvisitVisit).FirstOrDefaultAsync();
if (subjectvisit.SubmitState != submit)
{
subjectvisit.SubmitState = submit;
inspectionData = new DataInspection()
{
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
TrialId = subjectvisit.TrialId,
SiteId = subjectvisit.SiteId,
SubjectId = subjectvisit.SubjectId,
SubjectVisitId = subjectvisit.Id,
Reason = reason,
CreateTime = createtime.AddMilliseconds(100),
JsonDetail = subjectvisit.ToJcJson(),
};
}
}
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>
/// <param name="datas"></param>
/// <returns></returns>
public async Task AddListInspectionRecordAsync(List<DataInspection> datas)
{
//var trialIds= datas.Select(x=>x.TrialId).Distinct().ToList();
//var subjectVisitIds= datas.Select(x=>x.SubjectVisitId).Distinct().ToList();
//var subjectIds = datas.Select(x => x.SubjectId).Distinct().ToList();
//var siteIds = datas.Select(x => x.SiteId).Distinct().ToList();
//var childrenTypes= datas.Select(x => x.ChildrenType).Distinct().ToList();
//var objectTypes = datas.Select(x => x.ObjectType).Distinct().ToList();
foreach (var add in datas)
{
await SetInspectionNameValue(add);
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;
}
//add.JsonDetail = await SetEnum(add.TrialId, add.Identification, add.JsonDetail);
await SetDataInspectionDateType(add);
}
//await _dbContext.DataInspection.AddRangeAsync(datas);
}
/// <summary>
/// 格式化日期和时间
/// </summary>
@@ -1196,9 +939,6 @@ namespace IRaCIS.Core.Infra.EFCore
}
}
/// <summary>
/// 设置项目以及名称
/// </summary>
@@ -1313,75 +1053,7 @@ namespace IRaCIS.Core.Infra.EFCore
}
/// <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