修改一版
parent
24a728f95d
commit
6bdaf926c4
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue