166 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
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<string>
 | 
						|
    {
 | 
						|
        public List<CheckViewModel> ETCList { get; set; } = new List<CheckViewModel>();
 | 
						|
 | 
						|
        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<T> Filter<T>(ImportResult<T> importResult) where T : class, new()
 | 
						|
        {
 | 
						|
            if (typeof(T).IsAssignableFrom(typeof(CheckViewModel)))
 | 
						|
            {
 | 
						|
                var data = (List<CheckViewModel>)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<string, string> { { "检查技术", "时间格式不对" } } });
 | 
						|
                    }
 | 
						|
                }               
 | 
						|
            }
 | 
						|
        
 | 
						|
            return importResult;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    [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; }
 | 
						|
    }
 | 
						|
 | 
						|
}
 |