264 lines
16 KiB
C#
264 lines
16 KiB
C#
using AutoMapper;
|
||
using AutoMapper.EquivalencyExpression;
|
||
using IRaCIS.Core.Application.Contracts;
|
||
using IRaCIS.Core.Application.Contracts.DTO;
|
||
using IRaCIS.Core.Application.MediatR.CommandAndQueries;
|
||
|
||
namespace IRaCIS.Core.Application.Service
|
||
{
|
||
public class QCConfig : Profile
|
||
{
|
||
public QCConfig()
|
||
{
|
||
string token = string.Empty;
|
||
//一致性核查
|
||
CreateMap<CheckDBModel, CheckViewModel>();
|
||
|
||
CreateMap<QCChallengeCommand, QCChallenge>();
|
||
CreateMap<QADialogCommand, QCChallengeDialog>();
|
||
|
||
|
||
#region QA 废弃
|
||
//CreateMap<QaTemplateCommand, QATemplate>();
|
||
|
||
//CreateMap<QaTemplateItemCommand, QATemplateItem>();
|
||
|
||
|
||
//CreateMap<QARecordTrialTemplateItemCommand, QARecordTemplateItemDetail>();
|
||
|
||
|
||
//CreateMap<QaTemplateConfigCommand, QANotice>();
|
||
|
||
|
||
//CreateMap<TrialQATemplateAddCommand, QATrialTemplate>();
|
||
|
||
//CreateMap<UpdateQATemplateItemCommand, QATrialTemplateItem>();
|
||
//CreateMap<AddQATemplateItemCommand, QATrialTemplateItem>();
|
||
|
||
|
||
//CreateMap<TrialQATemplateUpdateCommand, QATrialTemplate>();
|
||
|
||
//CreateMap<QARecordTrialTemplateItemCommand, QAAboutTrialTemplateItem>();
|
||
|
||
//CreateMap<QATemplate, QaTemplateCommand>();
|
||
//CreateMap<QATemplate, QaTemplateDto>();
|
||
|
||
//CreateMap<QARecordTemplateItemDetail, TemplateItemProblem>();
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#endregion
|
||
CreateMap<QCChallenge, QCChallengeCommand>();
|
||
|
||
CreateMap<QCQuestionAddOrEdit, QCQuestion>();
|
||
|
||
CreateMap<TrialQCQuestionAddOrEdit, TrialQCQuestion>();
|
||
|
||
CreateMap<TrialQCQuestionConfigureBatchAdd, TrialQCQuestion>();
|
||
|
||
CreateMap<TrialQCQuestion, TrialQCQuestionSelect>();
|
||
|
||
|
||
CreateMap<QCQuestion, QCQuestionConfigureView>()
|
||
.ForMember(d => d.ParentShowOrder, u => u.MapFrom(s => s.ParentQuestion.ShowOrder)); ;
|
||
|
||
CreateMap<QCQuestion, QCQuestionAddOrEdit>();
|
||
|
||
CreateMap<TrialQCQuestion, TrialQCQuestionAddOrEdit>();
|
||
|
||
CreateMap<TrialQCQuestion, TrialQCQuestionConfigureView>()
|
||
.ForMember(d => d.ParentShowOrder, u => u.MapFrom(s => s.ParentQCQuestion.ShowOrder));
|
||
|
||
CreateMap<TrialQCQuestionSelect, TrialQCQuestionConfigureView>();
|
||
|
||
CreateMap<CheckChallengeDialogCommand, CheckChallengeDialog>();
|
||
|
||
CreateMap<PreviousPDFAddOrEdit, PreviousPDF>().ReverseMap();
|
||
//受试者临床数据 添加编辑
|
||
CreateMap<PreviousHistoryAddOrEdit, PreviousHistory>().ReverseMap();
|
||
|
||
CreateMap<PreviousOtherAddOrEdit, PreviousOther>().ReverseMap();
|
||
|
||
CreateMap<PreviousSurgeryAddOrEdit, PreviousSurgery>().ReverseMap();
|
||
|
||
// 受试者临床数据 视图映射
|
||
Guid subjectVisitId = Guid.Empty;
|
||
CreateMap<SubjectVisit, SubjectClinicalDataDto>()
|
||
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
||
.ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||
.ForMember(d => d.PreviousHistoryList, u => u.MapFrom(s => s.PreviousHistoryList.Where(t => t.SubjectVisitId == subjectVisitId || t.IsSubjectLevel)))
|
||
.ForMember(d => d.PreviousOtherList, u => u.MapFrom(s => s.PreviousOtherList.Where(t => t.SubjectVisitId == subjectVisitId || t.IsSubjectLevel)))
|
||
.ForMember(d => d.PreviousSurgeryList, u => u.MapFrom(s => s.PreviousSurgeryList.Where(t => t.SubjectVisitId == subjectVisitId || t.IsSubjectLevel)));
|
||
|
||
CreateMap<SubjectVisit, SubjectVisitDTO>();
|
||
CreateMap<SubjectVisit, SubjectVisitSelectItem>();
|
||
|
||
CreateMap<PreviousPDF, PreviousPDFView>()
|
||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
|
||
|
||
|
||
//影像质控
|
||
CreateMap<SubjectVisit, QCVisitViewModel>()
|
||
.ForMember(d => d.ChallengeCount, u => u.MapFrom(s => s.QCChallengeList.Count()))
|
||
|
||
//.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
||
//.ForMember(d => d.IsEnrollmentConfirm, u => u.MapFrom(s => s.Subject.IsEnrollmentConfirm))
|
||
//.ForMember(d => d.FistGiveMedicineTime, u => u.MapFrom(s => s.Subject.FistGiveMedicineTime))
|
||
//.ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||
.ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum))
|
||
.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
||
.ForMember(d => d.StudyCount, u => u.MapFrom(s => s.StudyList.Count()))
|
||
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.CurrentActionUser.UserName))
|
||
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
||
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
|
||
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any() || t.PreviousPDFList.Any() || t.PreviousSurgeryList.Any() : false))
|
||
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
|
||
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t => t.NoneDicomFileList.Any())));
|
||
|
||
//CRC 上传列表
|
||
CreateMap<SubjectVisit, QCCRCVisitViewModel>()/*.IncludeMembers(t=>t.Subject)*/
|
||
//.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
||
//.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
||
// .ForMember(d => d.SubejctIsEnrollmentConfirm, u => u.MapFrom(t => t.Subject.IsEnrollmentConfirm))
|
||
// .ForMember(d => d.SubejctFistGiveMedicineTime, u => u.MapFrom(t => t.Subject.FistGiveMedicineTime))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||
.ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum))
|
||
.ForMember(d => d.SubjectId, u => u.MapFrom(t => t.Subject.Id))
|
||
.ForMember(d => d.MedicalNo, u => u.MapFrom(s => s.Subject.MedicalNo))
|
||
.ForMember(d => d.Sex, u=> u.MapFrom(s => s.Subject.Sex))
|
||
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
|
||
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t=> t.IsBaseLine? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any() || t.PreviousPDFList.Any() || t.PreviousSurgeryList.Any() :false))
|
||
|
||
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
|
||
//.ForMember(d => d.VisitNum, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitNum : t.VisitNum))
|
||
//.ForMember(d => d.VisitDay, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitDay : t.VisitDay))
|
||
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
|
||
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t=>t.NoneDicomFileList.Any())));
|
||
//.ForMember(d => d.StudyCount, u => u.MapFrom(s => s.StudyList.Count()));
|
||
CreateMap<Subject, QCCRCVisitViewModel>();
|
||
|
||
//一致性核查
|
||
CreateMap<SubjectVisit, QCCheckViewModel>()
|
||
.ForMember(d => d.TalkContent, u => u.MapFrom(s =>s.CheckChallengeDialogList.OrderByDescending(y=>y.CreateTime).Select(x=>x.TalkContent).FirstOrDefault()))
|
||
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
|
||
|
||
|
||
CreateMap<SubjectVisit, ForWardViewModel>()
|
||
.ForMember(d => d.ForwardUserName, u => u.MapFrom(s => s.ForwardUser.UserName))
|
||
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
|
||
|
||
//QC 界面 受试者 site 基本信息 展平的属性 比如 SubjectAge => Subject.Age
|
||
CreateMap<SubjectVisit, QARelationInfo>().IncludeMembers(t => t.Subject)
|
||
.ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id))
|
||
.ForMember(d => d.SubjectName, u => u.MapFrom(s => s.Subject.ShortName))
|
||
.ForMember(d => d.IsHaveFirstGiveMedicineDate, u => u.MapFrom(s => s.Trial.IsHaveFirstGiveMedicineDate))
|
||
//.ForMember(d => d.ChangeDefalutDays, u => u.MapFrom(s => s.Trial.ChangeDefalutDays))
|
||
.ForMember(d => d.SubjectFirstGiveMedicineTime, u => u.MapFrom(s => s.Subject.FirstGiveMedicineTime))
|
||
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName))
|
||
.ForMember(d => d.TotalChallengeCount, u => u.MapFrom(s => s.QCChallengeList.Count()))
|
||
.ForMember(d => d.NotClosedChallengeCount, u => u.MapFrom(s => s.QCChallengeList.Count(c=>c.IsClosed==false)));
|
||
|
||
|
||
CreateMap<Subject, QARelationInfo>(MemberList.None);
|
||
|
||
|
||
|
||
// 临床数据上传 路径拼接返回
|
||
|
||
CreateMap<PreviousHistory, PreviousHistoryView>()
|
||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
|
||
CreateMap<PreviousOther, PreviousOtherView>()
|
||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
|
||
CreateMap<PreviousSurgery, PreviousSurgeryView>()
|
||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
|
||
|
||
//一致性核查 质疑对话
|
||
CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
|
||
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
|
||
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
|
||
|
||
//QC 质疑对话
|
||
var currentUserId = Guid.Empty;
|
||
CreateMap<QCChallengeDialog, QCChanllengeDialogDTO>()
|
||
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
|
||
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName))
|
||
|
||
.ForMember(d => d.IsCurrentUser, u => u.MapFrom(s => s.CreateUserId == currentUserId));
|
||
//质疑编号
|
||
CreateMap<QCChallenge, QCChallengeWithUser>()
|
||
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
|
||
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
|
||
|
||
.ForMember(d => d.SubjectId, u => u.MapFrom(t => t.SubjectVisit.SubjectId ))
|
||
.ForMember(d => d.ChallengeCode, u => u.MapFrom(s => "Q" + s.ChallengeCode.ToString("D5")));
|
||
|
||
//CRC 质疑列表
|
||
CreateMap<QCChallenge, QCCRCChallengeViewModel>()
|
||
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUser.UserName))
|
||
.ForMember(d => d.PreliminaryAuditUserId, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUserId))
|
||
.ForMember(d => d.CurrentActionUserId, u => u.MapFrom(s => s.SubjectVisit.CurrentActionUserId))
|
||
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.SubjectVisit .CurrentActionUser.UserName))
|
||
|
||
.ForMember(d => d.SiteId, u => u.MapFrom(s => s.SubjectVisit.SiteId))
|
||
.ForMember(d => d.AuditState, u => u.MapFrom(s => s.SubjectVisit.AuditState))
|
||
.ForMember(d => d.IsUrgent, u => u.MapFrom(s => s.SubjectVisit.IsUrgent))
|
||
.ForMember(d => d.IsBaseLine, u => u.MapFrom(s => s.SubjectVisit.IsBaseLine))
|
||
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code))
|
||
.ForMember(d => d.SubjectId, u => u.MapFrom(t => t.SubjectVisit.SubjectId))
|
||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.SubjectVisit.TrialSite.TrialSiteCode))
|
||
.ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName))
|
||
.ForMember(d => d.RequestBackState, u => u.MapFrom(s => s.SubjectVisit.RequestBackState))
|
||
.ForMember(d => d.VisitNum, u => u.MapFrom(s => s.SubjectVisit.VisitNum))
|
||
.ForMember(d => d.BlindName, u => u.MapFrom(s => s.SubjectVisit.BlindName))
|
||
//.ForMember(d => d.ClosedUserUserName, u => u.MapFrom(s => s.ClosedUser.UserName))
|
||
.ForMember(d => d.IsQCConfirmedReupload, u => u.MapFrom(s => s.SubjectVisit.IsQCConfirmedReupload))
|
||
.ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUser.UserName))
|
||
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
|
||
.ForMember(d => d.ChallengeCode, u => u.MapFrom(s => "Q" + s.ChallengeCode.ToString("D5"))); //排序的时候有坑 把这个带到sql 中去了
|
||
//.AfterMap((src, dest) => dest.ChallengeCode = "Q" + src.ChallengeCode.ToString("D5"));//实测没有效果
|
||
|
||
|
||
|
||
|
||
//质疑问题答案
|
||
CreateMap<QCQuestionAnswerCommand, TrialQCQuestionAnswer>().EqualityComparison((odto, o) => odto.Id == o.Id)
|
||
.ForAllMembers(opt => opt.Condition((src, dest, srcMember) => srcMember != null));
|
||
//.ForMember(d => d.TrialQCQuestionConfigureId, opt => opt.Ignore())//前端更新的时候不会传递这个参数,但是添加的时候会传递
|
||
//.ForMember(d => d.SubjectVisitId, opt => opt.Ignore());
|
||
//更新的时候,因为前端没有传递TrialQCQuestionConfigureId 导致映射后的数据变为 Guid.Empty,明明配置了 如果source 为null 就不映射 但是没生效 临时解决
|
||
//.BeforeMap((src, dest) => src.TrialQCQuestionConfigureId = dest.TrialQCQuestionConfigureId == System.Guid.Empty ? src.TrialQCQuestionConfigureId : dest.TrialQCQuestionConfigureId);
|
||
|
||
|
||
CreateMap<TrialQCQuestionAnswer, QCQuestionAnswerItemDto>().IncludeMembers(t => t.TrialQCQuestionConfigure)
|
||
.ForMember(d => d.ParentShowOrder, u => u.MapFrom(s => s.TrialQCQuestionConfigure.ParentQCQuestion.ShowOrder));
|
||
|
||
CreateMap<TrialQCQuestion, QCQuestionAnswerItemDto>()
|
||
.ForMember(d => d.Id, u => u.Ignore())
|
||
.ForMember(d => d.ParentShowOrder, u => u.MapFrom(s => s.ParentQCQuestion.ShowOrder))
|
||
.ForMember(d => d.TrialQCQuestionConfigureId, u => u.MapFrom(s => s.Id));
|
||
|
||
|
||
CreateMap<NoneDicomStudyAddOrEdit, NoneDicomStudy>().ReverseMap();
|
||
|
||
|
||
CreateMap<NoneDicomStudyFile, NoneDicomStudyFileView>()
|
||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
|
||
|
||
CreateMap<NoneDicomStudy, NoneDicomStudyView>()
|
||
.ForMember(d => d.FileCount, u => u.MapFrom(s => s.NoneDicomFileList.Count))
|
||
.ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => s.NoneDicomFileList))
|
||
.ForMember(d => d.CodeView, u => u.MapFrom(s => s.StudyCode));
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|