修改归档路径
parent
89cf6073f3
commit
385bb1116e
|
@ -417,7 +417,7 @@ public static class FileStoreHelper
|
||||||
return Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder);
|
return Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetDicomInstanceFilePath(IWebHostEnvironment _hostEnvironment, Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId, Guid studyId, Guid instanceId)
|
public static (string PhysicalPath, string RelativePath) GetDicomInstanceFilePath(IWebHostEnvironment _hostEnvironment, Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId, Guid studyId, Guid instanceId)
|
||||||
{
|
{
|
||||||
var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment);
|
var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment);
|
||||||
|
|
||||||
|
@ -429,10 +429,17 @@ public static class FileStoreHelper
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(path);
|
Directory.CreateDirectory(path);
|
||||||
}
|
}
|
||||||
return Path.Combine(path, instanceId.ToString() + ".dcm");
|
|
||||||
|
var physicalPath = Path.Combine(path, instanceId.ToString() + ".dcm");
|
||||||
|
|
||||||
|
var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}.dcm";
|
||||||
|
|
||||||
|
return (physicalPath, relativePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 获取医生通用文件存放路径
|
// 获取医生通用文件存放路径
|
||||||
|
|
||||||
public static (string PhysicalPath, string RelativePath) GetDoctorOrdinaryFilePath(IWebHostEnvironment _hostEnvironment, string fileName,Guid doctorId,string attachmentType)
|
public static (string PhysicalPath, string RelativePath) GetDoctorOrdinaryFilePath(IWebHostEnvironment _hostEnvironment, string fileName,Guid doctorId,string attachmentType)
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
public DateTime UpdateTime { get; set; }
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
public List<Guid> InstanceList { get; set; } = new List<Guid>();
|
public List<Guid> InstanceList { get; set; } = new List<Guid>();
|
||||||
|
|
||||||
|
public List<string> InstancePathList { get; set; } = new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DicomSeriesWithLabelDTO : DicomSeriesDTO
|
public class DicomSeriesWithLabelDTO : DicomSeriesDTO
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
public async Task<bool> DicomDBDataSaveChange()
|
public async Task<bool> DicomDBDataSaveChange()
|
||||||
{
|
{
|
||||||
var success = await _studyRepository.SaveChangesAsync();
|
var success = await _studyRepository.SaveChangesAsync();
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,17 +62,17 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
if (instanceUidList.Any(t => t == sopInstanceUid))
|
if (instanceUidList.Any(t => t == sopInstanceUid))
|
||||||
{
|
{
|
||||||
return (IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString()), string.Empty) ;
|
return (IdentifierHelper.CreateGuid(studyInstanceUid, addtionalInfo.TrialId.ToString()), string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var anonymize_AddFixedFiledList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddFixedFiled).Value ??new List<SystemAnonymization>();
|
var anonymize_AddFixedFiledList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddFixedFiled).Value ?? new List<SystemAnonymization>();
|
||||||
var anonymize_AddIRCInfoFiledList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddIRCInfoFiled).Value ??new List<SystemAnonymization>();
|
var anonymize_AddIRCInfoFiledList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddIRCInfoFiled).Value ?? new List<SystemAnonymization>();
|
||||||
var anonymize_FixedFieldList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_FixedField).Value ?? new List<SystemAnonymization>();
|
var anonymize_FixedFieldList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_FixedField).Value ?? new List<SystemAnonymization>();
|
||||||
var anonymize_IRCInfoFieldList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_IRCInfoField).Value ?? new List<SystemAnonymization>();
|
var anonymize_IRCInfoFieldList = _provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_IRCInfoField).Value ?? new List<SystemAnonymization>();
|
||||||
|
|
||||||
|
|
||||||
if(anonymize_AddFixedFiledList.Union(anonymize_AddIRCInfoFiledList).Union(anonymize_FixedFieldList).Union(anonymize_IRCInfoFieldList) .Count()==0)
|
if (anonymize_AddFixedFiledList.Union(anonymize_AddIRCInfoFiledList).Union(anonymize_FixedFieldList).Union(anonymize_IRCInfoFieldList).Count() == 0)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("未取到缓存匿名化配置数据,上传停止,请联系开发人员核实");
|
throw new BusinessValidationFailedException("未取到缓存匿名化配置数据,上传停止,请联系开发人员核实");
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
if (dicomTag == DicomTag.PatientID)
|
if (dicomTag == DicomTag.PatientID)
|
||||||
{
|
{
|
||||||
dataset.AddOrUpdate(dicomTag, addtionalInfo.TrialCode+"_"+ addtionalInfo.SubjectCode);
|
dataset.AddOrUpdate(dicomTag, addtionalInfo.TrialCode + "_" + addtionalInfo.SubjectCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,14 +127,14 @@ namespace IRaCIS.Core.Application.Services
|
||||||
dicomSeries.DicomStudy = dicomStudy;
|
dicomSeries.DicomStudy = dicomStudy;
|
||||||
|
|
||||||
|
|
||||||
var createtime=DateTime.Now;
|
var createtime = DateTime.Now;
|
||||||
|
|
||||||
if (isStudyNeedAdd)
|
if (isStudyNeedAdd)
|
||||||
{
|
{
|
||||||
// 添加检查
|
// 添加检查
|
||||||
await _studyRepository.AddAsync(dicomStudy);
|
await _studyRepository.AddAsync(dicomStudy);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSeriesNeedAdd)
|
if (isSeriesNeedAdd)
|
||||||
{
|
{
|
||||||
dicomSeries.DicomStudy = dicomStudy;
|
dicomSeries.DicomStudy = dicomStudy;
|
||||||
|
@ -143,12 +143,12 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||||
await _instanceRepository.AddAsync(dicomInstance);
|
|
||||||
|
|
||||||
|
dicomInstance.Path = relativePath;
|
||||||
|
|
||||||
|
await _instanceRepository.AddAsync(dicomInstance);
|
||||||
|
|
||||||
string filePath = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
|
||||||
|
|
||||||
var samplesPerPixel = dataset.GetSingleValueOrDefault(DicomTag.SamplesPerPixel, string.Empty);
|
var samplesPerPixel = dataset.GetSingleValueOrDefault(DicomTag.SamplesPerPixel, string.Empty);
|
||||||
var photometricInterpretation = dataset.GetSingleValueOrDefault(DicomTag.PhotometricInterpretation, string.Empty);
|
var photometricInterpretation = dataset.GetSingleValueOrDefault(DicomTag.PhotometricInterpretation, string.Empty);
|
||||||
|
@ -156,23 +156,23 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
if (dataset.InternalTransferSyntax.IsEncapsulated)
|
if (dataset.InternalTransferSyntax.IsEncapsulated)
|
||||||
{
|
{
|
||||||
await dicomFile.SaveAsync(filePath);
|
await dicomFile.SaveAsync(physicalPath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await dicomFile.Clone(DicomTransferSyntax.JPEGLSLossless).SaveAsync(filePath);
|
await dicomFile.Clone(DicomTransferSyntax.JPEGLSLossless).SaveAsync(physicalPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (dataset.InternalTransferSyntax.IsEncapsulated) await dicomFile.SaveAsync(filePath);
|
if (dataset.InternalTransferSyntax.IsEncapsulated) await dicomFile.SaveAsync(physicalPath);
|
||||||
else await dicomFile.Clone(DicomTransferSyntax.RLELossless).SaveAsync(filePath); //RLELossless
|
else await dicomFile.Clone(DicomTransferSyntax.RLELossless).SaveAsync(physicalPath); //RLELossless
|
||||||
}
|
}
|
||||||
return (dicomInstance.StudyId, dicomStudy.StudyCode);
|
return (dicomInstance.StudyId, dicomStudy.StudyCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private DicomStudy CreateDicomStudy(DicomDataset dataset, DicomTrialSiteSubjectInfo addtionalInfo, out bool isStudyNeedAdd)
|
private DicomStudy CreateDicomStudy(DicomDataset dataset, DicomTrialSiteSubjectInfo addtionalInfo, out bool isStudyNeedAdd)
|
||||||
{
|
{
|
||||||
|
|
||||||
string studyInstanceUid = dataset.GetString(DicomTag.StudyInstanceUID);
|
string studyInstanceUid = dataset.GetString(DicomTag.StudyInstanceUID);
|
||||||
|
@ -200,7 +200,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
var modality = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty);
|
var modality = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty);
|
||||||
|
|
||||||
var dicModalityList = _dictionaryRepository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList();
|
var dicModalityList = _dictionaryRepository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList();
|
||||||
|
|
||||||
dicomStudy = new DicomStudy
|
dicomStudy = new DicomStudy
|
||||||
{
|
{
|
||||||
|
@ -251,15 +251,15 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var dbStudyCodeIntMax = _studyRepository.Where(s => s.TrialId == addtionalInfo.TrialId).Select(t => t.Code).DefaultIfEmpty().Max();
|
var dbStudyCodeIntMax = _studyRepository.Where(s => s.TrialId == addtionalInfo.TrialId).Select(t => t.Code).DefaultIfEmpty().Max();
|
||||||
|
|
||||||
//获取缓存中的值 并发的时候,需要记录,已被占用的值 这样其他线程在此占用的最大的值上递增
|
//获取缓存中的值 并发的时候,需要记录,已被占用的值 这样其他线程在此占用的最大的值上递增
|
||||||
var cacheMaxCodeInt = _provider.Get<int>($"{addtionalInfo.TrialId }_{ StaticData.CacheKey.StudyMaxCode}").Value;
|
var cacheMaxCodeInt = _provider.Get<int>($"{addtionalInfo.TrialId}_{StaticData.CacheKey.StudyMaxCode}").Value;
|
||||||
|
|
||||||
int currentNextCodeInt = cacheMaxCodeInt > dbStudyCodeIntMax ? cacheMaxCodeInt + 1 : dbStudyCodeIntMax + 1;
|
int currentNextCodeInt = cacheMaxCodeInt > dbStudyCodeIntMax ? cacheMaxCodeInt + 1 : dbStudyCodeIntMax + 1;
|
||||||
|
|
||||||
dicomStudy.Code = currentNextCodeInt;
|
dicomStudy.Code = currentNextCodeInt;
|
||||||
|
|
||||||
dicomStudy.StudyCode = AppSettings.GetCodeStr(currentNextCodeInt, nameof(DicomStudy));
|
dicomStudy.StudyCode = AppSettings.GetCodeStr(currentNextCodeInt, nameof(DicomStudy));
|
||||||
|
|
||||||
_provider.Set<int>($"{addtionalInfo.TrialId }_{ StaticData.CacheKey.StudyMaxCode}", dicomStudy.Code, TimeSpan.FromMinutes(30));
|
_provider.Set<int>($"{addtionalInfo.TrialId}_{StaticData.CacheKey.StudyMaxCode}", dicomStudy.Code, TimeSpan.FromMinutes(30));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,11 +56,11 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException();
|
DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException();
|
||||||
|
|
||||||
path = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
var(physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using (var sw = ImageHelper.RenderPreviewJpeg(path))
|
using (var sw = ImageHelper.RenderPreviewJpeg(physicalPath))
|
||||||
{
|
{
|
||||||
var bytes = new byte[sw.Length];
|
var bytes = new byte[sw.Length];
|
||||||
sw.Read(bytes, 0, bytes.Length);
|
sw.Read(bytes, 0, bytes.Length);
|
||||||
|
@ -85,11 +85,11 @@ namespace IRaCIS.Core.Application.Services
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//else
|
//else
|
||||||
filePath = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using (var sw = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
|
using (var sw = new FileStream(physicalPath, FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||||
{
|
{
|
||||||
var bytes = new byte[sw.Length];
|
var bytes = new byte[sw.Length];
|
||||||
sw.Read(bytes, 0, bytes.Length);
|
sw.Read(bytes, 0, bytes.Length);
|
||||||
|
|
|
@ -64,7 +64,9 @@ namespace IRaCIS.Core.Application.Services
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var idList = await _instanceRepository.Where(s => s.StudyId == studyId).ToListAsync();//.GroupBy(u => u.SeriesId);
|
var idList = await _instanceRepository.Where(s => s.StudyId == studyId).OrderBy(t=>t.SeriesId).ThenBy(t => t.InstanceNumber)
|
||||||
|
.ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||||
|
.Select(t=>new {t.SeriesId, t.Id,t.Path}).ToListAsync();//.GroupBy(u => u.SeriesId);
|
||||||
|
|
||||||
foreach (var item in seriesList)
|
foreach (var item in seriesList)
|
||||||
{
|
{
|
||||||
|
@ -74,8 +76,12 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
item.InstanceList = idList.Where(s => s.SeriesId == item.Id).OrderBy(t => t.InstanceNumber)
|
//item.InstanceList = idList.Where(s => s.SeriesId == item.Id).OrderBy(t => t.InstanceNumber)
|
||||||
.ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime).Select(u => u.Id).ToList();
|
// .ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime).Select(u => u.Id).ToList();
|
||||||
|
|
||||||
|
item.InstanceList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Id).ToList();
|
||||||
|
|
||||||
|
item.InstancePathList = idList.Where(s => s.SeriesId == item.Id).Select(u => u.Path).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,9 +103,9 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException();
|
DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException();
|
||||||
|
|
||||||
path = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||||
|
|
||||||
using (var sw = ImageHelper.RenderPreviewJpeg(path))
|
using (var sw = ImageHelper.RenderPreviewJpeg(physicalPath))
|
||||||
{
|
{
|
||||||
var bytes = new byte[sw.Length];
|
var bytes = new byte[sw.Length];
|
||||||
sw.Read(bytes, 0, bytes.Length);
|
sw.Read(bytes, 0, bytes.Length);
|
||||||
|
|
|
@ -324,7 +324,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
DicomStudy dicomStudy = await _repository.FirstOrDefaultAsync<DicomStudy>(s => s.Id == dicomInstance.StudyId);
|
DicomStudy dicomStudy = await _repository.FirstOrDefaultAsync<DicomStudy>(s => s.Id == dicomInstance.StudyId);
|
||||||
if (dicomStudy != null)
|
if (dicomStudy != null)
|
||||||
{
|
{
|
||||||
path = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
var( physicalPath ,relativePath )= FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id);
|
||||||
|
|
||||||
|
path = physicalPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -780,12 +780,12 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
instanceIdList.ForEach(t =>
|
instanceIdList.ForEach(t =>
|
||||||
{
|
{
|
||||||
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
||||||
var path =
|
var (physicalPath, relativePath) =
|
||||||
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
||||||
|
|
||||||
if (System.IO.File.Exists(path))
|
if (System.IO.File.Exists(physicalPath))
|
||||||
{
|
{
|
||||||
File.Delete(path);
|
File.Delete(physicalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -1365,13 +1365,13 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
instanceIdList.ForEach(t =>
|
instanceIdList.ForEach(t =>
|
||||||
{
|
{
|
||||||
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
||||||
var path =
|
var (physicalPath, relativePath) =
|
||||||
|
|
||||||
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
||||||
|
|
||||||
if (System.IO.File.Exists(path))
|
if (System.IO.File.Exists(physicalPath))
|
||||||
{
|
{
|
||||||
File.Delete(path);
|
File.Delete(physicalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -1428,13 +1428,13 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
instanceIdList.ForEach(t =>
|
instanceIdList.ForEach(t =>
|
||||||
{
|
{
|
||||||
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
|
||||||
var path =
|
var(physicalPath, relativePath) =
|
||||||
|
|
||||||
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
|
||||||
|
|
||||||
if (System.IO.File.Exists(path))
|
if (System.IO.File.Exists(physicalPath))
|
||||||
{
|
{
|
||||||
File.Delete(path);
|
File.Delete(physicalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -148,8 +148,17 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
|
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
|
||||||
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
|
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
|
||||||
|
|
||||||
|
CreateMap<VisitTask, RECIST1Point1EvaluationOfTumorEfficacyExport>()
|
||||||
|
.ForMember(o => o.OverallTumorEvaluationResult, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstOrDefault().Answer ))
|
||||||
|
.ForMember(o => o.TargetlesionEvaluationResult, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion).FirstOrDefault().Answer))
|
||||||
|
.ForMember(o => o.NoneTargetlesionEvaluationResult, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.NoTargetLesion).FirstOrDefault().Answer))
|
||||||
|
.ForMember(o => o.IsExistNewlesionEvaluationResult, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.NewLesions).FirstOrDefault().Answer))
|
||||||
|
|
||||||
|
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode))
|
||||||
|
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
|
||||||
|
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using BeetleX.BNR;
|
using BeetleX.BNR;
|
||||||
using IRaCIS.Core.Application.Service;
|
using IRaCIS.Core.Application.Service;
|
||||||
|
using IRaCIS.Core.Domain.Share;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Caching.Distributed;
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
@ -105,9 +106,16 @@ namespace IRaCIS.Application.Services
|
||||||
return findStr;
|
return findStr;
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> Get(TestModel testModel)
|
public async Task Get(TestModel testModel)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
//update DicomInstance set Path = '/IRaCISData/TrialData/' + cast(DicomInstance.TrialId as varchar) + '/' + DicomInstance.SiteId + '/' + DicomInstance.SubjectId + '/' + DicomInstance.SubjectVisitId + '/Dicom/' + DicomInstance.StudyId + '/' + DicomInstance.Id + '.dcm'
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchUpdateAsync<DicomInstance>(u=>u.Id!=Guid.Empty,t => new DicomInstance() { Path = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{t.TrialId}/{t.SiteId}/{t.SubjectId}/{t.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{t.StudyId}/{t.Id}.dcm" });
|
||||||
|
|
||||||
|
|
||||||
// Load a document.
|
// Load a document.
|
||||||
//using (var document = DocX.Load(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx")))
|
//using (var document = DocX.Load(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx")))
|
||||||
//{
|
//{
|
||||||
|
@ -126,7 +134,7 @@ namespace IRaCIS.Application.Services
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//}
|
//}
|
||||||
return await NpoiWordHelper.TemplateExportWordAsync(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx"), new { test = "xiugai", ZZZZ = "ModiffyZZZZ" }, null, _hostEnvironment);
|
//return await NpoiWordHelper.TemplateExportWordAsync(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx"), new { test = "xiugai", ZZZZ = "ModiffyZZZZ" }, null, _hostEnvironment);
|
||||||
|
|
||||||
//_cache.SetString("test" , "cacheStr");
|
//_cache.SetString("test" , "cacheStr");
|
||||||
|
|
||||||
|
|
|
@ -46,5 +46,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||||
public Guid UpdateUserId { get; set; }
|
public Guid UpdateUserId { get; set; }
|
||||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
|
||||||
|
public string Path { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue