This commit is contained in:
he
2022-04-21 17:08:19 +08:00
parent da620303af
commit 943c44892a
9 changed files with 116 additions and 27 deletions
@@ -4,6 +4,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore;
using MediatR;
using Newtonsoft.Json;
using System.Linq.Expressions;
namespace IRaCIS.Core.Application.MediatR.Handlers
@@ -92,8 +93,11 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
var svGroup = dbList.GroupBy(t => new { t.SubjectVisitId, t.SiteCode, t.SubjectCode, t.VisitName })
.Select(g => new { g.Key.SubjectCode, g.Key.VisitName, g.Key.SiteCode, g.Key.SubjectVisitId, StudyList = g.ToList() }).ToList();
List<DataInspection> datas = new List<DataInspection>();
var createtime = DateTime.Now;
foreach (var sv in svGroup)
{
//找到etc 当前visit site 和subject 一致的检查列表
var etcVisitStudyList = etcList.Where(t => t.SubjectCode == sv.SubjectCode && t.SiteCode == sv.SiteCode && t.VisitName == sv.VisitName).ToList();
var dbVisitStudyList = dbCheckList.Where(t => t.SubjectCode == sv.SubjectCode && t.SiteCode == sv.SiteCode && t.VisitName == sv.VisitName).ToList();
@@ -122,12 +126,61 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
dbSV.CheckState = CheckStateEnum.CVPassed;
dbSV.CheckPassedTime = DateTime.Now;
dbSV.CheckResult = "核对EDC数据,完全一致";
dbSV.ManualPassReason = "自动核查通过";
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dbSV.CheckResult, UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
}
else
{
dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | "
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}"));
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}"));
//新增一致性核查质疑记录
datas.Add(new DataInspection()
{
SiteId = dbSV.SiteId,
SubjectId = dbSV.SubjectId,
TrialId = dbSV.TrialId,
SubjectVisitId = dbSV.Id,
CreateTime = createtime.AddMilliseconds(200),
Identification = "Add|Consistency Check Query|Data|Visit-Consistency Check",
JsonDetail = JsonConvert.SerializeObject(new
{
SubmitState = "已提交",
AuditState = "通过",
CheckState = dbSV.CheckState == CheckStateEnum.CVIng ? "核查中" : "未核查",
CheckResult= dbSV.CheckResult,
TalkContent= dbSV.CheckResult,
RequestBackState=dbSV.RequestBackState==RequestBackStateEnum.PM_AgressBack?"已回退":"未回退",
CheckChallengeState = dbSV.CheckChallengeState == CheckChanllengeTypeEnum.Closed?"已关闭":"已回复",
})
});
datas.Add(new DataInspection()
{
SiteId = dbSV.SiteId,
SubjectId = dbSV.SubjectId,
TrialId = dbSV.TrialId,
SubjectVisitId = dbSV.Id,
CreateTime = createtime.AddMilliseconds(500),
Identification = "Edit|Consistency Check Query|Data|Visit-Consistency Check|Send",
JsonDetail = JsonConvert.SerializeObject(new
{
SubmitState = "已提交",
AuditState = "通过",
CheckState = dbSV.CheckState == CheckStateEnum.CVIng ? "核查中" : "未核查",
CheckResult = dbSV.CheckResult,
TalkContent = dbSV.CheckResult,
RequestBackState = dbSV.RequestBackState == RequestBackStateEnum.PM_AgressBack ? "已回退" : "未回退",
CheckChallengeState = dbSV.CheckChallengeState == CheckChanllengeTypeEnum.Closed ? "已关闭" : "已回复",
})
});
dbSV.CheckState = CheckStateEnum.CVIng;
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
@@ -137,6 +190,27 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
}
dbSV.CheckTime = DateTime.Now;
// 在线一致性核查
datas.Add(new DataInspection()
{
SiteId = dbSV.SiteId,
SubjectId = dbSV.SubjectId,
TrialId = dbSV.TrialId,
SubjectVisitId = dbSV.Id,
CreateTime= createtime,
Reason= dbSV.ManualPassReason,
Identification = "Add|Visit|Status|Visit-Consistency Check",
JsonDetail = JsonConvert.SerializeObject(new
{
SubmitState = "已提交",
AuditState= "通过",
CheckState = dbSV.CheckState== CheckStateEnum.CVIng? "核查中": "核查通过",
})
});
await _subjectVisitRepository.SaveChangesAsync();
}