From e63c235f8a1cde3205109bafe9355b650dca7243 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 1 Jun 2022 17:18:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=BA=9F=E5=BC=83=E7=9A=84di?= =?UTF-8?q?com=20=E8=B7=AF=E5=BE=84=E5=B8=AE=E5=8A=A9=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_ServiceExtensions/AutofacModuleSetup.cs | 1 - .../Service/Common/FrontAuditConfigService.cs | 1 - .../ImageAndDoc/DicomArchiveService.cs | 3 - .../Helper/DicomFileStoreHelper.cs | 82 -- .../Service/ImageAndDoc/InstanceService.cs | 4 +- .../Service/ImageAndDoc/SeriesService.cs | 4 +- .../Service/ImageAndDoc/StudyService.cs | 4 +- .../Service/ImageAndDoc/StudyxxService.cs | 1051 ----------------- .../Service/QC/QCOperationService.cs | 6 +- .../SiteSurvey/TrialSiteSurveyService.cs | 1 - 10 files changed, 5 insertions(+), 1152 deletions(-) delete mode 100644 IRaCIS.Core.Application/Service/ImageAndDoc/Helper/DicomFileStoreHelper.cs delete mode 100644 IRaCIS.Core.Application/Service/ImageAndDoc/StudyxxService.cs diff --git a/IRaCIS.Core.API/_ServiceExtensions/AutofacModuleSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/AutofacModuleSetup.cs index da8393c67..4cd0fa599 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/AutofacModuleSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/AutofacModuleSetup.cs @@ -58,7 +58,6 @@ namespace IRaCIS.Core.API //containerBuilder.RegisterType().InstancePerLifetimeScope(); - containerBuilder.RegisterType().SingleInstance(); //Autofac 注册拦截器 需要注意的是生成api上服务上的动态代理AOP失效 间接掉用不影响 containerBuilder.RegisterType(); diff --git a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs index 0d07fd5ff..596115f05 100644 --- a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs @@ -4,7 +4,6 @@ // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- -using IRaCIS.Core.Domain.Models; using Microsoft.AspNetCore.Mvc; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs index cc540f957..e91142df4 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs @@ -18,7 +18,6 @@ namespace IRaCIS.Core.Application.Services private readonly IRepository _instanceRepository; private readonly IRepository _inspectionService; private readonly IEasyCachingProvider _provider; - private readonly DicomFileStoreHelper _dicomFileStoreHelper; private readonly IWebHostEnvironment _hostEnvironment; @@ -29,10 +28,8 @@ namespace IRaCIS.Core.Application.Services IRepository instanceRepository, IWebHostEnvironment hostEnvironment, IRepository inspectionService, - DicomFileStoreHelper dicomFileStoreHelper, IEasyCachingProvider provider) { - _dicomFileStoreHelper = dicomFileStoreHelper; _hostEnvironment = hostEnvironment; _studyRepository = studyRepository; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/Helper/DicomFileStoreHelper.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/Helper/DicomFileStoreHelper.cs deleted file mode 100644 index 7c90547da..000000000 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/Helper/DicomFileStoreHelper.cs +++ /dev/null @@ -1,82 +0,0 @@ -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; -using IRaCIS.Core.Application.Helper; - -namespace IRaCIS.Core.Application -{ - public class DicomFileStoreHelper - { - private readonly IWebHostEnvironment _hostEnvironment; - private static string _fileStorePath = string.Empty; - - private readonly ILogger _logger; - - public DicomFileStoreHelper(IWebHostEnvironment hostEnvironment, ILogger logger) - { - _logger = logger; - _hostEnvironment = hostEnvironment; - var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - - //上传根路径 - _fileStorePath = Path.Combine(rootPath, StaticData.Folder.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.Folder.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.Folder.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.Folder.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); - //} - } -} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs index b2adf8ca5..434d7be72 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs @@ -12,11 +12,9 @@ namespace IRaCIS.Core.Application.Services private readonly IRepository _instanceRepository; private readonly IRepository _studyRepository; private readonly IRepository _keyInstanceRepository; - private readonly DicomFileStoreHelper _dicomFileStoreHelper; public InstanceService(IRepository instanceRepository, IRepository studyRepository, - IRepository keyInstanceRepository, DicomFileStoreHelper dicomFileStoreHelper) + IRepository keyInstanceRepository ) { - _dicomFileStoreHelper = dicomFileStoreHelper; _instanceRepository = instanceRepository; _studyRepository = studyRepository; _keyInstanceRepository = keyInstanceRepository; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/SeriesService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/SeriesService.cs index efcc8f900..037c3e8e6 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/SeriesService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/SeriesService.cs @@ -15,12 +15,10 @@ namespace IRaCIS.Core.Application.Services private readonly IRepository _instanceRepository; private readonly IRepository _studyRepository; private readonly IRepository _keyInstanceRepository; - private readonly DicomFileStoreHelper _dicomFileStoreHelper; public SeriesService(IRepository instanceRepository, IRepository studyRepository, - IRepository keyInstanceRepository, DicomFileStoreHelper dicomFileStoreHelper, IRepository seriesRepository, IRepository imageLabelRepository) + IRepository keyInstanceRepository, IRepository seriesRepository, IRepository imageLabelRepository) { _seriesRepository = seriesRepository; - _dicomFileStoreHelper = dicomFileStoreHelper; _instanceRepository = instanceRepository; _studyRepository = studyRepository; _keyInstanceRepository = keyInstanceRepository; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 35662b042..7a1fe03dd 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -13,7 +13,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public class StudyService : BaseService, IStudyService { - private readonly DicomFileStoreHelper _dicomFileStoreHelper; private readonly IEasyCachingProvider _provider; @@ -21,12 +20,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc private readonly IRepository _dicomInstanceRepository; private readonly IRepository _dicomSeriesRepository; - public StudyService(DicomFileStoreHelper dicomFileStoreHelper, IEasyCachingProvider provider + public StudyService( IEasyCachingProvider provider , IRepository subjectVisitRepository, IRepository dicomInstanceRepository, IRepository dicomSeriesRepository) { - _dicomFileStoreHelper = dicomFileStoreHelper; _provider = provider; _subjectVisitRepository = subjectVisitRepository; _dicomInstanceRepository = dicomInstanceRepository; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyxxService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyxxService.cs deleted file mode 100644 index 8675ba83a..000000000 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyxxService.cs +++ /dev/null @@ -1,1051 +0,0 @@ -//using AutoMapper; -//using IRaCIS.Application.Interfaces; -//using IRaCIS.Core.Application.Contracts.Dicom.DTO; -//using IRaCIS.Core.Domain.Share; - -//using IRaCIS.Core.Application.Contracts; -//using IRaCIS.Core.Application.Service.Inspection.Interface; - - -//namespace IRaCIS.Application.Services -//{ -// //[Intercept(typeof(QANoticeAOP))] -// public class StudyService : IStudyService -// { -// private readonly IRepository _studyRepository; - -// private readonly IRepository _subjectVisitRepository; -// private readonly IRepository _dicomInstanceRepository; -// private readonly IRepository _dicomSeriesRepository; - -// private readonly IMapper _mapper; - - -// private static string _fileStorePath = string.Empty; - -// private readonly IRepository _dicomStudyMonitorRepository; - - - - - -// public StudyService(IRepository studyRepository, -// IRepository subjectVisitRepository, -// IRepository dicomInstanceRepository, -// IRepository dicomSeriesRepository, -// IInspectionService inspectionService, -// IUserInfo userInfo, - -// IRepository dicomStudyMonitorRepository, - -// IMapper mapper) -// { -// _dicomStudyMonitorRepository = dicomStudyMonitorRepository; - - -// _userInfo = userInfo; -// _studyRepository = studyRepository; - -// _subjectVisitRepository = subjectVisitRepository; -// _dicomInstanceRepository = dicomInstanceRepository; -// _dicomSeriesRepository = dicomSeriesRepository; -// this._inspectionService = inspectionService; -// _mapper = mapper; -// } - - - - - -// /// -// /// 获取保存到Dicom文件中的信息 -// /// -// /// -// /// -// public DicomTrialSiteSubjectInfo GetSaveToDicomInfo(Guid subjectVisitId) -// { -// //6表连接 subject trial trialSite sponsor subjectVisit site -// var info = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault().IfNullThrowException(); - -// return info; -// } - -// public (List SeriesInstanceUid, List SopInstanceUid) GetHasUploadSeriesAndInstance(Guid studyId) -// { -// var seriesInstanceUidList = _dicomSeriesRepository.Where(t => t.StudyId == studyId).Select(t => t.SeriesInstanceUid).ToList(); - -// var sopInstanceUidList = _dicomInstanceRepository.Where(t => t.StudyId == studyId).Select(t => t.SopInstanceUid).ToList(); - -// return (seriesInstanceUidList, sopInstanceUidList); -// } - - - - -// public void UploadOrReUploadNeedTodo(ArchiveStudyCommand archiveStudyCommand, List archiveStudyIds, ref DicomArchiveResult result, StudyMonitor monitor) -// { - - -// var archivedStudyId = archiveStudyIds[0]; - -// //result.ArchivedDicomStudies = _studyRepository.Where(t => t.SubjectVisitId == archiveStudyCommand.SubjectVisitId) -// // .ProjectTo(_mapper.ConfigurationProvider).ToList(); - -// #region 更新受试者访视信息 及访视状态为待提交 最早最晚拍片时间 访视已执行 - -// var subjectVisit = _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == archiveStudyCommand.SubjectVisitId).Result; - - - - - - - - - -// #endregion - - -// //按照访视维度,上传只存在重传同一份,和上传新的(不存在之前检查维度 重传同一份 和重传不同的) - -// if (archiveStudyCommand.AbandonStudyId != null && archiveStudyCommand.AbandonStudyId == archivedStudyId) -// { -// result.ReuploadNewStudyId = archivedStudyId; - - -// // 1、普通上传后重传 -// // 2、QC后重传 -// //_studyService.ReUploadSameStudy(archiveStudyCommand.SubjectVisitId, archivedDicomStudy.Id); - -// }//上传 -// else -// { -// //汇总 Series的Modality 更新到检查里面 检查状态 上传人 -// var seriesModalityList = _dicomSeriesRepository.Where(t => t.StudyId == archivedStudyId).Select(u => u.Modality).Distinct(); -// string ModaliyStr = string.Join('、', seriesModalityList.ToList()); - -// var study = _studyRepository.FirstOrDefaultAsync(t => t.Id == archivedStudyId).Result.IfNullThrowException(); -// study.Status = (int)StudyStatus.Uploaded; -// study.Modalities = ModaliyStr; - -// } -// _ = _dicomStudyMonitorRepository.AddAsync(monitor).Result; -// _ = _studyRepository.SaveChangesAsync().Result; - - - - - -// } - - - - - -// //public virtual IResponseOutput ForwardStudy(Guid studyId) -// //{ - -// // var study = _studyRepository.FirstOrDefault(u => u.Id == studyId); - - - -// // //数据库状态,其他人已经操作过了,此时提醒 -// // if (study.Status != (int)StudyStatus.Anonymized) -// // { -// // ResponseOutput.NotOk($"当前界面Study:{study.StudyCode} 状态被其他人已变更,不允许该操作,请刷新界面"); -// // } - -// // _studyRepository.Update(t => t.Id == studyId, u => new DicomStudy() -// // { -// // Status = (int)StudyStatus.Forwarding -// // }); - -// // var subject = _subjectRepository.FirstOrDefault(u => u.Id == study.SubjectId); -// // var trial = _trialRepository.FirstOrDefault(u => u.Id == study.TrialId); -// // var subjectVisit = _subjectVisitRepository.FirstOrDefault(u => u.Id == study.SubjectVisitId); -// // var targetPath = Path.Combine("/IMPORT-IMAGES", -// // trial.TrialCode + "_" + subject.Code + "_" + subjectVisit.VisitName + "_" + study.StudyCode); -// // var path = Path.Combine(_fileStorePath, study.CreateTime.Year.ToString(), study.TrialId.ToString(), -// // study.SiteId.ToString(), study.SubjectId.ToString(), study.SubjectVisitId.ToString(), study.Id.ToString(), "Data"); -// // try -// // { -// // // 主机及端口信息后面可以改到 配置文件 -// // SessionOptions sessionOptions = new SessionOptions -// // { -// // Protocol = Protocol.Sftp, -// // PortNumber = 8022, -// // HostName = "CS-690-sftp.mint-imaging.com", -// // UserName = "zdong", -// // Password = "Everest@2021", -// // //GiveUpSecurityAndAcceptAnySshHostKey = true, -// // SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo=" -// // }; -// // using (Session session = new Session()) -// // { -// // session.Open(sessionOptions); -// // if (!session.FileExists(targetPath)) -// // { -// // session.CreateDirectory(targetPath); -// // } - -// // var files = (new DirectoryInfo(path)).GetFiles(); -// // foreach (var file in files) -// // { -// // if (file.Name.Contains("Anonymize") && file.Extension.Contains("dcm")) -// // { -// // string remoteFilePath = -// // RemotePath.TranslateLocalPathToRemote(file.FullName, path, targetPath); -// // var result = session.PutFiles(file.FullName, remoteFilePath, false); -// // if (!result.IsSuccess) -// // { -// // return ResponseOutput.NotOk("Forward Failed"); -// // } -// // } -// // } - -// // //_studyStatusDetailRepository.Add(new StudyStatusDetail -// // //{ -// // // Status = (int)StudyStatus.Forwarded, -// // // StudyId = studyId, -// // // Note = string.Empty, -// // // OptUserName = _userInfo.RealName, -// // // OptTime = DateTime.Now -// // //}); - -// // study.Status = (int)StudyStatus.Forwarded; -// // _studyRepository.Update(study); - -// // //_workloadTPRepository.Add(new WorkloadTP -// // //{ -// // // SiteId = study.SiteId, -// // // StudyId = study.Id, -// // // SubjectId = study.SubjectId, -// // // SubjectVisitId = study.SubjectVisitId, -// // // Status = 0, -// // // ReviewerId = Guid.Empty, -// // // TrialId = study.TrialId, -// // // UpdateTime = DateTime.Now, -// // // TimepointCode = study.StudyCode + "_T01" -// // //}); -// // //if (study.IsDoubleReview) //双重阅片,则再添加一条,编号变为T02 -// // //{ -// // // _workloadTPRepository.Add(new WorkloadTP -// // // { -// // // SiteId = study.SiteId, -// // // StudyId = study.Id, -// // // SubjectId = study.SubjectId, -// // // SubjectVisitId = study.SubjectVisitId, -// // // Status = 0, -// // // ReviewerId = Guid.Empty, -// // // TrialId = study.TrialId, -// // // UpdateTime = DateTime.Now, -// // // TimepointCode = study.StudyCode + "_T02" -// // // }); -// // //} - - -// // return ResponseOutput.Result(_studyRepository.SaveChanges()); -// // } -// // } -// // catch (Exception e) -// // { -// // _studyRepository.Update(t => t.Id == studyId, u => new DicomStudy() -// // { -// // Status = (int)StudyStatus.ForwardFailed -// // }); -// // return ResponseOutput.NotOk("Forward Failed " + e.Message); -// // } -// //} - - - - - - - - -// #region 暂存 读片 - -// //public IEnumerable GetSeriesList(Guid studyId) -// //{ -// // return _dicomSeriesRepository.Where(s => s.StudyId == studyId).OrderBy(s => s.SeriesNumber). -// // ThenBy(s => s.SeriesTime).ThenBy(s => s.CreateTime) -// // .ProjectTo(_mapper.ConfigurationProvider); -// //} - - -// //public IEnumerable GetImageLabel(string tpCode) -// //{ -// // return _imageLabelRepository.Where(s => s.TpCode == tpCode) -// // .ProjectTo(_mapper.ConfigurationProvider); -// //} - -// //public bool SaveImageLabelList(ImageLabelCommand imageLabelCommand) -// //{ -// // var success = _imageLabelRepository.Delete(u => u.TpCode == imageLabelCommand.TpCode); -// // _keyInstanceRepository.Delete(u => u.TpCode == imageLabelCommand.TpCode); -// // if (imageLabelCommand.ImageLabelList.Count == 0) -// // { -// // return true; -// // } -// // else -// // { - -// // foreach (var label in imageLabelCommand.ImageLabelList) -// // { -// // _imageLabelRepository.Add(new ImageLabel -// // { -// // TpCode = imageLabelCommand.TpCode, -// // StudyId = label.StudyId, -// // SeriesId = label.SeriesId, -// // InstanceId = label.InstanceId, -// // LabelValue = label.LabelValue -// // }); -// // _keyInstanceRepository.Add(new KeyInstance -// // { -// // TpCode = imageLabelCommand.TpCode, -// // SeriesId = label.SeriesId, -// // InstanceId = label.InstanceId, -// // }); -// // } -// // success = _imageLabelRepository.SaveChanges(); -// // return success; -// // } -// //} - - -// #endregion - - - - -// #region 废弃 -// //public DicomStudyDTO GetStudyItem(Guid studyId) -// //{ -// // return _mapper.Map(_studyRepository.FirstOrDefault(s => s.Id == studyId)); -// //} -// //public virtual async Task DicomAnonymize(Guid studyId, string optUserName) -// //{ -// // var study = _studyRepository.FirstOrDefault(t => t.Id == studyId); - -// // //数据库状态,其他人已经操作过了,此时提醒 -// // if (study.Status != (int)StudyStatus.QAFinish) -// // { -// // ResponseOutput.NotOk($"当前界面Study:{study.StudyCode} 状态被其他人已变更,不允许该操作,请刷新界面"); -// // } - -// // var subject = _subjectRepository.Select(t => new { Id = t.Id, Code = t.Code }).FirstOrDefault(u => u.Id == study.SubjectId).IfNullThrowException(); -// // var trial = _trialRepository.Select(t => new { Id = t.Id, Code = t.TrialCode }).FirstOrDefault(u => u.Id == study.TrialId).IfNullThrowException(); - -// // study.Status = (int)StudyStatus.Anonymizing; - - -// // // 查询受试者 信息 -// // //string subjectCde = string.Empty; -// // //string subjectSex = string.Empty; - -// // //读取Dicom 文件,匿名化 - -// // //按照配置文件 匿名化 -// // var dicomSeries = _dicomSeriesRepository.Where(s => s.StudyId == studyId).ToList(); -// // foreach (var seriesItem in dicomSeries) -// // { -// // var dicomInstances = _dicomInstanceRepository.Where(s => s.SeriesId == seriesItem.Id).ToList(); - -// // foreach (var instanceItem in dicomInstances) -// // { -// // _dicomInstanceRepository.Attach(instanceItem); - -// // try -// // { -// // string filePath = _dicomFileStoreHelper.CreateInstanceFilePath(study, seriesItem.Id, instanceItem.Id); -// // DicomFile dicomFile = await DicomFile.OpenAsync(filePath, Encoding.Default); - -// // #region 废弃 - -// // //if (SystemConfig.AddClinicalInfo) //是否需要写入临床信息 -// // //{ -// // // dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, subjectCde + " " + subjectSex);//SubjectId -// // //} -// // //DicomDataset dataset = dicomFile.Dataset; - -// // #endregion - -// // foreach (var anonymizeItem in AppSettings.AnonymizeTagList) -// // { -// // if (anonymizeItem.Enable) -// // { -// // ushort group = Convert.ToUInt16(anonymizeItem.Group, 16); -// // ushort element = Convert.ToUInt16(anonymizeItem.Element, 16); -// // dicomFile.Dataset.AddOrUpdate(new DicomTag(group, element), anonymizeItem.ReplaceValue); -// // } -// // } - -// // dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, trial.Code + "_" + subject.Code); - -// // //_dicomFileStoreHelper.CreateInstanceFilePath(study, seriesItem.Id, instanceItem.Id); - -// // string path = Path.Combine(_fileStorePath, study.CreateTime.Year.ToString(), -// // study.TrialId.ToString(), -// // study.SiteId.ToString(), study.SubjectId.ToString(), study.SubjectVisitId.ToString(), study.Id.ToString(), "Data"); - -// // //await dicomFile.SaveAsync(Path.Combine(path, instanceItem.Id.ToString() + ".dcm")); -// // await dicomFile.SaveAsync( -// // Path.Combine(path, instanceItem.Id.ToString() + ".Anonymize" + ".dcm")); - -// // instanceItem.Anonymize = true; - -// // //_dicomInstanceRepository.Update(instanceItem); -// // } -// // catch (Exception ex) -// // { - -// // study.Status = (int)StudyStatus.AnonymizeFailed; - -// // _dicomInstanceRepository.SaveChanges(); - -// // //这个地方返回没用 -// // return ResponseOutput.NotOk(ex.Message); -// // } -// // } - -// // } - -// // study.Status = (int)StudyStatus.Anonymized; - -// // var success = _dicomInstanceRepository.SaveChanges(); - -// // return ResponseOutput.Result(success); -// //} -// //public string GetStudyPreview(Guid studyId) -// //{ -// // DicomInstance dicomInstance = _dicomInstanceRepository.FirstOrDefault(s => s.StudyId == studyId); -// // if (dicomInstance != null) -// // { -// // DicomStudy dicomStudy = _studyRepository.FirstOrDefault(s => s.Id == dicomInstance.StudyId); -// // if (dicomStudy != null) -// // { -// // return _dicomFileStoreHelper.GetInstanceFilePath(dicomStudy, dicomInstance.SeriesId, dicomInstance.Id.ToString()); -// // } -// // } -// // return string.Empty; -// //} - -// //public IEnumerable GetAllRelationStudyList(Guid subjectVisitId) -// //{ -// // #region 废弃 -// // //var studylist = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId && u.IsDeleted == false).Select(t => new { StudyId = t.Id, t.SubjectId, t.TrialId }).ToList(); -// // //var subjectId = studylist.FirstOrDefault().SubjectId; -// // //var trialId = studylist.FirstOrDefault().TrialId; -// // //var studyIds = studylist.Select(t => t.StudyId).ToList(); - - -// // //var query = from studyItem in _studyRepository.Where(u => u.SubjectId == subjectId -// // // && u.TrialId == trialId && u.IsDeleted == false && -// // // !studyIds.Contains(u.Id) -// // // /* && u.Status != (int)StudyStatus.Abandon*/) -// // // join visitItem in _subjectVisitRepository.AsQueryable() -// // // on studyItem.SubjectVisitId equals visitItem.Id -// // // select new RelationStudyDTO -// // // { -// // // StudyId = studyItem.Id, -// // // StudyCode = studyItem.StudyCode, -// // // VisitName = visitItem.VisitName, -// // // Modalities = studyItem.Modalities, -// // // Description = studyItem.Description, -// // // SeriesCount = studyItem.SeriesCount -// // // }; -// // #endregion - -// // var studyInfo = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException(); - -// // var query = _studyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId) -// // .ProjectTo(_mapper.ConfigurationProvider).ToList(); - -// // return query.OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList(); -// //} - - -// ///// -// ///// 检查列表 -// ///// -// ///// -// ///// -// //public PageOutput GetStudyList(StudyQueryDTO queryDto) -// //{ -// // var query = _studyRepository.Where(x => x.TrialId == queryDto.TrialId) -// // .WhereIf(queryDto.SubjectId != null, t => t.SubjectId == queryDto.SubjectId) -// // .WhereIf(queryDto.SubjectVisitId != null, t => t.SubjectId == queryDto.SubjectVisitId) -// // .WhereIf(!string.IsNullOrEmpty(queryDto.VisitPlanInfo), queryDto.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(queryDto.VisitPlanInfo)) -// // .WhereIf(queryDto.StudyTimeBegin != null, t => t.StudyTime >= queryDto.StudyTimeBegin) -// // .WhereIf(queryDto.StudyTimeEnd != null, t => t.StudyTime <= queryDto.StudyTimeEnd) -// // .WhereIf(queryDto.UpdateTimeBegin != null, t => t.StudyTime >= queryDto.UpdateTimeBegin) -// // .WhereIf(queryDto.UpdateTimeEnd != null, t => t.StudyTime <= queryDto.UpdateTimeEnd) -// // .WhereIf(queryDto.SiteId != null, t => t.SiteId == queryDto.SiteId) -// // .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) -// // .WhereIf(!string.IsNullOrWhiteSpace(queryDto.SubjectInfo), t => t.Subject.Code.Contains(queryDto.SubjectInfo)) -// // .ProjectTo(_mapper.ConfigurationProvider); - - -// // var list = query.ToPagedList(queryDto.PageIndex, queryDto.PageSize, queryDto.SortField == string.Empty ? "StudyCode" : queryDto.SortField, queryDto.Asc); - - -// // foreach (var item in list.CurrentPageData) -// // { -// // if (item.PatientBirthDate.Length == 8) -// // { -// // item.PatientBirthDate = -// // $"{item.PatientBirthDate[0]}{item.PatientBirthDate[1]}{item.PatientBirthDate[2]}{item.PatientBirthDate[3]}-{item.PatientBirthDate[4]}{item.PatientBirthDate[5]}-{item.PatientBirthDate[6]}{item.PatientBirthDate[7]}"; -// // } -// // } - -// // return list; -// //} - - - -// //public IResponseOutput DeleteStudy(Guid id) -// //{ -// // var needDelete = _studyRepository.FirstOrDefault(t => t.Id == id); - -// // if (needDelete == null) -// // { -// // return ResponseOutput.DBNotExistIfNUll(needDelete); -// // } -// // else //移除内存中缓存的StudyCode 这样刚上传的,删除 再上传还是用同样的Code -// // { - -// // if (_provider.Get($"{needDelete.TrialId }_{ StaticData.StudyMaxCode}").Value == needDelete.StudyCode) -// // { -// // _provider.Remove($"{needDelete.TrialId }_{ StaticData.StudyMaxCode}"); -// // } -// // } - - - -// // //if (study.Status != (int)StudyStatus.Uploaded) -// // //{ -// // // return ResponseOutput.NotOk("This study has been quality controlled and couldn't be deleted "); -// // //} - -// // #region 废弃的直接删除了 这里不用处理了 - -// // ////处理废弃的Study 如果有的话 -// // //var oldStudy = _studyRepository.FirstOrDefault(t => t.StudyCode == study.StudyCode && t.Id != id); -// // //if (oldStudy != null) -// // //{ -// // // _studyRepository.Delete(t => t.Id == oldStudy.Id); -// // // _dicomInstanceRepository.Delete(t => t.StudyId == oldStudy.Id); -// // // _dicomSeriesRepository.Delete(t => t.StudyId == oldStudy.Id); -// // //} -// // //处理废弃的Study -// // //var success5 = _studyRepository.Delete(t => t.StudyCode == study.StudyCode); -// // #endregion - - -// // //清除现有Study记录 -// // var success1 = _studyRepository.Delete(t => t.Id == id); -// // var succeess2 = _dicomInstanceRepository.Delete(t => t.StudyId == id); -// // var success3 = _dicomSeriesRepository.Delete(t => t.StudyId == id); - - -// // //一个访视下面有多个检查,所以需要检测 没有的时候才清空 -// // if (_studyRepository.Count(t => t.SubjectVisitId == needDelete.SubjectVisitId) == 0) -// // { -// // _subjectVisitRepository.Update(t => t.Id == needDelete.SubjectVisitId, - -// // u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted, SVENDTC = null, SVSTDTC = null }); - -// // _qcChallengeRepository.Delete(t => t.SubjectVisitId == needDelete.SubjectVisitId); - -// // //_qcChallengeRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - -// // //_trialQCQuestionAnswerRepository.Delete(t => t.SubjectVisitId == subjectVisitId); -// // } - - - - - -// // return ResponseOutput.Result(success1 || succeess2 || success3); -// //} - -// //public void ClearStudyInstanceAndSeriseData(Guid studyId) -// //{ -// // //重新开始计数,怕数据库又脏数据,影响数量 -// // _studyRepository.Update(t => t.Id == studyId, u => new DicomStudy() -// // { -// // InstanceCount = 0, -// // SeriesCount = 0 -// // }); - -// // _dicomSeriesRepository.Delete(t => t.StudyId == studyId); -// // _dicomInstanceRepository.Delete(t => t.StudyId == studyId); -// //} - - - -// //public bool ReUploadDifferentStudy(Guid subjectVisitId, Guid abandonStudyId, Guid newStudyId) -// //{ -// // //_qcChallengeRepository.Update(t => t.SubjectVisitId == subjectVisitId && t.NeedReUpload == true, u => new QCChallenge() { ReUploadedTime = DateTime.Now, ReUploader = _userInfo.RealName }); - -// // //注意这里不是用SeqId 主键查询,因为Seq id 是后续加的,为了不改变代码和前端接口参数 -// // var study = _studyRepository.FirstOrDefault(t => t.Id == abandonStudyId); - -// // var code = study.StudyCode; - -// // //清理以前的数据 -// // _studyRepository.Delete(t => t.Id == abandonStudyId); -// // _dicomInstanceRepository.Delete(t => t.StudyId == abandonStudyId); -// // _dicomSeriesRepository.Delete(t => t.StudyId == abandonStudyId); - -// // ////将以前的qa记录数据绑定到现在新生成的Study上 -// // //_qaNoticeRepository.Update(t => t.SubjectVisitId == abandonStudyId, u => new QANotice() { SubjectVisitId = newStudyId }); -// // //_qaNoticeUserRepository.Update(t => t.SubjectVisitId == abandonStudyId, -// // // u => new QANoticeUser() { SubjectVisitId = newStudyId }); -// // //_qaRecordRepository.Update(t => t.SubjectVisitId == abandonStudyId, u => new QARecord() { SubjectVisitId = newStudyId }); - - -// // var success = false; -// // if (study.Status == (int)StudyStatus.Uploading) -// // { -// // success = _studyRepository.Update(t => t.Id == newStudyId, u => new DicomStudy() -// // { -// // Status = (int)StudyStatus.Uploaded, -// // StudyCode = code -// // }); -// // } -// // else -// // { -// // //新一份的影像状态为旧影像的状态 不改变 -// // success = _studyRepository.Update(t => t.Id == newStudyId, u => new DicomStudy() -// // { -// // Status = study.Status, -// // StudyCode = code -// // }); -// // } - - - -// // #region 废弃之前的Study记录 讲新产生的记录的StudyCode 变更为老的 这样可以关联在一起 - -// // //var realName = _userInfo.RealName; -// // //var code = _studyRepository.GetAll().First(t => t.Id == abandonStudyId).StudyCode; -// // //_studyRepository.Update(t => t.Id == abandonStudyId, u => new DicomStudy() -// // //{ -// // // Status = (int)StudyStatus.Abandon -// // //}); -// // //_studyRepository.Update(t => t.Id == newStudyId, u => new DicomStudy() -// // //{ -// // // Status = (int)StudyStatus.Uploaded, -// // // StudyCode = code -// // //}); -// // //_studyStatusDetailRepository.Add(new StudyStatusDetail -// // //{ -// // // Status = (int)StudyStatus.Abandon, -// // // StudyId = abandonStudyId, -// // // Note = string.Empty, -// // // OptUserName = realName, -// // // OptTime = DateTime.Now -// // //}); -// // //_studyStatusDetailRepository.Add(new StudyStatusDetail -// // //{ -// // // Status = (int)StudyStatus.Uploaded, -// // // StudyId = newStudyId, -// // // Note = string.Empty, -// // // OptUserName = realName, -// // // OptTime = DateTime.Now -// // //}); - -// // //_studyStatusDetailRepository.SaveChanges(); - -// // #endregion - - -// // return success; - -// //} - - -// //public virtual void ReUploadSameStudy(Guid subjectVisitId, Guid studyId) -// //{ -// // //_qcChallengeRepository.Update(t => t.SubjectVisitId == subjectVisitId && t.NeedReUpload == true, u => new QCChallenge() { ReUploadedTime = DateTime.Now, ReUploader = _userInfo.RealName }); - -// // #region 之前整个上传过程操作没有放在一个整体事务 会有脏数据 现在整体一个事务,不会产生,废弃 但是切入AOP 所以保留空方法 -// // //var study = _studyRepository.FirstOrDefault(t=>t.Id== studyId); -// // //var status = study.Status; - -// // //if (status == (int)StudyStatus.Uploading) -// // //{ -// // // _studyRepository.Update(t => t.Id == studyId, u => new DicomStudy() -// // // { -// // // Status = (int)StudyStatus.Uploaded -// // // }); -// // //} -// // #endregion -// //} -// ///// -// ///// 上传完检查后,处理检查 汇总 Series的Modality 更新到检查里面 检查状态 上传人 -// ///// -// ///// -// //public void UploadStudyDeal(Guid studyId) -// //{ - -// // var seriesModalityList = _dicomSeriesRepository.Where(t => t.StudyId == studyId).Select(u => u.Modality).Distinct(); -// // string ModaliyStr = string.Join('、', seriesModalityList.ToList()); - -// // var study = _studyRepository.FirstOrDefault(t => t.Id == studyId); -// // study.Status = (int)StudyStatus.Uploaded; -// // study.Modalities = ModaliyStr; -// // _studyRepository.SaveChanges(); -// //} - - -// //public List GetSubjectVisitStudyList(Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId) -// //{ -// // var query = _studyRepository.Where(t => t.TrialId == trialId && t.SiteId == siteId && t.SubjectId == t.SubjectId && t.SubjectVisitId == subjectVisitId) -// // .Select(u => new SubjectVisitStudyDTO() { Modalities = u.Modalities, StudyCode = u.StudyCode, StudyId = u.Id, Status = u.Status }); - -// // return query.ToList(); -// //} - -// ////此处有AOP操作,不要更改为动态Api -// //public virtual IResponseOutput UpdateStudyStatus(StudyStatusDetailCommand studyStatus) -// //{ - -// // //注意这里不是用SeqId 主键查询,因为Seq id 是后续加的,为了不改变代码和前端接口参数 -// // var study = _studyRepository.FirstOrDefault(t => t.Id == studyStatus.StudyId); - -// // //数据库状态,其他人已经操作过了,此时提醒 -// // if (study.Status > studyStatus.Status) -// // { -// // ResponseOutput.NotOk($"当前界面Study:{study.StudyCode} 状态被其他人已变更,不允许该操作,请刷新界面"); -// // } - -// // ////防止多次调用,更新 没必要 -// // //if (study.Status == studyStatus.Status) -// // //{ -// // // return ResponseOutput.Ok(); -// // //} - -// // study.Status = studyStatus.Status; -// // study.UpdateTime = DateTime.Now; - -// // //if (studyStatus.Status == (int)StudyStatus.Uploaded) -// // //{ -// // // study.UploadedTime = DateTime.Now; -// // // study.Uploader = _userInfo.RealName; - - -// // //} -// // //if (study.Status == (int)StudyStatus.QAing) -// // //{ -// // // study.DeadlineTime = studyStatus.DeadlineTime; -// // //} - -// // if (studyStatus.Status == (int)StudyStatus.QAFInishNotPass) -// // { -// // study.QAComment = studyStatus.QAComment; -// // } - - -// // return ResponseOutput.Ok(_studyRepository.SaveChanges()); -// //} - -// //public List GetStudyStatusDetailList(Guid studyId) -// //{ -// // return _studyStatusDetailRepository.Where(s => s.StudyId == studyId).OrderByDescending(s => s.OptTime) -// // .ProjectTo(_mapper.ConfigurationProvider).ToList(); -// //} - - -// //public bool DistributeStudy(StudyReviewerCommand studyReviewer) -// //{ -// // //更新Study表中,总的状态 -// // // 插入中间表 -// // studyReviewer.StudyList.ForEach(study => -// // { -// // var workloadType = 1; -// // StudyStatus studyStatus = StudyStatus.Distributed; - -// // if (study.Status >= (int)StudyStatus.NeedAd) -// // { -// // workloadType = 2; -// // studyStatus = StudyStatus.AdDistributed; -// // } - -// // var tempStudy = _studyRepository.FirstOrDefault(s => s.Id == study.StudyId); -// // tempStudy.Status = (int)studyStatus; -// // _studyRepository.Update(tempStudy); - -// // _studyReviewerRepository.Add(new StudyReviewer() -// // { -// // ReviewerId = studyReviewer.ReviewerId, -// // StudyId = study.StudyId, -// // WorkloadType = workloadType, -// // TrialId = studyReviewer.TrialId, -// // Status = (int)studyStatus -// // }); -// // }); - -// // return _studyReviewerRepository.SaveChanges(); -// //} - - -// //public IResponseOutput EditStudyReviewer(StudyReviewerEditCommand studyReviewerEditCommand) -// //{ -// // _studyReviewerRepository.Delete(t => studyReviewerEditCommand.StudyId == t.StudyId); - -// // if (studyReviewerEditCommand.IsDoubleReview) -// // { -// // if (studyReviewerEditCommand.ReviewerId1 != null) -// // { -// // _studyReviewerRepository.Add( -// // new StudyReviewer() -// // { -// // StudyId = studyReviewerEditCommand.StudyId, -// // TrialId = studyReviewerEditCommand.TrialId, -// // ReviewerId = studyReviewerEditCommand.ReviewerId1.Value, -// // WorkloadType = 1 -// // }); -// // } - -// // if (studyReviewerEditCommand.ReviewerId2 != null) -// // { -// // _studyReviewerRepository.Add( -// // new StudyReviewer() -// // { -// // StudyId = studyReviewerEditCommand.StudyId, -// // TrialId = studyReviewerEditCommand.TrialId, -// // ReviewerId = studyReviewerEditCommand.ReviewerId2.Value, -// // WorkloadType = 1 -// // }); -// // } - -// // if (studyReviewerEditCommand.ReviewerIdForAD != null) -// // { -// // _studyReviewerRepository.Add( -// // new StudyReviewer() -// // { -// // StudyId = studyReviewerEditCommand.StudyId, -// // TrialId = studyReviewerEditCommand.TrialId, -// // ReviewerId = studyReviewerEditCommand.ReviewerIdForAD.Value, -// // WorkloadType = 2 -// // }); -// // } - -// // if (studyReviewerEditCommand.ReviewerId2 == null || studyReviewerEditCommand.ReviewerId1 == null) -// // { -// // _studyRepository.Update(t => t.Id == studyReviewerEditCommand.StudyId, -// // u => new DicomStudy() -// // { -// // Status = (int)StudyStatus.QAFinish -// // }); -// // } -// // } -// // else -// // { -// // if (studyReviewerEditCommand.ReviewerId1 != null) -// // { -// // _studyReviewerRepository.Add( -// // new StudyReviewer() -// // { -// // StudyId = studyReviewerEditCommand.StudyId, -// // TrialId = studyReviewerEditCommand.TrialId, -// // ReviewerId = studyReviewerEditCommand.ReviewerId1.Value, -// // WorkloadType = 1 -// // }); -// // } -// // else -// // { -// // _studyRepository.Update(t => t.Id == studyReviewerEditCommand.StudyId, -// // u => new DicomStudy() -// // { -// // Status = (int)StudyStatus.QAFinish -// // }); -// // } -// // } - -// // var success = _studyReviewerRepository.SaveChanges(); -// // return ResponseOutput.Result(success); -// //} - -// //public List GetReviewerListByTrialId(Guid trialId) -// //{ -// // var query = from enrollItem in _enrollRepository -// // .Where(t => t.TrialId == trialId && t.EnrollStatus >= 10) -// // join doctorItem in _doctorRepository.AsQueryable() -// // on enrollItem.DoctorId equals doctorItem.Id into g -// // from doctor in g.DefaultIfEmpty() -// // select new -// // { -// // ReviewerCode = doctor.ReviewerCode, -// // FirstName = doctor.FirstName, -// // LastName = doctor.LastName, -// // ReviewerId = enrollItem.DoctorId, -// // ActivelyReading = doctor.ActivelyReading, -// // }; - -// // return query.Where(s => s.ActivelyReading).Select(s => new ReviewerDistributionDTO -// // { -// // ReviewerCode = s.ReviewerCode, -// // FirstName = s.FirstName, -// // LastName = s.LastName, -// // ReviewerId = s.ReviewerId, - -// // }).ToList(); -// //} - - -// //public PageOutput GetDistributeStudyList( -// // StudyStatusQueryDTO studyStatusQueryDto) -// //{ -// // Expression> studyReviewerLambda = x => x.TrialId == studyStatusQueryDto.TrialId; - -// // if (studyStatusQueryDto.ReviewerId != null) -// // { -// // studyReviewerLambda = studyReviewerLambda.And(t => t.ReviewerId == studyStatusQueryDto.ReviewerId); -// // } - -// // if (studyStatusQueryDto.StudyStatus != null) -// // { -// // studyReviewerLambda = studyReviewerLambda.And(t => t.Status == studyStatusQueryDto.StudyStatus); -// // } - -// // var query = from studyReviewer in _studyReviewerRepository.Where(studyReviewerLambda) -// // join doctor in _doctorRepository.AsQueryable() on studyReviewer.ReviewerId equals doctor.Id -// // join study in _studyRepository.AsQueryable() on studyReviewer.StudyId equals study.Id -// // select new DistributeReviewerStudyStatusDTO() -// // { -// // Name = doctor.LastName + " / " + doctor.FirstName, -// // NameCN = doctor.ChineseName, -// // ReviewerCode = doctor.ReviewerCode, -// // Status = studyReviewer.Status, -// // StudyCode = study.StudyCode -// // }; - -// // return query.ToPagedList(studyStatusQueryDto.PageIndex, -// // studyStatusQueryDto.PageSize, studyStatusQueryDto.SortField == string.Empty -// // ? "ReviewerCode" -// // : studyStatusQueryDto.SortField, studyStatusQueryDto.Asc); - - -// //} - -// //public IEnumerable GetRelationVisitList(decimal visitNum, string tpCode) -// //{ -// // string tpGroup = tpCode.Substring(tpCode.Length - 3, 3); -// // var tp = _workloadTPRepository.FirstOrDefault(u => u.TimepointCode == tpCode); -// // var query = from workloadTp in _workloadTPRepository.Where(u => u.SubjectId == tp.SubjectId -// // && u.TrialId == tp.TrialId && -// // u.TimepointCode.Contains(tpGroup)) -// // join subjectVisit in _subjectVisitRepository.Where(u => u.VisitNum <= visitNum) -// // on workloadTp.SubjectVisitId equals subjectVisit.Id -// // select new RelationVisitDTO -// // { -// // StudyId = workloadTp.StudyId, -// // TpCode = workloadTp.TimepointCode, -// // VisitName = subjectVisit.VisitName -// // }; -// // return query.ToList(); -// //} - -// //public List GetQANoticeList(Guid subjectVisitId) -// //{ - -// // var query = from noticeUser in _qaNoticeUserRepository.AsQueryable() -// // .Where(t => t.ToUserId == _userInfo.Id && t.SubjectVisitId == subjectVisitId) -// // join notice in _qaNoticeRepository.Where(u => u.NeedDeal == true && u.SubjectVisitId == subjectVisitId) on -// // noticeUser.QANoticeId equals notice.Id -// // select notice.Id; - -// // var noticeUserList = query.ToList(); - -// // //待处理的消息数量 -// // var count = noticeUserList.Count; - - -// // var list = _qaNoticeRepository.Where(t => t.SubjectVisitId == subjectVisitId) -// // .ProjectTo(_mapper.ConfigurationProvider).OrderByDescending(t => t.SendTime).ToList(); - -// // list.ForEach(t => t.IsMessageReceiver = count > 0 && noticeUserList.Contains(t.Id) ? t.NeedDeal : false); - - -// // return list; -// //} - -// //public IResponseOutput DealNonDicomFile(Dictionary filePathDic, -// // ArchiveStudyCommand archiveStudyCommand) -// //{ - - -// // var savedInfo = GetSaveToDicomInfo(archiveStudyCommand.SubjectVisitId); - -// // var dicomStudy = new DicomStudy -// // { -// // Id = Guid.NewGuid(), - -// // //SiteId = addtionalInfo.SiteId, -// // //TrialId = addtionalInfo.TrialId, -// // //SubjectId = addtionalInfo.SubjectId, -// // //SubjectVisitId = addtionalInfo.SubjectVisitId, -// // IsDoubleReview = savedInfo.IsDoubleReview, -// // Comment = savedInfo.Comment -// // }; - - - -// // #region Setting Code - -// // //var last = _studyRepository.Where(s => s.TrialId == addtionalInfo.TrialId) -// // // .OrderByDescending(c => c.StudyCode).FirstOrDefault(); -// // //if (last != null) -// // //{ -// // // var len = last.StudyCode.Length; -// // // if (len > 5 && int.TryParse(last.StudyCode.Substring(len - 5, 5), out var num)) -// // // { -// // // dicomStudy.StudyCode = "ST" + (++num).ToString().PadLeft(5, '0'); -// // // } -// // // else -// // // { -// // // return ResponseOutput.NotOk("Generate StudyCode failed"); -// // // } -// // //} -// // //else -// // //{ -// // // dicomStudy.StudyCode = "ST" + 1.ToString().PadLeft(5, '0'); -// // //} - -// // #endregion - -// // var study = _studyRepository.Add(dicomStudy); -// // var saveFileList = new List(); - -// // foreach (var key in filePathDic.Keys) -// // { -// // saveFileList.Add(new NoneDicomFile() { FileName = filePathDic[key], StudyId = study.Id, Path = key }); -// // } - - -// // _noneDicomFileRepository.AddRange(saveFileList); - - - -// // var success = _noneDicomFileRepository.SaveChanges(); - -// // UpdateStudyStatus(new StudyStatusDetailCommand -// // { -// // StudyId = study.Id, -// // Status = (int)StudyStatus.Uploaded, -// // Note = string.Empty -// // }); - - -// // return ResponseOutput.Result(success); - -// //} -// #endregion - - -// } -//} diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 63da2a948..39091ffb1 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -21,7 +21,6 @@ namespace IRaCIS.Core.Application.Image.QA public class QCOperationService : BaseService, IQCOperationService { - private readonly DicomFileStoreHelper _dicomFileStoreHelper; private readonly IRepository _subjectVisitRepository; private readonly IRepository _qcChallengeRepository; private readonly IRepository _dicomStudyRepository; @@ -33,7 +32,7 @@ namespace IRaCIS.Core.Application.Image.QA private readonly AsyncLock _mutex = new AsyncLock(); - public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository subjectVisitRepository, + public QCOperationService( IRepository subjectVisitRepository, IRepository qcChallengeRepository, IRepository trialRepository, IRepository dicomStudyRepository, @@ -43,7 +42,6 @@ namespace IRaCIS.Core.Application.Image.QA IRepository checkChallengeDialogrepository ) { - _dicomFileStoreHelper = dicomFileStoreHelper; _subjectVisitRepository = subjectVisitRepository; _qcChallengeRepository = qcChallengeRepository; _dicomStudyRepository = dicomStudyRepository; @@ -1685,7 +1683,7 @@ namespace IRaCIS.Core.Application.Image.QA { - var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); + var info = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName; diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 5a9d3fe7c..8c968f014 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -57,7 +57,6 @@ namespace IRaCIS.Core.Application.Contracts [AllowAnonymous] public async Task SendVerifyCode(SiteSurveySendVerifyCode userInfo) { - var verificationType = VerifyType.Email; //检查手机或者邮箱是否有效 if (!Regex.IsMatch(userInfo.Email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$")) {