624 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			624 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
| using IRaCIS.Core.Application.Service.ImageAndDoc.DTO;
 | |
| using IRaCIS.Core.Domain.Share;
 | |
| using Newtonsoft.Json;
 | |
| using System.ComponentModel.DataAnnotations;
 | |
| 
 | |
| namespace IRaCIS.Core.Application.Contracts
 | |
| {
 | |
| 
 | |
|     public class UnionStudyBaseModel
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
| 
 | |
| 
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public string VisitName { get; set; } = string.Empty;
 | |
| 
 | |
|         public decimal VisitNum { get; set; }
 | |
| 
 | |
|         public string TrialSiteCode { get; set; } = string.Empty;
 | |
| 
 | |
|         public string TrialSiteAliasName { get; set; } = string.Empty;
 | |
| 
 | |
|         public string Uploader { get; set; } = string.Empty;
 | |
| 
 | |
|         public DateTime UploadTime { get; set; }
 | |
| 
 | |
|         public string StudyCode { get; set; }
 | |
| 
 | |
| 
 | |
|         //[JsonIgnore]
 | |
|         //public string DicomStudyCode { get; set; } = string.Empty;
 | |
|         //[JsonIgnore]
 | |
|         //public int NoneDicomCode { get; set; }
 | |
| 
 | |
|         public string RecordPath { get; set; } = string.Empty;
 | |
|         public bool IsDicom { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class UnionStudyMonitorModel : UnionStudyBaseModel
 | |
|     {
 | |
|         public Guid StudyId { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|         public string UploadStartTimeStr => UploadStartTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
 | |
|         public string UploadFinishedTimeStr => UploadFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff");
 | |
| 
 | |
|         public string ArchiveFinishedTimeStr => ArchiveFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff");
 | |
| 
 | |
| 
 | |
|         public string UploadIntervalStr
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 var uploadTimeSpan = UploadFinishedTime - UploadStartTime;
 | |
| 
 | |
|                 return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public string ArchiveIntervalStr
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 var uploadTimeSpan = ArchiveFinishedTime - UploadFinishedTime;
 | |
| 
 | |
|                 return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|         public string TimeInterval
 | |
|         {
 | |
|             get
 | |
|             {
 | |
| 
 | |
|                 var uploadTimeSpan = ArchiveFinishedTime - UploadStartTime;
 | |
| 
 | |
|                 return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public DateTime UploadStartTime { get; set; }
 | |
| 
 | |
| 
 | |
|         public DateTime? UploadFinishedTime { get; set; }
 | |
| 
 | |
|         public DateTime? ArchiveFinishedTime { get; set; }
 | |
| 
 | |
| 
 | |
|         public decimal FileSize { get; set; }
 | |
| 
 | |
|         public string IP { get; set; } = String.Empty;
 | |
| 
 | |
| 
 | |
|         public bool IsDicomReUpload { get; set; }
 | |
| 
 | |
| 
 | |
|         public int FileCount { get; set; }
 | |
| 
 | |
|         public bool IsSuccess { get; set; }
 | |
| 
 | |
|         public string Note = string.Empty;
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class UnionStudyViewModel : UnionStudyBaseModel
 | |
|     {
 | |
| 
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         public bool IsFromPACS { get; set; }
 | |
| 
 | |
|         public int? Count { get; set; }
 | |
| 
 | |
| 
 | |
|         public string Modalities { get; set; } = string.Empty;
 | |
| 
 | |
|         public string Bodypart { get; set; } = string.Empty;
 | |
| 
 | |
|         public DateTime? StudyTime { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class StudyQuery : PageInput
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         public Guid? TrialSiteId { get; set; }
 | |
|         public Guid? SubjectVisitId { get; set; }
 | |
| 
 | |
|         public string SubjectInfo { get; set; } = String.Empty;
 | |
| 
 | |
| 
 | |
|         public string[]? VisitPlanArray { get; set; }
 | |
| 
 | |
|         public Guid? VisitTaskId { get; set; }
 | |
| 
 | |
|         public bool? IsDicom { get; set; }
 | |
| 
 | |
|         public string? Uploader { get; set; }
 | |
| 
 | |
|         public bool? IsSuccess { get; set; }
 | |
| 
 | |
|         public string? StudyCode { get; set; }
 | |
| 
 | |
|         public bool? IsFromPACS { get; set; }
 | |
| 
 | |
| 
 | |
|         public DateTime? UploadStartTime { get; set; }
 | |
| 
 | |
|         public DateTime? UploadFinishedTime { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class PriArchiveTaskStudyCommand
 | |
|     {
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
| 
 | |
|         public int FileCount { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class PreArchiveDicomStudyCommand
 | |
|     {
 | |
| 
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid TrialSiteId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
| 
 | |
|         public bool IsDicomReUpload { get; set; }
 | |
| 
 | |
| 
 | |
|         public int FileCount { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class SubejctZipInfoQuery
 | |
|     {
 | |
|         public Guid? SubejctId { get; set; }
 | |
| 
 | |
|         public string? SubjectCode { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid? SubejectVisitId { get; set; }
 | |
| 
 | |
|         public Guid? TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class TaskStudyAchivePreConfirmCommand
 | |
|     {
 | |
|         public List<string> StudyInstanceUidList { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
|         [NotDefault]
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid? VisitTaskId { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class TaskStudyArchiveConfirmResult
 | |
|     {
 | |
|         public string StudyInstanceUid { get; set; }
 | |
| 
 | |
|         public bool IsAllowUpload { get; set; }
 | |
| 
 | |
|         public bool IsAllowReUpload { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class TaskArchiveStudyCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid StudyMonitorId { get; set; }
 | |
| 
 | |
|         public int FailedFileCount { get; set; }
 | |
| 
 | |
|         public string RecordPath { get; set; } = string.Empty;
 | |
| 
 | |
|         public AddOrUpdateStudyDto Study { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class NewArchiveStudyCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid TrialSiteId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
|         [NotDefault]
 | |
|         public Guid StudyMonitorId { get; set; }
 | |
| 
 | |
|         public int FailedFileCount { get; set; }
 | |
| 
 | |
|         public string RecordPath { get; set; } = string.Empty;
 | |
| 
 | |
|         public AddOrUpdateStudyDto Study { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class AddOrUpdateStudyDto
 | |
|     {
 | |
| 
 | |
| 
 | |
|         public string StudyId { get; set; } = string.Empty;
 | |
| 
 | |
|         //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 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 List<AddOrUpdateSeriesDto> SeriesList { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class AddOrUpdateSeriesDto
 | |
|     {
 | |
|         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; } = string.Empty;
 | |
|         public string Description { get; set; } = string.Empty;
 | |
|         public int InstanceCount { get; set; }
 | |
|         public string SliceThickness { get; set; } = string.Empty;
 | |
| 
 | |
|         public string ImagePositionPatient { get; set; } = string.Empty;
 | |
|         public string ImageOrientationPatient { get; set; } = string.Empty;
 | |
|         public string BodyPartExamined { get; set; } = string.Empty;
 | |
|         public string SequenceName { get; set; } = string.Empty;
 | |
|         public string ProtocolName { get; set; } = string.Empty;
 | |
|         public string ImagerPixelSpacing { 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 ImageResizePath { get; set; } = string.Empty;
 | |
|         public List<AddInstanceDto> InstanceList { get; set; }
 | |
| 
 | |
|         public Guid? VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class AddInstanceDto
 | |
|     {
 | |
|         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; } = string.Empty;
 | |
|         public int NumberOfFrames { get; set; }
 | |
|         public string PixelSpacing { get; set; } = string.Empty;
 | |
| 
 | |
|         public string ImagerPixelSpacing { get; set; } = string.Empty;
 | |
|         public string FrameOfReferenceUID { get; set; } = string.Empty;
 | |
|         public string WindowCenter { get; set; } = string.Empty;
 | |
|         public string WindowWidth { get; set; } = string.Empty;
 | |
| 
 | |
|         public bool Anonymize { get; set; }
 | |
|         public string Path { get; set; } = string.Empty;
 | |
| 
 | |
|         public string HtmlPath { get; set; } = string.Empty;
 | |
| 
 | |
|         public long FileSize { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class CRCUploadTaskQuery
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public string SubjectCode { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class CRCUploadTaskStudyQuery : SortInput
 | |
|     {
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class IRUploadStudyQuery : SortInput
 | |
|     {
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public string? SubjectCode { get; set; }
 | |
| 
 | |
|         public Guid? VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class IRTaskUploadedDicomStudyQuery
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class IRUploadTaskDicomStudyDto : DicomStudyBasicInfo
 | |
|     {
 | |
| 
 | |
|         public int UploadedSeriesCount { get; set; }
 | |
| 
 | |
|         public int UploadedInstanceCount { get; set; }
 | |
| 
 | |
|         public List<string> UploadedSopInstanceUidList { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class IRUploadTaskNoneDicomStudyDto : NoneDicomStudyBasicInfo
 | |
|     {
 | |
| 
 | |
|         public int UploadedFileCount { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class TaskDicomStudyDTO : DicomStudyBasicInfo
 | |
|     {
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         public string TaskBlindName { get; set; }
 | |
| 
 | |
|         public string TaskName { get; set; }
 | |
|         public Guid? SourceSubjectVisitId { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|         public int UploadedSeriesCount { get; set; }
 | |
| 
 | |
|         public int UploadedInstanceCount { get; set; }
 | |
| 
 | |
|         public List<string> UploadedSopInstanceUidList { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class NoneDicomFileInfo
 | |
|     {
 | |
|         [JsonIgnore]
 | |
|         public Guid? OriginNoneDicomStudyId { get; set; }
 | |
| 
 | |
|         public string FileType { get; set; }
 | |
| 
 | |
|         public long? FileSize { get; set; }
 | |
|         public string FileName { get; set; }
 | |
| 
 | |
|         public string Path { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class TaskNoneDicomStudyDTO : NoneDicomStudyBasicInfo
 | |
|     {
 | |
|         public Guid VisitTaskId { get; set; }
 | |
| 
 | |
|         public int UploadedFileCount { get; set; }
 | |
| 
 | |
|         public List<NoneDicomFileInfo> UploadedFileList { get; set; }
 | |
| 
 | |
|         public List<NoneDicomFileInfo> FileList { get; set; }
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         public string TaskBlindName { get; set; }
 | |
| 
 | |
|         public string TaskName { get; set; }
 | |
|         public Guid? SourceSubjectVisitId { get; set; }
 | |
| 
 | |
|         public ReadingTaskState ReadingTaskState { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class CRCUploadedStudyQuqry
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
| 
 | |
|         public List<Guid> DicomStudyIdList { get; set; }
 | |
| 
 | |
|         public List<Guid> NoneDicomStudyIdList { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class IRReadingDownloadQuery : SortInput
 | |
|     {
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public string? SubjectCode { get; set; }
 | |
| 
 | |
|         public Guid? VisitTaskId { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class IRDownloadQuery
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         public List<SubjectVisitTaskInfo> SubjectVisitTaskList { get; set; }
 | |
| 
 | |
|         public List<Guid> DicomStudyIdList { get; set; }
 | |
| 
 | |
|         public List<Guid> NoneDicomStudyIdList { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class TrialImageDownloadView
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public string TrialSiteCode { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         public bool IsSuccess { get; set; }
 | |
| 
 | |
|         public DateTime DownloadStartTime { get; set; }
 | |
|         public DateTime? DownloadEndTime { get; set; }
 | |
| 
 | |
|         public string VisitName { get; set; }
 | |
| 
 | |
|         public ImageType ImageType { get; set; }
 | |
| 
 | |
|         public int NoneDicomStudyCount { get; set; }
 | |
| 
 | |
|         public int DicomStudyCount { get; set; }
 | |
| 
 | |
|         public int ImageCount { get; set; }
 | |
|         public long ImageSize { get; set; }
 | |
| 
 | |
| 
 | |
|         public string UserName { get; set; }
 | |
| 
 | |
|         public string UserFullName { get; set; }
 | |
|         public DateTime CreateTime { get; set; }
 | |
| 
 | |
|         public string IP { get; set; }
 | |
| 
 | |
|         public UserTypeEnum UserTypeEnum { get; set; }
 | |
| 
 | |
| 
 | |
|         public string UploadIntervalStr
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 var uploadTimeSpan = DownloadEndTime - DownloadStartTime;
 | |
| 
 | |
|                 return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class TrialIamgeDownQuery : PageInput
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public string? SubjectCode { get; set; }
 | |
| 
 | |
|         public ImageType? ImageType { get; set; }
 | |
| 
 | |
|         public UserTypeEnum? UserType { get; set; }
 | |
| 
 | |
|         public bool? IsSuccess { get; set; }
 | |
| 
 | |
|         public DateTime? DownloadStartTime { get; set; }
 | |
|         public DateTime? DownloadEndTime { get; set; }
 | |
| 
 | |
|         public string? IP { get; set; }
 | |
| 
 | |
|         public string? Name { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class SubjectVisitTaskInfo
 | |
|     {
 | |
|         public Guid SubjectVisitId { get; set; }
 | |
| 
 | |
|         public Guid TaskId { get; set; }
 | |
|     }
 | |
| }
 |