using AutoMapper; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Service { public class VisitMapConfig : Profile { public VisitMapConfig() { CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap() .ForMember(d => d.Id, t => t.Ignore()) .ForMember(d => d.VisitStageId, t => t.MapFrom(u => u.Id)); CreateMap() .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) .ForMember(d => d.VisitImageFileCount, u => u.MapFrom(s => s.SubjectVisit.VisitImageFileCount)) .ForMember(d => d.VisitImageZipPath, u => u.MapFrom(s => s.SubjectVisit.VisitImageZipPath)) .ForMember(d => d.VisitImageZipSize, u => u.MapFrom(s => s.SubjectVisit.VisitImageZipSize)) .ForMember(d => d.DownloadTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.DownloadUserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.StudyCount, u => u.MapFrom(s => s.SubjectVisit.StudyList.Count())) .ForMember(d => d.DownLoadUserFullName, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum)); CreateMap(); CreateMap() .ForMember(d => d.CreateUser, u => u.MapFrom(g => g.CreateUser.LastName + " / " + g.CreateUser.FirstName)); CreateMap() .ForMember(d => d.Id, t => t.MapFrom(u => u.SubjectId)); CreateMap(); CreateMap() .ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)) .ForMember(d => d.LatestBlindName, u => u.MapFrom(s => s.LatestSubjectVisit.BlindName)) .ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.LatestSubjectVisit.VisitName)) //.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => (Guid?)c.Id).FirstOrDefault())) //.ForMember(d => d.FinalSubjectVisitName, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => c.VisitName).FirstOrDefault())) .ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.FinalSubjectVisitId)) .ForMember(d => d.FinalSubjectVisitName, u => u.MapFrom(s => s.FinalSubjectVisit.VisitName)) //.ForMember(d => d.IsSubjectSexView, u => u.MapFrom(s => s.Trial.IsSubjectSexView)) //.ForMember(d => d.IsSubjectExpeditedView, u => u.MapFrom(s => s.Trial.IsSubjectExpeditedView)) //不能对包含聚合或子查询的表达式执行聚合函数 //.ForMember(d => d.InPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).Sum(k => k.StudyList.Count()))) //.ForMember(d => d.OutPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan==false).Sum(k => k.StudyList.Count()))) //.ForMember(d => d.InPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.StudyList).Count())) //.ForMember(d => d.OutPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.StudyList).Count())) //.ForMember(d => d.InPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.NoneDicomStudyList).Count())) //.ForMember(d => d.OutPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.NoneDicomStudyList).Count())) .ForMember(d => d.InPlanVisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.InPlan))) .ForMember(d => d.OutPlanVisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.InPlan == false))) //执行不一定上传了 可能是失访 实际执行过了 .ForMember(d => d.MissingSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.VisitNum < s.LatestSubjectVisit.VisitNum && t.SubmitState != SubmitStateEnum.Submitted && t.IsLostVisit == false))) .ForMember(d => d.InPlanVisitSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState == SubmitStateEnum.Submitted && t.InPlan == true))) .ForMember(d => d.LostVisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.IsLostVisit))) .ForMember(d => d.InPlanVisitSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState == SubmitStateEnum.Submitted && t.InPlan == true))) .ForMember(d => d.OutPlanVisitSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState == SubmitStateEnum.Submitted && t.InPlan == false))); // .ForMember(d => d.InPlanVisitSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState>=SubmitStateEnum.ToSubmit && t.InPlan == true))) //.ForMember(d => d.OutPlanVisitSubmmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState >= SubmitStateEnum.ToSubmit && t.InPlan == false))); //.ForMember(d => d.InPlanVisitUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.VisitExecuted == VisitExecutedEnum.Executed && t.InPlan))) //.ForMember(d => d.OutPlanVisitUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.VisitExecuted == VisitExecutedEnum.Executed && t.InPlan == false))); CreateMap().ForAllMembers(opt => opt.Condition((src, dest, srcMember) => srcMember != null)); CreateMap().IncludeMembers(t => t.Trial) .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName)) .ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)) .ForMember(d => d.TrialCode, u => u.MapFrom(s => s.Trial.TrialCode)) .ForMember(d => d.Sponsor, u => u.MapFrom(s => s.Trial.Sponsor)); CreateMap(); CreateMap() .ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.SubjectVisit.TrialSite.TrialSiteCode)); CreateMap() .ForMember(d => d.SCPStudyId, u => u.MapFrom(s => s.Id)); CreateMap() .ForMember(d => d.CalledAEList, u => u.MapFrom(s => s.SCPStudyList.Select(t => t.CalledAE).Distinct())) .ForMember(d => d.CallingAEList, u => u.MapFrom(s => s.SCPStudyList.Select(t => t.CallingAE).Distinct())) .ForMember(d => d.PatientId, u => u.MapFrom(s => s.Id)); CreateMap().IncludeMembers(t=>t.SCPStudy) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)); CreateMap() .ForMember(d => d.PatientList, u => u.MapFrom(s => s.SubjectPatientList)) .ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count())) .ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.SubjectVisitList.OrderByDescending(t => t.VisitNum).First().VisitName)) ; CreateMap() .ForMember(d => d.PatientId, u => u.MapFrom(s => s.Patient.Id)) .ForMember(d => d.PatientSex, u => u.MapFrom(s => s.Patient.PatientSex)) .ForMember(d => d.PatientIdStr, u => u.MapFrom(s => s.Patient.PatientIdStr)) .ForMember(d => d.PatientAge, u => u.MapFrom(s => s.Patient.PatientAge)) .ForMember(d => d.PatientName, u => u.MapFrom(s => s.Patient.PatientName)) .ForMember(d => d.PatientBirthDate, u => u.MapFrom(s => s.Patient.PatientBirthDate)); CreateMap() .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id)); CreateMap() .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.UnSubmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t=>t.SubmitState==SubmitStateEnum.ToSubmit))) .ForMember(d => d.UnReadCount, u => u.MapFrom(s => s.VisitTaskList.Count(t=>t.TaskState==TaskState.Effect && t.SignTime==null))) ; CreateMap() .ForMember(d => d.DictionaryList, u => u.MapFrom(s => s.TrialDicList.Select(t => t.Dictionary).OrderBy(t => t.ShowOrder))); CreateMap() .ForMember(d => d.SCPStudyId, u => u.MapFrom(s => s.Id)); CreateMap(); CreateMap().ReverseMap(); CreateMap().IncludeMembers(t => t.Subject) .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Subject.TrialId)) .ForMember(d => d.ResearchProgramNo, u => u.MapFrom(s => s.Subject.Trial.ResearchProgramNo)) .ForMember(d => d.TrialStatusStr, u => u.MapFrom(s => s.Subject.Trial.TrialStatusStr)) .ForMember(d => d.TrialType, u => u.MapFrom(s => s.Subject.Trial.TrialType)) .ForMember(d => d.Sponsor, u => u.MapFrom(s => s.Subject.Trial.Sponsor)) .ForMember(d => d.CreateTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.TrialCode, u => u.MapFrom(s => s.Subject.Trial.TrialCode)) .ForMember(d => d.ExperimentName, u => u.MapFrom(s => s.Subject.Trial.ExperimentName)); CreateMap(); CreateMap(); CreateMap() .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code)) .ForMember(d => d.SubjectShortName, u => u.MapFrom(s => s.Subject.ShortName)) .ForMember(d => d.TrialReadingCriterionName, u => u.MapFrom(s => s.TrialReadingCriterion.CriterionName)) .ForMember(d => d.CriterionType, u => u.MapFrom(s => s.TrialReadingCriterion.CriterionType)) .ForMember(d => d.PatientList, u => u.MapFrom(s => s.Subject.SubjectPatientList)) .ForMember(d => d.VisitImageZipPath, u => u.MapFrom(s => s.SourceSubjectVisit.VisitImageZipPath)) .ForMember(d => d.PackState, u => u.MapFrom(s => s.SourceSubjectVisit.PackState)); CreateMap().ReverseMap(); CreateMap(); CreateMap() .ForMember(d => d.SeriesList, u => u.Ignore()) /* .ForMember(d => d.SeriesList, u => u.Ignore())*/; CreateMap(); CreateMap(); CreateMap() .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id)); CreateMap().ReverseMap(); CreateMap(); CreateMap().ReverseMap(); CreateMap(); } } }