增加新的影像归档检查表
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-05-17 14:14:51 +08:00
parent 85439213b2
commit f6d2b1e7f1
8 changed files with 304 additions and 12 deletions

View File

@ -853,6 +853,13 @@
后台托管服务的方式运行
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.GetSubjectImageUploadList(System.Guid)">
<summary>
获取该受试者任务上传列表(展示已上传情况)
</summary>
<param name="subjectId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.RequestPackageAndAnonymizImage(System.Guid,System.Guid,System.Boolean)">
<summary>
打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包
@ -871,13 +878,6 @@
<param name="isAnonymize"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.StudyService.AddOrUpdateArchiveStudy(IRaCIS.Core.Application.Contracts.NewArchiveStudyCommand)">
<summary>
上传临床数据
</summary>
<param name="incommand"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.StudyService.Preview(System.Guid)">
<summary> 指定资源Id渲染Dicom检查的Jpeg预览图像 </summary>
<param name="studyId"> Dicom检查的Id </param>

View File

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
{
public class SubjectImageUploadDTO
{
public Guid SubejctId { get; set; }
public string SubjectCode { get; set; }
public string TaskBlindName { get; set; }
public string TaskName { get; set; }
public List<StudyBasicInfo> OrginalStudyList { get; set; }
public List<StudyBasicInfo> UploadStudyList { get; set; }
}
public class StudyBasicInfo
{
public Guid Id { get; set; }
public string Modalities { get; set; }
public string Description { get; set; }
public int SeriesCount { get; set; }
public int InstanceCount { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using FellowOakDicom;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.ImageAndDoc.DTO;
using MassTransit;
using Microsoft.AspNetCore.Mvc;
using System;
@ -31,6 +32,44 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
_oSSService = oSSService;
}
/// <summary>
/// 获取该受试者任务上传列表(展示已上传情况)
/// </summary>
/// <param name="subjectId"></param>
/// <returns></returns>
public async Task<IResponseOutput<List<SubjectImageUploadDTO> >> GetSubjectImageUploadList(Guid subjectId)
{
var query=_repository.Where<VisitTask>(t=>t.Id==subjectId)
.Select(u=>new SubjectImageUploadDTO()
{
SubejctId=u.SubjectId,
SubjectCode=u.IsSelfAnalysis==true? u.Subject.Code:u.BlindSubjectCode,
TaskBlindName=u.TaskBlindName,
TaskName=u.TaskName,
OrginalStudyList=u.SourceSubjectVisit.StudyList.Select(t=>new StudyBasicInfo()
{
Id=t.Id,
Description=t.Description,
InstanceCount=t.InstanceCount,
Modalities=t.Modalities,
SeriesCount=t.SeriesCount,
}).ToList(),
UploadStudyList=u.TaskStudyList.Select(t => new StudyBasicInfo()
{
Id = t.Id,
Description = t.Description,
InstanceCount = t.InstanceCount,
Modalities = t.Modalities,
SeriesCount = t.SeriesCount,
}).ToList()
})
;
var list =await query.ToListAsync();
return ResponseOutput.Ok(list);
}
/// <summary>
/// 打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包

View File

@ -139,11 +139,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}
/// <summary>
/// 上传临床数据
/// </summary>
/// <param name="incommand"></param>
/// <returns></returns>
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task<IResponseOutput> AddOrUpdateArchiveStudy(NewArchiveStudyCommand incommand)
{

View File

@ -19,6 +19,8 @@ namespace IRaCIS.Core.Domain.Models
[Table("VisitTask")]
public class VisitTask : Entity, IAuditUpdate, IAuditAdd
{
[JsonIgnore]
public List<TaskStudy> TaskStudyList { get; set; }
public string TaskName { get; set; } = string.Empty;
public string TaskBlindName { get; set; } = string.Empty;

View File

@ -0,0 +1,57 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
public class TaskInstance : Entity, IAuditAdd, IAuditUpdate
{
[JsonIgnore]
[ForeignKey("SeriesId")]
public TaskSeries TaskSeries { get; set; }
[JsonIgnore]
[ForeignKey("StudyId")]
public TaskStudy TaskStudy { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SeqId { get; set; }
public Guid StudyId { get; set; }
public Guid SeriesId { get; set; }
public string StudyInstanceUid { get; set; }
public string SeriesInstanceUid { get; set; }
public string SopInstanceUid { get; set; }
public int InstanceNumber { get; set; }
public DateTime? InstanceTime { get; set; }
public bool CPIStatus { get; set; }
public int ImageRows { get; set; }
public int ImageColumns { get; set; }
public int SliceLocation { get; set; }
public string SliceThickness { get; set; }
public int NumberOfFrames { get; set; }
public string PixelSpacing { get; set; }
public string ImagerPixelSpacing { get; set; }
public string FrameOfReferenceUID { get; set; }
public string WindowCenter { get; set; }
public string WindowWidth { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid VisitTaskId { get; set; }
public bool Anonymize { get; set; }
public string Path { get; set; }
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; } = DateTime.Now;
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; } = DateTime.Now;
public string HtmlPath { get; set; }=string.Empty;
}
}

View File

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
public class TaskSeries : Entity, IAuditAdd, IAuditUpdate, ISoftDelete
{
[JsonIgnore]
[ForeignKey("StudyId")]
public TaskStudy TaskStudy { get; set; }
[JsonIgnore]
public List<TaskInstance> InstanceList { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SeqId { get; set; }
public Guid StudyId { get; set; }
public string StudyInstanceUid { get; set; }
public string SeriesInstanceUid { get; set; }
public int SeriesNumber { get; set; }
public DateTime? SeriesTime { get; set; }
public string Modality { get; set; }
public string Description { get; set; }
public int InstanceCount { get; set; }
public string SliceThickness { get; set; }
public string ImagePositionPatient { get; set; }
public string ImageOrientationPatient { get; set; }
public string BodyPartExamined { get; set; }
public string SequenceName { get; set; }
public string ProtocolName { get; set; }
public string ImagerPixelSpacing { get; set; }
public string AcquisitionTime { get; set; } = string.Empty;
public string AcquisitionNumber { get; set; } = string.Empty;
public string TriggerTime { get; set; } = string.Empty;
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid VisitTaskId { get; set; }
public string BodyPartForEdit { get; set; } = string.Empty;
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; } = DateTime.Now;
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; } = DateTime.Now;
public DateTime? DeletedTime { get; set; }
public Guid? DeleteUserId { get; set; }
public bool IsDeleted {get;set;}
public bool IsReading { get; set; } = true;
public string ImageResizePath { get; set; }=string.Empty;
}
}

View File

@ -0,0 +1,99 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
public class TaskStudy : Entity, IAuditUpdate, IAuditAdd, ISoftDelete
{
[JsonIgnore]
[ForeignKey("VisitTaskId")]
public VisitTask VisitTask { get; set; }
[JsonIgnore]
public List<StudyMonitor> DicomStudyMonitorList { get; set; } = new List<StudyMonitor>();
[JsonIgnore]
public List<TaskSeries> SeriesList { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SeqId { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid VisitTaskId { get; set; }
public int Code { get; set; } = 0;
public string StudyCode { get; set; } = string.Empty;
public string StudyInstanceUid { get; set; } = string.Empty;
public DateTime? StudyTime { get; set; }
public string Modalities { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int SeriesCount { get; set; } = 0;
public int InstanceCount { get; set; } = 0;
public string InstitutionName { get; set; } = string.Empty;
public string PatientId { get; set; } = string.Empty;
public string PatientName { get; set; } = string.Empty;
public string PatientAge { get; set; } = string.Empty;
public string PatientSex { get; set; } = string.Empty;
public string StudyId { get; set; } = string.Empty;
public string AccessionNumber { get; set; } = string.Empty;
public string PatientBirthDate { get; set; } = string.Empty;
public string AcquisitionTime { get; set; } = string.Empty;
public string AcquisitionNumber { get; set; } = string.Empty;
public string TriggerTime { get; set; } = string.Empty;
public string BodyPartExamined { get; set; } = string.Empty;
public string BodyPartForEdit { get; set; } = string.Empty;
public string ModalityForEdit { get; set; } = string.Empty;
//0 未知 1 单重 2 双重
public bool IsDoubleReview { get; set; }
[JsonIgnore]
[ForeignKey("SubjectId")]
public Subject Subject { get; set; }
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; } = DateTime.Now;
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; } = DateTime.Now;
[JsonIgnore]
[ForeignKey("CreateUserId")]
public User Uploader { get; set; }
[JsonIgnore]
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
//软删除
public bool IsDeleted { get; set; }
public DateTime? DeletedTime { get; set; }
public Guid? DeleteUserId { get; set; }
}
}