using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core.Filters; using Magicodes.ExporterAndImporter.Core.Models; using Magicodes.ExporterAndImporter.Excel; using MediatR; using MiniExcelLibs.Attributes; using System.ComponentModel.DataAnnotations; using System.Linq; namespace IRaCIS.Core.Application.MediatR.CommandAndQueries { public class ConsistencyVerificationRequest : IRequest { public List ETCList { get; set; } = new List(); public Guid TrialId { get; set; } } public class CheckDBModel : CheckViewModel { public Guid SubjectVisitId { get; set; } public Guid StudyId { get; set; } } public class ImportResultFilteTest : IImportResultFilter { public ImportResult Filter(ImportResult importResult) where T : class, new() { if (typeof(T).IsAssignableFrom(typeof(CheckViewModel))) { var data = (List)importResult.Data; var dt = DateTime.Now ; foreach (var item in data) { var index= data.IndexOf(item); if ( DateTime.TryParse(item.StudyDate, out dt) == false) { importResult.RowErrors.Add(new DataRowErrorInfo() { RowIndex = index, FieldErrors = new Dictionary { { "检查技术", "时间格式不对" } } }); } } } return importResult; } } public class ParamInfoDto { public string Modality { get; set; } public string StudyDate { get; set; } //public int ErrorType { get; set; } } [ExcelImporter(/*ImportResultFilter = typeof(ImportResultFilteTest),*/ IsLabelingError = true)] public class CheckViewModel { //[Required(ErrorMessage = "中心编号不能为空")] [ImporterHeader(Name = "中心编号", AutoTrim = true)] [ExcelColumnName("中心编号")] public string SiteCode { get; set; } = string.Empty; //[Required(ErrorMessage = "患者筛选号不能为空")] [ImporterHeader(Name = "患者筛选号", AutoTrim = true)] [ExcelColumnName("患者筛选号")] public string SubjectCode { get; set; } = string.Empty; //[Required(ErrorMessage = "检查批次名称不能为空")] [ImporterHeader(Name = "检查批次名称", AutoTrim = true)] [ExcelColumnName("检查批次名称")] public string VisitName { get; set; } = string.Empty; //[Required(ErrorMessage = "检查日期不能为空")] [CanConvertToTime(ErrorMessage = "检查日期格式有问题")] [ImporterHeader(Name = "检查日期", AutoTrim = true)] [ExcelColumnName("检查日期")] public string StudyDate { get; set; } = string.Empty; //[Required(ErrorMessage = "Modality不能为空")] [ImporterHeader(Name = "检查技术", AutoTrim = true)] [ExcelColumnName("检查技术")] public string Modality { get; set; } = string.Empty; public override bool Equals(object? obj) { if (obj == null) return false; var checkModel = obj as CheckViewModel; if (checkModel is not null) { return SiteCode == checkModel.SiteCode && SubjectCode == checkModel.SubjectCode && VisitName == checkModel.VisitName && StudyDate == checkModel.StudyDate && Modality == checkModel.Modality; } else { return false; } } public override int GetHashCode() { return (SiteCode + SubjectCode + VisitName + StudyDate + Modality).GetHashCode(); } } public class VisitPlanInfluenceSubjectVisitDTO { [ExporterHeader(IsIgnore = true)] public Guid StudyId { get; set; } [ExporterHeader(IsIgnore = true)] public Guid TrialId { get; set; } [ExporterHeader(IsIgnore = true)] public Guid SubjectVisitId { get; set; } [ExporterHeader(DisplayName = "中心编号")] public string TrialSiteCode { get; set; } = string.Empty; [ExporterHeader(DisplayName = "患者")] public string SubjectCode { get; set; } = string.Empty; [ExporterHeader(DisplayName = "检查批次名称")] public string VisitName { get; set; } = string.Empty; [ExporterHeader(DisplayName = "检查时间", Format = "yyyy-mm-dd hh:mm:ss")] public DateTime StudyTime { get; set; } [ExporterHeader(DisplayName = "检查技术")] public string Modality { get; set; } = string.Empty; [ExporterHeader(IsIgnore = true)] public bool IsDicomStudy { get; set; } [ExporterHeader(DisplayName = "影像类型")] public string ImageType => IsDicomStudy ? "Dicom" : "非Dicom"; [ExporterHeader(DisplayName = "历史窗口")] public string HistoryWindow { get; set; } = string.Empty; [ExporterHeader(DisplayName = "之前超窗调整后没超窗")] [ValueMapping(text: "yes", true)] [ValueMapping(text: "no", false)] public bool IsOverWindowNowNotOverWindow { get; set; } [ExporterHeader(DisplayName = "目前窗口")] public string NowWindow { get; set; } = string.Empty; [ExporterHeader(IsIgnore = true)] public DateTime CreateTime { get; set; } } }