修改一版

Uat_Study
he 2022-06-06 14:16:59 +08:00
parent 24a728f95d
commit 6bdaf926c4
5 changed files with 114 additions and 34 deletions

View File

@ -537,9 +537,19 @@
访视名称 访视名称
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.Stakeholders"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.StakeholderIds">
<summary> <summary>
干系人 干系人Id
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.StakeholderNames">
<summary>
干系人姓名
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.Status">
<summary>
状态
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.Id"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.Id">
@ -642,6 +652,11 @@
是否为访视 是否为访视
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.VisitNum">
<summary>
访视Num
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.PDState"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.PDState">
<summary> <summary>
是否为PD进展 是否为PD进展
@ -3067,7 +3082,7 @@
</member> </member>
<member name="M:IRaCIS.Application.Services.ReadingPeriodSetService.GetPreviewTheReadingList(IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListInDto)"> <member name="M:IRaCIS.Application.Services.ReadingPeriodSetService.GetPreviewTheReadingList(IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListInDto)">
<summary> <summary>
获取影像阅片的预览 获取影像阅片的预览 // 需要清除之前已经选中的
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
@ -3118,14 +3133,14 @@
生成的阅片模块(在大列表上展示的) 阅片期 生成的阅片模块(在大列表上展示的) 阅片期
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModule(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)"> <member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
<summary> <summary>
获取读片模块 获取读片模块
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleSingle(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleIndto)"> <member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleSingle(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleIndto)">
<summary> <summary>
获取单条信息 获取单条详情信息
</summary> </summary>
<param name="dto"></param> <param name="dto"></param>
<returns></returns> <returns></returns>

View File

@ -13,6 +13,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? TrialId { get; set; } public Guid? TrialId { get; set; }
public Guid? SubjectId { get; set; } public Guid? SubjectId { get; set; }
} }
public class GetSubjectReadVisitsOutDto public class GetSubjectReadVisitsOutDto
@ -131,9 +133,19 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string SubjectVisitName { get; set; } public string SubjectVisitName { get; set; }
/// <summary> /// <summary>
/// 干系人 /// 干系人Id
/// </summary> /// </summary>
public string Stakeholders { get; set; } public List<Guid> StakeholderIds { get; set; }
/// <summary>
/// 干系人姓名
/// </summary>
public List<string> StakeholderNames { get; set; }
/// <summary>
/// 状态
/// </summary>
public ReadModuleEnum? Status { get; set; }
} }
public class GetReadModuleOutDto public class GetReadModuleOutDto
@ -242,6 +254,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary> /// </summary>
public bool IsVisit { get; set; } public bool IsVisit { get; set; }
/// <summary>
/// 访视Num
/// </summary>
public decimal? VisitNum { get; set; }
/// <summary> /// <summary>
/// 是否为PD进展 /// 是否为PD进展
/// </summary> /// </summary>

View File

@ -25,20 +25,29 @@ namespace IRaCIS.Application.Services
public IRepository<SubjectVisit> _subjectVisitRepository; public IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<Subject> _subjectRepository; private readonly IRepository<Subject> _subjectRepository;
private readonly IRepository<VisitStage> _visitstageRepository; private readonly IRepository<VisitStage> _visitstageRepository;
private readonly IRepository<User> _userRepository;
private readonly IRepository<DicomInstance> _dicomInstanceRepository;
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository; private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
private readonly IRepository<ReadModule> _readModuleRepository; private readonly IRepository<ReadModule> _readModuleRepository;
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository, public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Subject> subjectRepository, IRepository<Subject> subjectRepository,
IRepository<VisitStage> visitstageRepository, IRepository<VisitStage> visitstageRepository,
IRepository<ReadingPeriodSet> readingPeriodSetRepository, IRepository<User> UserRepository,
IRepository<ReadModule> readModuleRepository IRepository<DicomInstance> dicomInstanceRepository,
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
IRepository<ReadModule> readModuleRepository
) )
{ {
_subjectVisitRepository = subjectVisitRepository; this._subjectVisitRepository = subjectVisitRepository;
this._subjectRepository = subjectRepository; this._subjectRepository = subjectRepository;
this._visitstageRepository = visitstageRepository; this._visitstageRepository = visitstageRepository;
this._userRepository = UserRepository;
this._dicomInstanceRepository = dicomInstanceRepository;
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
this._readingPeriodSetRepository = readingPeriodSetRepository; this._readingPeriodSetRepository = readingPeriodSetRepository;
this._readModuleRepository = readModuleRepository; this._readModuleRepository = readModuleRepository;
} }
@ -48,7 +57,7 @@ namespace IRaCIS.Application.Services
/// 获取读片模块 /// 获取读片模块
/// </summary> /// </summary>
[HttpPost] [HttpPost]
public async Task<(PageOutput<GetReadModuleDtoOut>,object)> GetReadModule(GetReadModuleDto dto) public async Task<(PageOutput<GetReadModuleDtoOut>,object)> GetReadModuleList(GetReadModuleDto dto)
{ {
var subjectquery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId) var subjectquery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId)
.WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId) .WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
@ -59,7 +68,7 @@ namespace IRaCIS.Application.Services
SiteId = x.SiteId, SiteId = x.SiteId,
SubjectCode = x.Code, SubjectCode = x.Code,
SubjectId = x.Id, SubjectId = x.Id,
Data=x.SubjectVisitList.OrderByDescending(y=>y.InPlan).Select(y=>new GetReadModuleOutDto() Data=x.SubjectVisitList.OrderByDescending(y=>y.VisitNum).Select(y=>new GetReadModuleOutDto()
{ {
Id = y.Id, //id Id = y.Id, //id
Name=y.VisitName, Name=y.VisitName,
@ -71,6 +80,7 @@ namespace IRaCIS.Application.Services
CreateTime = y.CreateTime, // 创建时间 CreateTime = y.CreateTime, // 创建时间
SubjectCode = y.Subject.Code, // 受试者code SubjectCode = y.Subject.Code, // 受试者code
SiteCode = x.TrialSite.TrialSiteCode, // 中心Code SiteCode = x.TrialSite.TrialSiteCode, // 中心Code
VisitNum=y.VisitNum,
IsFinalVisit=y.IsFinalVisit, // 是否为末次评估 IsFinalVisit=y.IsFinalVisit, // 是否为末次评估
OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视 OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
@ -89,6 +99,16 @@ namespace IRaCIS.Application.Services
var pageList = await subjectquery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null|| dto.SortField==string.Empty ? "SiteCode" : dto.SortField, var pageList = await subjectquery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null|| dto.SortField==string.Empty ? "SiteCode" : dto.SortField,
dto.Asc); dto.Asc);
pageList.CurrentPageData.ForEach(x =>
{
var outplan = x.Data.FirstOrDefault(x => x.IsFinalVisit);
if (outplan != null)
{
x.Data = x.Data.Where(y => y.VisitNum >= outplan.VisitNum).ToList();
}
});
var subjectisd = pageList.CurrentPageData.Select(x => x.SubjectId).ToList(); var subjectisd = pageList.CurrentPageData.Select(x => x.SubjectId).ToList();
var readModules =await _readModuleRepository.Where(x => subjectisd.Contains(x.SubjectId)).Include(x=>x.SubjectVisit) var readModules =await _readModuleRepository.Where(x => subjectisd.Contains(x.SubjectId)).Include(x=>x.SubjectVisit)
@ -139,40 +159,54 @@ namespace IRaCIS.Application.Services
//} //}
/// <summary> /// <summary>
/// 获取单条信息 /// 获取单条详情信息
/// </summary> /// </summary>
/// <param name="dto"></param> /// <param name="dto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<GetReadModuleSingleOutdto> GetReadModuleSingle(GetReadModuleSingleIndto dto) public async Task<GetReadModuleSingleOutdto> GetReadModuleSingle(GetReadModuleSingleIndto dto)
{ {
var data = await GetReadModule(new GetReadModuleDto() var data = await GetReadModuleList(new GetReadModuleDto()
{ {
SubjectId = dto.SubjectId, SubjectId = dto.SubjectId,
}); });
var GetReadModuleOutDto = data.Item1.CurrentPageData.FirstOrDefault().Data.Where(x => x.Id == dto.Id).Select(x => new GetReadModuleSingleOutdto() GetReadModuleSingleOutdto? readModule = data.Item1.CurrentPageData.FirstOrDefault().Data.Where(x => x.Id == dto.Id).Select(x => new GetReadModuleSingleOutdto()
{ {
Id = x.Id, Id = x.Id,
ModuleType = x.ModuleType, ModuleType = x.ModuleType,
SubjectVisitId = x.SubjectVisitId, SubjectVisitId = x.SubjectVisitId,
SubjectVisitName = x.SubjectVisitName, SubjectVisitName = x.SubjectVisitName,
Stakeholders = string.Empty
Status = x.Status,
}).FirstOrDefault(); }).FirstOrDefault();
SubjectVisit visit = (await _subjectVisitRepository.Where(x => x.Id == GetReadModuleOutDto.SubjectVisitId).FirstOrDefaultAsync()).IfNullThrowConvertException(); var stakeholderIds = new List<Guid>();
//switch (GetVisitSubmitStateEnum(visit)) var subjectVisit =await _subjectVisitRepository.FirstOrDefaultAsync(x => x.Id == readModule.SubjectVisitId);
//{ switch (readModule.Status)
// case ReadModuleEnum.ImageUpload: {
// case case ReadModuleEnum.ImageUpload:
// break; stakeholderIds.AddRange(await _dicomInstanceRepository.Where(x => x.SubjectVisitId == readModule.SubjectVisitId).Select(x => x.CreateUserId).Distinct().ToListAsync());
//}; stakeholderIds.AddRange(await _noneDicomStudyFileRepository.Where(x => x.NoneDicomStudy.SubjectVisitId == readModule.SubjectVisitId).Select(x => x.CreateUserId).Distinct().ToListAsync());
break;
case ReadModuleEnum.ImageQuality:
if (subjectVisit.PreliminaryAuditUserId != null)
{
stakeholderIds.Add(subjectVisit.PreliminaryAuditUserId.Value);
}
if (subjectVisit.ReviewAuditUserId != null)
{
stakeholderIds.Add(subjectVisit.ReviewAuditUserId.Value);
}
break;
};
readModule.StakeholderIds = stakeholderIds.Distinct().ToList();
readModule.StakeholderNames = await _userRepository.Where(x => readModule.StakeholderIds.Contains(x.Id)).Select(x => x.FirstName + "/" + x.LastName).ToListAsync();
return readModule;
return GetReadModuleOutDto;
} }
/// <summary> /// <summary>
@ -212,8 +246,6 @@ namespace IRaCIS.Application.Services
.WhereIf(dto.ExpirationVisitNum != null, x => x.VisitNum <= dto.ExpirationVisitNum.Value); .WhereIf(dto.ExpirationVisitNum != null, x => x.VisitNum <= dto.ExpirationVisitNum.Value);
var visit = visitquery.OrderByDescending(x => x.VisitNum).FirstOrDefault(); var visit = visitquery.OrderByDescending(x => x.VisitNum).FirstOrDefault();
if (visit != null) if (visit != null)

View File

@ -58,7 +58,6 @@ namespace IRaCIS.Application.Services
TrialId =entity.TrialId, TrialId =entity.TrialId,
SiteId = x, SiteId = x,
}).ToList(); }).ToList();
await _readingPeriodSetRepository.AddAsync(entity, true); await _readingPeriodSetRepository.AddAsync(entity, true);
return ResponseOutput.Ok(entity.Id); return ResponseOutput.Ok(entity.Id);
} }
@ -79,17 +78,18 @@ namespace IRaCIS.Application.Services
} }
/// <summary> /// <summary>
/// 获取影像阅片的预览 /// 获取影像阅片的预览 // 需要清除之前已经选中的
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<List<PreviewTheReadingListOutDto>> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto) public async Task<List<PreviewTheReadingListOutDto>> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto)
{ {
if (await _readingPeriodPlanRepository.AnyAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId)) if (await _readingPeriodPlanRepository.AnyAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId))
{ {
return await GetPreviewTheReadingPlanList(inDto); await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId);
await _readingPeriodPlanRepository.SaveChangesAsync();
} }
var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowConvertException(); var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowException();
var visitquery = _subjectVisitRepository.Where(x => x.TrialId == readset.TrialId && x.SubmitState != SubmitStateEnum.None && x.InPlan); var visitquery = _subjectVisitRepository.Where(x => x.TrialId == readset.TrialId && x.InPlan);
if (readset.ReadingScope == ReadingScopeEnum.Site) if (readset.ReadingScope == ReadingScopeEnum.Site)
{ {
var siteids = readset.ReadingPeriodSites.Select(x => x.SiteId); var siteids = readset.ReadingPeriodSites.Select(x => x.SiteId);
@ -264,7 +264,16 @@ namespace IRaCIS.Application.Services
var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit) var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit)
.Include(x => x.ReadingPeriodSet).ToList(); .Include(x => x.ReadingPeriodSet).ToList();
plans = plans.Where(x => _readModuleRepository.Where(y => x.SubjectVisitId == y.SubjectVisitId && x.ReadingPeriodSet.ReadingSetType == y.ReadingSetType).Count() == 0).ToList(); var needAddVisitIds = plans.Select(x => x.SubjectVisitId).ToList();
var repeatVisitNames = _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x => x.SubjectVisit.VisitName).ToList();
if(repeatVisitNames.Count!=0)
{
return ResponseOutput.NotOk($"{string.Join(",", repeatVisitNames)}已经添加过阅片期,无法设置生效");
}
List<ReadModule> readModules = new List<ReadModule>(); List<ReadModule> readModules = new List<ReadModule>();
foreach (var item in plans) foreach (var item in plans)

View File

@ -62,8 +62,15 @@ namespace IRaCIS.Core.Domain.Models
//审核状态 //审核状态
public AuditStateEnum AuditState { get; set; } public AuditStateEnum AuditState { get; set; }
public ForwardStateEnum ForwardState { get; set; } public ForwardStateEnum ForwardState { get; set; }
/// <summary>
/// 单审通过人
/// </summary>
public Guid? PreliminaryAuditUserId { get; set; } public Guid? PreliminaryAuditUserId { get; set; }
/// <summary>
/// 双审通过人
/// </summary>
public Guid? ReviewAuditUserId { get; set; } public Guid? ReviewAuditUserId { get; set; }
public DateTime? ReviewAuditTime { get; set; } public DateTime? ReviewAuditTime { get; set; }
public DateTime? PreliminaryAuditTime { get; set; } public DateTime? PreliminaryAuditTime { get; set; }