178 lines
5.5 KiB
C#
178 lines
5.5 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;
|
|
}
|
|
}
|
|
|
|
|
|
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; }
|
|
}
|
|
|
|
}
|