修改一版

Uat_Study
he 2022-05-26 17:07:18 +08:00
parent 7dd1f7f23d
commit 7b740597c2
1 changed files with 49 additions and 7 deletions

View File

@ -4,6 +4,7 @@ using IRaCIS.Core.Domain.Share;
using MediatR;
using System.Linq.Expressions;
using System.Text;
namespace IRaCIS.Core.Application.MediatR.Handlers
{
@ -99,50 +100,91 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
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();
StringBuilder dialogMsg = new StringBuilder();
dialogMsg.Append("你好根据本系统自动像识别,该受者本访视已提交的像检查情况如下:");
var num = 0;
foreach (var item in sv.StudyList)
{
num++;
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{item.Modality}");
}
var dbSV = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == sv.SubjectVisitId).IfNullThrowException();
if (etcVisitStudyList.Count == 0)
{
dialogMsg.AppendLine($"<br>存在问题如下:");
num = 0;
foreach (var item in sv.StudyList)
{
num++;
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{item.Modality} 在导入模板中不存在 不存在!");
}
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
dbSV.CheckResult = "当前访视在EDC表中未找到数据,请核对 SubjectCode、 SiteCode 、VisitName 是否和ETC系统保持一致";
dbSV.CheckState = CheckStateEnum.CVIng;
dbSV.ForwardState = ForwardStateEnum.ToForward;
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dbSV.CheckResult, UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,CreateTime=DateTime.Now });
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dialogMsg.ToString(), UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,CreateTime=DateTime.Now });
}
else
{
//etc 和数据库 并集
var unionList = dbVisitStudyList.Union(etcVisitStudyList);
// 数据库存在
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
// excel 存在
var excelExceptDB = etcVisitStudyList.Except(dbCheckList);
//两者没有差别
if (dbExceptExcel.Count() == 0)
{
dialogMsg.AppendLine($"核对EDC数据完全一致, 审核通过");
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
dbSV.CheckState = CheckStateEnum.CVPassed;
dbSV.CheckPassedTime = DateTime.Now;
dbSV.CheckResult = "核对EDC数据完全一致";
dbSV.ManualPassReason = "自动核查通过";
dbSV.RequestBackState = dbSV.RequestBackState== RequestBackStateEnum.CRC_RequestBack? RequestBackStateEnum.PM_NotAgree: RequestBackStateEnum.NotRequest;
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dbSV.CheckResult, UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt, CreateTime = DateTime.Now });
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dialogMsg.ToString(), UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt, CreateTime = DateTime.Now });
}
else
{
dialogMsg.AppendLine($"<br>存在问题如下:");
num = 0;
foreach (var item in dbExceptExcel)
{
num++;
dialogMsg.AppendLine($"<br>{num}.EDC 缺少{item.StudyDate}{item.Modality} ");
}
foreach (var item in excelExceptDB)
{
num++;
dialogMsg.AppendLine($"<br>{num}.IRC 缺少{item.StudyDate}{item.Modality} ");
}
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | "
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}"));
//新增一致性核查质疑记录
dbSV.CheckState = CheckStateEnum.CVIng;
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
//讲核查结果发送消息给CRC
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dbSV.CheckResult, UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt, CreateTime = DateTime.Now });
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog() { SubjectVisitId = sv.SubjectVisitId, TalkContent = dialogMsg.ToString(), UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt, CreateTime = DateTime.Now });
}
}