diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs index 3c257e873..5acd1f0bb 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs @@ -1031,6 +1031,8 @@ namespace IRaCIS.Application.Contracts public DateTime? LatestStudyTime { get; set; } public string? Modalities { get; set; } + + public string? PatientInfo { get; set; } } public class VisitPatientStudyFilterView { @@ -1048,6 +1050,11 @@ namespace IRaCIS.Application.Contracts public string CalledAE { get; set; } = string.Empty; public string CallingAE { get; set; } = string.Empty; + + public string PatientIdStr { get; set; } = string.Empty; + public string PatientName { get; set; } = string.Empty; + public string PatientAge { get; set; } = string.Empty; + public string PatientSex { get; set; } = string.Empty; } public class PatientStudySimpleView: VisitPatientStudyFilterView diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 1f04338f8..6cb4ab6d4 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -106,12 +106,12 @@ namespace IRaCIS.Application.Services #region new ok - var query = _patientRepository.Where(t=>t.TrialId==inQuery.TrialId) + var query = _patientRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientIdStr), t => t.PatientIdStr.Contains(inQuery.PatientIdStr)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientName), t => t.PatientName.Contains(inQuery.PatientName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubejctCode), t => t.Subject.Code.Contains(inQuery.SubejctCode)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteKeyInfo), t => t.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteKeyInfo) - || t.TrialSite.TrialSiteAliasName.Contains(inQuery.TrialSiteKeyInfo)|| t.TrialSite.TrialSiteName.Contains(inQuery.TrialSiteKeyInfo)) + || t.TrialSite.TrialSiteAliasName.Contains(inQuery.TrialSiteKeyInfo) || t.TrialSite.TrialSiteName.Contains(inQuery.TrialSiteKeyInfo)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.SCPStudyList.Any(t => t.CallingAE == inQuery.CallingAE)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.CalledAE), t => t.SCPStudyList.Any(t => t.CalledAE == inQuery.CalledAE)) .WhereIf(inQuery.BeginPushTime != null, t => t.LatestPushTime >= inQuery.BeginPushTime) @@ -146,13 +146,13 @@ namespace IRaCIS.Application.Services StudyCount = patient.SCPStudyList.Count(), - TrialId=patient.TrialId, - SubejctId=patient.SubjectId, - SubjectCode=patient.Subject.Code, - TrialSiteAliasName=patient.TrialSite.TrialSiteAliasName, - TrialSiteCode=patient.TrialSite.TrialSiteCode, - TrialSiteName=patient.TrialSite.TrialSiteName - + TrialId = patient.TrialId, + SubejctId = patient.SubjectId, + SubjectCode = patient.Subject.Code, + TrialSiteAliasName = patient.TrialSite.TrialSiteAliasName, + TrialSiteCode = patient.TrialSite.TrialSiteCode, + TrialSiteName = patient.TrialSite.TrialSiteName + }; @@ -193,9 +193,9 @@ namespace IRaCIS.Application.Services SeriesCount = scpStudy.SeriesCount, StudyTime = scpStudy.StudyTime, - SubjectVisitId= scpStudy.SubjectVisitId, - VisitName=scpStudy.SubjectVisit.VisitName, - BlindName=scpStudy.SubjectVisit.BlindName + SubjectVisitId = scpStudy.SubjectVisitId, + VisitName = scpStudy.SubjectVisit.VisitName, + BlindName = scpStudy.SubjectVisit.BlindName }; @@ -212,7 +212,7 @@ namespace IRaCIS.Application.Services public async Task> GetDicomCalledAEList(Guid trialId) { - var list = await _scpStudyRepository.Where(t=>t.TrialId==trialId).Select(t => t.CalledAE).Distinct().ToListAsync(); + var list = await _scpStudyRepository.Where(t => t.TrialId == trialId).Select(t => t.CalledAE).Distinct().ToListAsync(); return list; } @@ -224,6 +224,13 @@ namespace IRaCIS.Application.Services return list; } + public async Task> GetDicomModalityList(Guid trialId) + { + var list = await _scpStudyRepository.Where(t => t.TrialId == trialId).SelectMany(t => t.SeriesList).Select(t=>t.Modality).Distinct().ToListAsync(); + + return list; + } + /// /// 影像访视上传 检查列表 /// @@ -233,16 +240,17 @@ namespace IRaCIS.Application.Services public async Task> GetVisitPatientStudyFilterList(VisitPatientStudyFilterQuery inQuery) { - var trialSiteId=_subjectRepository.Where(t=>t.Id==inQuery.SubjectId).Select(t=>t.TrialSiteId).FirstOrDefault(); + var trialSiteId = _subjectRepository.Where(t => t.Id == inQuery.SubjectId).Select(t => t.TrialSiteId).FirstOrDefault(); var query = from scpStudy in _scpStudyRepository //未绑定的患者,或者自己已绑定但是未绑定访视的 - .Where(t => t.Patient.SubjectId == null|| (t.Patient.SubjectId == inQuery.SubjectId && t.SubjectVisitId==null)) + .Where(t => t.Patient.SubjectId == null || (t.Patient.SubjectId == inQuery.SubjectId && t.SubjectVisitId == null)) //中心 - .Where(t=>t.TrialSiteId==trialSiteId) + .Where(t => t.TrialSiteId == trialSiteId) .WhereIf(inQuery.EarliestStudyTime != null, t => t.StudyTime >= inQuery.EarliestStudyTime) .WhereIf(inQuery.LatestStudyTime != null, t => t.StudyTime <= inQuery.LatestStudyTime) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Modalities), t => t.Modalities.Contains(inQuery.Modalities)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.PatientInfo), t => t.PatientIdStr.Contains(inQuery.PatientInfo) || t.PatientName.Contains(inQuery.PatientInfo) || t.PatientSex.Contains(inQuery.PatientInfo)) select new VisitPatientStudyFilterView() { Description = scpStudy.Description, @@ -254,6 +262,11 @@ namespace IRaCIS.Application.Services SCPStudyId = scpStudy.Id, SeriesCount = scpStudy.SeriesCount, StudyTime = scpStudy.StudyTime, + + PatientAge = scpStudy.PatientAge, + PatientIdStr = scpStudy.PatientIdStr, + PatientName = scpStudy.PatientName, + PatientSex = scpStudy.PatientSex, }; @@ -276,10 +289,10 @@ namespace IRaCIS.Application.Services { var subjectId = inCommand.SubjectId; - var subjectVisitId=inCommand.SubjectVisitId; + var subjectVisitId = inCommand.SubjectVisitId; var trialId = inCommand.TrialId; - - + + var @lock = _distributedLockProvider.CreateLock($"StudyCode"); @@ -313,7 +326,7 @@ namespace IRaCIS.Application.Services foreach (var series in newSeriesList) { - + series.SeqId = Guid.Empty; series.TrialId = trialId; series.SubjectId = subjectId; @@ -332,7 +345,7 @@ namespace IRaCIS.Application.Services instance.TrialId = trialId; instance.SubjectId = subjectId; instance.SubjectVisitId = subjectVisitId; - + } await _repository.AddRangeAsync(newInstanceList); }