修改稽查

Uat_Study
hang 2022-08-19 16:59:53 +08:00
parent 5a24add4bf
commit 855df63891
2 changed files with 256 additions and 320 deletions

View File

@ -121,10 +121,10 @@ namespace IRaCIS.Core.Domain.Models
/// </summary> /// </summary>
public string Identification { get; set; } public string Identification { get; set; }
/// <summary> ///// <summary>
/// 访视计划ID ///// 访视计划ID
/// </summary> ///// </summary>
public Guid? VisitStageId { get; set; } //public Guid? VisitStageId { get; set; }
/// <summary> /// <summary>
/// 通用Id /// 通用Id

View File

@ -113,10 +113,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var userTypeIds = userTypes.Select(x => x.NeedConfirmUserTypeId).ToList(); var userTypeIds = userTypes.Select(x => x.NeedConfirmUserTypeId).ToList();
var userTypeNameList = await _dbContext.UserType.Where(x => userTypeIds.Contains(x.Id)).Select(x => x.UserTypeShortName).ToListAsync(); var userTypeNameList = await _dbContext.UserType.Where(x => userTypeIds.Contains(x.Id)).Select(x => x.UserTypeShortName).ToListAsync();
var userTypeName = string.Join(",", userTypeNameList); var userTypeName = string.Join(",", userTypeNameList);
await InsertInspection<SystemDocument>(entity, type, x => new InspectionConvertDTO() await InsertInspection<SystemDocument>(entity, type, null, new
{
GeneralId = x.Id
}, new
{ {
NeedConfirmedUserType = userTypeName, NeedConfirmedUserType = userTypeName,
}); });
@ -125,10 +122,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
// 签名模板 // 签名模板
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SystemBasicData))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SystemBasicData)))
{ {
await InsertInspection<SystemBasicData>(item.Entity as SystemBasicData, type, x => new InspectionConvertDTO() await InsertInspection<SystemBasicData>(item.Entity as SystemBasicData, type);
{
GeneralId = x.Id,
});
} }
// 项目 // 项目
@ -157,7 +151,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
TrialId = x.Id, TrialId = x.Id,
TrialName = x.ExperimentName, TrialName = x.ExperimentName,
ResearchProgramNo = x.ResearchProgramNo, ResearchProgramNo = x.ResearchProgramNo,
GeneralId = x.Id,
}, new }, new
{ {
TrialDicList = string.Join(",", trialDics) TrialDicList = string.Join(",", trialDics)
@ -175,11 +168,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
visitPlanStatus = false; visitPlanStatus = false;
} }
await InsertInspection<VisitStage>(item.Entity as VisitStage, type, x => new InspectionConvertDTO() await InsertInspection<VisitStage>(item.Entity as VisitStage, type, null, new
{
VisitStageId = x.Id,
GeneralId = x.Id,
}, new
{ {
VisitPlanStatus = visitPlanStatus, VisitPlanStatus = visitPlanStatus,
}); });
@ -199,10 +188,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var userTypeIds = userTypes.Select(x => x.NeedConfirmUserTypeId).ToList(); var userTypeIds = userTypes.Select(x => x.NeedConfirmUserTypeId).ToList();
var usertypeNames = await _dbContext.UserType.Where(x => userTypeIds.Contains(x.Id)).Select(x => x.UserTypeShortName).ToListAsync(); var usertypeNames = await _dbContext.UserType.Where(x => userTypeIds.Contains(x.Id)).Select(x => x.UserTypeShortName).ToListAsync();
var usertypeName = string.Join(",", usertypeNames); var usertypeName = string.Join(",", usertypeNames);
await InsertInspection<TrialDocument>(entity, type, x => new InspectionConvertDTO() await InsertInspection<TrialDocument>(entity, type, null, new
{
GeneralId = x.Id
}, new
{ {
NeedConfirmedUserType = usertypeName, NeedConfirmedUserType = usertypeName,
}); });
@ -238,7 +224,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection<TrialDocUserTypeConfirmedUser>(entity as TrialDocUserTypeConfirmedUser, type, x => new InspectionConvertDTO() await InsertInspection<TrialDocUserTypeConfirmedUser>(entity as TrialDocUserTypeConfirmedUser, type, x => new InspectionConvertDTO()
{ {
TrialId = trialid, TrialId = trialid,
GeneralId = x.Id,
}, new }, new
{ {
FileTypeId = trialDocument.FileTypeId, FileTypeId = trialDocument.FileTypeId,
@ -257,11 +242,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
entity.Site = await _dbContext.Site.Where(x => x.Id == entity.SiteId).FirstOrDefaultAsync(); entity.Site = await _dbContext.Site.Where(x => x.Id == entity.SiteId).FirstOrDefaultAsync();
} }
await InsertInspection<TrialSite>(entity, type, x => new InspectionConvertDTO() await InsertInspection<TrialSite>(entity, type,null, new
{
GeneralId = x.Id,
}, new
{ {
TrialSiteCode = entity.TrialSiteCode, TrialSiteCode = entity.TrialSiteCode,
SiteName = entity.Site.SiteName, SiteName = entity.Site.SiteName,
@ -324,10 +305,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
UserType userType = new UserType(); UserType userType = new UserType();
userType = await _dbContext.UserType.Where(x => x.Id == user.UserTypeId).FirstOrDefaultAsync(); userType = await _dbContext.UserType.Where(x => x.Id == user.UserTypeId).FirstOrDefaultAsync();
await InsertInspection<TrialSiteUser>(item.Entity as TrialSiteUser, type, x => new InspectionConvertDTO() await InsertInspection<TrialSiteUser>(item.Entity as TrialSiteUser, type, null, new
{
GeneralId = x.Id,
}, new
{ {
TrialSiteCode = entity.TrialSite.TrialSiteCode, TrialSiteCode = entity.TrialSite.TrialSiteCode,
SiteName = entity.Site.SiteName, SiteName = entity.Site.SiteName,
@ -364,12 +342,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
entity.ReviewerUser = await _dbContext.User.Where(x => x.Id == entity.ReviewerUserId).FirstOrDefaultAsync(); entity.ReviewerUser = await _dbContext.User.Where(x => x.Id == entity.ReviewerUserId).FirstOrDefaultAsync();
} }
await InsertInspection<TrialSiteSurvey>(item.Entity as TrialSiteSurvey, type, x => new InspectionConvertDTO() await InsertInspection<TrialSiteSurvey>(item.Entity as TrialSiteSurvey, type, null, new
{
GeneralId = x.Id,
}, new
{ {
TrialSiteCode = entity.TrialSite.TrialSiteCode, TrialSiteCode = entity.TrialSite.TrialSiteCode,
TrialSiteAliasName = entity.TrialSite.TrialSiteAliasName, TrialSiteAliasName = entity.TrialSite.TrialSiteAliasName,
@ -386,10 +359,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
var entity = item.Entity as TrialQCQuestion; var entity = item.Entity as TrialQCQuestion;
var paretName = await _dbContext.TrialQCQuestionConfigure.Where(x => x.Id == entity.ParentId).Select(x => x.QuestionName).FirstOrDefaultAsync(); var paretName = await _dbContext.TrialQCQuestionConfigure.Where(x => x.Id == entity.ParentId).Select(x => x.QuestionName).FirstOrDefaultAsync();
await InsertInspection<TrialQCQuestion>(entity, type, x => new InspectionConvertDTO() await InsertInspection<TrialQCQuestion>(entity, type,null, new
{
GeneralId = x.Id,
}, new
{ {
QuestionName = entity.QuestionName, QuestionName = entity.QuestionName,
Type = entity.Type, Type = entity.Type,
@ -403,30 +373,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}); });
} }
// 受试者
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Subject)))
{
var entity = item.Entity as Subject;
var finalSubjectVisitName = await _dbContext.SubjectVisit.AsNoTracking().Where(x => x.Id == entity.FinalSubjectVisitId && entity.FinalSubjectVisitId != null).Select(x => x.VisitName).FirstOrDefaultAsync();
await InsertInspection<Subject>(entity, type, x => new InspectionConvertDTO()
{
GeneralId=x.Id,
SubjectId = x.Id,
SubjectCode = x.Code,
}, new
{
FinalSubjectVisitName = finalSubjectVisitName,
});
}
// 检查 // 检查
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(DicomStudy))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(DicomStudy)))
{ {
await InsertInspection<DicomStudy>(item.Entity as DicomStudy, type, x => new InspectionConvertDTO() await InsertInspection<DicomStudy>(item.Entity as DicomStudy, type);
{
GeneralId = x.Id,
});
} }
// 序列 // 序列
@ -438,10 +389,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
dicomStudy = await _dbContext.DicomStudys.AsNoTracking().FirstOrDefaultAsync(x => x.Id == entity.StudyId); dicomStudy = await _dbContext.DicomStudys.AsNoTracking().FirstOrDefaultAsync(x => x.Id == entity.StudyId);
} }
await InsertInspection<DicomSeries>(item.Entity as DicomSeries, type, x => new InspectionConvertDTO() await InsertInspection<DicomSeries>(item.Entity as DicomSeries, type,null, new
{
GeneralId = x.Id,
}, new
{ {
StudyCode = dicomStudy?.StudyCode, StudyCode = dicomStudy?.StudyCode,
Modalities = dicomStudy?.Modalities, Modalities = dicomStudy?.Modalities,
@ -456,10 +404,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var fileCount = await _dbContext.NoneDicomStudyFile.Where(x => x.NoneDicomStudyId == entity.Id).CountAsync(); var fileCount = await _dbContext.NoneDicomStudyFile.Where(x => x.NoneDicomStudyId == entity.Id).CountAsync();
await InsertInspection<NoneDicomStudy>(item.Entity as NoneDicomStudy, type, x => new InspectionConvertDTO() await InsertInspection<NoneDicomStudy>(item.Entity as NoneDicomStudy, type, null, new
{
GeneralId = x.Id,
}, new
{ {
FileCount = fileCount, FileCount = fileCount,
}); });
@ -483,10 +428,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
filecount = filecount + count; filecount = filecount + count;
} }
await InsertInspection<NoneDicomStudy>(noneDicomStudy, type, x => new InspectionConvertDTO() await InsertInspection<NoneDicomStudy>(noneDicomStudy, type,null, new
{
GeneralId = x.Id,
}, new
{ {
FileCount = filecount, FileCount = filecount,
}); });
@ -495,40 +437,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
//一致性核查 // 特殊GeneralId
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(CheckChallengeDialog)))
{
var entity = item.Entity as CheckChallengeDialog;
var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync();
subjectvisit = subjectvisit ?? new SubjectVisit();
var reason = string.Empty;
switch (_userInfo.RequestUrl.ToLower())
{
case "qcoperation/closecheckchallenge":
reason = entity.TalkContent.Substring(entity.TalkContent.LastIndexOf(':') + 1);
break;
}
await InsertInspection<CheckChallengeDialog>(entity, type, x => new InspectionConvertDTO()
{
GeneralId = entity.SubjectVisitId,
TrialId = subjectvisit.TrialId,
SubjectVisitId = x.SubjectVisitId,
SiteId = subjectvisit.SiteId,
SubjectId = subjectvisit.SubjectId,
SubjectVisitName = subjectvisit.VisitName,
BlindName = subjectvisit.BlindName,
Reason = reason,
CreateTime = x.CreateTime,
}, new
{
CheckState = subjectvisit.CheckState,
RequestBackState = subjectvisit.RequestBackState,
CheckChallengeState = subjectvisit.CheckChallengeState,
});
}
// 访视 // 访视
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SubjectVisit))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SubjectVisit)))
{ {
@ -544,7 +452,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var subjectCode = entity.Subject?.Code; var subjectCode = entity.Subject?.Code;
await InsertInspection<SubjectVisit>(item.Entity as SubjectVisit, type, x => new InspectionConvertDTO() await InsertInspection<SubjectVisit>(item.Entity as SubjectVisit, type, x => new InspectionConvertDTO()
{ {
GeneralId=x.Id,
SubjectCode = subjectCode, SubjectCode = subjectCode,
SubjectId = x.SubjectId, SubjectId = x.SubjectId,
SubjectVisitId = x.Id, SubjectVisitId = x.Id,
@ -562,7 +469,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
subjectvisit = subjectvisit ?? new SubjectVisit(); subjectvisit = subjectvisit ?? new SubjectVisit();
await InsertInspection<PreviousSurgery>(entity, type, x => new InspectionConvertDTO() await InsertInspection<PreviousSurgery>(entity, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
SiteId = subjectvisit.SiteId, SiteId = subjectvisit.SiteId,
SubjectVisitName = subjectvisit.VisitName, SubjectVisitName = subjectvisit.VisitName,
TrialId = subjectvisit.TrialId, TrialId = subjectvisit.TrialId,
@ -582,7 +488,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
subjectvisit = subjectvisit ?? new SubjectVisit(); subjectvisit = subjectvisit ?? new SubjectVisit();
await InsertInspection<PreviousHistory>(entity, type, x => new InspectionConvertDTO() await InsertInspection<PreviousHistory>(entity, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
SiteId = subjectvisit.SiteId, SiteId = subjectvisit.SiteId,
SubjectVisitName = subjectvisit.VisitName, SubjectVisitName = subjectvisit.VisitName,
TrialId = subjectvisit.TrialId, TrialId = subjectvisit.TrialId,
@ -601,7 +506,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
subjectvisit = subjectvisit ?? new SubjectVisit(); subjectvisit = subjectvisit ?? new SubjectVisit();
await InsertInspection<PreviousOther>(entity, type, x => new InspectionConvertDTO() await InsertInspection<PreviousOther>(entity, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
SiteId = subjectvisit.SiteId, SiteId = subjectvisit.SiteId,
SubjectVisitName = subjectvisit.VisitName, SubjectVisitName = subjectvisit.VisitName,
TrialId = subjectvisit.TrialId, TrialId = subjectvisit.TrialId,
@ -626,7 +530,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
await InsertInspection<QCChallenge>(entity, type, x => new InspectionConvertDTO() await InsertInspection<QCChallenge>(entity, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
TrialId = x.TrialId, TrialId = x.TrialId,
SubjectVisitId = x.SubjectVisitId, SubjectVisitId = x.SubjectVisitId,
SiteId = subjectvisit.SiteId, SiteId = subjectvisit.SiteId,
@ -642,62 +545,18 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}); });
} }
// 质疑信息 // 特殊GeneralId
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(QCChallengeDialog)))
{
var reason = string.Empty;
var entity = item.Entity as QCChallengeDialog;
switch (_userInfo.RequestUrl.ToLower())
{
case "qcoperation/closeqcchallenge":
reason = entity.TalkContent.Substring(entity.TalkContent.LastIndexOf(':') + 1);
break;
}
var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync();
var qCChallenge = await _dbContext.QCChallenge.Where(x => x.Id == entity.QCChallengeId).FirstOrDefaultAsync();
subjectvisit = subjectvisit ?? new SubjectVisit();
qCChallenge = qCChallenge ?? new QCChallenge();
await InsertInspection<QCChallengeDialog>(entity, type, x => new InspectionConvertDTO()
{
GeneralId = qCChallenge.Id,
TrialId = subjectvisit.TrialId,
SubjectVisitId = x.SubjectVisitId,
SiteId = subjectvisit.SiteId,
SubjectId = subjectvisit.SubjectId,
SubjectVisitName = subjectvisit.VisitName,
BlindName = subjectvisit.BlindName,
Reason = reason,
}, new
{
AuditState = subjectvisit.AuditState,
ReuploadEnum = qCChallenge.ReuploadEnum,
Content = qCChallenge.Content,
DeadlineTime = qCChallenge.DeadlineTime,
IsOverTime = qCChallenge.IsClosed ? qCChallenge.ClosedTime > qCChallenge.DeadlineTime : DateTime.Now > qCChallenge.DeadlineTime,
IsClosed = qCChallenge.IsClosed
});
}
//Qc 问题 //Qc 问题
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(QCQuestion))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(QCQuestion)))
{ {
await InsertInspection<QCQuestion>(item.Entity as QCQuestion, type, x => new InspectionConvertDTO() await InsertInspection<QCQuestion>(item.Entity as QCQuestion, type);
{
GeneralId = x.Id,
});
} }
// 一致性核查文件 // 一致性核查文件
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ConsistencyCheckFile))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ConsistencyCheckFile)))
{ {
await InsertInspection<ConsistencyCheckFile>(item.Entity as ConsistencyCheckFile, type, x => new InspectionConvertDTO() await InsertInspection<ConsistencyCheckFile>(item.Entity as ConsistencyCheckFile, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
CreateTime = x.CreateTime, CreateTime = x.CreateTime,
}); });
} }
@ -791,24 +650,80 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
#region 备注 //一致性核查 // 特殊GeneralId
////Qc 问题答案 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(CheckChallengeDialog)))
//foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer))) {
//{
// var entity = item.Entity as TrialQCQuestionAnswer;
// var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync();
// subjectvisit = subjectvisit ?? new SubjectVisit();
// type = type == "Update" ? "Add" : type;
// await InsertInspection<TrialQCQuestionAnswer>(item.Entity, type, x => new DataInspection()
// {
// SiteId= subjectvisit.SiteId,
// SubjectId= subjectvisit.SubjectId,
// SubjectVisitName= subjectvisit.VisitName,
// GeneralId = x.Id,
// });
//}
#endregion
var entity = item.Entity as CheckChallengeDialog;
var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync();
subjectvisit = subjectvisit ?? new SubjectVisit();
var reason = string.Empty;
switch (_userInfo.RequestUrl.ToLower())
{
case "qcoperation/closecheckchallenge":
reason = entity.TalkContent.Substring(entity.TalkContent.LastIndexOf(':') + 1);
break;
}
await InsertInspection<CheckChallengeDialog>(entity, type, x => new InspectionConvertDTO()
{
GeneralId = entity.SubjectVisitId,
TrialId = subjectvisit.TrialId,
SubjectVisitId = x.SubjectVisitId,
SiteId = subjectvisit.SiteId,
SubjectId = subjectvisit.SubjectId,
SubjectVisitName = subjectvisit.VisitName,
BlindName = subjectvisit.BlindName,
Reason = reason,
CreateTime = x.CreateTime,
}, new
{
CheckState = subjectvisit.CheckState,
RequestBackState = subjectvisit.RequestBackState,
CheckChallengeState = subjectvisit.CheckChallengeState,
});
}
// 质疑信息 // 特殊GeneralId
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(QCChallengeDialog)))
{
var reason = string.Empty;
var entity = item.Entity as QCChallengeDialog;
switch (_userInfo.RequestUrl.ToLower())
{
case "qcoperation/closeqcchallenge":
reason = entity.TalkContent.Substring(entity.TalkContent.LastIndexOf(':') + 1);
break;
}
var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync();
var qCChallenge = await _dbContext.QCChallenge.Where(x => x.Id == entity.QCChallengeId).FirstOrDefaultAsync();
subjectvisit = subjectvisit ?? new SubjectVisit();
qCChallenge = qCChallenge ?? new QCChallenge();
await InsertInspection<QCChallengeDialog>(entity, type, x => new InspectionConvertDTO()
{
GeneralId = qCChallenge.Id,
TrialId = subjectvisit.TrialId,
SubjectVisitId = x.SubjectVisitId,
SiteId = subjectvisit.SiteId,
SubjectId = subjectvisit.SubjectId,
SubjectVisitName = subjectvisit.VisitName,
BlindName = subjectvisit.BlindName,
Reason = reason,
}, new
{
AuditState = subjectvisit.AuditState,
ReuploadEnum = qCChallenge.ReuploadEnum,
Content = qCChallenge.Content,
DeadlineTime = qCChallenge.DeadlineTime,
IsOverTime = qCChallenge.IsClosed ? qCChallenge.ClosedTime > qCChallenge.DeadlineTime : DateTime.Now > qCChallenge.DeadlineTime,
IsClosed = qCChallenge.IsClosed
});
}
#region 阅片人入组
//阅片人入组 //阅片人入组
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Enroll))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Enroll)))
@ -848,6 +763,25 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}); });
} }
#endregion
#region Subject 阅片期和 临床数据
// 受试者
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Subject)))
{
var entity = item.Entity as Subject;
var finalSubjectVisitName = await _dbContext.SubjectVisit.AsNoTracking().Where(x => x.Id == entity.FinalSubjectVisitId && entity.FinalSubjectVisitId != null).Select(x => x.VisitName).FirstOrDefaultAsync();
await InsertInspection<Subject>(entity, type, x => new InspectionConvertDTO()
{
SubjectId = x.Id,
SubjectCode = x.Code,
}, new
{
FinalSubjectVisitName = finalSubjectVisitName,
});
}
//阅片期计划 //阅片期计划
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ReadingPeriodSet))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ReadingPeriodSet)))
@ -866,10 +800,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
await InsertInspection<ReadingPeriodSet>(item.Entity as ReadingPeriodSet, type, x => new InspectionConvertDTO() await InsertInspection<ReadingPeriodSet>(item.Entity as ReadingPeriodSet, type, null, new
{
GeneralId = x.Id,
}, new
{ {
VisitName = visitName, VisitName = visitName,
SiteCodes = siteCodes SiteCodes = siteCodes
@ -908,7 +839,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var visitName = _dbContext.SubjectVisit.Where(t => t.Id == entity.SubjectVisitId).Select(t => t.VisitName).FirstOrDefault(); var visitName = _dbContext.SubjectVisit.Where(t => t.Id == entity.SubjectVisitId).Select(t => t.VisitName).FirstOrDefault();
await InsertInspection<ReadModule>(item.Entity as ReadModule, type, x => new InspectionConvertDTO() await InsertInspection<ReadModule>(item.Entity as ReadModule, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
ObjectRelationParentId = entity.ReadingPeriodSetId, ObjectRelationParentId = entity.ReadingPeriodSetId,
SubjectVisitId = x.SubjectVisitId, SubjectVisitId = x.SubjectVisitId,
IsDistinctionInterface = false, IsDistinctionInterface = false,
@ -932,7 +862,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection<ReadingClinicalData>(item.Entity as ReadingClinicalData, type, x => new InspectionConvertDTO() await InsertInspection<ReadingClinicalData>(item.Entity as ReadingClinicalData, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
SubjectVisitId = x.IsVisit ? x.ReadingId : null, SubjectVisitId = x.IsVisit ? x.ReadingId : null,
}, new }, new
{ {
@ -948,10 +877,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection<ReadingClinicalDataPDF>(item.Entity as ReadingClinicalDataPDF, type, x => new InspectionConvertDTO() await InsertInspection<ReadingClinicalDataPDF>(item.Entity as ReadingClinicalDataPDF, type, x => new InspectionConvertDTO()
{ {
GeneralId = x.Id,
SubjectId = x.SubjectId, SubjectId = x.SubjectId,
IsDistinctionInterface=false, IsDistinctionInterface = false,
ObjectRelationParentId=entity.ReadingClinicalDataId ObjectRelationParentId = entity.ReadingClinicalDataId
}, new }, new
{ {
IsCRCUpload = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator IsCRCUpload = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator
@ -959,6 +887,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
#endregion
#endregion #endregion
} }
@ -977,6 +910,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
InspectionConvertDTO inspection = new InspectionConvertDTO(); InspectionConvertDTO inspection = new InspectionConvertDTO();
if (expression != null) if (expression != null)
{ {
var f = expression.Compile(); var f = expression.Compile();
@ -984,8 +919,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
inspection = f(entityObj); inspection = f(entityObj);
} }
//避免重复赋值 //避免重复赋值 有些特殊的GeneralId
inspection.GeneralId = entityObj.Id; var generalId = (inspection.GeneralId != null && inspection.GeneralId != Guid.Empty) ? inspection.GeneralId : entityObj.Id ;
inspection.GeneralId = generalId;
inspection.Identification = await GetInspectionRecordIdentificationAsync(entityObj, type, inspection.IsDistinctionInterface); inspection.Identification = await GetInspectionRecordIdentificationAsync(entityObj, type, inspection.IsDistinctionInterface);
@ -1008,7 +944,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
#endregion #endregion
if (inspection.ParentId == null) if (inspection.ParentId == null)
{ {
inspection.ParentId = (await _dbContext.DataInspection.AsQueryable().Where(x => x.TrialId == inspection.TrialId && x.SubjectVisitId == inspection.SubjectVisitId && x.SubjectId == inspection.SubjectId && x.SiteId == inspection.SiteId && x.VisitStageId == inspection.VisitStageId && x.GeneralId == inspection.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id; inspection.ParentId = (await _dbContext.DataInspection.AsQueryable().Where(x => x.TrialId == inspection.TrialId && x.SubjectVisitId == inspection.SubjectVisitId && x.SubjectId == inspection.SubjectId && x.SiteId == inspection.SiteId && x.GeneralId == inspection.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
} }
inspection.CreateUserId = _userInfo.Id; inspection.CreateUserId = _userInfo.Id;
inspection.IP = _userInfo.IP; inspection.IP = _userInfo.IP;
@ -1309,177 +1245,177 @@ namespace IRaCIS.Core.Infra.EFCore.Common
#region 待废弃 -by zhouhang 调整 #region 待废弃 -by zhouhang 调整
/// <summary> ///// <summary>
/// 映射数据 ///// 映射数据
/// </summary> ///// </summary>
/// <param name="data"></param> ///// <param name="data"></param>
/// <param name="mapData">要赋值的对象</param> ///// <param name="mapData">要赋值的对象</param>
public void MapData(dynamic data, dynamic mapData) //public void MapData(dynamic data, dynamic mapData)
{
List<string> column = new List<string>() { "TrialId", "SiteId", "SubjectId", "SubjectVisitId", "CreateUserName", "TrialName", "SiteName", "SubjectCode", "VisitName", "SubjectVisitName", "RoleName", "SiteCode", "ResearchProgramNo" };
foreach (var item in column)
{
try
{
var i = mapData.GetType().GetProperty(item).GetValue(mapData);
if (i == null || i == default(Guid))
{
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>
/// <exception cref="BusinessValidationFailedException"></exception>
public async Task AddInspectionRecordAsync<T>(T data, InspectionConvertDTO add, object otherItem = null) where T : class
{
//MapData(data, add);
MapEntityPropertyToAuditEntity(data, add);
InspectionGeneralData generalData = new InspectionGeneralData()
{
//CreateUserName = add.CreateUserName,
SiteCode = add.SiteCode,
SiteId = add.SiteId,
//SiteName = add.SiteName,
SubjectCode = add.SubjectCode,
SubjectId = add.SubjectId,
SubjectVisitId = add.SubjectVisitId,
SubjectVisitName = add.SubjectVisitName,
ResearchProgramNo = add.ResearchProgramNo,
//RoleName = add.RoleName,
TrialId = add.TrialId,
TrialName = add.TrialName
};
await SetInspectionNameValue(generalData);
#region 处理标识
var from = await _dbContext.FrontAuditConfig.FirstOrDefaultAsync(x => x.Identification == add.Identification);
add.ObjectTypeId = from?.ObjectTypeId;
add.OptTypeId = from?.OptTypeId;
add.ChildrenTypeId = from?.ChildrenTypeId;
add.ModuleTypeId = from?.ModuleTypeId;
#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.VisitStageId == add.VisitStageId && x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
}
add.CreateUserId = _userInfo.Id;
add.IP = _userInfo.IP;
add.CreateTime = add.CreateTime == default(DateTime) ? DateTime.Now : add.CreateTime;
if (_userInfo.SignId != null)
{
add.SignId = _userInfo.SignId;
add.IsSign = true;
}
var inspectionData = new InspectionJsonDetail()
{
//稽查实体,加上扩充的信息
Data = AddJsonItem(data, otherItem),
//通用信息
CommonData = generalData
};
add.JsonDetail = inspectionData.ToJsonStr();
add.BatchId = _userInfo.BatchId.Value;
await _dbContext.DataInspection.AddAsync(add);
}
/// <summary>
/// 设置项目以及名称
/// </summary>
/// <param name="generalData"></param>
/// <returns></returns>
public async Task SetInspectionNameValue(InspectionGeneralData generalData)
{
#region 项目名称
if (generalData.TrialId != null)
{
//项目添加哪里 直接会带信息过来,不用查询数据库 其他的地方需要查询数据库
if (string.IsNullOrEmpty(generalData.ResearchProgramNo) || string.IsNullOrEmpty(generalData.TrialName))
{
var trialdata = (await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == generalData.TrialId)).IfNullThrowException();
generalData.ResearchProgramNo = trialdata.ResearchProgramNo;
generalData.TrialName = trialdata.ExperimentName;
}
}
#endregion
#region 测试中心名称
if (generalData.TrialId != null && generalData.SiteId != null)
{
generalData.SiteCode = (await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.TrialId == generalData.TrialId && x.SiteId == generalData.SiteId).Select(t => t.TrialSiteCode).FirstOrDefaultAsync()).IfNullThrowException();
//// 添加Site 哪里会带信息过来
//if (string.IsNullOrEmpty(generalData.SiteName))
//{ //{
// generalData.SiteName = (await _dbContext.Site.Where(x => x.Id == generalData.SiteId).Select(x => x.SiteName).FirstOrDefaultAsync()).IfNullThrowException(); // List<string> column = new List<string>() { "TrialId", "SiteId", "SubjectId", "SubjectVisitId", "CreateUserName", "TrialName", "SiteName", "SubjectCode", "VisitName", "SubjectVisitName", "RoleName", "SiteCode", "ResearchProgramNo" };
// foreach (var item in column)
// {
// try
// {
// var i = mapData.GetType().GetProperty(item).GetValue(mapData);
// if (i == null || i == default(Guid))
// {
// 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>
///// <exception cref="BusinessValidationFailedException"></exception>
//public async Task AddInspectionRecordAsync<T>(T data, InspectionConvertDTO add, object otherItem = null) where T : class
//{
// //MapData(data, add);
// MapEntityPropertyToAuditEntity(data, add);
// InspectionGeneralData generalData = new InspectionGeneralData()
// {
// //CreateUserName = add.CreateUserName,
// SiteCode = add.SiteCode,
// SiteId = add.SiteId,
// //SiteName = add.SiteName,
// SubjectCode = add.SubjectCode,
// SubjectId = add.SubjectId,
// SubjectVisitId = add.SubjectVisitId,
// SubjectVisitName = add.SubjectVisitName,
// ResearchProgramNo = add.ResearchProgramNo,
// //RoleName = add.RoleName,
// TrialId = add.TrialId,
// TrialName = add.TrialName
// };
// await SetInspectionNameValue(generalData);
// #region 处理标识
// var from = await _dbContext.FrontAuditConfig.FirstOrDefaultAsync(x => x.Identification == add.Identification);
// add.ObjectTypeId = from?.ObjectTypeId;
// add.OptTypeId = from?.OptTypeId;
// add.ChildrenTypeId = from?.ChildrenTypeId;
// add.ModuleTypeId = from?.ModuleTypeId;
// #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.VisitStageId == add.VisitStageId && x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
// }
// add.CreateUserId = _userInfo.Id;
// add.IP = _userInfo.IP;
// add.CreateTime = add.CreateTime == default(DateTime) ? DateTime.Now : add.CreateTime;
// if (_userInfo.SignId != null)
// {
// add.SignId = _userInfo.SignId;
// add.IsSign = true;
// }
// var inspectionData = new InspectionJsonDetail()
// {
// //稽查实体,加上扩充的信息
// Data = AddJsonItem(data, otherItem),
// //通用信息
// CommonData = generalData
// };
// add.JsonDetail = inspectionData.ToJsonStr();
// add.BatchId = _userInfo.BatchId.Value;
// await _dbContext.DataInspection.AddAsync(add);
//}
///// <summary>
///// 设置项目以及名称
///// </summary>
///// <param name="generalData"></param>
///// <returns></returns>
//public async Task SetInspectionNameValue(InspectionGeneralData generalData)
//{
// #region 项目名称
// if (generalData.TrialId != null)
// {
// //项目添加哪里 直接会带信息过来,不用查询数据库 其他的地方需要查询数据库
// if (string.IsNullOrEmpty(generalData.ResearchProgramNo) || string.IsNullOrEmpty(generalData.TrialName))
// {
// var trialdata = (await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == generalData.TrialId)).IfNullThrowException();
// generalData.ResearchProgramNo = trialdata.ResearchProgramNo;
// generalData.TrialName = trialdata.ExperimentName;
// }
// }
// #endregion
// #region 测试中心名称
// if (generalData.TrialId != null && generalData.SiteId != null)
// {
// generalData.SiteCode = (await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.TrialId == generalData.TrialId && x.SiteId == generalData.SiteId).Select(t => t.TrialSiteCode).FirstOrDefaultAsync()).IfNullThrowException();
// //// 添加Site 哪里会带信息过来
// //if (string.IsNullOrEmpty(generalData.SiteName))
// //{
// // generalData.SiteName = (await _dbContext.Site.Where(x => x.Id == generalData.SiteId).Select(x => x.SiteName).FirstOrDefaultAsync()).IfNullThrowException();
// //}
// }
// #endregion
// #region 受试者
// if (generalData.SubjectId != null)
// {
// // 添加Subject 哪里会带信息过来
// if (string.IsNullOrEmpty(generalData.SubjectCode))
// {
// generalData.SubjectCode = (await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => x.Code).FirstOrDefaultAsync()).IfNullThrowException();
// }
// }
// #endregion
// #region 访视
// if (generalData.SubjectVisitId != null)
// {
// //添加访视的时候,会带信息过来
// if (string.IsNullOrEmpty(generalData.SubjectVisitName))
// {
// generalData.SubjectVisitName = (await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => x.VisitName).FirstOrDefaultAsync()).IfNullThrowException();
// }
// }
// #endregion
//} //}
}
#endregion
#region 受试者
if (generalData.SubjectId != null)
{
// 添加Subject 哪里会带信息过来
if (string.IsNullOrEmpty(generalData.SubjectCode))
{
generalData.SubjectCode = (await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => x.Code).FirstOrDefaultAsync()).IfNullThrowException();
}
}
#endregion
#region 访视
if (generalData.SubjectVisitId != null)
{
//添加访视的时候,会带信息过来
if (string.IsNullOrEmpty(generalData.SubjectVisitName))
{
generalData.SubjectVisitName = (await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => x.VisitName).FirstOrDefaultAsync()).IfNullThrowException();
}
}
#endregion
}
#endregion #endregion