上传下载修改

IRC_NewDev
hang 2024-09-03 14:14:17 +08:00
parent a5ef0fc902
commit 1861374c31
3 changed files with 144 additions and 20 deletions

View File

@ -78,11 +78,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
public string TaskBlindName { get; set; }
public string TaskName { get; set; }
public Guid? SourceSubjectVisitId { get; set; }
public bool IsImageFilter { get; set; }
public string CriterionModalitys { get; set; }
public Guid? SourceSubjectVisitId { get; set; }
public List<DicomStudyBasicInfo> DicomStudyList { get; set; }

View File

@ -385,6 +385,18 @@ namespace IRaCIS.Core.Application.Contracts
}
public class IRUploadStudyQuery : SortInput
{
[NotDefault]
public Guid SubjectId { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
[NotDefault]
public string SubjectCode { get; set; }
}
public class IRUploadTaskDicomStudyDto : DicomStudyBasicInfo
{
@ -403,6 +415,47 @@ namespace IRaCIS.Core.Application.Contracts
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 TaskNoneDicomStudyDTO : NoneDicomStudyBasicInfo
{
public int UploadedFileCount { 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 class CRCUploadedStudyQuqry

View File

@ -1,5 +1,4 @@
using DocumentFormat.OpenXml.Office2010.Ink;
using FellowOakDicom;
using FellowOakDicom;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Helper;
@ -9,13 +8,14 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Infrastructure.Extention;
using MassTransit;
using MassTransit.Initializers;
using MathNet.Numerics;
using Medallion.Threading;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Data;
using System.IO.Compression;
using System.Linq;
@ -43,6 +43,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
IRepository<TaskSeries> _taskSeriesRepository,
IRepository<TaskInstance> _taskInstanceRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<NoneDicomStudy> _noneDicomStudyReposiotry,
IRepository<NoneDicomStudyFile> _noneDicomStudyFileReposiotry,
IDistributedLockProvider _distributedLockProvider) : BaseService, IDownloadAndUploadService
{
@ -98,14 +100,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
/// <summary>
/// 获取该受试者任务上传列表(展示已上传情况)
/// </summary>
/// <param name="subjectId"></param>
/// <param name="trialReadingCriterionId"></param>
/// <returns></returns>
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(Guid subjectId, Guid trialReadingCriterionId)
[HttpPost]
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(IRUploadStudyQuery inQuery)
{
await SubejctRandomReadingTaskNameDeal(subjectId, trialReadingCriterionId);
await SubejctRandomReadingTaskNameDeal(inQuery.SubjectId, inQuery.TrialReadingCriterionId);
var query = _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.SourceSubjectVisitId != null
var query = _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SourceSubjectVisitId != null
&& t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect)
.Select(u => new SubjectImageUploadDTO()
{
@ -165,7 +166,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
})
;
var list = await query.ToListAsync();
var list = await query.Where(t => t.SubjectCode == inQuery.SubjectCode).ToListAsync();
return ResponseOutput.Ok(list);
}
@ -468,12 +469,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
[HttpDelete]
public async Task<IResponseOutput> DeleteTaskStudy(Guid visitTaskId)
public async Task<IResponseOutput> DeleteTaskStudy(Guid visitTaskId, bool isDicom, Guid? noneDicomStudyId)
{
await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
if (isDicom)
{
await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
}
else
{
await _noneDicomStudyFileReposiotry.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.NoneDicomStudyId == noneDicomStudyId);
}
return ResponseOutput.Ok();
}
@ -895,13 +902,15 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}
#region 按照任务为维度 展示上传的列表 废弃
/// <summary>
/// IR 影像上传任务列表 --old 20240903 界面调整,现在先废弃
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<SubjectUploadTaskInfo>> GetIRUploadTaskList(CRCUploadTaskQuery inQuery)
public async Task<List<SubjectUploadTaskInfo>> GetIRUploadTaskList_Old(CRCUploadTaskQuery inQuery)
{
var query = _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId
&& t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect)
@ -913,12 +922,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
return list;
}
/// <summary>
/// IR 上传任务 dicom 列表 后处理的数据不能排序
/// IR 上传任务 dicom 列表 后处理的数据不能排序 --old 20240903 界面调整,现在先废弃
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<IRUploadTaskDicomStudyDto>> GetIRUploadTaskDicomStudyList(CRCUploadTaskStudyQuery inQuery)
public async Task<List<IRUploadTaskDicomStudyDto>> GetIRUploadTaskDicomStudyList_Old(CRCUploadTaskStudyQuery inQuery)
{
var list = await _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId)
.SelectMany(t => t.SourceSubjectVisit.StudyList)
@ -951,12 +960,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}
/// <summary>
/// IR 上传任务 nonedicom 列表 后处理的数据不能排序
/// IR 上传任务 nonedicom 列表 后处理的数据不能排序 --old 20240903 界面调整,现在先废弃
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<IRUploadTaskNoneDicomStudyDto>> GetIRUploadTaskNoneDicomStudyList(CRCUploadTaskStudyQuery inQuery)
public async Task<List<IRUploadTaskNoneDicomStudyDto>> GetIRUploadTaskNoneDicomStudyList_Old(CRCUploadTaskStudyQuery inQuery)
{
var list = await _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId)
.SelectMany(t => t.SourceSubjectVisit.StudyList)
@ -978,9 +987,70 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
return list;
}
#endregion
#region IR 上传 列表dicom 上以任务为维度非dicom 以检查为维度
/// <summary>
/// IR 上传任务 nonedicom 列表 后处理的数据UploadedFileCount不能排序 --new
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<TaskNoneDicomStudyDTO>> GetIRUploadTaskNoneDicomStudyList(IRUploadStudyQuery inQuery)
{
var query = from u in _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId
&& t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect)
join ns in _noneDicomStudyReposiotry.Where(t => t.SubjectId == inQuery.SubjectId) on u.SourceSubjectVisitId equals ns.SubjectVisitId
select new TaskNoneDicomStudyDTO()
{
SubjectId = u.SubjectId,
SubjectCode = u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code,
TaskBlindName = u.TaskBlindName,
TaskName = u.TaskName,
SourceSubjectVisitId = u.SourceSubjectVisitId,
Id = ns.Id,
Description = ns.Description,
ImageDate = ns.ImageDate,
BodyPart = ns.BodyPart,
FileCount = ns.FileCount,
Modality = ns.Modality,
StudyCode = ns.StudyCode,
};
var list = await query.Where(t => t.SubjectCode == inQuery.SubjectCode).SortToListAsync(inQuery);
var noneDicomStudyIdList = list.Select(t => t.Id).ToList();
var taskNoneDicomStudyList = _visitTaskRepository.Where(t => noneDicomStudyIdList.Contains(t.Id))
.SelectMany(t => t.TaskNoneDicomStudyFileList).Where(t => noneDicomStudyIdList.Contains((Guid)t.VisitTaskId))
.Select(u => new
{
u.OriginNoneDicomStudyId,
})
.ToList();
foreach (var item in list)
{
item.UploadedFileCount = taskNoneDicomStudyList.Where(t => t.OriginNoneDicomStudyId == item.Id).Count();
}
return list;
}
#endregion
/// <summary>
/// IQC 获取CRC 上传到某一个访视的的检查信息 (原始影像信息 包含dicom 非dicom)
/// </summary>