From 3d92ccf83a9b1bd2212466b38a36c0a796434750 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Thu, 2 Jun 2022 19:04:37 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Reading/Dto/ReadingPeriodSetViewModel.cs | 2 +-
.../Reading/ReadingPeriodSetService.cs | 148 ++++++++++++++----
IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 2 +
.../Reading/ReadingPeriodPlan.cs | 54 +++++++
.../Reading/ReadingPeriodSet.cs | 4 +-
.../Context/IRaCISDBContext.cs | 3 +
6 files changed, 183 insertions(+), 30 deletions(-)
create mode 100644 IRaCIS.Core.Domain/Reading/ReadingPeriodPlan.cs
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
index ddd015c7..030822c5 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
@@ -213,7 +213,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
///
/// 设置阅片是否生效
///
- public int IsTakeEffect { get; set; }
+ public ReadingPeriodStatus IsTakeEffect { get; set; }
}
public class ReadingPeriodSetQuery
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
index 7bced679..e88ae9c4 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
@@ -23,17 +23,20 @@ namespace IRaCIS.Application.Services
public IRepository _subjectVisitRepository;
private readonly IRepository _readingPeriodSetRepository;
private readonly IRepository _readModuleRepository;
+ private readonly IRepository _readingPeriodPlanRepository;
private readonly IRepository _siteSetRepository;
public ReadingPeriodSetService(IRepository subjectVisitRepository,
IRepository ReadingPeriodSetRepository,
IRepository readModuleRepository,
+ IRepository readingPeriodPlanRepository,
IRepository SiteSetRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
_readingPeriodSetRepository = ReadingPeriodSetRepository;
this._readModuleRepository = readModuleRepository;
+ this._readingPeriodPlanRepository = readingPeriodPlanRepository;
_siteSetRepository = SiteSetRepository;
}
@@ -91,12 +94,34 @@ namespace IRaCIS.Application.Services
visitquery = visitquery.WhereIf(readset.ExpirationDate != null, x => x.LatestScanDate <= readset.ExpirationDate.Value)
.WhereIf(readset.ExpirationVisitNum != null, x => x.VisitNum <= readset.ExpirationVisitNum);
- var visits = (await visitquery.Include(x=>x.Subject).Include(x=>x.TrialSite).GroupBy(x => x.SubjectId).Select(x => new
+ var subjectVisits = await visitquery.Include(x => x.Subject).Include(x => x.TrialSite).GroupBy(x => x.SubjectId).Select(x => new
{
SubjectId = x.Key,
- visit = x.OrderByDescending(x => x.VisitNum).FirstOrDefault()
- }).ToListAsync()).Select(x => x.visit).ToList();
+ Visit = x.ToList()
+ }).ToListAsync();
+ List visits = new List();
+ subjectVisits.ForEach(x =>
+ {
+ var finalVisit = x.Visit.Where(x => x.IsFinalVisit).FirstOrDefault();
+ if (finalVisit != null)
+ {
+ var visit = x.Visit.Where(x => x.VisitNum < finalVisit.VisitNum).OrderByDescending(x=>x.VisitNum).FirstOrDefault();
+ if(visit!=null)
+ {
+ visits.Add(visit);
+ }
+ }
+ else
+ {
+ var visit = x.Visit.OrderByDescending(x => x.VisitNum).FirstOrDefault();
+ if (visit != null)
+ {
+ visits.Add(visit);
+ }
+ }
+
+ });
return visits.Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readset.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0)
.Select(x => new PreviewTheReadingListOutDto
@@ -121,35 +146,72 @@ namespace IRaCIS.Application.Services
///
public async Task ReadingToGenerate(ReadingToGenerateInDto inDto)
{
- var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowConvertException();
- var visits = await _subjectVisitRepository.Where(x => inDto.SubjectVisitIds.Contains(x.Id)).ToListAsync();
+ //var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowConvertException();
+ //var visits = await _subjectVisitRepository.Where(x => inDto.SubjectVisitIds.Contains(x.Id)).ToListAsync();
- List readModules = new List();
+ //List readModules = new List();
- foreach (var item in visits)
+ //foreach (var item in visits)
+ //{
+ // readModules.Add(new ReadModule()
+ // {
+ // Id = NewId.NextGuid(),
+ // SubjectId = item.SubjectId,
+ // ModuleType = readset.ReadingSetType == ReadingSetType.ImageReading ? ModuleTypeEnum.Read : ModuleTypeEnum.Oncology,
+ // IsUrgent = item.IsUrgent,
+ // ModuleName = readset.ReadingPeriodName,
+ // SubjectVisitId = item.Id,
+ // ReadingSetType = readset.ReadingSetType,
+ // Status = ReadingCommon.GetVisitSubmitStateEnum(item),
+ // });
+ //};
+
+ //await _readModuleRepository.AddRangeAsync(readModules);
+
+
+ //var res = await _subjectVisitRepository.SaveChangesAsync();
+
+ List plans = new List();
+ inDto.SubjectVisitIds.ForEach(x =>
{
- readModules.Add(new ReadModule()
+ plans.Add(new ReadingPeriodPlan()
{
- Id = NewId.NextGuid(),
- SubjectId = item.SubjectId,
- ModuleType = readset.ReadingSetType == ReadingSetType.ImageReading ? ModuleTypeEnum.Read : ModuleTypeEnum.Oncology,
- IsUrgent = item.IsUrgent,
- ModuleName = readset.ReadingPeriodName,
- SubjectVisitId = item.Id,
- ReadingSetType = readset.ReadingSetType,
- Status = ReadingCommon.GetVisitSubmitStateEnum(item),
+ SubjectVisitId = x,
+ ReadingPeriodSetId = inDto.ReadingPeriodSetId
});
- };
-
- await _readModuleRepository.AddRangeAsync(readModules);
-
-
- var res = await _subjectVisitRepository.SaveChangesAsync();
-
+ });
+ await _readingPeriodPlanRepository.AddRangeAsync(plans);
+ var res = await _readingPeriodPlanRepository.SaveChangesAsync();
return ResponseOutput.Result(res);
}
+ ///
+ /// 获取选中的计划
+ ///
+ ///
+ ///
+ public async Task> GetPreviewTheReadingPlanList(PreviewTheReadingListInDto inDto)
+ {
+ var plans =await _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId).Include(x => x.SubjectVisit).Include(x => x.SubjectVisit.TrialSite).Include(x => x.SubjectVisit.Subject)
+ .Include(x => x.ReadingPeriodSet).ToListAsync();
+
+ return plans.Select(x => new PreviewTheReadingListOutDto
+ {
+ ExpirationDate = x.ReadingPeriodSet.ExpirationDate,
+ SubjectVisitId = x.Id,
+ TrialSiteCode = x.SubjectVisit.TrialSite.TrialSiteCode,
+ LatestScanDate =x.SubjectVisit.LatestScanDate,
+ ReadingPeriodName = x.ReadingPeriodSet.ReadingPeriodName,
+ ReadingPeriodSetId = x.ReadingPeriodSet.Id,
+ SubjectCode = x.SubjectVisit.Subject.Code,
+ SubjectId = x.SubjectVisit.SubjectId,
+ SubjectVisitName = x.SubjectVisit.VisitName,
+ //Remark= readset.Remark
+ }).ToList();
+ }
+
+
///
/// 分页获取
///
@@ -164,10 +226,11 @@ namespace IRaCIS.Application.Services
.ProjectTo(_mapper.ConfigurationProvider);
var pageList= await readquery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? "CreateTime" : query.SortField,
query.SortAsc);
-
return pageList;
}
+
+
///
/// 获取单条
///
@@ -177,7 +240,6 @@ namespace IRaCIS.Application.Services
public async Task GetReadingPeriodSet(Guid id)
{
var data = await _readingPeriodSetRepository.AsQueryable().Include(x => x.ReadingPeriodSites).Where(x => x.Id == id).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
-
return data;
}
@@ -191,11 +253,40 @@ namespace IRaCIS.Application.Services
[HttpPut]
public async Task SetReadingPeriodSetEffect(SetReadingPeriodSetEffect indto)
{
+ if (indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect)
+ {
+ var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit)
+ .Include(x => x.ReadingPeriodSet).ToList();
+
+ List readModules = new List();
+ foreach (var item in plans)
+ {
+ readModules.Add(new ReadModule()
+ {
+ Id = NewId.NextGuid(),
+ SubjectId = item.SubjectVisit.SubjectId,
+ ModuleType = item.ReadingPeriodSet.ReadingSetType == ReadingSetType.ImageReading ? ModuleTypeEnum.Read : ModuleTypeEnum.Oncology,
+ IsUrgent = item.SubjectVisit.IsUrgent,
+ ModuleName = item.ReadingPeriodSet.ReadingPeriodName,
+ SubjectVisitId = item.Id,
+ ReadingSetType = item.ReadingPeriodSet.ReadingSetType,
+ ReadingPeriodSetId= item.ReadingPeriodSet.Id,
+ Status = ReadingCommon.GetVisitSubmitStateEnum(item.SubjectVisit),
+ });
+ };
+
+ await _readModuleRepository.AddRangeAsync(readModules);
+ } else
+ {
+ await _readModuleRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == indto.Id);
+ }
+
var readquery =await _readingPeriodSetRepository.UpdatePartialFromQueryAsync(indto.Id, x => new ReadingPeriodSet() {
IsTakeEffect = indto.IsTakeEffect
- },true);
-
- return ResponseOutput.Result(true);
+ });
+
+ var res=await _readingPeriodSetRepository.SaveChangesAsync();
+ return ResponseOutput.Result(res);
}
@@ -208,6 +299,7 @@ namespace IRaCIS.Application.Services
[HttpDelete("{readingPeriodSetId:guid}")]
public async Task DeleteReadingPeriodSet(Guid readingPeriodSetId)
{
+
var success = await _repository.BatchDeleteAsync(t => t.Id == readingPeriodSetId);
return ResponseOutput.Result(success);
}
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index fd8b7b4b..387ce19c 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -67,6 +67,8 @@ namespace IRaCIS.Core.Domain.Share.Reading
}
+
+
///
/// 状态
///
diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodPlan.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodPlan.cs
new file mode 100644
index 00000000..6fc1dcd0
--- /dev/null
+++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodPlan.cs
@@ -0,0 +1,54 @@
+
+
+using System;
+using IRaCIS.Core.Domain.Share;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using IRaCIS.Core.Domain.Share.Reading;
+
+namespace IRaCIS.Core.Domain.Models
+{
+ ///
+ /// 阅片计划
+ ///
+ [Table("ReadingPeriodPlan")]
+ public class ReadingPeriodPlan : Entity, IAuditAdd
+ {
+
+ ///
+ /// 阅片期配置ID
+ ///
+ public Guid ReadingPeriodSetId { get; set; }
+
+ ///
+ /// 访视
+ ///
+ public Guid SubjectVisitId { get; set; }
+
+ ///
+ /// 访视
+ ///
+ [ForeignKey("SubjectVisitId")]
+ public SubjectVisit SubjectVisit { get; set; }
+
+ ///
+ /// 阅片期配置
+ ///
+ [ForeignKey("ReadingPeriodSetId")]
+ public ReadingPeriodSet ReadingPeriodSet { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public Guid CreateUserId { get; set; }
+
+ }
+
+
+
+}
diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
index 1bb5e950..8aba2ba1 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
@@ -55,7 +55,7 @@ namespace IRaCIS.Core.Domain.Models
///
/// 是否生效
///
- public int? IsTakeEffect { get; set; }
+ public ReadingPeriodStatus IsTakeEffect { get; set; }
///
/// 创建时间
@@ -75,4 +75,6 @@ namespace IRaCIS.Core.Domain.Models
public List ReadingPeriodSites { get; set; } = new List();
}
+
+
}
diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
index 73b7861c..09fcf705 100644
--- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
+++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
@@ -176,6 +176,9 @@ namespace IRaCIS.Core.Infra.EFCore
#region Reading
public virtual DbSet ReadingPeriodSet { get; set; }
+ public virtual DbSet ReadingPeriodPlan { get; set; }
+
+
public virtual DbSet ReadModule { get; set; }
public virtual DbSet ClinicalData { get; set; }