修改bug

This commit is contained in:
2023-04-28 09:23:12 +08:00
parent a86c43d8d9
commit 46c4416434
7 changed files with 167 additions and 21 deletions
@@ -176,6 +176,24 @@ namespace IRaCIS.Core.Application.Contracts
}
public class PreArchiveDicomStudyCommand
{
[NotDefault]
public Guid TrialId { get; set; }
[NotDefault]
public Guid SiteId { get; set; }
[NotDefault]
public Guid SubjectId { get; set; }
[NotDefault]
public Guid SubjectVisitId { get; set; }
public int FailedFileCount { get; set; }
public decimal FileSize { get; set; }
public int FileCount { get; set; }
}
public class NewArchiveStudyCommand
{
[NotDefault]
@@ -186,6 +204,8 @@ namespace IRaCIS.Core.Application.Contracts
public Guid SubjectId { get; set; }
[NotDefault]
public Guid SubjectVisitId { get; set; }
[NotDefault]
public Guid StudyMonitorId { get; set; }
public bool IsAdd { get; set; }
@@ -9,6 +9,10 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Infrastructure;
using DocumentFormat.OpenXml.Presentation;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.MediatR.Handlers;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Service.ImageAndDoc
{
@@ -26,10 +30,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
private readonly IRepository<DicomStudy> _dicomstudyRepository;
private readonly IRepository<Dictionary> _dictionaryRepository;
private readonly IRepository<StudyMonitor> _studyMonitorRepository;
public StudyService(IEasyCachingProvider provider
, IRepository<SubjectVisit> subjectVisitRepository,
IRepository<DicomInstance> dicomInstanceRepository,
IRepository<DicomSeries> dicomSeriesRepository, IRepository<DicomStudy> dicomstudyRepository, IRepository<Dictionary> dictionaryRepository)
IRepository<DicomSeries> dicomSeriesRepository, IRepository<DicomStudy> dicomstudyRepository, IRepository<Dictionary> dictionaryRepository, IRepository<StudyMonitor> studyMonitorRepository)
{
_provider = provider;
_subjectVisitRepository = subjectVisitRepository;
@@ -37,6 +44,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
_dicomSeriesRepository = dicomSeriesRepository;
_dicomstudyRepository = dicomstudyRepository;
_dictionaryRepository = dictionaryRepository;
_studyMonitorRepository = studyMonitorRepository;
}
@@ -75,9 +83,52 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
#endregion
}
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task<IResponseOutput> PreArchiveDicomStudy(PreArchiveDicomStudyCommand preArchiveStudyCommand)
{
var studyMonitor = new StudyMonitor()
{
TrialId = preArchiveStudyCommand.TrialId,
SiteId = preArchiveStudyCommand.SiteId,
SubjectId = preArchiveStudyCommand.SubjectId,
SubjectVisitId = preArchiveStudyCommand.SubjectVisitId,
IsSuccess = false,
UploadStartTime = DateTime.Now,
IsDicom = true,
IP = _userInfo.IP,
FileSize = preArchiveStudyCommand.FileSize,
FileCount = preArchiveStudyCommand.FileCount,
FailedFileCount = preArchiveStudyCommand.FailedFileCount,
};
var addEntity = await _studyMonitorRepository.AddAsync(studyMonitor, true);
return ResponseOutput.Ok(addEntity.Id);
}
[UnitOfWork]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task<IResponseOutput> AddOrUpdateArchiveStudy(NewArchiveStudyCommand incommand)
{
var trialId = incommand.TrialId;
var studyMonitor = await _studyMonitorRepository.FirstOrDefaultAsync(t => t.Id == incommand.StudyMonitorId);
studyMonitor.UploadFinishedTime = DateTime.Now;
studyMonitor.ArchiveFinishedTime = DateTime.Now;
studyMonitor.IsDicomReUpload = !incommand.IsAdd;
if (incommand.IsAdd)
{
var study = _mapper.Map<DicomStudy>(incommand.Study);
@@ -148,6 +199,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
studyMonitor.StudyId = study.Id;
studyMonitor.StudyCode = study.StudyCode;
}
else
{
@@ -168,7 +221,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{
var series = _mapper.Map<DicomSeries>(seriesItem);
series.Id = IdentifierHelper.CreateGuid(series.StudyInstanceUid, series.SeriesInstanceUid, trialId.ToString());
series.Id = IdentifierHelper.CreateGuid(series.StudyInstanceUid, series.SeriesInstanceUid, trialId.ToString());
series.StudyId = study.Id;
series.TrialId = incommand.TrialId;
@@ -181,7 +234,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
foreach (var instanceItem in incommand.InstanceList)
{
var insntance = _mapper.Map<DicomInstance>(instanceItem);
insntance.Id= IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString());
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString());
insntance.StudyId = study.Id;
insntance.SeriesId = series.Id;
@@ -199,6 +252,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//某个序列下少了instance
}
await _dicomstudyRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@@ -207,8 +263,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
[HttpPost]
public async Task<PageOutput<UnionStudyViewModel>> GetDicomAndNoneDicomStudyList(StudyQuery studyQuery)
{