Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
22147483c1
|
@ -20,7 +20,6 @@ using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using Magicodes.ExporterAndImporter.Excel;
|
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using MediatR;
|
using MediatR;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
@ -39,7 +38,6 @@ using Microsoft.Net.Http.Headers;
|
||||||
using MiniExcelLibs;
|
using MiniExcelLibs;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using SharpCompress.Archives;
|
using SharpCompress.Archives;
|
||||||
using SkiaSharp;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
@ -407,7 +405,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception )
|
catch (Exception)
|
||||||
{
|
{
|
||||||
_provider.Remove($"StudyUid_{trialId}_{archiveStudyCommand.StudyInstanceUid}");
|
_provider.Remove($"StudyUid_{trialId}_{archiveStudyCommand.StudyInstanceUid}");
|
||||||
|
|
||||||
|
@ -587,6 +585,20 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
#region MiniExcel 需要自己验证数据格式规范
|
#region MiniExcel 需要自己验证数据格式规范
|
||||||
|
|
||||||
|
|
||||||
|
if (fileName.EndsWith(".xlsx"))
|
||||||
|
{
|
||||||
|
etcCheckList = MiniExcel.Query<CheckViewModel>(templateFileStream, excelType: ExcelType.XLSX).ToList();
|
||||||
|
}
|
||||||
|
else if (fileName.EndsWith(".csv"))
|
||||||
|
{
|
||||||
|
//因为csv 需要加配置文件 不然都是null
|
||||||
|
etcCheckList = MiniExcel.Query<CheckViewModel>(templateFileStream, null, configuration: new MiniExcelLibs.Csv.CsvConfiguration()
|
||||||
|
{
|
||||||
|
StreamReaderFunc = (stream) => new StreamReader(stream, Encoding.GetEncoding("gb2312"))
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
//if (fileName.EndsWith(".csv"))
|
//if (fileName.EndsWith(".csv"))
|
||||||
//{
|
//{
|
||||||
// //因为csv 需要加配置文件 不然都是null
|
// //因为csv 需要加配置文件 不然都是null
|
||||||
|
@ -602,67 +614,72 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 升级net8 导入有问题
|
||||||
|
|
||||||
|
|
||||||
//Magicodes 支持自定义特性验证
|
//Magicodes 支持自定义特性验证
|
||||||
if (fileName.EndsWith(".xlsx"))
|
// if (fileName.EndsWith(".xlsx"))
|
||||||
{
|
//{
|
||||||
var Importer = new ExcelImporter();
|
// var Importer = new ExcelImporter();
|
||||||
|
|
||||||
var import = await Importer.Import<CheckViewModel>(templateFileStream);
|
// var import = await Importer.Import<CheckViewModel>(templateFileStream);
|
||||||
|
|
||||||
if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
// if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
||||||
|
|
||||||
//if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
// //if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
||||||
|
|
||||||
if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(_localizer["UploadDownLoad_TemplateErrors"]);
|
// if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(_localizer["UploadDownLoad_TemplateErrors"]);
|
||||||
|
|
||||||
etcCheckList = import.Data.ToList();
|
// etcCheckList = import.Data.ToList();
|
||||||
}
|
//}
|
||||||
else if (fileName.EndsWith(".csv"))
|
//else if (fileName.EndsWith(".csv"))
|
||||||
{
|
//{
|
||||||
#region 临时方案 MiniExcel读取 然后保存为xlsx 再用 Magicodes验证数据
|
// #region 临时方案 MiniExcel读取 然后保存为xlsx 再用 Magicodes验证数据
|
||||||
|
|
||||||
//因为csv 需要加配置文件 不然都是null
|
// //因为csv 需要加配置文件 不然都是null
|
||||||
etcCheckList = MiniExcel.Query<CheckViewModel>(templateFileStream, null, configuration: new MiniExcelLibs.Csv.CsvConfiguration()
|
// etcCheckList = MiniExcel.Query<CheckViewModel>(templateFileStream, null, configuration: new MiniExcelLibs.Csv.CsvConfiguration()
|
||||||
{
|
// {
|
||||||
StreamReaderFunc = (stream) => new StreamReader(stream, Encoding.GetEncoding("gb2312"))
|
// StreamReaderFunc = (stream) => new StreamReader(stream, Encoding.GetEncoding("gb2312"))
|
||||||
}).ToList();
|
// }).ToList();
|
||||||
|
|
||||||
var (csVToXlsxPath, csVToXlsxRelativePath) = FileStoreHelper.GetTrialCheckFilePath(_hostEnvironment, Path.GetFileNameWithoutExtension(fileName) + ".xlsx", trialId);
|
// var (csVToXlsxPath, csVToXlsxRelativePath) = FileStoreHelper.GetTrialCheckFilePath(_hostEnvironment, Path.GetFileNameWithoutExtension(fileName) + ".xlsx", trialId);
|
||||||
|
|
||||||
|
|
||||||
await MiniExcel.SaveAsAsync(csVToXlsxPath, etcCheckList, excelType: ExcelType.XLSX);
|
// await MiniExcel.SaveAsAsync(csVToXlsxPath, etcCheckList, excelType: ExcelType.XLSX);
|
||||||
|
|
||||||
|
|
||||||
var Importer = new ExcelImporter();
|
// var Importer = new ExcelImporter();
|
||||||
|
|
||||||
var import = await Importer.Import<CheckViewModel>(System.IO.File.OpenRead(csVToXlsxPath));
|
// var import = await Importer.Import<CheckViewModel>(System.IO.File.OpenRead(csVToXlsxPath));
|
||||||
|
|
||||||
if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
// if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
||||||
|
|
||||||
//if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
// //if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
||||||
|
|
||||||
if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.TemplateErrors));
|
// if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.TemplateErrors));
|
||||||
|
|
||||||
etcCheckList = import.Data.ToList();
|
// etcCheckList = import.Data.ToList();
|
||||||
|
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
|
||||||
|
// #region 导入组件有问题 excel编码格式
|
||||||
|
// //var Importer = new CsvImporter();
|
||||||
|
|
||||||
|
// //var import = await Importer.Import<CheckViewModel>(File.OpenRead(filePath));
|
||||||
|
|
||||||
|
// //if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
||||||
|
|
||||||
|
// //if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
||||||
|
|
||||||
|
// //if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.TemplateErrors));
|
||||||
|
|
||||||
|
// //etcCheckList = import.Data.ToList();
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 导入组件有问题 excel编码格式
|
|
||||||
//var Importer = new CsvImporter();
|
|
||||||
|
|
||||||
//var import = await Importer.Import<CheckViewModel>(File.OpenRead(filePath));
|
|
||||||
|
|
||||||
//if (import.Exception != null) return ResponseOutput.NotOk(import.Exception.ToString());
|
|
||||||
|
|
||||||
//if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors));
|
|
||||||
|
|
||||||
//if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.TemplateErrors));
|
|
||||||
|
|
||||||
//etcCheckList = import.Data.ToList();
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
|
||||||
//ExcelReaderFactory 需要自己验证数据 并且从固定列取数据
|
//ExcelReaderFactory 需要自己验证数据 并且从固定列取数据
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,14 +74,14 @@
|
||||||
<PackageReference Include="Hangfire.SqlServer" Version="1.8.12" />
|
<PackageReference Include="Hangfire.SqlServer" Version="1.8.12" />
|
||||||
<PackageReference Include="Invio.Extensions.Authentication.JwtBearer" Version="2.0.1" />
|
<PackageReference Include="Invio.Extensions.Authentication.JwtBearer" Version="2.0.1" />
|
||||||
<PackageReference Include="LogDashboard" Version="1.4.8" />
|
<PackageReference Include="LogDashboard" Version="1.4.8" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.4" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.5" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
|
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
|
||||||
<PackageReference Include="Serilog.Enrichers.ClientInfo" Version="2.0.3" />
|
<PackageReference Include="Serilog.Enrichers.ClientInfo" Version="2.0.3" />
|
||||||
<PackageReference Include="Serilog.Sinks.Email" Version="3.0.0" />
|
<PackageReference Include="Serilog.Sinks.Email" Version="3.0.0" />
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.6.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -24,7 +24,6 @@ using IRaCIS.Core.Application.Filter;
|
||||||
using Microsoft.AspNetCore.HttpOverrides;
|
using Microsoft.AspNetCore.HttpOverrides;
|
||||||
using IRaCIS.Application.Services.BackGroundJob;
|
using IRaCIS.Application.Services.BackGroundJob;
|
||||||
using LogDashboard;
|
using LogDashboard;
|
||||||
using OfficeOpenXml.Utils;
|
|
||||||
using FellowOakDicom.Network;
|
using FellowOakDicom.Network;
|
||||||
using IRaCIS.Core.Application.Service.ImageAndDoc;
|
using IRaCIS.Core.Application.Service.ImageAndDoc;
|
||||||
using IP2Region.Net.Abstractions;
|
using IP2Region.Net.Abstractions;
|
||||||
|
|
|
@ -5,7 +5,6 @@ using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Application.Interfaces;
|
using IRaCIS.Application.Interfaces;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using Magicodes.ExporterAndImporter.Excel;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using MiniExcelLibs;
|
using MiniExcelLibs;
|
||||||
|
@ -14,7 +13,6 @@ using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using NPOI.HSSF.UserModel;
|
using NPOI.HSSF.UserModel;
|
||||||
using NPOI.XSSF.UserModel;
|
using NPOI.XSSF.UserModel;
|
||||||
using SkiaSharp;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ using System.Linq;
|
||||||
using System.Security.AccessControl;
|
using System.Security.AccessControl;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using SkiaSharp;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Helper
|
namespace IRaCIS.Core.Application.Helper
|
||||||
{
|
{
|
||||||
|
|
|
@ -78,14 +78,6 @@
|
||||||
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.1.2" />
|
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.1.2" />
|
||||||
<PackageReference Include="fo-dicom.Codecs" Version="5.12.0" />
|
<PackageReference Include="fo-dicom.Codecs" Version="5.12.0" />
|
||||||
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
||||||
<PackageReference Include="Magicodes.IE.Core" Version="2.7.5.1" />
|
|
||||||
<PackageReference Include="Magicodes.IE.Csv" Version="2.7.5.1">
|
|
||||||
<TreatAsUsed>true</TreatAsUsed>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1">
|
|
||||||
<TreatAsUsed>true</TreatAsUsed>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Magicodes.IE.Excel.AspNetCore" Version="2.7.5.1" />
|
|
||||||
<PackageReference Include="MailKit" Version="4.5.0" />
|
<PackageReference Include="MailKit" Version="4.5.0" />
|
||||||
<PackageReference Include="MediatR" Version="12.2.0" />
|
<PackageReference Include="MediatR" Version="12.2.0" />
|
||||||
<PackageReference Include="MimeKit" Version="4.5.0" />
|
<PackageReference Include="MimeKit" Version="4.5.0" />
|
||||||
|
|
|
@ -12,7 +12,6 @@ using Microsoft.AspNetCore.Authorization;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
using EasyCaching.Core;
|
using EasyCaching.Core;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using OfficeOpenXml.FormulaParsing.Utilities;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,7 +25,6 @@ using Microsoft.AspNetCore.Http;
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using SharpCompress.Common;
|
using SharpCompress.Common;
|
||||||
using SkiaSharp;
|
|
||||||
using DocumentFormat.OpenXml.Bibliography;
|
using DocumentFormat.OpenXml.Bibliography;
|
||||||
using System.Linq.Dynamic.Core;
|
using System.Linq.Dynamic.Core;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
|
||||||
{
|
{
|
||||||
public Guid VisitTaskId { get; set; }
|
public Guid VisitTaskId { get; set; }
|
||||||
|
|
||||||
//public Guid SiteId { get; set; }
|
public Guid SiteId { get; set; }
|
||||||
|
|
||||||
public Guid SubejctId { get; set; }
|
public Guid SubejctId { get; set; }
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
|
||||||
|
|
||||||
public string TaskName { get; set; }
|
public string TaskName { get; set; }
|
||||||
|
|
||||||
|
public string CriterionModalitys { get; set; }
|
||||||
|
|
||||||
public Guid? SourceSubjectVisitId { get; set; }
|
public Guid? SourceSubjectVisitId { get; set; }
|
||||||
public PackState PackState { get; set; }
|
public PackState PackState { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -167,9 +167,29 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class PriArchiveTaskStudyCommand
|
||||||
|
{
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
public decimal FileSize { get; set; }
|
||||||
|
|
||||||
|
public bool IsDicomReUpload { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public int FileCount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class PreArchiveDicomStudyCommand
|
public class PreArchiveDicomStudyCommand
|
||||||
{
|
{
|
||||||
//public string StudyInstanceUid { get; set; }
|
|
||||||
|
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
|
@ -10,7 +10,6 @@ using MassTransit;
|
||||||
using MathNet.Numerics;
|
using MathNet.Numerics;
|
||||||
using Medallion.Threading;
|
using Medallion.Threading;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using OfficeOpenXml.FormulaParsing.Utilities;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
@ -57,8 +56,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
.Select(u => new SubjectImageUploadDTO()
|
.Select(u => new SubjectImageUploadDTO()
|
||||||
{
|
{
|
||||||
VisitTaskId = u.Id,
|
VisitTaskId = u.Id,
|
||||||
|
|
||||||
SubejctId = u.SubjectId,
|
SubejctId = u.SubjectId,
|
||||||
|
|
||||||
|
SiteId=u.Subject.SiteId,
|
||||||
|
|
||||||
|
CriterionModalitys= u.TrialReadingCriterion.CriterionModalitys,
|
||||||
|
|
||||||
SubjectCode = u.IsSelfAnalysis == true ? u.Subject.Code : u.BlindSubjectCode,
|
SubjectCode = u.IsSelfAnalysis == true ? u.Subject.Code : u.BlindSubjectCode,
|
||||||
TaskBlindName = u.TaskBlindName,
|
TaskBlindName = u.TaskBlindName,
|
||||||
|
@ -144,6 +147,39 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
public async Task<IResponseOutput> PreArchiveDicomStudy(PriArchiveTaskStudyCommand preArchiveStudyCommand)
|
||||||
|
{
|
||||||
|
|
||||||
|
var studyMonitor = new StudyMonitor()
|
||||||
|
{
|
||||||
|
TrialId = preArchiveStudyCommand.TrialId,
|
||||||
|
SubjectId = preArchiveStudyCommand.SubjectId,
|
||||||
|
SubjectVisitId = preArchiveStudyCommand.SubjectVisitId,
|
||||||
|
|
||||||
|
IsSuccess = false,
|
||||||
|
UploadStartTime = DateTime.Now,
|
||||||
|
IsDicom = true,
|
||||||
|
IP = _userInfo.IP,
|
||||||
|
|
||||||
|
IsDicomReUpload = preArchiveStudyCommand.IsDicomReUpload,
|
||||||
|
FileSize = preArchiveStudyCommand.FileSize,
|
||||||
|
FileCount = preArchiveStudyCommand.FileCount,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var addEntity = await _studyMonitorRepository.AddAsync(studyMonitor, true);
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(addEntity.Id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
public async Task<IResponseOutput> AddOrUpdateArchiveTaskStudy(TaskArchiveStudyCommand incommand)
|
public async Task<IResponseOutput> AddOrUpdateArchiveTaskStudy(TaskArchiveStudyCommand incommand)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,8 +17,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
CreateMap<AddOrUpdateSeriesDto, DicomSeries>()
|
CreateMap<AddOrUpdateSeriesDto, DicomSeries>()
|
||||||
.ForMember(d => d.DicomInstanceList, u => u.Ignore());
|
.ForMember(d => d.DicomInstanceList, u => u.Ignore());
|
||||||
|
|
||||||
|
CreateMap<AddOrUpdateStudyDto, TaskStudy>()
|
||||||
|
.ForMember(d => d.SeriesList, u => u.Ignore());
|
||||||
|
CreateMap<AddOrUpdateSeriesDto, TaskSeries>()
|
||||||
|
.ForMember(d => d.InstanceList, u => u.Ignore());
|
||||||
|
|
||||||
CreateMap<AddInstanceDto, DicomInstance>();
|
CreateMap<AddInstanceDto, DicomInstance>();
|
||||||
|
|
||||||
|
CreateMap<AddInstanceDto, TaskInstance>();
|
||||||
|
|
||||||
|
|
||||||
CreateMap<DicomSeries, DicomSeriesWithLabelDTO>();
|
CreateMap<DicomSeries, DicomSeriesWithLabelDTO>();
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ using IRaCIS.Core.Domain.Share.Management;
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,7 +15,6 @@ using Medallion.Threading;
|
||||||
using EasyCaching.Core;
|
using EasyCaching.Core;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO;
|
using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO;
|
||||||
using OfficeOpenXml.FormulaParsing.Utilities;
|
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
|
|
@ -1411,8 +1411,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId)&& x.SubjectId == dbSubjectVisit.SubjectId&&
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId)&& x.SubjectId == dbSubjectVisit.SubjectId&&
|
||||||
dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的访视 全局 裁判 及之前 全都加急
|
dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的访视 全局 裁判 及之前 全都加急
|
||||||
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
||||||
|
@ -1466,14 +1464,14 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
dbSubjectVisit.IsUrgent = true;
|
dbSubjectVisit.IsUrgent = true;
|
||||||
|
|
||||||
|
|
||||||
//PD确认的紧急会把前面所有未QC完成的访视均标记为紧急
|
////PD确认的紧急会把前面所有未QC完成的访视均标记为紧急
|
||||||
|
|
||||||
var previosSVlist = await _subjectVisitRepository.Where(t => t.SubjectId == dbSubjectVisit.SubjectId && t.VisitNum < dbSubjectVisit.VisitNum && t.IsUrgent == false && t.SubmitState == SubmitStateEnum.Submitted, true).ToListAsync();
|
//var previosSVlist = await _subjectVisitRepository.Where(t => t.SubjectId == dbSubjectVisit.SubjectId && t.VisitNum < dbSubjectVisit.VisitNum && t.IsUrgent == false && t.SubmitState == SubmitStateEnum.Submitted, true).ToListAsync();
|
||||||
|
|
||||||
previosSVlist.ForEach(t =>
|
//previosSVlist.ForEach(t =>
|
||||||
{
|
//{
|
||||||
t.IsUrgent = true;
|
// t.IsUrgent = true;
|
||||||
});
|
//});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using IRaCIS.Core.Application.Service.Reading.Interface;
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,6 @@ using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using Medallion.Threading;
|
using Medallion.Threading;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using OfficeOpenXml.FormulaParsing.Utilities;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using Magicodes.ExporterAndImporter.Core;
|
|
||||||
using MiniExcelLibs.Attributes;
|
using MiniExcelLibs.Attributes;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
@ -74,28 +73,28 @@ namespace IRaCIS.Application.Contracts
|
||||||
public string State => IsDeleted ? "退出" : "加入";
|
public string State => IsDeleted ? "退出" : "加入";
|
||||||
|
|
||||||
|
|
||||||
[ValueMapping(text: "退出", true)]
|
//[ValueMapping(text: "退出", true)]
|
||||||
[ValueMapping(text: "加入", false)]
|
//[ValueMapping(text: "加入", false)]
|
||||||
|
|
||||||
[DictionaryTranslateAttribute("IsUserExitTrial")]
|
[DictionaryTranslateAttribute("IsUserExitTrial")]
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
//[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
||||||
[ExcelFormat("yyyy-MM-dd hh:mm:ss")]
|
[ExcelFormat("yyyy-MM-dd hh:mm:ss")]
|
||||||
public DateTime? DeletedTime { get; set; }
|
public DateTime? DeletedTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[ExporterHeader(Format = "yyyy-mm-DD")]
|
//[ExporterHeader(Format = "yyyy-mm-DD")]
|
||||||
[ExcelFormat("yyyy-MM-dd")]
|
[ExcelFormat("yyyy-MM-dd")]
|
||||||
public DateTime? RemoveTime { get; set; }
|
public DateTime? RemoveTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[ExporterHeader(Format = "yyyy-mm-DD")]
|
//[ExporterHeader(Format = "yyyy-mm-DD")]
|
||||||
[ExcelFormat("yyyy-MM-dd")]
|
[ExcelFormat("yyyy-MM-dd")]
|
||||||
public DateTime? JoinTime { get; set; }
|
public DateTime? JoinTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
//[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
||||||
[ExcelFormat("yyyy-MM-dd HH:mm:ss")]
|
[ExcelFormat("yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace IRaCIS.Application.Interfaces
|
||||||
Task<IResponseOutput> AddOrUpdateVisitStage(VisitPlanCommand visitPlan);
|
Task<IResponseOutput> AddOrUpdateVisitStage(VisitPlanCommand visitPlan);
|
||||||
Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId);
|
Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId);
|
||||||
Task<IResponseOutput> DeleteVisitStage(Guid id);
|
Task<IResponseOutput> DeleteVisitStage(Guid id);
|
||||||
Task<IActionResult> DownloadInflunceStudyList(Guid visitPlanInfluenceStatId);
|
//Task<IActionResult> DownloadInflunceStudyList(Guid visitPlanInfluenceStatId);
|
||||||
Task<List<VisitPlanInfluenceSubjectVisitStatDTO>> GetInfluenceHistoryList(Guid trialId, [FromServices] IRepository<VisitPlanInfluenceStat> _influnceStatRepository);
|
Task<List<VisitPlanInfluenceSubjectVisitStatDTO>> GetInfluenceHistoryList(Guid trialId, [FromServices] IRepository<VisitPlanInfluenceStat> _influnceStatRepository);
|
||||||
Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param);
|
Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param);
|
||||||
Task<IEnumerable<VisitStageSelectDTO>> GetTrialVisitStageSelect(Guid trialId);
|
Task<IEnumerable<VisitStageSelectDTO>> GetTrialVisitStageSelect(Guid trialId);
|
||||||
|
|
|
@ -4,12 +4,10 @@ using IRaCIS.Core.Application.Filter;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Application.MediatR.CommandAndQueries;
|
using IRaCIS.Core.Application.MediatR.CommandAndQueries;
|
||||||
using Magicodes.ExporterAndImporter.Core;
|
|
||||||
using Magicodes.ExporterAndImporter.Excel;
|
|
||||||
using Magicodes.ExporterAndImporter.Excel.AspNetCore;
|
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using IRaCIS.Core.Application.Auth;
|
using IRaCIS.Core.Application.Auth;
|
||||||
|
using MiniExcelLibs;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -488,12 +486,15 @@ namespace IRaCIS.Application.Services
|
||||||
var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId)
|
var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId)
|
||||||
.ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_mapper.ConfigurationProvider).ToList();
|
.ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_mapper.ConfigurationProvider).ToList();
|
||||||
|
|
||||||
IExporter exporter = new ExcelExporter();
|
var memoryStream = new MemoryStream();
|
||||||
|
memoryStream.SaveAs(list);
|
||||||
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||||
|
{
|
||||||
|
FileDownloadName = _localizer["VisitPlan_CheckExport", DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")]
|
||||||
|
};
|
||||||
|
|
||||||
var result = await exporter.ExportAsByteArray(list);
|
|
||||||
|
|
||||||
//$"检查导出_{DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")}.xlsx"
|
|
||||||
return new XlsxFileResult(bytes: result, fileDownloadName: _localizer["VisitPlan_CheckExport", DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")]);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using Magicodes.ExporterAndImporter.Core;
|
|
||||||
using Magicodes.ExporterAndImporter.Core.Filters;
|
|
||||||
using Magicodes.ExporterAndImporter.Core.Models;
|
|
||||||
using Magicodes.ExporterAndImporter.Excel;
|
|
||||||
using MediatR;
|
using MediatR;
|
||||||
using MiniExcelLibs.Attributes;
|
using MiniExcelLibs.Attributes;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
@ -27,33 +23,33 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class ImportResultFilteTest : IImportResultFilter
|
//public class ImportResultFilteTest : IImportResultFilter
|
||||||
{
|
//{
|
||||||
|
|
||||||
|
|
||||||
public ImportResult<T> Filter<T>(ImportResult<T> importResult) where T : class, new()
|
// public ImportResult<T> Filter<T>(ImportResult<T> importResult) where T : class, new()
|
||||||
{
|
// {
|
||||||
if (typeof(T).IsAssignableFrom(typeof(CheckViewModel)))
|
// if (typeof(T).IsAssignableFrom(typeof(CheckViewModel)))
|
||||||
{
|
// {
|
||||||
var data = (List<CheckViewModel>)importResult.Data;
|
// var data = (List<CheckViewModel>)importResult.Data;
|
||||||
|
|
||||||
var dt = DateTime.Now ;
|
// var dt = DateTime.Now ;
|
||||||
|
|
||||||
foreach (var item in data)
|
// foreach (var item in data)
|
||||||
{
|
// {
|
||||||
|
|
||||||
var index= data.IndexOf(item);
|
// var index= data.IndexOf(item);
|
||||||
if ( DateTime.TryParse(item.StudyDate, out dt) == false)
|
// if ( DateTime.TryParse(item.StudyDate, out dt) == false)
|
||||||
{
|
// {
|
||||||
|
|
||||||
importResult.RowErrors.Add(new DataRowErrorInfo() { RowIndex = index, FieldErrors = new Dictionary<string, string> { { StaticData.International("ConsistencyVerification_Tech") , StaticData.International("ConsistencyVerification_Time") } } });
|
// importResult.RowErrors.Add(new DataRowErrorInfo() { RowIndex = index, FieldErrors = new Dictionary<string, string> { { StaticData.International("ConsistencyVerification_Tech") , StaticData.International("ConsistencyVerification_Time") } } });
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
return importResult;
|
// return importResult;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
public class ParamInfoDto
|
public class ParamInfoDto
|
||||||
|
@ -69,23 +65,23 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[ExcelImporter(/*ImportResultFilter = typeof(ImportResultFilteTest),*/ IsLabelingError = true)]
|
//[ExcelImporter(/*ImportResultFilter = typeof(ImportResultFilteTest),*/ IsLabelingError = true)]
|
||||||
|
|
||||||
public class CheckViewModel
|
public class CheckViewModel
|
||||||
{
|
{
|
||||||
//[Required(ErrorMessage = "中心编号不能为空")]
|
//[Required(ErrorMessage = "中心编号不能为空")]
|
||||||
[ImporterHeader(Name = "Site ID", AutoTrim = true)]
|
//[ImporterHeader(Name = "Site ID", AutoTrim = true)]
|
||||||
[ExcelColumnIndex("Site ID")]
|
[ExcelColumnName("Site ID")]
|
||||||
public string SiteCode { get; set; } = string.Empty;
|
public string SiteCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
//[Required(ErrorMessage = "受试者筛选号不能为空")]
|
//[Required(ErrorMessage = "受试者筛选号不能为空")]
|
||||||
[ImporterHeader(Name = "Subject ID", AutoTrim = true)]
|
//[ImporterHeader(Name = "Subject ID", AutoTrim = true)]
|
||||||
[ExcelColumnName("Subject ID")]
|
[ExcelColumnName("Subject ID")]
|
||||||
public string SubjectCode { get; set; } = string.Empty;
|
public string SubjectCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
//[Required(ErrorMessage = "访视名称不能为空")]
|
//[Required(ErrorMessage = "访视名称不能为空")]
|
||||||
[ImporterHeader(Name = "Visit Name", AutoTrim = true)]
|
//[ImporterHeader(Name = "Visit Name", AutoTrim = true)]
|
||||||
[ExcelColumnName("Visit Name")]
|
[ExcelColumnName("Visit Name")]
|
||||||
public string VisitName { get; set; } = string.Empty;
|
public string VisitName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
@ -94,14 +90,14 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
|
||||||
//[Required(ErrorMessage = "检查日期不能为空")]
|
//[Required(ErrorMessage = "检查日期不能为空")]
|
||||||
[CanConvertToTime(ErrorMessage = "Does not conform to Study Date format")]
|
[CanConvertToTime(ErrorMessage = "Does not conform to Study Date format")]
|
||||||
|
|
||||||
[ImporterHeader(Name = "Study Date", AutoTrim = true)]
|
//[ImporterHeader(Name = "Study Date", AutoTrim = true)]
|
||||||
[ExcelColumnName("Study Date")]
|
[ExcelColumnName("Study Date")]
|
||||||
public string StudyDate { get; set; } = string.Empty;
|
public string StudyDate { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//[Required(ErrorMessage = "Modality不能为空")]
|
//[Required(ErrorMessage = "Modality不能为空")]
|
||||||
[ImporterHeader(Name = "Modality", AutoTrim = true)]
|
//[ImporterHeader(Name = "Modality", AutoTrim = true)]
|
||||||
[ExcelColumnName("Modality")]
|
[ExcelColumnName("Modality")]
|
||||||
public string Modality { get; set; } = string.Empty;
|
public string Modality { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
@ -131,48 +127,49 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
|
||||||
|
|
||||||
public class VisitPlanInfluenceSubjectVisitDTO
|
public class VisitPlanInfluenceSubjectVisitDTO
|
||||||
{
|
{
|
||||||
[ExporterHeader(IsIgnore = true)]
|
[ExcelColumn(Ignore = true)]
|
||||||
public Guid StudyId { get; set; }
|
public Guid StudyId { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(IsIgnore = true)]
|
[ExcelColumn(Ignore = true)]
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(IsIgnore = true)]
|
[ExcelColumn(Ignore = true)]
|
||||||
public Guid SubjectVisitId { get; set; }
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "中心编号")]
|
[ExcelColumnName("中心编号")]
|
||||||
public string TrialSiteCode { get; set; } = string.Empty;
|
public string TrialSiteCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "受试者")]
|
[ExcelColumnName("受试者")]
|
||||||
public string SubjectCode { get; set; } = string.Empty;
|
public string SubjectCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "访视名称")]
|
[ExcelColumnName("访视名称")]
|
||||||
public string VisitName { get; set; } = string.Empty;
|
public string VisitName { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "检查时间", Format = "yyyy-mm-dd hh:mm:ss")]
|
[ExcelColumn(Name = "检查时间", Format = "yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime StudyTime { get; set; }
|
public DateTime StudyTime { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "检查技术")]
|
[ExcelColumnName("检查技术")]
|
||||||
public string Modality { get; set; } = string.Empty;
|
public string Modality { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(IsIgnore = true)]
|
[ExcelColumn(Ignore = true)]
|
||||||
public bool IsDicomStudy { get; set; }
|
public bool IsDicomStudy { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "影像类型")]
|
|
||||||
|
[ExcelColumnName("影像类型")]
|
||||||
public string ImageType => IsDicomStudy ? "Dicom" : "非Dicom";
|
public string ImageType => IsDicomStudy ? "Dicom" : "非Dicom";
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "历史窗口")]
|
[ExcelColumnName("历史窗口")]
|
||||||
public string HistoryWindow { get; set; } = string.Empty;
|
public string HistoryWindow { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "之前超窗调整后没超窗")]
|
|
||||||
[ValueMapping(text: "yes", true)]
|
[ExcelColumnName("之前超窗调整后没超窗")]
|
||||||
[ValueMapping(text: "no", false)]
|
|
||||||
public bool IsOverWindowNowNotOverWindow { get; set; }
|
public bool IsOverWindowNowNotOverWindow { get; set; }
|
||||||
|
|
||||||
[ExporterHeader(DisplayName = "目前窗口")]
|
[ExcelColumnName("目前窗口")]
|
||||||
public string NowWindow { get; set; } = string.Empty;
|
public string NowWindow { get; set; } = string.Empty;
|
||||||
|
|
||||||
[ExporterHeader(IsIgnore = true)]
|
[ExcelColumn(Ignore =true)]
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -191,6 +191,8 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
||||||
dbSV.CheckState = CheckStateEnum.CVPassed;
|
dbSV.CheckState = CheckStateEnum.CVPassed;
|
||||||
dbSV.CheckUserId = _userInfo.Id;
|
dbSV.CheckUserId = _userInfo.Id;
|
||||||
dbSV.CheckPassedTime = DateTime.Now;
|
dbSV.CheckPassedTime = DateTime.Now;
|
||||||
|
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.Closed;
|
||||||
|
|
||||||
//---核对EDC数据,完全一致
|
//---核对EDC数据,完全一致
|
||||||
dbSV.CheckResult = _localizer["ConsistencyVerification_EDCB"];
|
dbSV.CheckResult = _localizer["ConsistencyVerification_EDCB"];
|
||||||
//---自动核查通过
|
//---自动核查通过
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
|
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
public Guid SiteId { get; set; }
|
public Guid SiteId { get; set; }=Guid.Empty;
|
||||||
|
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue