diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index 49de3bae4..e39cfc363 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -447,12 +447,15 @@ namespace IRaCIS.Core.API.Controllers
///
///
///
+ ///
///
[HttpPost("NoneDicomStudy/UploadNoneDicomFile")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task UploadNoneDicomFile(UploadNoneDicomFileCommand incommand,
- [FromServices] IRepository _noneDicomStudyRepository, [FromServices] IRepository _studyMonitorRepository)
+ [FromServices] IRepository _noneDicomStudyRepository,
+ [FromServices] IRepository _studyMonitorRepository,
+ [FromServices] IRepository _noneDicomStudyFileRepository)
{
var subjectVisitId = incommand.SubjectVisitId;
@@ -460,7 +463,7 @@ namespace IRaCIS.Core.API.Controllers
var noneDicomStudyId = incommand.NoneDicomStudyId;
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
var sv = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException();
@@ -470,7 +473,7 @@ namespace IRaCIS.Core.API.Controllers
foreach (var item in incommand.UploadedFileList)
{
- await _repository.AddAsync(new NoneDicomStudyFile() { FileName = item.FileName, Path = item.FilePath, NoneDicomStudyId = noneDicomStudyId,FileType=item.FileType });
+ await _noneDicomStudyFileRepository.AddAsync(new NoneDicomStudyFile() { FileName = item.FileName, Path = item.FilePath, NoneDicomStudyId = noneDicomStudyId,FileType=item.FileType });
}
var uploadFinishedTime = DateTime.Now;
@@ -503,12 +506,13 @@ namespace IRaCIS.Core.API.Controllers
///
///
///
+ ///
///
///
[HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
- public async Task UploadVisitCheckExcel(Guid trialId, [FromServices] IOSSService oSSService)
+ public async Task UploadVisitCheckExcel(Guid trialId, [FromServices] IOSSService oSSService, [FromServices] IRepository _inspectionFileRepository)
{
var fileName = string.Empty;
@@ -530,7 +534,7 @@ namespace IRaCIS.Core.API.Controllers
var ossRelativePath = await oSSService.UploadToOSSAsync(fileStream, "InspectionUpload/Check", realFileName);
- await _repository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
+ await _inspectionFileRepository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
return ossRelativePath;
diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewRuleService.cs
index 88bc85642..e76863049 100644
--- a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewRuleService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewRuleService.cs
@@ -17,7 +17,8 @@ namespace IRaCIS.Core.Application.Service
///
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewRuleService(
- IRepository _taskMedicalReviewRuleRepository) : BaseService, ITaskMedicalReviewRuleService
+ IRepository _taskMedicalReviewRuleRepository,
+ IRepository _trialUserRepository) : BaseService, ITaskMedicalReviewRuleService
{
@@ -30,7 +31,7 @@ namespace IRaCIS.Core.Application.Service
var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo(_mapper.ConfigurationProvider);
- var isHaveMIM = await _repository.AnyAsync(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId==inQuery.TrialId);
+ var isHaveMIM = await _trialUserRepository.AnyAsync(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId==inQuery.TrialId);
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(),new {IsHaveMIM=isHaveMIM});
}
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index 9d8042060..facd2ed87 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -45,6 +45,10 @@ namespace IRaCIS.Core.Application.Service.Allocation
IRepository _trialReadingCriterionRepository,
IRepository _readingQuestionCriterionTrialRepository,
IRepository _readingTaskQuestionAnswerRepository,
+ IRepository _dicomInstanceRepository,
+ IRepository _dicomSeriesRepository,
+ IRepository _subjectCanceDoctorRepository,
+ IRepository _trialQCQuestionAnswerRepository,
IRepository _subjectCriteriaEvaluationVisitStudyFilterRepository) : BaseService, IVisitTaskService
{
@@ -277,7 +281,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
var subjectId = cancelCommand.CancelList.First().SubjectId;
- await _repository.AddAsync(new SubjectCanceDoctor() { SubjectId = subjectId, Note = cancelCommand.Note, TrialReadingCriterionId = cancelCommand.TrialReadingCriterionId });
+ await _subjectCanceDoctorRepository.AddAsync(new SubjectCanceDoctor() { SubjectId = subjectId, Note = cancelCommand.Note, TrialReadingCriterionId = cancelCommand.TrialReadingCriterionId });
await _visitTaskRepository.SaveChangesAsync();
@@ -1555,7 +1559,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
///
private async Task PMReReadingConfirmOrBackInfluenceAnalysisAsync(Guid subjectId)
{
- if (await _repository.AnyAsync(t => t.IsAnalysisCreate && t.SubjectId == subjectId))
+ if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.SubjectId == subjectId))
{
await _repository.UpdatePartialFromQueryAsync(t => t.Id == subjectId, u => new Subject() { IsReReadingOrBackInfluenceAnalysis = true });
@@ -2537,9 +2541,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
//await _repository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = "PM/APM同意一致性核查回退。", UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
- await _repository.BatchDeleteAsync(t => t.SubjectVisitId == subjectVisitId);
- await _repository.BatchDeleteAsync(t => t.DicomSerie.IsDeleted);
- await _repository.BatchDeleteAsync(t => t.IsDeleted);
+ await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId);
+ await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => t.DicomSerie.IsDeleted);
+ await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted);
var success = await _subjectVisitRepository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
index 66cf4e6ab..9b0689521 100644
--- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
+++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
@@ -32,9 +32,13 @@ namespace IRaCIS.Core.Application.Service.Common
public class ExcelExportService(IRepository _trialUserRepository,
IRepository _visitTaskRepository,
IRepository _readingQuestionCriterionTrialRepository,
+ IRepository _systemDocNeedConfirmedUserTypeRepository,
IRepository _dicomStudyRepository,
IRepository _qcChallengeRepository,
IRepository _noneDicomStudyRepository,
+ IRepository _commonDocumentRepository,
+ IRepository _systemDocConfirmedUserRepository,
+ IRepository _trialDocConfirmedUserRepository,
IRepository _subjectRepository) : BaseService
{
@@ -349,7 +353,7 @@ namespace IRaCIS.Core.Application.Service.Common
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
- join confirm in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
+ join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new TrainingRecordExportDTO()
@@ -381,12 +385,12 @@ namespace IRaCIS.Core.Application.Service.Common
- var systemDocQuery = from needConfirmEdUserType in _repository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime)
+ var systemDocQuery = from needConfirmEdUserType in _systemDocNeedConfirmedUserTypeRepository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
- join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
+ join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new TrainingRecordExportDTO()
{
@@ -1448,7 +1452,7 @@ namespace IRaCIS.Core.Application.Service.Common
list.Add(new ExportDocumentDes() { Code = StaticData.Export.PCWG3Point1DetailedOfEvaluatedLesion_Export, ExportCatogory = ExportCatogory.DetailedOfEvaluatedLesion });
}
- var result = _repository.Where(t => list.Select(c => c.Code).Contains(t.Code)).Select(c => new ExportDocumentDes() { Code = c.Code, FileName = _userInfo.IsEn_Us ? c.Name : c.NameCN }).ToList();
+ var result = _commonDocumentRepository.Where(t => list.Select(c => c.Code).Contains(t.Code)).Select(c => new ExportDocumentDes() { Code = c.Code, FileName = _userInfo.IsEn_Us ? c.Name : c.NameCN }).ToList();
foreach (var item in list)
{
diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs
index 59fa8360e..4d37789c0 100644
--- a/IRaCIS.Core.Application/Service/Common/MailService.cs
+++ b/IRaCIS.Core.Application/Service/Common/MailService.cs
@@ -354,7 +354,7 @@ namespace IRaCIS.Application.Services
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
- var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == trialSiteSurvey.TrialId);
+ var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurvey.TrialId);
var siteInfo = await _repository.FirstOrDefaultAsync(t => t.TrialId == trialSiteSurvey.TrialId && t.Id == trialSiteSurvey.TrialSiteId, true);
diff --git a/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs b/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs
index f8e36c680..108f6f5ab 100644
--- a/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs
+++ b/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs
@@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.Services
[HttpGet("{code}")]
public async Task GetSystemBasicData(string code)
{
- return (await _repository.Where(t => t.Code == code).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
+ return (await _systemBasicDataRepository.Where(t => t.Code == code).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
}
diff --git a/IRaCIS.Core.Application/Service/Doctor/AttachmentService.cs b/IRaCIS.Core.Application/Service/Doctor/AttachmentService.cs
index 2cf06c747..e9fd44333 100644
--- a/IRaCIS.Core.Application/Service/Doctor/AttachmentService.cs
+++ b/IRaCIS.Core.Application/Service/Doctor/AttachmentService.cs
@@ -184,7 +184,7 @@ namespace IRaCIS.Application.Services
attachment.IsOfficial = true;
}
- await _repository.AddAsync(newAttachment);
+ await _attachmentrepository.AddAsync(newAttachment);
var success = await _repository.SaveChangesAsync();
return ResponseOutput.Result(success, attachment);
}
diff --git a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
index 3a280e2f6..9ac5f36f1 100644
--- a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
+++ b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
@@ -11,6 +11,7 @@ namespace IRaCIS.Application.Services
[ApiExplorerSettings(GroupName = "Reviewer")]
public class DoctorService(
IRepository _doctorRepository,
+ IRepository _doctorDictionaryRepository,
IRepository _enrollRepository,
IRepository _attachmentRepository,
IRepository _doctorCriterionFileRepository,
@@ -95,7 +96,7 @@ namespace IRaCIS.Application.Services
var doctor = await _doctorRepository.FirstOrDefaultAsync(t => t.Id == updateModel.Id).IfNullThrowException();
//删除中间表 Title对应的记录
- await _repository.BatchDeleteAsync(t => t.DoctorId == updateModel.Id && t.KeyName == StaticData.Title);
+ await _doctorDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.DoctorId == updateModel.Id && t.KeyName == StaticData.Title);
var adddata = new List();
@@ -364,7 +365,7 @@ namespace IRaCIS.Application.Services
//_doctorDictionaryRepository.Delete(t =>
// t.DoctorId == specialtyUpdateModel.Id && t.KeyName == StaticData.ReadingType);
- await _repository.BatchDeleteAsync(t =>
+ await _doctorDictionaryRepository.BatchDeleteNoTrackingAsync(t =>
t.DoctorId == specialtyUpdateModel.Id && (t.KeyName == StaticData.Subspeciality || t.KeyName == StaticData.ReadingType));
diff --git a/IRaCIS.Core.Application/Service/Doctor/EducationService.cs b/IRaCIS.Core.Application/Service/Doctor/EducationService.cs
index ccc9d5ec1..a72dccbcd 100644
--- a/IRaCIS.Core.Application/Service/Doctor/EducationService.cs
+++ b/IRaCIS.Core.Application/Service/Doctor/EducationService.cs
@@ -126,7 +126,7 @@ namespace IRaCIS.Application.Services
[HttpDelete("{doctorId:guid}")]
public async Task DeletePostgraduateInfo(Guid doctorId)
{
- var success = await _repository.BatchDeleteAsync(o => o.Id == doctorId);
+ var success = await _postgraduateRepository.BatchDeleteNoTrackingAsync(o => o.Id == doctorId);
return ResponseOutput.Result(success);
}
}
diff --git a/IRaCIS.Core.Application/Service/Doctor/TrialExperienceService.cs b/IRaCIS.Core.Application/Service/Doctor/TrialExperienceService.cs
index f38ce1fd8..6591d0663 100644
--- a/IRaCIS.Core.Application/Service/Doctor/TrialExperienceService.cs
+++ b/IRaCIS.Core.Application/Service/Doctor/TrialExperienceService.cs
@@ -8,6 +8,7 @@ namespace IRaCIS.Application.Services
public class TrialExperienceService(
IRepository _trialExperienceRepository,
IRepository _doctorRepository,
+ IRepository _trialExperienceCriteriaRepository,
IRepository _attachmentRepository
) : BaseService, ITrialExperienceService
{
@@ -67,7 +68,7 @@ namespace IRaCIS.Application.Services
var trialExperience =
_mapper.Map(trialExperienceViewModel);
- trialExperience = await _repository.AddAsync(trialExperience);
+ trialExperience = await _trialExperienceRepository.AddAsync(trialExperience);
List criteriaList = new List();
trialExperienceViewModel.EvaluationCriteriaIdList.ForEach(t => criteriaList.Add(new TrialExperienceCriteria()
@@ -78,7 +79,7 @@ namespace IRaCIS.Application.Services
TrialExperienceId = trialExperience.Id
}));
- await _repository.AddRangeAsync(criteriaList);
+ await _trialExperienceCriteriaRepository.AddRangeAsync(criteriaList);
var success = await _repository.SaveChangesAsync();
@@ -93,7 +94,7 @@ namespace IRaCIS.Application.Services
_mapper.Map(trialExperienceViewModel, needUpdate);
await _repository.UpdateAsync(needUpdate);
- await _repository.BatchDeleteAsync(t => t.TrialExperienceId == needUpdate.Id);
+ await _trialExperienceCriteriaRepository.BatchDeleteNoTrackingAsync(t => t.TrialExperienceId == needUpdate.Id);
List criteriaList = new List();
@@ -119,7 +120,7 @@ namespace IRaCIS.Application.Services
[HttpDelete, Route("{doctorId:guid}")]
public async Task DeleteTrialExperience(Guid doctorId)
{
- var success = await _repository.BatchDeleteAsync(o => o.Id == doctorId);
+ var success = await _trialExperienceRepository.BatchDeleteNoTrackingAsync(o => o.Id == doctorId);
return ResponseOutput.Result(success);
}
///
@@ -133,7 +134,7 @@ namespace IRaCIS.Application.Services
{
//_attachmentRepository.Delete(t => t.DoctorId == updateGCPExperienceParam.Id && t.Type == StaticData.GCP);
- var successs = await _repository.BatchUpdateAsync(o => o.Id == updateGCPExperienceParam.Id, u => new Doctor()
+ var successs = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == updateGCPExperienceParam.Id, u => new Doctor()
{
GCP = updateGCPExperienceParam.GCP,
GCPId = (updateGCPExperienceParam.GCP==0||updateGCPExperienceParam.GCPId==null)?Guid.Empty: updateGCPExperienceParam.GCPId!.Value
@@ -141,7 +142,7 @@ namespace IRaCIS.Application.Services
if (updateGCPExperienceParam.GCP == 0 )
{
- await _repository.BatchDeleteAsync(a => a.DoctorId == updateGCPExperienceParam.Id && a.Type=="GCP");
+ await _attachmentRepository.BatchDeleteNoTrackingAsync(a => a.DoctorId == updateGCPExperienceParam.Id && a.Type=="GCP");
}
return ResponseOutput.Result(successs, updateGCPExperienceParam.GCPId.ToString());
@@ -155,7 +156,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task UpdateOtherExperience(ClinicalExperienceCommand updateOtherClinicalExperience)
{
- var success = await _repository.BatchUpdateAsync(o => o.Id == updateOtherClinicalExperience.DoctorId, u => new Doctor()
+ var success = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == updateOtherClinicalExperience.DoctorId, u => new Doctor()
{
OtherClinicalExperience = updateOtherClinicalExperience.OtherClinicalExperience ?? string.Empty,
OtherClinicalExperienceCN = updateOtherClinicalExperience.OtherClinicalExperienceCN ?? string.Empty
diff --git a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs
index 3a77e41a1..8ea2c4670 100644
--- a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs
+++ b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs
@@ -17,6 +17,7 @@ namespace IRaCIS.Core.Application.Services
[ApiExplorerSettings(GroupName = "Trial")]
public class SystemDocumentService(
IRepository _systemDocumentRepository,
+ IRepository _userRepository,
IRepository _systemDocConfirmedUserRepository) : BaseService, ISystemDocumentService
{
@@ -146,10 +147,10 @@ namespace IRaCIS.Core.Application.Services
var query = from sysDoc in _systemDocumentRepository.Where(t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId))
.WhereIf(!string.IsNullOrEmpty(inQuery.Name), t => t.Name.Contains(inQuery.Name))
.WhereIf(inQuery.FileTypeId != null, t => t.FileTypeId == inQuery.FileTypeId)
- join confirm in _repository.GetQueryable() on new { ConfirmUserId = _userInfo.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
+ join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = _userInfo.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
- join user in _repository.GetQueryable() on _userInfo.Id equals user.Id
+ join user in _userRepository.Where() on _userInfo.Id equals user.Id
select new UnionDocumentWithConfirmInfoView()
{
diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs
index b44940f98..a1f2d1e69 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs
@@ -25,8 +25,10 @@ namespace IRaCIS.Core.Application.Services
IRepository _trialRepository,
ISystemDocumentService _systemDocumentService,
IRepository _systemDocConfirmedUserRepository,
+ IRepository _systemDocNeedConfirmedUserTypeRepository,
IRepository _systemDocumentRepository,
IRepository _trialUserRepository,
+ IRepository _trialDocConfirmedUserRepository,
IRepository _readingQuestionCriterionTrialRepository) : BaseService, ITrialDocumentService
{
@@ -60,7 +62,7 @@ namespace IRaCIS.Core.Application.Services
.Where(t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId))
join trialUser in _trialUserRepository.Where(t => t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId
- join confirm in _repository.Where() on
+ join confirm in _trialDocConfirmedUserRepository.Where() on
new { trialUser.UserId, TrialDocumentId = trialDoc.Id } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
@@ -228,7 +230,7 @@ namespace IRaCIS.Core.Application.Services
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id)
on needConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
- join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmedUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
+ join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmedUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
{
@@ -261,7 +263,7 @@ namespace IRaCIS.Core.Application.Services
.WhereIf(!_userInfo.IsAdmin, t => t.IsDeleted == false || (t.IsDeleted == true && t.TrialDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)))
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId
- join confirm in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
+ join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
new { trialUser.UserId, TrialDocumentId = trialDoc.Id } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
@@ -398,7 +400,7 @@ namespace IRaCIS.Core.Application.Services
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
- join confirm in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
+ join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
@@ -430,12 +432,12 @@ namespace IRaCIS.Core.Application.Services
- var systemDocQuery = from needConfirmEdUserType in _repository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime)
+ var systemDocQuery = from needConfirmEdUserType in _systemDocNeedConfirmedUserTypeRepository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
- join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
+ join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
{
@@ -619,7 +621,7 @@ namespace IRaCIS.Core.Application.Services
{
if (!await _systemDocConfirmedUserRepository.AnyAsync(t => t.SystemDocumentId == documentId && t.ConfirmUserId == _userInfo.Id))
{
- await _repository.AddAsync(new SystemDocConfirmedUser() { SystemDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
+ await _systemDocConfirmedUserRepository.AddAsync(new SystemDocConfirmedUser() { SystemDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
}
@@ -630,7 +632,7 @@ namespace IRaCIS.Core.Application.Services
if (!await _trialDocUserTypeConfirmedUserRepository.AnyAsync(t => t.TrialDocumentId == documentId && t.ConfirmUserId == _userInfo.Id))
{
- await _repository.AddAsync(new TrialDocConfirmedUser() { TrialDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
+ await _trialDocConfirmedUserRepository.AddAsync(new TrialDocConfirmedUser() { TrialDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
}
@@ -647,7 +649,7 @@ namespace IRaCIS.Core.Application.Services
{
if (!await _systemDocConfirmedUserRepository.AnyAsync(t => t.SystemDocumentId == documentId && t.ConfirmUserId == _userInfo.Id))
{
- await _repository.AddAsync(new SystemDocConfirmedUser() { SystemDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
+ await _systemDocConfirmedUserRepository.AddAsync(new SystemDocConfirmedUser() { SystemDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
}
@@ -662,7 +664,7 @@ namespace IRaCIS.Core.Application.Services
if (!await _trialDocUserTypeConfirmedUserRepository.AnyAsync(t => t.TrialDocumentId == documentId && t.ConfirmUserId == _userInfo.Id))
{
- await _repository.AddAsync(new TrialDocConfirmedUser() { TrialDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
+ await _trialDocConfirmedUserRepository.AddAsync(new TrialDocConfirmedUser() { TrialDocumentId = documentId, ConfirmUserId = _userInfo.Id, SignFirstViewTime = DateTime.Now });
}
var success = await _repository.SaveChangesAsync();
@@ -806,8 +808,8 @@ namespace IRaCIS.Core.Application.Services
[Obsolete]
public async Task> GetTrialSystemDocumentList(DocumentTrialUnionQuery inQuery)
{
- var systemDocumentQueryable = _repository
- .WhereIf(!_userInfo.IsAdmin, t => t.IsDeleted == false)
+ var systemDocumentQueryable = _systemDocumentRepository
+ .WhereIf(!_userInfo.IsAdmin, t => t.IsDeleted == false)
.Select(t => new DocumentUnionWithUserStatView()
{
Id = t.Id,
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index ccb0c0ba5..785697baa 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -42,6 +42,7 @@ namespace IRaCIS.Core.Application.Service
IRepository _taskMedicalReviewRepository,
IRepository _visitTaskRepository,
IRepository _trialUserRepository,
+ IRepository _trialEmailNoticeUserRepository,
IRepository _subjectRepository,
IRepository _subjectVisitRepository,
IRepository _readingTaskQuestionAnswerRepository,
@@ -1376,8 +1377,8 @@ namespace IRaCIS.Core.Application.Service
{
var id = (Guid)addOrEditTrialEmailNoticeConfig.Id;
- await _repository.BatchDeleteAsync(t => t.TrialEmailNoticeConfigId == addOrEditTrialEmailNoticeConfig.Id);
- await _repository.BatchDeleteAsync(t => t.TrialEmailNoticeConfigId == addOrEditTrialEmailNoticeConfig.Id);
+ await _trialEmailNoticeUserRepository.BatchDeleteNoTrackingAsync(t => t.TrialEmailNoticeConfigId == addOrEditTrialEmailNoticeConfig.Id);
+ await _trialEmailBlackUserRepository.BatchDeleteNoTrackingAsync(t => t.TrialEmailNoticeConfigId == addOrEditTrialEmailNoticeConfig.Id);
List trialEmailNoticeUsers = new List();
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
index bafb7fc8c..484a08e17 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
@@ -39,6 +39,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
IRepository _dictionaryRepository,
IRepository _trialRepository,
IRepository _studyMonitorRepository,
+ IRepository _taskStudyRepository,
+ IRepository _taskSeriesRepository,
+ IRepository _taskInstanceRepository,
IRepository _readingQuestionCriterionTrialRepository,
IDistributedLockProvider _distributedLockProvider) : BaseService, IDownloadAndUploadService
{
@@ -316,7 +319,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
SpecialArchiveStudyDeal(study);
modalitys = study.Modalities;
- await _repository.AddAsync(study);
+ await _taskStudyRepository.AddAsync(study);
studyMonitor.StudyId = study.Id;
@@ -338,7 +341,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//前端传递的数量不准,上传的时候,把失败的也加进来了,以实际数组的数字为准
series.InstanceCount = seriesItem.InstanceList.Count;
- await _repository.AddAsync(series);
+ await _taskSeriesRepository.AddAsync(series);
foreach (var instanceItem in seriesItem.InstanceList)
{
@@ -355,7 +358,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//isntance.SubjectVisitId = incommand.SubjectVisitId;
isntance.VisitTaskId = findOriginStudy.VisitTaskId;
- await _repository.AddAsync(isntance);
+ await _taskInstanceRepository.AddAsync(isntance);
}
}
@@ -403,7 +406,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//series.SubjectVisitId = incommand.SubjectVisitId;
- dicomSeries = await _repository.AddAsync(series);
+ dicomSeries = await _taskSeriesRepository.AddAsync(series);
//新的序列 那么 检查的序列数量+1
study.SeriesCount += 1;
@@ -425,7 +428,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
insntance.SubjectId = incommand.SubjectId;
insntance.VisitTaskId = findOriginStudy.VisitTaskId;
- await _repository.AddAsync(insntance);
+ await _taskInstanceRepository.AddAsync(insntance);
}
@@ -468,9 +471,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
public async Task DeleteTaskStudy(Guid visitTaskId)
{
- await _repository.BatchDeleteAsync(t => t.VisitTaskId == visitTaskId);
- await _repository.BatchDeleteAsync(t => t.VisitTaskId == visitTaskId);
- await _repository.BatchDeleteAsync(t => t.VisitTaskId == visitTaskId);
+ await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
+ await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
+ await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId);
return ResponseOutput.Ok();
}
diff --git a/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs b/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs
index 4a434413e..0ef5a9930 100644
--- a/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs
@@ -944,8 +944,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet]
public async Task> GetAuditConfigChildList(Guid frontAuditConfigId)
{
- //var list = await (from data in _repository.GetQueryable().Where(x => x.Id == frontAuditConfigId)
- // join childrenType in _repository.GetQueryable() on data.Id equals childrenType.ParentId
+ //var list = await (from data in _frontAuditConfigRepository.Where().Where(x => x.Id == frontAuditConfigId)
+ // join childrenType in _frontAuditConfigRepository.Where() on data.Id equals childrenType.ParentId
// select childrenType).OrderBy(x => x.Sort).ToListAsync();
//return list;
@@ -1094,14 +1094,14 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task> GetFrontAuditConfigList(FrontAuditConfigQuery iq)
{
- var query = from data in _repository.GetQueryable()
- join childrenType in _repository.GetQueryable() on data.ChildrenTypeId equals childrenType.Id into childrenTypetemp
+ var query = from data in _frontAuditConfigRepository.Where()
+ join childrenType in _dictionaryRepository.Where() on data.ChildrenTypeId equals childrenType.Id into childrenTypetemp
from leftchildrenType in childrenTypetemp.DefaultIfEmpty()
- join ModuleType in _repository.GetQueryable() on data.ModuleTypeId equals ModuleType.Id into ModuleTypetemp
+ join ModuleType in _dictionaryRepository.Where() on data.ModuleTypeId equals ModuleType.Id into ModuleTypetemp
from leftModuleType in ModuleTypetemp.DefaultIfEmpty()
- join OptTypeId in _repository.GetQueryable() on data.OptTypeId equals OptTypeId.Id into OptTypeIdtemp
+ join OptTypeId in _dictionaryRepository.Where() on data.OptTypeId equals OptTypeId.Id into OptTypeIdtemp
from leftOptTypeId in OptTypeIdtemp.DefaultIfEmpty()
- join ObjectTypeId in _repository.GetQueryable() on data.ObjectTypeId equals ObjectTypeId.Id into ObjectTypeIdtemp
+ join ObjectTypeId in _dictionaryRepository.Where() on data.ObjectTypeId equals ObjectTypeId.Id into ObjectTypeIdtemp
from leftObjectTypeIdtemp in ObjectTypeIdtemp.DefaultIfEmpty()
select new FrontAuditConfigView()
{
@@ -1237,7 +1237,7 @@ namespace IRaCIS.Core.Application.Service
//---存在子类 不能删除
return ResponseOutput.NotOk(_localizer["FrontAudit_CannotDelSub"]);
}
- var success = await _repository.BatchDeleteAsync(t => t.Id == frontAuditConfigId);
+ var success = await _frontAuditConfigRepository.BatchDeleteNoTrackingAsync(t => t.Id == frontAuditConfigId);
return ResponseOutput.Result(success);
}
diff --git a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs
index 0f0112510..2e09c4465 100644
--- a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs
+++ b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs
@@ -13,6 +13,15 @@ namespace IRaCIS.Core.Application.Service.Inspection
[NonDynamicWebApi]
public class InspectionService(
IRepository _dataInspectionRepository,
+ IRepository _dictionaryRepository,
+ IRepository _trialSignRepository,
+ IRepository _userRepository,
+ IRepository _trialSiteRepository,
+ IRepository _trialRepository,
+ IRepository _subjectRepository,
+ IRepository _subjectVisitRepository,
+ IRepository _userTypeRepository,
+ IRepository _visitTaskRepository,
IRepository _frontAuditConfigRepository) : BaseService, IInspectionService
{
@@ -23,66 +32,66 @@ namespace IRaCIS.Core.Application.Service.Inspection
{
//_repository.GetQueryable.GetQueryable < DataInspection >
- var trialData = await _repository.GetQueryable().Where(x => x.Id == inQuery.TrialId).AsNoTracking().FirstNotNullAsync();
+ var trialData = await _trialRepository.Where(x => x.Id == inQuery.TrialId).AsNoTracking().FirstNotNullAsync();
trialData.TrialFinishTime = trialData.TrialFinishTime == null ? DateTime.Now : trialData.TrialFinishTime;
#region 逻辑代码
- var query = from data in _repository.GetQueryable()
+ var query = from data in _dataInspectionRepository.Where()
//.Where(x => (x.TrialId == dto.TrialId)||(x.TrialId==null&&x.CreateTime>= trialData.CreateTime && x.CreateTime <= trialData.TrialFinishTime))
- join trial in _repository.GetQueryable().IgnoreQueryFilters() on data.TrialId equals trial.Id into trialtemp
+ join trial in _trialRepository.Where().IgnoreQueryFilters() on data.TrialId equals trial.Id into trialtemp
from leftrial in trialtemp.DefaultIfEmpty()
- join trialSite in _repository.GetQueryable().IgnoreQueryFilters() on data.TrialSiteId equals trialSite.Id into trialSitetemp
+ join trialSite in _trialSiteRepository.Where().IgnoreQueryFilters() on data.TrialSiteId equals trialSite.Id into trialSitetemp
from lefttrialSite in trialSitetemp.DefaultIfEmpty()
- join subject in _repository.GetQueryable().IgnoreQueryFilters() on data.SubjectId equals subject.Id into subtemp
+ join subject in _subjectRepository.Where().IgnoreQueryFilters() on data.SubjectId equals subject.Id into subtemp
from leftsubject in subtemp.DefaultIfEmpty()
- join subjectVisit in _repository.GetQueryable().IgnoreQueryFilters() on data.SubjectVisitId equals subjectVisit.Id into subjectVisittemp
+ join subjectVisit in _subjectVisitRepository.Where().IgnoreQueryFilters() on data.SubjectVisitId equals subjectVisit.Id into subjectVisittemp
from leftsubjectVisit in subjectVisittemp.DefaultIfEmpty()
- join parent in _repository.GetQueryable() on data.ParentId equals parent.Id into parenttemp
+ join parent in _dataInspectionRepository.Where() on data.ParentId equals parent.Id into parenttemp
from leftparent in parenttemp.DefaultIfEmpty()
- join user in _repository.GetQueryable().IgnoreQueryFilters() on data.CreateUserId equals user.Id into usertemp
+ join user in _userRepository.Where().IgnoreQueryFilters() on data.CreateUserId equals user.Id into usertemp
from leftuser in usertemp.DefaultIfEmpty()
- join usertype in _repository.GetQueryable().IgnoreQueryFilters() on leftuser.UserTypeId equals usertype.Id into usertypetemp
+ join usertype in _userTypeRepository.Where().IgnoreQueryFilters() on leftuser.UserTypeId equals usertype.Id into usertypetemp
from leftusertype in usertypetemp.DefaultIfEmpty()
- join visttask in _repository.GetQueryable().IgnoreQueryFilters() on data.VisitTaskId equals visttask.Id into visttasktemp
+ join visttask in _visitTaskRepository.Where().IgnoreQueryFilters() on data.VisitTaskId equals visttask.Id into visttasktemp
from leftvisttask in visttasktemp.DefaultIfEmpty()
//join trialCriterion in _repository.GetQueryable().IgnoreQueryFilters() on data.TrialReadingCriterionId equals trialCriterion.Id into criterion
//from leftCriterion in criterion.DefaultIfEmpty()
- //join moduleTyped in _repository.GetQueryable().Where(x => x.Code == "ModuleType") on 1 equals 1
- //join moduleTypec in _repository.GetQueryable() on new { ParentId = moduleTyped.Id, ModuleType = data.ModuleType } equals new { ParentId = moduleTypec.ParentId.Value, ModuleType = moduleTypec.Value } into moduleTypectemp
+ //join moduleTyped in _dictionaryRepository.Where().Where(x => x.Code == "ModuleType") on 1 equals 1
+ //join moduleTypec in _dictionaryRepository.Where() on new { ParentId = moduleTyped.Id, ModuleType = data.ModuleType } equals new { ParentId = moduleTypec.ParentId.Value, ModuleType = moduleTypec.Value } into moduleTypectemp
- //join childrenTyped in _repository.GetQueryable().Where(x => x.Code == "ChildrenType") on 1 equals 1
- //join childrenTypec in _repository.GetQueryable() on new { ParentId = childrenTyped.Id, ModuleType = data.ChildrenType } equals new { ParentId = childrenTypec.ParentId.Value, ModuleType = childrenTypec.Value } into childrenTypectemp
+ //join childrenTyped in _dictionaryRepository.Where().Where(x => x.Code == "ChildrenType") on 1 equals 1
+ //join childrenTypec in _dictionaryRepository.Where() on new { ParentId = childrenTyped.Id, ModuleType = data.ChildrenType } equals new { ParentId = childrenTypec.ParentId.Value, ModuleType = childrenTypec.Value } into childrenTypectemp
//from leftchildrenTypec in childrenTypectemp.DefaultIfEmpty()
- //join ObjectTyped in _repository.GetQueryable().Where(x => x.Code == "ObjectType") on 1 equals 1
- //join ObjectTypec in _repository.GetQueryable() on new { ParentId = ObjectTyped.Id, ModuleType = data.ObjectType } equals new { ParentId = ObjectTypec.ParentId.Value, ModuleType = ObjectTypec.Value } into objectTypetemp
+ //join ObjectTyped in _dictionaryRepository.Where().Where(x => x.Code == "ObjectType") on 1 equals 1
+ //join ObjectTypec in _dictionaryRepository.Where() on new { ParentId = ObjectTyped.Id, ModuleType = data.ObjectType } equals new { ParentId = ObjectTypec.ParentId.Value, ModuleType = ObjectTypec.Value } into objectTypetemp
//from leftObjectType in objectTypetemp.DefaultIfEmpty()
- //join OptTyped in _repository.GetQueryable().Where(x => x.Code == "OptType") on 1 equals 1
- //join OptTypec in _repository.GetQueryable() on new { ParentId = OptTyped.Id, ModuleType = data.OptType } equals new { ParentId = OptTypec.ParentId.Value, ModuleType = OptTypec.Value } into optTypetemp
+ //join OptTyped in _dictionaryRepository.Where().Where(x => x.Code == "OptType") on 1 equals 1
+ //join OptTypec in _dictionaryRepository.Where() on new { ParentId = OptTyped.Id, ModuleType = data.OptType } equals new { ParentId = OptTypec.ParentId.Value, ModuleType = OptTypec.Value } into optTypetemp
//from leftOptType in optTypetemp.DefaultIfEmpty()
- join trialSign in _repository.GetQueryable().IgnoreQueryFilters() on data.SignId equals trialSign.Id into trialSigntemp
+ join trialSign in _trialSignRepository.Where().IgnoreQueryFilters() on data.SignId equals trialSign.Id into trialSigntemp
from lefttrialSign in trialSigntemp.DefaultIfEmpty()
- join leftfrontAuditConfig in _repository.GetQueryable().Where(x => x.ConfigType == "M" && x.Identification != null && x.IsEnable == true) on
+ join leftfrontAuditConfig in _frontAuditConfigRepository.Where().Where(x => x.ConfigType == "M" && x.Identification != null && x.IsEnable == true) on
data.Identification.ToLower()
equals
leftfrontAuditConfig.Identification.ToLower()
- join moduleTypec in _repository.GetQueryable() on new { ModuleType = leftfrontAuditConfig.ModuleTypeId!.Value } equals new { ModuleType = moduleTypec.Id } into moduleTypectemp
+ join moduleTypec in _dictionaryRepository.Where() on new { ModuleType = leftfrontAuditConfig.ModuleTypeId!.Value } equals new { ModuleType = moduleTypec.Id } into moduleTypectemp
from leftmoduleTypec in moduleTypectemp.DefaultIfEmpty()
- join OptTypec in _repository.GetQueryable() on new { ModuleType = leftfrontAuditConfig.OptTypeId!.Value } equals new { ModuleType = OptTypec.Id } into optTypetemp
+ join OptTypec in _dictionaryRepository.Where() on new { ModuleType = leftfrontAuditConfig.OptTypeId!.Value } equals new { ModuleType = OptTypec.Id } into optTypetemp
from leftOptType in optTypetemp.DefaultIfEmpty()
select new GetDataInspectionOutDto()
@@ -242,7 +251,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
{
if (response.IsSuccess)
{
- await _repository.BatchUpdateAsync(t => t.Id == signId, u => new TrialSign() { IsCompleted = true });
+ await _trialSignRepository.BatchUpdateNoTrackingAsync(t => t.Id == signId, u => new TrialSign() { IsCompleted = true });
}
}
@@ -268,7 +277,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
/// 添加签名记录 ///
public async Task AddSignRecordAsync(SignDTO signDTO)
{
- var add = await _repository.AddAsync(_mapper.Map(signDTO));
+ var add = await _trialSignRepository.AddAsync(_mapper.Map(signDTO));
var success = await _repository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Application/Service/Institution/SiteService.cs b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
index 4076898c0..46083fb42 100644
--- a/IRaCIS.Core.Application/Service/Institution/SiteService.cs
+++ b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
@@ -15,6 +15,7 @@ namespace IRaCIS.Application.Services
IRepository _siteRepository,
IRepository _trialSiteUserRepository,
IDistributedLockProvider _distributedLockProvider,
+ IRepository _trialSiteRepository,
IRepository _hospitalRepository) : BaseService, ISiteService
{
@@ -100,7 +101,7 @@ namespace IRaCIS.Application.Services
if (siteCommand.TrialSiteId != null)
{
- await _repository.BatchUpdateAsync(t => t.Id == siteCommand.TrialSiteId, u => new TrialSite() { SiteId = site.Id });
+ await _trialSiteRepository.BatchUpdateNoTrackingAsync(t => t.Id == siteCommand.TrialSiteId, u => new TrialSite() { SiteId = site.Id });
}
return ResponseOutput.Ok(site.Id.ToString());
diff --git a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs
index fabc87882..6ac863684 100644
--- a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs
@@ -54,7 +54,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")]
public async Task> AddOrUpdatePreviousHistory(PreviousHistoryAddOrEdit addOrEditPreviousHistory)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousHistory.SubjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, addOrEditPreviousHistory.SubjectVisitId);
var entity = await _previousHistoryRepository.InsertOrUpdateAsync(addOrEditPreviousHistory, true);
return ResponseOutput.Ok(entity.Id);
@@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousHistoryId:guid}")]
public async Task DeletePreviousHistory(Guid previousHistoryId,Guid subjectVisitId)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
await _previousHistoryRepository.DeleteFromQueryAsync(t => t.Id == previousHistoryId,true);
return ResponseOutput.Ok();
}
@@ -81,7 +81,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")]
public async Task> AddOrUpdatePreviousOther(PreviousOtherAddOrEdit addOrEditPreviousOther)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousOther.SubjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, addOrEditPreviousOther.SubjectVisitId);
var entity = await _previousOtherRepository.InsertOrUpdateAsync(addOrEditPreviousOther, true);
return ResponseOutput.Ok(entity.Id);
@@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousOtherId:guid}")]
public async Task DeletePreviousOther(Guid previousOtherId, Guid subjectVisitId)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
await _previousOtherRepository.DeleteFromQueryAsync(t => t.Id == previousOtherId,true);
return ResponseOutput.Ok();
@@ -109,7 +109,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")]
public async Task> AddOrUpdatePreviousSurgery(PreviousSurgeryAddOrEdit addOrEditPreviousSurgery)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousSurgery.SubjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, addOrEditPreviousSurgery.SubjectVisitId);
var entity = await _previousSurgeryRepository.InsertOrUpdateAsync(addOrEditPreviousSurgery, true);
return ResponseOutput.Ok(entity.Id);
}
@@ -118,7 +118,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousSurgeryId:guid}")]
public async Task DeletePreviousSurgery(Guid previousSurgeryId, Guid subjectVisitId)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
var success = await _previousSurgeryRepository.DeleteFromQueryAsync(t => t.Id == previousSurgeryId,true);
return ResponseOutput.Ok();
}
@@ -135,7 +135,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task AddOrUpdatePreviousPDF(PreviousPDFAddOrEdit addOrEditPreviousPDF)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousPDF.SubjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, addOrEditPreviousPDF.SubjectVisitId);
var entity = await _previousPdfRepository.InsertOrUpdateAsync(addOrEditPreviousPDF, true);
return ResponseOutput.Ok(entity.Id);
@@ -144,7 +144,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousPDFId:guid}")]
public async Task DeletePreviousPDF(Guid previousPDFId, Guid subjectVisitId)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
await _previousPdfRepository.DeleteFromQueryAsync(t => t.Id == previousPDFId,true);
return ResponseOutput.Ok();
diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
index f9d7d1b9a..e5baa7e12 100644
--- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
+++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
@@ -44,7 +44,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy)
{
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditNoneDicomStudy.SubjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, addOrEditNoneDicomStudy.SubjectVisitId);
if ( _trialRepository.Where(t => t.Id == addOrEditNoneDicomStudy.TrialId).Any(t => t.IsVerifyVisitImageDate==true))
{
@@ -94,7 +94,7 @@ namespace IRaCIS.Core.Application.Contracts
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
await _noneDicomStudyRepository.DeleteFromQueryAsync(noneDicomStudyId);
@@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId, Guid subjectVisitId)
{
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
- await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
+ await _qCCommon.VerifyIsCRCSubmmitAsync(_subjectVisitRepository, _userInfo, subjectVisitId);
var noneDicomStudyFile = await _noneDicomStudyFileRepository.FirstOrDefaultAsync(t => t.Id == noneDicomStudyFileId);
diff --git a/IRaCIS.Core.Application/Service/QC/QCCommon.cs b/IRaCIS.Core.Application/Service/QC/QCCommon.cs
index 9ab3cfa79..45feef04e 100644
--- a/IRaCIS.Core.Application/Service/QC/QCCommon.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCCommon.cs
@@ -18,14 +18,14 @@ namespace IRaCIS.Core.Application.Service
///
///
///
- public async Task VerifyIsCRCSubmmitAsync(IRepository _repository, IUserInfo _userInfo, Guid? subjectVisitId = null)
+ public async Task VerifyIsCRCSubmmitAsync(IRepository _subjectVisitRepository, IUserInfo _userInfo, Guid? subjectVisitId = null)
{
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
{
//添加的时候不验证
if (subjectVisitId != null)
{
- if (await _repository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
+ if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{
//---CRC 已提交影像,不能进行操作。
diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs
index 256299f77..c6f841f1e 100644
--- a/IRaCIS.Core.Application/Service/QC/QCListService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs
@@ -446,16 +446,16 @@ namespace IRaCIS.Core.Application.Image.QA
//https://github.com/dotnet/efcore/issues/26833 ef core 导航属性不支持右连接
// 直接用ProjectTo的方式 多做一次查询 代码简洁很多 特别是连表多,字段多的情况
- if (await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType))
+ if (await _trialQCQuestionAnswerRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType))
{
- var list = await _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType).OrderBy(t => t.TrialQCQuestionConfigure.ShowOrder)
+ var list = await _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType).OrderBy(t => t.TrialQCQuestionConfigure.ShowOrder)
.ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
return list;
}
else
{
- return await _repository.Where(t => t.IsEnable == true && t.TrialId == trialId).OrderBy(t => t.ShowOrder).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+ return await _trialQCQuestionRepository.Where(t => t.IsEnable == true && t.TrialId == trialId).OrderBy(t => t.ShowOrder).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
}
}
@@ -618,9 +618,9 @@ namespace IRaCIS.Core.Application.Image.QA
///
///
[HttpPost]
- public async Task> GetConsistencyCheckFile(GetConsistencyCheckFileInDto inQuery)
+ public async Task> GetConsistencyCheckFile(GetConsistencyCheckFileInDto inQuery, [FromServices] IRepository _inspectionFileRepository)
{
- var query = _repository.Where(t => t.TrialId == inQuery.TrialId)
+ var query = _inspectionFileRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(inQuery);
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index aa7ed7efd..78e811ce9 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -29,10 +29,16 @@ namespace IRaCIS.Core.Application.Image.QA
IRepository _readingClinicalDataRepository,
IRepository _clinicalDataTrialSetRepository,
IRepository _qCChallengeDialogrepository,
- IRepository _checkChallengeDialogrepository,
+ IRepository _checkChallengeDialogRepository,
IRepository _trialRepository,
IRepository _dicomSeriesRepository,
IRepository _visitTaskRepository,
+ IRepository _scpPatientRepository,
+ IRepository _scpStudyRepository,
+ IRepository _trialUserRepository,
+ IRepository _readModuleRepository,
+ IRepository _dicomInstanceRepository,
+ IRepository _trialQCQuestionAnswerRepository,
IRepository _readingQuestionCriterionTrialRepository,
IDistributedLockProvider _distributedLockProvider, IReadingClinicalDataService _readingClinicalDataService) : BaseService, IQCOperationService
{
@@ -48,7 +54,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
await VerifyIsCanQCAsync(null, subjectVisitId);
- if (!await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
+ if (!await _trialQCQuestionAnswerRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
{
//---请先核查图像,并保存审核问题,然后再发质疑。
return ResponseOutput.NotOk(_localizer["QCOperation_CheckFirst"]);
@@ -256,7 +262,7 @@ namespace IRaCIS.Core.Application.Image.QA
qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
- await _repository.AddAsync(qaReply);
+ await _checkChallengeDialogRepository.AddAsync(qaReply);
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
{
@@ -300,7 +306,7 @@ namespace IRaCIS.Core.Application.Image.QA
sv.CloseTheReason = input.CloseCheckChallenge;
sv.CheckChallengeState = CheckChanllengeTypeEnum.Closed;
- await _checkChallengeDialogrepository.AddAsync(new CheckChallengeDialog()
+ await _checkChallengeDialogRepository.AddAsync(new CheckChallengeDialog()
{
SubjectVisitId = input.subjectVisitId,
//---原因:
@@ -381,7 +387,7 @@ namespace IRaCIS.Core.Application.Image.QA
var QCChallengeId = await _qcChallengeRepository.Where(x => x.SubjectVisitId == subjectVisitId).Select(x => x.Id).FirstOrDefaultAsync();
- await _checkChallengeDialogrepository.AddAsync(new CheckChallengeDialog()
+ await _checkChallengeDialogRepository.AddAsync(new CheckChallengeDialog()
{
SubjectVisitId = subjectVisitId,
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
@@ -427,7 +433,7 @@ namespace IRaCIS.Core.Application.Image.QA
sv.RequestBackState = RequestBackStateEnum.PM_NotAgree;
//---PM/APM拒绝一致性核查回退
- await _repository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = _localizer["QCOperation_PMReject"], UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
+ await _checkChallengeDialogRepository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = _localizer["QCOperation_PMReject"], UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
await _subjectVisitRepository.SaveChangesAsync();
@@ -501,12 +507,12 @@ namespace IRaCIS.Core.Application.Image.QA
//_qcChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_checkChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//---PM/APM同意一致性核查回退。
- await _repository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = _localizer["QCOperation_PMAPMConsistency"], UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
+ await _checkChallengeDialogRepository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = _localizer["QCOperation_PMAPMConsistency"], UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
- await _repository.BatchDeleteAsync(t => t.SubjectVisitId == subjectVisitId);
+ await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId);
- await _repository.BatchDeleteAsync(t => t.DicomSerie.IsDeleted);
- await _repository.BatchDeleteAsync(t => t.IsDeleted);
+ await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => t.DicomSerie.IsDeleted);
+ await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted);
var success = await _subjectVisitRepository.SaveChangesAsync();
@@ -549,7 +555,7 @@ namespace IRaCIS.Core.Application.Image.QA
#region 先查询再更新
- var questionAnswerList = await _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType, true).ToListAsync();
+ var questionAnswerList = await _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess && t.CurrentQCEnum == currentQCType, true).ToListAsync();
qcQuestionAnswerCommands.ToList().ForEach(t =>
{
@@ -620,7 +626,7 @@ namespace IRaCIS.Core.Application.Image.QA
var study = (await _dicomStudyRepository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException();
- var instanceIdList = await _repository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync();
+ var instanceIdList = await _dicomInstanceRepository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync();
//instanceIdList.ForEach(t =>
//{
@@ -646,7 +652,7 @@ namespace IRaCIS.Core.Application.Image.QA
var study = (await _dicomStudyRepository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException();
- var instanceIdList = await _repository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync();
+ var instanceIdList = await _dicomInstanceRepository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync();
study.InstanceCount = study.InstanceCount + instanceIdList.Count;
@@ -694,7 +700,7 @@ namespace IRaCIS.Core.Application.Image.QA
study.ModalityForEdit = updateModalityCommand.Modality;
- await _repository.BatchUpdateAsync(t => t.StudyId == studyId, r => new DicomSeries() { BodyPartForEdit = updateModalityCommand.BodyPart });
+ await _dicomSeriesRepository.BatchUpdateNoTrackingAsync(t => t.StudyId == studyId, r => new DicomSeries() { BodyPartForEdit = updateModalityCommand.BodyPart });
}
else if (updateModalityCommand.Type == 2)
{
@@ -767,10 +773,10 @@ namespace IRaCIS.Core.Application.Image.QA
await _dicomStudyRepository.DeleteAsync(study);
- var succeess2 = await _repository.BatchDeleteAsync(t => t.StudyId == id);
+ var succeess2 = await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
- await _repository.BatchUpdateAsync(t => t.Id == id,u=>new SCPStudy() { SubjectVisitId=null});
+ await _scpStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == id,u=>new SCPStudy() { SubjectVisitId=null});
@@ -779,7 +785,7 @@ namespace IRaCIS.Core.Application.Image.QA
//删除 物理文件
- //var instancePathList = await _repository.Where(t => t.StudyId == id)
+ //var instancePathList = await _dicomInstanceRepository.Where(t => t.StudyId == id)
// .Select(t => t.Path).ToListAsync();
//instancePathList.ForEach(path =>
@@ -804,7 +810,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
if (_repository.Where(t=>t.Id== patientId).Any(t => t.SCPStudyList.Count() == t.SCPStudyList.Where(t => t.SubjectVisitId == null).Count()))
{
- await _repository.BatchUpdateAsync(t => t.Id == patientId, u => new SCPPatient() { SubjectId = null });
+ await _scpPatientRepository.BatchUpdateNoTrackingAsync(t => t.Id == patientId, u => new SCPPatient() { SubjectId = null });
}
}
@@ -1463,10 +1469,10 @@ namespace IRaCIS.Core.Application.Image.QA
foreach (var trialReadingCriterionId in trialReadingCriterionIdList)
{
//不存在该阅片期 (重传、回退都会重新提交)
- if (!await _repository.Where(t => t.SubjectVisitId == dbSubjectVisit.Id && t.ReadingSetType == ReadingSetType.ImageReading && t.TrialReadingCriterionId == trialReadingCriterionId).AnyAsync())
+ if (!await _readModuleRepository.Where(t => t.SubjectVisitId == dbSubjectVisit.Id && t.ReadingSetType == ReadingSetType.ImageReading && t.TrialReadingCriterionId == trialReadingCriterionId).AnyAsync())
{
- var newReadModule = await _repository.AddAsync(new ReadModule()
+ var newReadModule = await _readModuleRepository.AddAsync(new ReadModule()
{
TrialReadingCriterionId = trialReadingCriterionId,
ReadingSetType = ReadingSetType.ImageReading,
@@ -1512,7 +1518,7 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task QCPassedOrFailed(Guid trialId, Guid subjectVisitId, [FromRoute] AuditStateEnum auditState)
{
- if (!await _repository.AnyAsync(t => t.TrialId == trialId && t.UserId == _userInfo.Id))
+ if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == _userInfo.Id))
{
//---您已经被移出项目,没有操作权限。
return ResponseOutput.NotOk(_localizer["QCOperation_RemoveItem"]);
@@ -1542,7 +1548,7 @@ namespace IRaCIS.Core.Application.Image.QA
//删除 软删除的物理文件
- var instancePathList = await _repository.Where(t => t.DicomSerie.IsDeleted && t.SubjectVisitId == subjectVisitId)
+ var instancePathList = await _dicomInstanceRepository.Where(t => t.DicomSerie.IsDeleted && t.SubjectVisitId == subjectVisitId)
.Select(t => t.Path).ToListAsync();
//维护统一状态
@@ -1563,7 +1569,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
if (dbSubjectVisit.AuditState == AuditStateEnum.InPrimaryQC)
{
- if (!await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.First))
+ if (!await _trialQCQuestionAnswerRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.First))
{
//---影像质控审核问题没有保存,不能进行此操作。
return ResponseOutput.NotOk(_localizer["QCOperation_QCNotSaved"]);
@@ -1610,7 +1616,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (dbSubjectVisit.AuditState == AuditStateEnum.InPrimaryQC)
{
- if (!await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.First))
+ if (!await _trialQCQuestionAnswerRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.First))
{
//---影像质控审核问题没有保存,不能进行此操作。
return ResponseOutput.NotOk(_localizer["QCOperation_QCNotSaved"]);
@@ -1625,7 +1631,7 @@ namespace IRaCIS.Core.Application.Image.QA
else if (dbSubjectVisit.AuditState == AuditStateEnum.InSecondaryQC)
{
- if (!await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.Second))
+ if (!await _trialQCQuestionAnswerRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.Second))
{
//---影像质控审核问题没有保存,不能进行此操作。
return ResponseOutput.NotOk(_localizer["QCOperation_QCNotSaved"]);
@@ -1855,11 +1861,11 @@ namespace IRaCIS.Core.Application.Image.QA
//删除1QC 填写的问题答案
- await _repository.BatchDeleteAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.First);
+ await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.First);
//2QC 数据变为1QC
- await _repository.BatchUpdateAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.Second, k => new QCChallenge() { CurrentQCEnum = CurrentQC.First });
- await _repository.BatchUpdateAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.Second, k => new TrialQCQuestionAnswer() { CurrentQCEnum = CurrentQC.First });
+ await _qcChallengeRepository.BatchUpdateNoTrackingAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.Second, k => new QCChallenge() { CurrentQCEnum = CurrentQC.First });
+ await _trialQCQuestionAnswerRepository.BatchUpdateNoTrackingAsync(t => t.SubjectVisitId == qcChallenge.SubjectVisitId && t.CurrentQCEnum == CurrentQC.Second, k => new TrialQCQuestionAnswer() { CurrentQCEnum = CurrentQC.First });
diff --git a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs
index 19a586a74..42979d9ec 100644
--- a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs
+++ b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs
@@ -22,6 +22,8 @@ namespace IRaCIS.Core.Application.Contracts
public class TrialQCQuestionConfigureService(
IRepository _trialQcQuestionRepository,
IRepository _trialRepository,
+ IRepository _trialQCQuestionRepository,
+ IRepository _trialQCQuestionAnswerRepository,
IRepository _qCQuestionRepository) : BaseService, ITrialQCQuestionConfigureService
{
@@ -56,7 +58,7 @@ namespace IRaCIS.Core.Application.Contracts
var list = await trialQCQuestionQueryable.OrderByDescending(x=>x.LanguageType).ThenBy(t => t.ShowOrder).ToListAsync();
- var isHaveQCQuestion = _repository.Where(t => t.TrialId == queryTrialQCQuestionConfigure.TrialId).Any();
+ var isHaveQCQuestion = _trialQCQuestionRepository.Where(t => t.TrialId == queryTrialQCQuestionConfigure.TrialId).Any();
var signInfo = await _trialRepository.Where(t => t.Id == queryTrialQCQuestionConfigure.TrialId)
@@ -133,7 +135,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task VerifyIsQCConfirmedAsync(Guid trialId)
{
- if (!await _repository.AnyAsync(t => t.Id == trialId && t.QCQuestionConfirmedUserId == null))
+ if (!await _trialRepository.AnyAsync(t => t.Id == trialId && t.QCQuestionConfirmedUserId == null))
{
//---影像质控审核问题模板已经确认,不允许操作。
throw new BusinessValidationFailedException(_localizer["TrialQCQuestion_TemplateConfirmed"]);
@@ -319,7 +321,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk(_localizer["TrialQCQuestion_DeleteChildFirst"]);
}
- if (await _repository.AnyAsync(t => t.TrialQCQuestionConfigureId == trialQCQuestionConfigureId))
+ if (await _trialQCQuestionAnswerRepository.AnyAsync(t => t.TrialQCQuestionConfigureId == trialQCQuestionConfigureId))
{
//---该审核问题已被影像质控过程引用,不允许删除
return ResponseOutput.NotOk(_localizer["TrialQCQuestion_ReferencedByQCProcess"]);
diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
index 107ec975a..a0b47be22 100644
--- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
@@ -354,7 +354,7 @@ namespace IRaCIS.Application.Services
//如果先生成了任务,再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护
- if (await _repository.AnyAsync(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit)))
+ if (await _clinicalDataTrialSetRepository.AnyAsync(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit)))
{
var needDealTrialReadingCriterionIdList = _repository.Where(t => t.Id == data.ClinicalDataTrialSetId)
.SelectMany(t => t.TrialClinicalDataSetCriteriaList)
@@ -400,7 +400,7 @@ namespace IRaCIS.Application.Services
// //如果先生成了任务,再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护
- // if (await _repository.AnyAsync(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject))
+ // if (await _clinicalDataTrialSetRepository.AnyAsync(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && t.ClinicalDataLevel == ClinicalLevel.Subject))
// {
// var needDealTrialReadingCriterionIdList = _repository.Where(t => t.Id == data.ClinicalDataTrialSetId)
// .SelectMany(t => t.TrialClinicalDataSetCriteriaList)
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
index 26c924924..4d7b7cf0f 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
@@ -37,6 +37,7 @@ namespace IRaCIS.Core.Application.Contracts
IRepository _userRepository,
IRepository _trialRepository,
IRepository _trialSiteRepository,
+ IRepository _verificationCodeRepository,
IRepository _trialUserRepository,
IRepository _trialSiteUserRepository,
IDistributedLockProvider _distributedLockProvider,
@@ -81,7 +82,7 @@ namespace IRaCIS.Core.Application.Contracts
[AllowAnonymous]
public async Task VerifyEmialGetDoctorInfo(VerifyEmialGetDoctorInfoInDto inDto)
{
- var verificationRecord = await _repository.GetQueryable().OrderByDescending(x => x.ExpirationTime).Where(t => (t.EmailOrPhone == inDto.EmailOrPhone) && t.Code == inDto.VerificationCode && t.CodeType == VerifyType.Email).FirstOrDefaultAsync();
+ var verificationRecord = await _verificationCodeRepository.Where().OrderByDescending(x => x.ExpirationTime).Where(t => (t.EmailOrPhone == inDto.EmailOrPhone) && t.Code == inDto.VerificationCode && t.CodeType == VerifyType.Email).FirstOrDefaultAsync();
VerifyEmialGetDoctorInfoOutDto result = new VerifyEmialGetDoctorInfoOutDto();
//检查数据库是否存在该验证码
@@ -102,7 +103,7 @@ namespace IRaCIS.Core.Application.Contracts
{
//删除验证码历史记录
- await _repository.BatchDeleteAsync(t => t.Id == verificationRecord.Id);
+ await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.Id == verificationRecord.Id);
var dockerInfo = await _repository.Where(t => t.EMail == inDto.EmailOrPhone || t.Phone == inDto.EmailOrPhone).FirstOrDefaultAsync();
@@ -139,7 +140,7 @@ namespace IRaCIS.Core.Application.Contracts
//验证码 6位
int verificationCode = new Random().Next(100000, 1000000);
- var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == userInfo.TrialId);
+ var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == userInfo.TrialId);
await _mailVerificationService.AnolymousSendEmail(trialInfo.ResearchProgramNo, userInfo.Email, verificationCode);
@@ -180,7 +181,7 @@ namespace IRaCIS.Core.Application.Contracts
else
{
//删除验证码历史记录
- await _repository.BatchDeleteAsync(t => t.Id == verifyRecord.Id);
+ await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.Id == verifyRecord.Id);
//验证码正确 不处理
}
@@ -206,7 +207,7 @@ namespace IRaCIS.Core.Application.Contracts
//从项目site 中找到已存在的 加到历史人员中
addSurvey.TrialSiteUserSurveyList = userList;
- currentEntity = await _repository.AddAsync(addSurvey);
+ currentEntity = await _trialSiteSurveyRepository.AddAsync(addSurvey);
}
else
@@ -310,7 +311,7 @@ namespace IRaCIS.Core.Application.Contracts
//删除验证码历史记录
- await _repository.BatchDeleteAsync(t => t.EmailOrPhone == userInfo.EmailOrPhone && t.Code == userInfo.verificationCode && t.CodeType == userInfo.verificationType);
+ await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.EmailOrPhone == userInfo.EmailOrPhone && t.Code == userInfo.verificationCode && t.CodeType == userInfo.verificationType);
await _trialSiteSurveyRepository.SaveChangesAsync();
@@ -553,7 +554,7 @@ namespace IRaCIS.Core.Application.Contracts
var messageToSend = new MimeMessage();
- if (await _repository.AnyAsync(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
+ if (await _trialSiteSurveyRepository.AnyAsync(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
{
//---中心调研已锁定,不允许操作。
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
@@ -830,7 +831,7 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
if (findTrialUser == null)
{
- await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
+ await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
@@ -851,7 +852,7 @@ namespace IRaCIS.Core.Application.Contracts
if (findTrialSiteUser == null)
{
- await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
+ await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
}
else
@@ -948,7 +949,7 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
if (findTrialUser == null)
{
- await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
+ await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl);
@@ -970,7 +971,7 @@ namespace IRaCIS.Core.Application.Contracts
if (findTrialSiteUser == null)
{
- await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
+ await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
}
else
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
index 22d77b8b4..2d6a4f3dc 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
@@ -47,6 +47,9 @@ namespace IRaCIS.Core.Application
IRepository _readingTaskQuestionAnswer,
IRepository _readingTableQuestionAnswerRepository,
IRepository _readingTableAnswerRowInfoRepository,
+ IRepository _systemBasicDataRepository,
+ IRepository _subjectVisitRepository,
+ IRepository _enrollRepository,
IRepository _readingTableQuestionTrialRepository) : BaseService, ITrialConfigService
{
@@ -725,7 +728,7 @@ namespace IRaCIS.Core.Application
[HttpGet("{signCode}")]
public async Task GetSignText(string signCode)
{
- var signRawText = await _repository.Where(t => t.Code == signCode).Select(t => new { t.Code, t.Value, t.ValueCN, t.Id, ParentValue = t.Parent.Value, ParentValueCN = t.Parent.ValueCN }).FirstOrDefaultAsync();
+ var signRawText = await _systemBasicDataRepository.Where(t => t.Code == signCode).Select(t => new { t.Code, t.Value, t.ValueCN, t.Id, ParentValue = t.Parent.Value, ParentValueCN = t.Parent.ValueCN }).FirstOrDefaultAsync();
if (signRawText == null)
{
@@ -769,7 +772,7 @@ namespace IRaCIS.Core.Application
.IfNullThrowException();
- var showOrderList = await _repository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t =>
+ var showOrderList = await _trialQCQuestionRepository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t =>
new { t.ShowOrder, ParentShowOrder = (int?)t.ParentQCQuestion.ShowOrder }).ToListAsync();
if (trialConfig.QCProcessEnum ==
@@ -839,7 +842,7 @@ namespace IRaCIS.Core.Application
.IfNullThrowException();
- var showOrderList = await _repository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t =>
+ var showOrderList = await _trialQCQuestionRepository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t =>
new { t.ShowOrder, ParentShowOrder = (int?)t.ParentQCQuestion.ShowOrder }).ToListAsync();
if (trialConfig.QCProcessEnum ==
@@ -1086,7 +1089,7 @@ namespace IRaCIS.Core.Application
if (trialConfig.IsUrgent)
{
- await _repository.BatchUpdateAsync(t => t.TrialId == trialInfo.Id && t.SubmitState == SubmitStateEnum.Submitted && t.ForwardState < ForwardStateEnum.Forwarded,
+ await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialInfo.Id && t.SubmitState == SubmitStateEnum.Submitted && t.ForwardState < ForwardStateEnum.Forwarded,
s => new SubjectVisit() { IsUrgent = trialConfig.IsUrgent });
}
else //之前设置为加急的访视状态不变。后续提交的访视,为不加急。
@@ -1178,7 +1181,7 @@ namespace IRaCIS.Core.Application
//Paused、 添加工总量 算医生读片中
if (trialStatusStr.Contains(StaticData.TrialState.TrialCompleted))
{
- await _repository.BatchUpdateAsync(u => u.TrialId == trialId, e => new Enroll
+ await _enrollRepository.BatchUpdateNoTrackingAsync(u => u.TrialId == trialId, e => new Enroll
{
EnrollStatus = EnrollStatus.Finished
});
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs
index 53921aa14..3b1fea4d3 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs
@@ -29,6 +29,7 @@ namespace IRaCIS.Core.Application.Service
IRepository _userRepository,
IRepository _trialUserRepository,
IRepository _trialRepository,
+ IRepository _userTypeRepository,
IMailVerificationService _mailVerificationService,
IDistributedLockProvider _distributedLockProvider) : BaseService, ITrialExternalUserService
{
@@ -128,13 +129,13 @@ namespace IRaCIS.Core.Application.Service
generateUser.UserName = generateUser.UserCode;
- generateUser.UserTypeEnum = _repository.Where(t => t.Id == generateUser.UserTypeId).Select(t => t.UserTypeEnum).First();
+ generateUser.UserTypeEnum = _userTypeRepository.Where(t => t.Id == generateUser.UserTypeId).Select(t => t.UserTypeEnum).First();
generateUser.Password = MD5Helper.Md5("123456");
generateUser.Status = UserStateEnum.Disable;
- var newAddUser = await _repository.AddAsync(generateUser);
+ var newAddUser = await _userRepository.AddAsync(generateUser);
addEntity.IsSystemUser = false;
@@ -255,7 +256,7 @@ namespace IRaCIS.Core.Application.Service
if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true))
{
- await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
+ await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
index f0e900098..54470350d 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
@@ -17,6 +17,8 @@ namespace IRaCIS.Application.Services
public class TrialMaintenanceService(
IRepository _trialUseRepository,
IRepository _userRepository,
+ IRepository _trialSiteUserRepository,
+ IRepository _subjectVisitRepository,
IRepository _trialRepository) : BaseService, ITrialMaintenanceService
{
@@ -188,7 +190,7 @@ namespace IRaCIS.Application.Services
if (updateTrialUserCommand.IsDeleted)
{
- if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
+ if (await _trialSiteUserRepository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
{
// ----人员已加入现场维护
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
@@ -196,7 +198,7 @@ namespace IRaCIS.Application.Services
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
{
- await _repository.BatchUpdateAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
+ await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
}
}
@@ -224,7 +226,7 @@ namespace IRaCIS.Application.Services
if (trialUser == null) return Null404NotFound(trialUser);
- if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
+ if (await _trialSiteUserRepository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
{
//---人员已加入现场维护
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
@@ -232,7 +234,7 @@ namespace IRaCIS.Application.Services
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC && isDelete)
{
- await _repository.BatchUpdateAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
+ await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
}
await _trialUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
index cf0ebde5c..7c6ac366c 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
@@ -23,9 +23,15 @@ namespace IRaCIS.Application.Services
public class TrialService(
IRepository _trialRepository,
IRepository _trialUserRepository,
+ IRepository _croRepository,
IRepository _enrollDetailRepository,
IRepository _dictionaryRepository,
IRepository _enrollRepository,
+ IRepository _workloadRepository,
+ IRepository _sponsorRepository,
+ IRepository _visitStageRepository,
+ IRepository _trialPaymentPriceRepository,
+ IRepository _trialDictionaryRepository,
IOptionsMonitor _verifyConfig) : BaseService, ITrialService
{
@@ -206,14 +212,14 @@ namespace IRaCIS.Application.Services
//如果是PM, 则需要将该人员添加到 运维人员表
//添加运维人员PM
- await _repository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now });
+ await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now });
// 添加扩展信息表记录
- await _repository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
+ await _trialPaymentPriceRepository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
//添加访视
- await _repository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 0, BlindName = "B" + 0.ToString("D3"), VisitDay = 0, VisitName = "Baseline", IsBaseLine = true, VisitWindowLeft = -28, VisitWindowRight = 0 });
- await _repository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 1, BlindName = "B" + 10.ToString("D3"), VisitDay = 30, VisitName = "Visit 1", VisitWindowLeft = -5, VisitWindowRight = 5 });
+ await _visitStageRepository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 0, BlindName = "B" + 0.ToString("D3"), VisitDay = 0, VisitName = "Baseline", IsBaseLine = true, VisitWindowLeft = -28, VisitWindowRight = 0 });
+ await _visitStageRepository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 1, BlindName = "B" + 10.ToString("D3"), VisitDay = 30, VisitName = "Visit 1", VisitWindowLeft = -5, VisitWindowRight = 5 });
var success = await _repository.SaveChangesAsync();
@@ -242,14 +248,14 @@ namespace IRaCIS.Application.Services
{
var updateModel = trialAddModel;
- if (!await _repository.AnyAsync(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialState.TrialInitializing || u.TrialStatusStr == StaticData.TrialState.TrialOngoing)))
+ if (!await _trialRepository.AnyAsync(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialState.TrialInitializing || u.TrialStatusStr == StaticData.TrialState.TrialOngoing)))
{
//---项目状态只有处于:初始化或者进行中时,才允许操作。
throw new BusinessValidationFailedException(_localizer["Trial_InvalidProjectStatus"]);
}
// 判断项目Id 是否已经存在
- if (await _repository.AnyAsync(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id))
+ if (await _trialRepository.AnyAsync(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id))
{
//---已经存在相同的项目编号。
throw new BusinessValidationFailedException(_localizer["Trial_DuplicateProjectNumber"]);
@@ -257,11 +263,11 @@ namespace IRaCIS.Application.Services
- var trial = await _repository.FirstOrDefaultAsync(t => t.Id == updateModel.Id);
+ var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == updateModel.Id);
//删除中间表 Title对应的记录
- await _repository.BatchDeleteAsync(t => t.TrialId == updateModel.Id);
+ await _trialDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == updateModel.Id);
//重新插入新的 Title记录
@@ -295,17 +301,17 @@ namespace IRaCIS.Application.Services
{
if (trial.SponsorId != null)
{
- if (await _repository.AnyAsync(t => t.Id == trial.SponsorId && t.IsTrialLevel))
+ if (await _sponsorRepository.AnyAsync(t => t.Id == trial.SponsorId && t.IsTrialLevel))
{
- await _repository.BatchUpdateAsync(t => t.Id == trial.SponsorId, u => new Sponsor() { TrialId = trial.Id });
+ await _sponsorRepository.BatchUpdateNoTrackingAsync(t => t.Id == trial.SponsorId, u => new Sponsor() { TrialId = trial.Id });
}
}
if (trial.CROId != null)
{
- if (await _repository.AnyAsync(t => t.Id == trial.CROId && t.IsTrialLevel))
+ if (await _croRepository.AnyAsync(t => t.Id == trial.CROId && t.IsTrialLevel))
{
- await _repository.BatchUpdateAsync(t => t.Id == trial.CROId, u => new CRO() { TrialId = trial.Id });
+ await _croRepository.BatchUpdateNoTrackingAsync(t => t.Id == trial.CROId, u => new CRO() { TrialId = trial.Id });
}
}
}
@@ -320,7 +326,7 @@ namespace IRaCIS.Application.Services
switch (newState)
{
case (int)TrialExpedited.ExpeditedIn24H:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
TimepointIn24H = u.Timepoint,
AdjudicationIn24H = u.Adjudication,
@@ -329,7 +335,7 @@ namespace IRaCIS.Application.Services
});
break;
case (int)TrialExpedited.ExpeditedIn48H:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
TimepointIn48H = u.Timepoint,
AdjudicationIn48H = u.Adjudication,
@@ -350,7 +356,7 @@ namespace IRaCIS.Application.Services
switch (newState)
{
case (int)TrialExpedited.None:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
Timepoint = u.TimepointIn24H,
Adjudication = u.AdjudicationIn24H,
@@ -359,7 +365,7 @@ namespace IRaCIS.Application.Services
});
break;
case (int)TrialExpedited.ExpeditedIn48H:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
TimepointIn48H = u.TimepointIn24H,
AdjudicationIn48H = u.AdjudicationIn24H,
@@ -381,7 +387,7 @@ namespace IRaCIS.Application.Services
switch (newState)
{
case (int)TrialExpedited.None:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
Timepoint = u.TimepointIn48H,
Adjudication = u.AdjudicationIn48H,
@@ -390,7 +396,7 @@ namespace IRaCIS.Application.Services
});
break;
case (int)TrialExpedited.ExpeditedIn24H:
- await _repository.BatchUpdateAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
+ await _workloadRepository.BatchUpdateNoTrackingAsync(t => t.IsLock == false && t.TrialId == trialId, u => new Workload()
{
TimepointIn24H = u.TimepointIn48H,
AdjudicationIn24H = u.AdjudicationIn48H,
@@ -425,166 +431,132 @@ namespace IRaCIS.Application.Services
if (_verifyConfig.CurrentValue.OpenTrialRelationDelete)
{
- #region 项目真删除废弃
- //if (trial.VisitPlanConfirmed)
- //{
- // return ResponseOutput.NotOk("Trial访视计划已经确认,无法删除");
- //}
+ #region 真项目删除
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.SubjectVisit.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.TrialReadingCriterion.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.Enroll.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.NoneDicomStudy.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
- //if (await _repository.AnyAsync(u => u.TrialId == trialId))
- //{
- // return ResponseOutput.NotOk("该Trial有医生入组或在入组流程中,无法删除");
- //}
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
- //if (await _repository.AnyAsync(u => u.TrialId == trialId))
- //{
- // return ResponseOutput.NotOk("该Trial下面有Site,无法删除");
- //}
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
- ////PM 可以删除项目 仅仅在没有site 参与者只有他自己的时候
- //if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
- //{
- // //参与者仅有他自己时,可以删除
- // if (await _trialUserRepository.CountAsync(t => t.TrialId == trialId) == 1)
- // {
- // var success1 = await _repository.BatchDeleteAsync(o => o.Id == trialId) ||
- // await _repository.BatchDeleteAsync(t => t.TrialId == trialId) ||
- // await _repository.BatchDeleteAsync(t => t.TrialId == trialId);
- // return ResponseOutput.Result(success1);
- // }
- //}
- //if (await _repository.AnyAsync(u => u.TrialId == trialId))
- //{
- // return ResponseOutput.NotOk("该Trial下面有参与者,无法删除");
- //}
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == trialId);
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.QCChallenge.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.ReadingClinicalData.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TaskMedicalReview.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TaskMedicalReview.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.VisitTask.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.ReadingPeriodSet.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.VisitTask.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.Subject.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _subjectVisitRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _taskConsistentRuleRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.InfluenceTask.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+
+ //await _repository.BatchDeleteNoTrackingAsync(o => o.Id == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _trialDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialDocument.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialDocument.TrialId == trialId);
+
+ //await _trialEmailNoticeUserRepository.BatchDeleteNoTrackingAsync(t => t.TrialEmailNoticeConfig.TrialId == trialId);
+
+ ////await _repository.BatchDeleteAsync(t => t.TrialId == trialId) ;
+ //await _trialEmailNoticeUserRepository.BatchDeleteNoTrackingAsync(t => t.TrialEmailNoticeConfig.TrialId == trialId);
+ //await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+
+ //await _repository.BatchDeleteNoTrackingAsync