阅片导入

Test_IRC_Net8
he 2025-08-01 17:42:09 +08:00
parent 9a1a4e3451
commit 1fc92a12e4
8 changed files with 20173 additions and 1 deletions

View File

@ -3056,6 +3056,12 @@
标准和服务对应
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.ReadingCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.ReadingCalculateService.GetService(System.Guid)">
<summary>
获取Service
@ -3124,6 +3130,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -3504,6 +3516,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IVUSCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IVUSCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -3633,6 +3651,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -4161,6 +4185,12 @@
<param name="digitPlaces"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoWithoutPETCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoWithoutPETCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -4689,6 +4719,12 @@
<param name="digitPlaces"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -4974,6 +5010,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRIPDFFCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRIPDFFCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5044,6 +5086,12 @@
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.OCTCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.OCTCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5215,6 +5263,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5321,6 +5375,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1CalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1CalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5572,6 +5632,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1_BMCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1_BMCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5883,6 +5949,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.SelfDefineCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary>
获取阅片的计算数据
@ -5940,6 +6012,12 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ICriterionCalculateService.ReadingImport">
<summary>
阅片导入
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ICriterionCalculateService.VerifyVisitTaskQuestions(IRaCIS.Core.Application.Service.Reading.Dto.VerifyVisitTaskQuestionsInDto)">
<summary>
验证访视提交

View File

@ -1,5 +1,7 @@
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using Microsoft.AspNetCore.Hosting;
@ -7,13 +9,16 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MiniExcelLibs;
using System.Data;
using System.IO;
namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
[ApiExplorerSettings(GroupName = "Image")]
public class ReadingCalculateService(IEnumerable<ICriterionCalculateService> _criterionServices,
IRepository<VisitTask> _visitTaskRepository,
IRepository<ReadingImportFile> _readingImportFileRepository,
IHttpContextAccessor httpContext,
IOSSService oSSService,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IStringLocalizer _localizer, IUserInfo _userInfo
@ -53,6 +58,29 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var service = await this.GetService(visitTaskId);
if (service != null)
{
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
var streamCopy = new MemoryStream();
// 将上传的文件内容复制到 MemoryStream
await file.CopyToAsync(streamCopy);
// 重置流的位置,以便后续读取
streamCopy.Position = 0;
var ossRelativePath = await oSSService.UploadToOSSAsync(streamCopy, $"{visitTaskInfo.TrialId.ToString()}/InspectionUpload/ReadingImport", file.FileName);
await _readingImportFileRepository.AddAsync(new ReadingImportFile()
{
FilePath = ossRelativePath,
VisitTaskId = visitTaskId,
TrialId = visitTaskInfo.TrialId,
SubjectId = visitTaskInfo.SubjectId,
SubjectVisitId = visitTaskInfo.SourceSubjectVisitId,
TrialReadingCriterionId = visitTaskInfo.TrialReadingCriterionId,
});
await service.ReadingImport();
}
}

View File

@ -0,0 +1,20 @@
namespace IRaCIS.Core.Domain.Models;
[Comment("阅片导入表")]
[Table("ReadingImportFile")]
public class ReadingImportFile : BaseAddAuditEntity
{
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid VisitTaskId { get; set; }
public Guid? SubjectVisitId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public string FilePath { get; set; }=string.Empty;
}

View File

@ -253,6 +253,43 @@ namespace IRaCIS.Core.Infra.EFCore.Common
});
}
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ReadingImportFile)))
{
var type = GetEntityAuditOpt(item);
var extraIdentification = string.Empty;
var basicData = item.Entity as SystemBasicData;
extraIdentification = (basicData.ParentId == null ? "/parent" : string.Empty);
await InsertInspection<SystemBasicData>(item.Entity as SystemBasicData, type, x => new InspectionConvertDTO()
{
IsDistinctionInterface = false,
ExtraIndentification = extraIdentification
});
}
// 阅片导入
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ReadingImportFile)))
{
var type = GetEntityAuditOpt(item);
var entity = item.Entity as ReadingImportFile;
await InsertInspection<ReadingImportFile>(entity, type, x => new InspectionConvertDTO()
{
VisitTaskId = entity.VisitTaskId,
TrialReadingCriterionId=entity.TrialReadingCriterionId,
SubjectVisitId= entity.SubjectVisitId,
SubjectId=entity.SubjectId,
TrialId = entity.TrialId,
ObjectRelationParentId = entity.VisitTaskId,
});
}
#region 已修改
#region 阅片单元配置

View File

@ -322,6 +322,8 @@ public class IRaCISDBContext : DbContext
#region Reading
public virtual DbSet<TrialCriterionDictionaryCode> TrialCriterionDictionaryCode { get; set; }
public virtual DbSet<ReadingImportFile> ReadingImportFile { get; set; }
public virtual DbSet<ReadingCustomTag> ReadingCustomTag { get; set; }
public virtual DbSet<SystemCriterionDictionaryCode> SystemCriterionDictionaryCode { get; set; }
public virtual DbSet<ReadingTaskRelation> ReadingTaskRelation { get; set; }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,48 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Infra.EFCore.Migrations
{
/// <inheritdoc />
public partial class ReadingImport : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "ReadingImportFile",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TrialId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
SubjectId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
VisitTaskId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
SubjectVisitId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
TrialReadingCriterionId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
FilePath = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ReadingImportFile", x => x.Id);
},
comment: "阅片导入表");
migrationBuilder.CreateIndex(
name: "IX_ReadingImportFile_CreateUserId",
table: "ReadingImportFile",
column: "CreateUserId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ReadingImportFile");
}
}
}

View File

@ -4990,6 +4990,47 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
});
});
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ReadingImportFile", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("FilePath")
.IsRequired()
.HasMaxLength(400)
.HasColumnType("nvarchar(400)");
b.Property<Guid>("SubjectId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("SubjectVisitId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TrialId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TrialReadingCriterionId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("VisitTaskId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("CreateUserId");
b.ToTable("ReadingImportFile", t =>
{
t.HasComment("阅片导出表");
});
});
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ReadingJudgeInfo", b =>
{
b.Property<Guid>("Id")
@ -16338,6 +16379,17 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
b.Navigation("VisitTask");
});
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ReadingImportFile", b =>
{
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
.WithMany()
.HasForeignKey("CreateUserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("CreateUserRole");
});
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ReadingJudgeInfo", b =>
{
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")