修改一版

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>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.Stakeholders">
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleOutdto.StakeholderIds">
<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>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleOutDto.Id">
@ -642,6 +652,11 @@
是否为访视
</summary>
</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">
<summary>
是否为PD进展
@ -3067,7 +3082,7 @@
</member>
<member name="M:IRaCIS.Application.Services.ReadingPeriodSetService.GetPreviewTheReadingList(IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListInDto)">
<summary>
获取影像阅片的预览
获取影像阅片的预览 // 需要清除之前已经选中的
</summary>
<returns></returns>
</member>
@ -3118,14 +3133,14 @@
生成的阅片模块(在大列表上展示的) 阅片期
</summary>
</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>
</member>
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleSingle(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleSingleIndto)">
<summary>
获取单条信息
获取单条详情信息
</summary>
<param name="dto"></param>
<returns></returns>

View File

@ -13,6 +13,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? TrialId { get; set; }
public Guid? SubjectId { get; set; }
}
public class GetSubjectReadVisitsOutDto
@ -131,9 +133,19 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string SubjectVisitName { get; set; }
/// <summary>
/// 干系人
/// 干系人Id
/// </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
@ -242,6 +254,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public bool IsVisit { get; set; }
/// <summary>
/// 访视Num
/// </summary>
public decimal? VisitNum { get; set; }
/// <summary>
/// 是否为PD进展
/// </summary>

View File

@ -25,20 +25,29 @@ namespace IRaCIS.Application.Services
public IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<Subject> _subjectRepository;
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<ReadModule> _readModuleRepository;
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Subject> subjectRepository,
IRepository<VisitStage> visitstageRepository,
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
IRepository<ReadModule> readModuleRepository
IRepository<VisitStage> visitstageRepository,
IRepository<User> UserRepository,
IRepository<DicomInstance> dicomInstanceRepository,
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
IRepository<ReadModule> readModuleRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
this._subjectVisitRepository = subjectVisitRepository;
this._subjectRepository = subjectRepository;
this._visitstageRepository = visitstageRepository;
this._userRepository = UserRepository;
this._dicomInstanceRepository = dicomInstanceRepository;
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
this._readingPeriodSetRepository = readingPeriodSetRepository;
this._readModuleRepository = readModuleRepository;
}
@ -48,7 +57,7 @@ namespace IRaCIS.Application.Services
/// 获取读片模块
/// </summary>
[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)
.WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
@ -59,7 +68,7 @@ namespace IRaCIS.Application.Services
SiteId = x.SiteId,
SubjectCode = x.Code,
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
Name=y.VisitName,
@ -71,6 +80,7 @@ namespace IRaCIS.Application.Services
CreateTime = y.CreateTime, // 创建时间
SubjectCode = y.Subject.Code, // 受试者code
SiteCode = x.TrialSite.TrialSiteCode, // 中心Code
VisitNum=y.VisitNum,
IsFinalVisit=y.IsFinalVisit, // 是否为末次评估
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,
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 readModules =await _readModuleRepository.Where(x => subjectisd.Contains(x.SubjectId)).Include(x=>x.SubjectVisit)
@ -139,40 +159,54 @@ namespace IRaCIS.Application.Services
//}
/// <summary>
/// 获取单条信息
/// 获取单条详情信息
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
public async Task<GetReadModuleSingleOutdto> GetReadModuleSingle(GetReadModuleSingleIndto dto)
{
var data = await GetReadModule(new GetReadModuleDto()
var data = await GetReadModuleList(new GetReadModuleDto()
{
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,
ModuleType = x.ModuleType,
SubjectVisitId = x.SubjectVisitId,
SubjectVisitName = x.SubjectVisitName,
Stakeholders = string.Empty
Status = x.Status,
}).FirstOrDefault();
SubjectVisit visit = (await _subjectVisitRepository.Where(x => x.Id == GetReadModuleOutDto.SubjectVisitId).FirstOrDefaultAsync()).IfNullThrowConvertException();
var stakeholderIds = new List<Guid>();
//switch (GetVisitSubmitStateEnum(visit))
//{
// case ReadModuleEnum.ImageUpload:
// case
// break;
//};
var subjectVisit =await _subjectVisitRepository.FirstOrDefaultAsync(x => x.Id == readModule.SubjectVisitId);
switch (readModule.Status)
{
case ReadModuleEnum.ImageUpload:
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 GetReadModuleOutDto;
return readModule;
}
/// <summary>
@ -212,8 +246,6 @@ namespace IRaCIS.Application.Services
.WhereIf(dto.ExpirationVisitNum != null, x => x.VisitNum <= dto.ExpirationVisitNum.Value);
var visit = visitquery.OrderByDescending(x => x.VisitNum).FirstOrDefault();
if (visit != null)

View File

@ -58,7 +58,6 @@ namespace IRaCIS.Application.Services
TrialId =entity.TrialId,
SiteId = x,
}).ToList();
await _readingPeriodSetRepository.AddAsync(entity, true);
return ResponseOutput.Ok(entity.Id);
}
@ -79,17 +78,18 @@ namespace IRaCIS.Application.Services
}
/// <summary>
/// 获取影像阅片的预览
/// 获取影像阅片的预览 // 需要清除之前已经选中的
/// </summary>
/// <returns></returns>
public async Task<List<PreviewTheReadingListOutDto>> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto)
{
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 visitquery = _subjectVisitRepository.Where(x => x.TrialId == readset.TrialId && x.SubmitState != SubmitStateEnum.None && x.InPlan);
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.InPlan);
if (readset.ReadingScope == ReadingScopeEnum.Site)
{
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)
.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>();
foreach (var item in plans)

View File

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