diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 7c31fe338..1a320e129 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -2197,7 +2197,7 @@
-
+
从上传文件中获取Datatable
@@ -4840,7 +4840,7 @@
-
+
从上传文件中获取Datatable
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index 599bb8379..2d2cc2469 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -234,6 +234,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
}
}
+ public class TemplateData
+ {
+ public string TaskBlindName { get; set; }
+
+ public string SubjectID { get; set; }
+ }
+
public class OCTFCTUploadData
{
///
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs
index 175e7fbe2..32d63d863 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs
@@ -1,4 +1,6 @@
-using IRaCIS.Core.Application.Service.Reading.Dto;
+using IRaCIS.Core.Application.Helper;
+using IRaCIS.Core.Application.Service.Reading.Dto;
+using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common;
using MassTransit;
@@ -6,56 +8,38 @@ using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using MiniExcelLibs;
using System.Data;
+using System.IO;
using System.Text;
namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
- public class GeneralCalculateService : BaseService, IGeneralCalculateService
+ public class GeneralCalculateService(IRepository _readingTableQuestionAnswerRepository,
+ IRepository _visitTaskRepository,
+ IRepository _readingQuestionCriterionTrialRepository,
+ ILogger _logger,
+ IRepository _readingTableQuestionTrialRepository,
+ IRepository _readingTableAnswerRowInfoRepository,
+ IRepository _readingQuestionTrialRepository,
+ IRepository _subjectVisitRepository,
+ IRepository _tumorAssessmentRepository,
+ IRepository _readingTaskQuestionAnswerRepository,
+ IRepository _inspectionFileRepository,
+ IOSSService oSSService
+ ) : BaseService, IGeneralCalculateService
{
- private readonly IRepository _readingTableQuestionAnswerRepository;
- private readonly IRepository _visitTaskRepository;
- private readonly IRepository _readingQuestionCriterionTrialRepository;
- private readonly ILogger _logger;
- private readonly IRepository _readingTableQuestionTrialRepository;
- private readonly IRepository _readingTableAnswerRowInfoRepository;
- private readonly IRepository _readingQuestionTrialRepository;
- private readonly IRepository _subjectVisitRepository;
- private readonly IRepository _tumorAssessmentRepository;
- private readonly IRepository _readingTaskQuestionAnswerRepository;
-
- public GeneralCalculateService(
- IRepository readingTableQuestionAnswerRepository,
- IRepository visitTaskRepository,
- IRepository readingQuestionCriterionTrialRepository,
- ILogger logger,
- IRepository readingTableQuestionTrialRepository,
- IRepository readingTableAnswerRowInfoRepository,
- IRepository readingQuestionTrialRepository,
- IRepository subjectVisitRepository,
- IRepository tumorAssessmentRepository,
- IRepository readingTaskQuestionAnswerRepository
- )
- {
- this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository;
- this._visitTaskRepository = visitTaskRepository;
- this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
- this._logger = logger;
- this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
- this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
- this._readingQuestionTrialRepository = readingQuestionTrialRepository;
- this._subjectVisitRepository = subjectVisitRepository;
- this._tumorAssessmentRepository = tumorAssessmentRepository;
- this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
- }
+
///
/// 从上传文件中获取Datatable
///
///
- public async Task GetDataTableFromUpload(IFormFile file)
+ public async Task GetDataTableFromUpload(IFormFile file,string pathCode,Guid trialId)
{
+
+
+
DataTable result = new DataTable();
var fileFolder = "Upload\\";
if (!Directory.Exists(fileFolder))
@@ -66,11 +50,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var fileName = DateTime.Now.ToString("yyyyMMddHHmmss") +
Path.GetExtension(file.FileName);
var filePath = Path.Combine(fileFolder, fileName);
+
+ var fileStream = new MemoryStream();
try
{
using (var stream = new FileStream(filePath, FileMode.Create))
{
file.CopyTo(stream);
+ await stream.CopyToAsync(fileStream);
+
stream.Position = 0;
result = stream.QueryAsDataTable(useHeaderRow: false);
}
@@ -80,6 +68,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
File.Delete(filePath);
}
+
+ try
+ {
+ var ossRelativePath = await oSSService.UploadToOSSAsync(fileStream, pathCode, file.FileName);
+ await _inspectionFileRepository.AddAsync(new InspectionFile() { FileName = file.FileName, RelativePath = ossRelativePath, TrialId = trialId });
+ }
+ catch (Exception)
+ {
+
+
+ }
+
+
+
+
File.Delete(filePath);
// 创建一个要删除的行集合
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
index 969e93c57..2ef2c6859 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs
@@ -580,9 +580,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x=>x.Subject).FirstNotNullAsync();
- var values = new
+ var values = new TemplateData()
{
- SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty()? taskinfo.Subject.Code: taskinfo.BlindSubjectCode,
+ SubjectID = "'" + (taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode),
TaskBlindName = taskinfo.TaskBlindName,
};
return await _visitTaskHelpeService.ExportTemplateAsync(new IRaCIS.Application.Contracts.ExportTemplateAsyncDto()
@@ -603,11 +603,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var request = httpContext.HttpContext!.Request;
var file = request.Form.Files[0];
Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]);
- var dataTable =await _generalCalculateService.GetDataTableFromUpload(file);
+ var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
+ var dataTable =await _generalCalculateService.GetDataTableFromUpload(file, "IVUSTemplate", taskinfo.TrialId);
- var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x=>x.TrialReadingCriterion).FirstNotNullAsync();
+
- var values = new
+ var values = new TemplateData()
{
SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode,
TaskBlindName = taskinfo.TaskBlindName,
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs
index f097ccd95..4444c111a 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs
@@ -44,6 +44,6 @@ namespace IRaCIS.Core.Application.Service
///
///
///
- Task GetDataTableFromUpload(IFormFile file);
+ Task GetDataTableFromUpload(IFormFile file, string pathCode, Guid trialId);
}
}
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
index f00f83cd3..f031c90df 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs
@@ -447,9 +447,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
public async Task GetOCTFCTTemplate(GetExportTemplateInDto inDto)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).FirstNotNullAsync();
- var values = new
+ var values = new TemplateData()
{
- SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode,
+ SubjectID = "'" + (taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode),
TaskBlindName = taskinfo.TaskBlindName,
};
return await _visitTaskHelpeService.ExportTemplateAsync(new IRaCIS.Application.Contracts.ExportTemplateAsyncDto()
@@ -470,11 +470,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var request = httpContext.HttpContext!.Request;
var file = request.Form.Files[0];
Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]);
- var dataTable = await _generalCalculateService.GetDataTableFromUpload(file);
-
var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
+ var dataTable = await _generalCalculateService.GetDataTableFromUpload(file, "OCTFCT", taskinfo.TrialId);
- var values = new
+
+
+ var values = new TemplateData()
{
SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode,
TaskBlindName = taskinfo.TaskBlindName,
@@ -623,9 +624,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
public async Task GetOCTLipidAngleTemplate(GetExportTemplateInDto inDto)
{
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).FirstNotNullAsync();
- var values = new
+ var values = new TemplateData()
{
- SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode,
+ SubjectID = "'" + (taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode),
TaskBlindName = taskinfo.TaskBlindName,
};
return await _visitTaskHelpeService.ExportTemplateAsync(new IRaCIS.Application.Contracts.ExportTemplateAsyncDto()
@@ -646,11 +647,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var request = httpContext.HttpContext!.Request;
var file = request.Form.Files[0];
Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]);
- var dataTable = await _generalCalculateService.GetDataTableFromUpload(file);
-
var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
+ var dataTable = await _generalCalculateService.GetDataTableFromUpload(file, "OCTLipidAngle", taskinfo.TrialId);
- var values = new
+
+
+ var values = new TemplateData()
{
SubjectID = taskinfo.BlindSubjectCode.IsNullOrEmpty() ? taskinfo.Subject.Code : taskinfo.BlindSubjectCode,
TaskBlindName = taskinfo.TaskBlindName,
@@ -994,7 +996,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 平均最小FCT
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
- Answer = oCTFCTInfos.Count() == 0 ? "0.00" : GetDigitPlacesData(oCTFCTInfos.Where(x => x.PlaqueNum == item).Average(x => x.Data).ToString()),
+ Answer = oCTFCTInfos.Where(x => x.PlaqueNum == item).Count() == 0 ? "0.00" : GetDigitPlacesData(oCTFCTInfos.Where(x => x.PlaqueNum == item).Average(x => x.Data).ToString()),
Id = NewId.NextGuid(),
QuestionId = patchDataStatisticsInfo.Id,
TrialId = inDto.TrialId,
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index 81e650294..309b8fe8d 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -1967,6 +1967,32 @@ namespace IRaCIS.Core.Infra.EFCore.Common
});
}
+ foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(NoneDicomStudyFile)))
+ {
+
+ var type = GetEntityAuditOpt(item);
+
+ var entity = item.Entity as NoneDicomStudyFile;
+
+ var extraIdentification = string.Empty;
+
+ if (entity.VisitTaskId!=null)
+ {
+ extraIdentification = "/VisitTask";
+ }
+
+ var trialid = await _dbContext.NoneDicomStudy.Where(x => x.Id == entity.NoneDicomStudyId).Select(x => x.TrialId).FirstOrDefaultAsync();
+
+
+ await InsertInspection(item.Entity as NoneDicomStudyFile, type, x => new InspectionConvertDTO()
+ {
+ TrialId= trialid,
+ ObjectRelationParentId = x.VisitTaskId,
+ ExtraIndentification = extraIdentification
+ });
+ }
+
+
// 既往手术史
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(PreviousSurgery)))
{
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingDto.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingDto.cs
index f1a95da9b..8bc888aff 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingDto.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingDto.cs
@@ -108,7 +108,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
public bool IsSelfDefine = false;
- // 额外标识
+ ///
+ /// 额外标识
+ ///
public string ExtraIndentification = string.Empty;