This commit is contained in:
2022-04-12 17:21:50 +08:00
parent 005bbf8419
commit 0bf0299c31
6 changed files with 115 additions and 72 deletions
@@ -1772,85 +1772,84 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpGet("{trialId:guid}/{subjectVisitId:guid}")]
public async Task<IResponseOutput> ForwardSVDicomImage(Guid subjectVisitId, [FromServices] DicomFileStoreHelper _dicomFileStoreHelper)
[HttpPost("{trialId:guid}")]
public async Task<IResponseOutput> ForwardSVDicomImage(Guid[] subjectVisitIdList, [FromServices] DicomFileStoreHelper _dicomFileStoreHelper)
{
var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo<DicomTrialSiteSubjectInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName;
var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId);
try
foreach (var subjectVisitId in subjectVisitIdList)
{
// 主机及端口信息后面可以改到 配置文件
SessionOptions sessionOptions = new SessionOptions
var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo<DicomTrialSiteSubjectInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName;
var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId);
try
{
Protocol = Protocol.Sftp,
PortNumber = 8022,
HostName = "CS-690-sftp.mint-imaging.com",
UserName = "zdong",
Password = "Everest@2021",
SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo="
};
using (Session session = new Session())
{
var studyFolders = (new DirectoryInfo(path)).GetDirectories();
session.Open(sessionOptions);
if (!session.FileExists(targetPath))
// 主机及端口信息后面可以改到 配置文件
SessionOptions sessionOptions = new SessionOptions
{
session.CreateDirectory(targetPath);
}
Protocol = Protocol.Sftp,
PortNumber = 8022,
HostName = "CS-690-sftp.mint-imaging.com",
UserName = "zdong",
Password = "Everest@2021",
SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo="
};
foreach (var studyFolder in studyFolders)
using (Session session = new Session())
{
if (!session.FileExists(Path.Combine(targetPath, studyFolder.Name)))
var studyFolders = (new DirectoryInfo(path)).GetDirectories();
session.Open(sessionOptions);
if (!session.FileExists(targetPath))
{
session.CreateDirectory(targetPath);
}
foreach (var file in studyFolder.GetFiles())
foreach (var studyFolder in studyFolders)
{
if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase))
if (!session.FileExists(Path.Combine(targetPath, studyFolder.Name)))
{
string remoteFilePath =
RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath);
session.CreateDirectory(targetPath);
}
var result = session.PutFiles(file.FullName, remoteFilePath, false);
if (!result.IsSuccess)
foreach (var file in studyFolder.GetFiles())
{
if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase))
{
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
string remoteFilePath =
RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath);
return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson());
var result = session.PutFiles(file.FullName, remoteFilePath, false);
if (!result.IsSuccess)
{
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson());
}
}
}
}
}
}
catch (Exception e)
{
}
catch (Exception e)
{
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
}
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded });
}
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded });
return ResponseOutput.Ok();
}