81 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
| using Microsoft.Extensions.Hosting;
 | |
| using System;
 | |
| using System.IO;
 | |
| using IRaCIS.Core.Domain.Models;
 | |
| using Microsoft.AspNetCore.Hosting;
 | |
| using Microsoft.Extensions.Logging;
 | |
| using IRaCIS.Core.Domain.Share;
 | |
| using IRaCIS.Core.Infrastructure.Extention;
 | |
| 
 | |
| namespace IRaCIS.Core.Application
 | |
| {
 | |
|     public class DicomFileStoreHelper
 | |
|     {
 | |
|         private  readonly IWebHostEnvironment _hostEnvironment;
 | |
|         private static string _fileStorePath = string.Empty;
 | |
| 
 | |
|         private readonly ILogger<DicomFileStoreHelper> _logger;
 | |
| 
 | |
|         public  DicomFileStoreHelper(IWebHostEnvironment hostEnvironment, ILogger<DicomFileStoreHelper> logger)
 | |
|         {
 | |
|             _logger = logger;
 | |
|             _hostEnvironment = hostEnvironment;
 | |
|             var rootPath = Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\')).IfNullThrowException().FullName;
 | |
| 
 | |
|             //上传根路径
 | |
|              _fileStorePath = Path.Combine(rootPath, StaticData.TrialDataFolder);
 | |
| 
 | |
|         }
 | |
| 
 | |
|         public  string GetInstanceFilePath(DicomStudy dicomStudy, Guid seriesId, string instanceId)
 | |
|         {
 | |
|             return Path.Combine(_fileStorePath,  dicomStudy.TrialId.ToString(),
 | |
|                 dicomStudy.SiteId.ToString(), dicomStudy.SubjectId.ToString(), dicomStudy.SubjectVisitId.ToString(), StaticData.DicomFolder, dicomStudy.Id.ToString(),  instanceId.ToString() + ".dcm");
 | |
|         }
 | |
| 
 | |
| 
 | |
|         public  string CreateInstanceFilePath(DicomStudy dicomStudy, Guid seriesId, Guid instanceId)
 | |
|         {
 | |
| 
 | |
|             //加入访视层级  和Data
 | |
|             var path = Path.Combine(_fileStorePath,  dicomStudy.TrialId.ToString(),
 | |
|                 dicomStudy.SiteId.ToString(), dicomStudy.SubjectId.ToString(), dicomStudy.SubjectVisitId.ToString(), StaticData.DicomFolder, dicomStudy.Id.ToString());
 | |
| 
 | |
|             if (!Directory.Exists(path))
 | |
|             {
 | |
|                 Directory.CreateDirectory(path);
 | |
|             }
 | |
|             return Path.Combine(path, instanceId.ToString() + ".dcm");
 | |
|         }
 | |
| 
 | |
| 
 | |
|         public string GetSubjectVisitPath(Guid trialId,Guid siteId,Guid subjectId, Guid subjectVisitId)
 | |
|         {
 | |
|             return Path.Combine(_fileStorePath, trialId.ToString(),
 | |
|                 siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.DicomFolder);
 | |
|         }
 | |
| 
 | |
|         //public static string CreateInstanceFilePath(DicomStudy dicomStudy, Guid seriesId, Guid instanceId)
 | |
|         //{
 | |
|         //    string path = Path.Combine(_fileStorePath, "Dicom", dicomStudy.CreateTime.Year.ToString(), dicomStudy.TrialId.ToString(),
 | |
|         //        dicomStudy.SiteId.ToString(), dicomStudy.SubjectId.ToString(), dicomStudy.Id.ToString());
 | |
|         //    if (!Directory.Exists(path)) Directory.CreateDirectory(path);
 | |
| 
 | |
|         //    return Path.Combine(path, instanceId.ToString() + ".dcm");
 | |
|         //}
 | |
| 
 | |
|         //public static string GetInstanceFilePath(DicomStudy dicomStudy, Guid seriesId, Guid instanceId)
 | |
|         //{
 | |
|         //    return Path.Combine(_fileStorePath, "Dicom", dicomStudy.CreateTime.Year.ToString(), dicomStudy.TrialId.ToString(),
 | |
|         //        dicomStudy.SiteId.ToString(), dicomStudy.SubjectId.ToString(), dicomStudy.Id.ToString(), instanceId.ToString() + ".dcm");
 | |
|         //}
 | |
| 
 | |
| 
 | |
|         //public static void RemoveStudyDirectory(DicomStudy dicomStudy)
 | |
|         //{
 | |
|         //    string path = Path.Combine(_fileStorePath, "Dicom", dicomStudy.CreateTime.Year.ToString(), dicomStudy.TrialId.ToString(),
 | |
|         //        dicomStudy.SiteId.ToString(), dicomStudy.SubjectId.ToString(), dicomStudy.Id.ToString());
 | |
|         //    if (Directory.Exists(path)) Directory.Delete(path, true);
 | |
|         //}
 | |
|     }
 | |
| } |