Compare commits

..

No commits in common. "2cd78ab94ebdc3b8ffa8101977bf222763dad04f" and "2caa7933ee65141d4a63c53e2f2d234d1392b92d" have entirely different histories.

7 changed files with 43 additions and 144 deletions

View File

@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
public string TaskName { get; set; } public string TaskName { get; set; }
public bool IsImageFilter { get; set; } public bool IsImageFilter { get; set; }
public string CriterionModalitys { get; set; } public string CriterionModalitys { get; set; }
public Guid? SourceSubjectVisitId { get; set; } public Guid? SourceSubjectVisitId { get; set; }
public PackState PackState { get; set; } public PackState PackState { get; set; }
@ -33,40 +33,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
} }
public class StudyBasicInfo
public class StudyBasicInfo : DicomStudyBasicInfo
{
public List<string> SopInstanceUidList { get; set; }
}
public class SubjectCRCImageUploadedDto
{
public Guid VisitTaskId { get; set; }
public Guid SubjectId { get; set; }
public string SubjectCode { get; set; }
public string TaskBlindName { get; set; }
public string TaskName { get; set; }
public bool IsImageFilter { get; set; }
public string CriterionModalitys { get; set; }
public Guid? SourceSubjectVisitId { get; set; }
public List<DicomStudyBasicInfo> DicomStudyList { get; set; }
public List<NoneDicomStudyBasicInfo> NoneDicomStudyList { get; set; }
}
public class DicomStudyBasicInfo
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
public string StudyInstanceUid { get; set; } public string StudyInstanceUid { get; set; }
@ -87,26 +54,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
public string Description { get; set; } public string Description { get; set; }
public int SeriesCount { get; set; } public int SeriesCount { get; set; }
public int InstanceCount { get; set; } public int InstanceCount { get; set; }
}
public class NoneDicomStudyBasicInfo public List<string> SopInstanceUidList { get; set; }
{
public Guid Id { get; set; }
public string StudyCode { get; set; } = string.Empty;
public int FileCount { get; set; }
public string BodyPart { get; set; }
public string Modality { get; set; }
public DateTime ImageDate { get; set; }
public string Description { get; set; } = string.Empty;
} }
} }

View File

@ -377,30 +377,7 @@ namespace IRaCIS.Core.Application.Contracts
public class IRReadingDownloadQuery public class IRReadingDownloadQuery
{ {
[NotDefault] [NotDefault]
public Guid SubjectId { get; set; } public Guid VisitTaskId { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
public string SubjectCode { get; set; }
}
public class IRDownloadQuery
{
[NotDefault]
public Guid SubjectId { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
public string SubjectCode { get; set; }
public List<Guid> SubjectVisitIdList { get; set; }
public List<Guid> DicomStudyIdList { get; set; }
public List<Guid> NoneDicomStudyIdList { get; set; }
} }
} }

View File

@ -914,8 +914,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
SubjectCode = sv.Subject.Code, SubjectCode = sv.Subject.Code,
VisitName = sv.VisitName, VisitName = sv.VisitName,
StudyList = sv.StudyList.Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false) StudyList = sv.StudyList.Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id):false)
.Select(u => new .Select(u => new
{ {
u.PatientId, u.PatientId,
@ -935,8 +935,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}).ToList(), }).ToList(),
NoneDicomStudyList = sv.NoneDicomStudyList.Where(t => isQueryNoneDicom ? inQuery.NoneDicomStudyIdList.Contains(t.Id) : false) NoneDicomStudyList = sv.NoneDicomStudyList.Where( t => isQueryNoneDicom?inQuery.NoneDicomStudyIdList.Contains(t.Id):false)
.Select(nd => new .Select(nd => new
{ {
nd.Modality, nd.Modality,
@ -952,53 +952,44 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}).ToList() }).ToList()
}; };
var result = query.FirstOrDefault(); var result = query.ToList();
return ResponseOutput.Ok(result); return ResponseOutput.Ok(result);
} }
/// <summary>
/// IR 阅片页面 和IR 任务列表页面下载 勾选下载列表(后端要考虑到一致性分析 subjectCode的问题
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
public async Task<List<SubjectCRCImageUploadedDto>> GetSubjectImageDownloadSelectList(IRReadingDownloadQuery inQuery)
{
var query = _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId
&& t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect)
.ProjectTo<SubjectCRCImageUploadedDto>(_mapper.ConfigurationProvider);
var list = await query.Where(t=>t.SubjectCode==inQuery.SubjectCode).ToListAsync();
return list;
}
/// <summary> /// <summary>
/// IR 阅片页面获取下载检查的信息 会根据标准进行过滤检查,(后端要考虑到一致性分析 subjectCode的问题 /// IR 阅片页面获取下载检查的信息 会根据标准进行过滤检查,(后端要考虑到一致性分析 subjectCode的问题
/// </summary> /// </summary>
/// <param name="inQuery"></param> /// <param name="inQuery"></param>
/// <param name="_subjectRepository"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<IResponseOutput> GetIRReadingDownloadStudyInfo(IRDownloadQuery inQuery, [FromServices] IRepository<Subject> _subjectRepository) public async Task<IResponseOutput> GetIRReadingDownloadStudyInfo(IRReadingDownloadQuery inQuery)
{ {
var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) var taskInfo = await _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId)
.Select(t => new { t.IsImageFilter, t.CriterionModalitys }).FirstNotNullAsync(); .Select(t => new
{
t.BlindSubjectCode,
t.IsAnalysisCreate,
t.SourceSubjectVisitId,
t.TrialReadingCriterion.IsImageFilter,
t.TrialReadingCriterion.CriterionModalitys
})
.FirstNotNullAsync();
var isQueryDicom = inQuery.DicomStudyIdList.Count > 0; if (taskInfo.SourceSubjectVisitId == null)
var isQueryNoneDicom = inQuery.NoneDicomStudyIdList.Count > 0; {
return ResponseOutput.NotOk("请开发核实传递的参数该查询任务关联访视Id没有值");
}
var query = from sv in _subjectVisitRepository.Where(t => t.Id == taskInfo.SourceSubjectVisitId)
var query = from sv in _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t=>inQuery.SubjectVisitIdList.Contains(t.Id)))
select new select new
{ {
SubjectCode = sv.Subject.Code, SubjectCode = sv.Subject.Code,
VisitName = sv.VisitName, VisitName = sv.VisitName,
StudyList = sv.StudyList.Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false) StudyList = sv.StudyList.AsQueryable().WhereIf(taskInfo.IsImageFilter, t => ("|" + taskInfo.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|"))
.Select(u => new .Select(u => new
{ {
u.PatientId, u.PatientId,
@ -1017,7 +1008,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}), }),
NoneDicomStudyList = sv.NoneDicomStudyList.Where(t => isQueryNoneDicom ? inQuery.NoneDicomStudyIdList.Contains(t.Id) : false) NoneDicomStudyList = sv.NoneDicomStudyList.AsQueryable().WhereIf(taskInfo.IsImageFilter, t => ("|" + taskInfo.CriterionModalitys + "|").Contains("|" + t.Modality + "|"))
.Select(nd => new .Select(nd => new
{ {
nd.Modality, nd.Modality,
@ -1033,11 +1024,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}) })
}; };
return ResponseOutput.Ok();
var result = await query.FirstOrDefaultAsync();
return ResponseOutput.Ok(result);
} }
} }

View File

@ -3,7 +3,6 @@ using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Contracts.Dicom.DTO; using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using IRaCIS.Core.Application.Contracts.DTO; using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Application.Service.ImageAndDoc.DTO;
using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
@ -61,17 +60,17 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.StudyTime, t => t.MapFrom(u => u.DicomStudy.StudyTime)) .ForMember(o => o.StudyTime, t => t.MapFrom(u => u.DicomStudy.StudyTime))
.ForMember(o => o.StudyCode, t => t.MapFrom(u => u.DicomStudy.StudyCode)) .ForMember(o => o.StudyCode, t => t.MapFrom(u => u.DicomStudy.StudyCode))
//.ForMember(o => o.InstanceList, t => t.MapFrom(u => u.DicomInstanceList.Select(t=>t.Id).ToArray())) //.ForMember(o => o.InstanceList, t => t.MapFrom(u => u.DicomInstanceList.Select(t=>t.Id).ToArray()))
// .ForMember(o => o.InstancePathList, t => t.MapFrom(u => u.DicomInstanceList.OrderBy(t=>t.InstanceNumber).Select(t => t.Path))) // .ForMember(o => o.InstancePathList, t => t.MapFrom(u => u.DicomInstanceList.OrderBy(t=>t.InstanceNumber).Select(t => t.Path)))
; ;
CreateMap<DicomStudy, QAStudyInfoDTO>() CreateMap<DicomStudy, QAStudyInfoDTO>()
.ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x => x.ReadingClinicalDataPDFList.Count() == 0))) .ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x=>x.ReadingClinicalDataPDFList.Count()==0)))
.ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime))
.ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName)) .ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName))
.ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t => t.FailedFileCount > 0))) .ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t=>t.FailedFileCount>0)))
.ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()))); .ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()) ));
@ -125,19 +124,10 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.VisitNum, u => u.MapFrom(s => s.SubjectVisit.VisitNum)) .ForMember(d => d.VisitNum, u => u.MapFrom(s => s.SubjectVisit.VisitNum))
.ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)); .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName));
CreateMap<DicomStudy, DicomStudyBasicInfo>();
CreateMap<NoneDicomStudy, NoneDicomStudyBasicInfo>();
CreateMap<VisitTask, SubjectCRCImageUploadedDto>()
.ForMember(d => d.VisitTaskId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.IsImageFilter, u => u.MapFrom(s => s.TrialReadingCriterion.IsImageFilter))
.ForMember(d => d.CriterionModalitys, u => u.MapFrom(s => s.TrialReadingCriterion.CriterionModalitys))
.ForMember(d => d.SubjectCode, u => u.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code))
.ForMember(d => d.DicomStudyList, u => u.MapFrom(s => s.SourceSubjectVisit.StudyList))
.ForMember(d => d.NoneDicomStudyList, u => u.MapFrom(s => s.SourceSubjectVisit.NoneDicomStudyList))
;
} }
} }
} }

View File

@ -18,10 +18,6 @@ namespace IRaCIS.Core.Domain.Models
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
public List<NoneDicomStudyFile> NoneDicomFileList { get; set; } public List<NoneDicomStudyFile> NoneDicomFileList { get; set; }
[JsonIgnore]
public List<NoneDicomStudyFile> TaskNoneDicomFileList { get; set; }
[JsonIgnore] [JsonIgnore]
public SubjectVisit SubjectVisit { get; set; } public SubjectVisit SubjectVisit { get; set; }
[JsonIgnore] [JsonIgnore]

View File

@ -8,7 +8,9 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models namespace IRaCIS.Core.Domain.Models
{ {
///<summary>
///NoneDicomStudyFile
///</summary>
[Table("NoneDicomStudyFile")] [Table("NoneDicomStudyFile")]
public class NoneDicomStudyFile : BaseAddAuditEntity public class NoneDicomStudyFile : BaseAddAuditEntity
{ {
@ -21,9 +23,9 @@ namespace IRaCIS.Core.Domain.Models
[JsonIgnore] [JsonIgnore]
public VisitTask VisitTask { get; set; } public VisitTask VisitTask { get; set; }
[ForeignKey("OriginNoneDicomStudyId")] //[ForeignKey("OriginNoneDicomStudyId")]
[JsonIgnore] //[JsonIgnore]
public NoneDicomStudy OriginNoneDicomStudy { get; set; } //public NoneDicomStudy OriginNoneDicomStudy { get; set; }
#endregion #endregion

View File

@ -72,8 +72,6 @@ namespace IRaCIS.Core.Infra.EFCore
builder.HasNoKey(); builder.HasNoKey();
}); });
modelBuilder.Entity<NoneDicomStudy>().HasMany(t => t.NoneDicomFileList).WithOne(s => s.NoneDicomStudy).HasForeignKey(t => t.NoneDicomStudyId);
modelBuilder.Entity<NoneDicomStudy>().HasMany(t => t.TaskNoneDicomFileList).WithOne(s => s.OriginNoneDicomStudy).HasForeignKey(t => t.OriginNoneDicomStudyId);
modelBuilder.Entity<ReadingQuestionTrial>().HasQueryFilter(p => p.IsAdditional == false); modelBuilder.Entity<ReadingQuestionTrial>().HasQueryFilter(p => p.IsAdditional == false);