一致性分析预提交

Uat_Study
hang 2022-07-03 20:40:59 +08:00
parent 2b380618de
commit f8b5b4bf61
14 changed files with 396 additions and 42 deletions

View File

@ -53,6 +53,11 @@
<param name="_enrollRepository"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskConsistentRuleService">
<summary>
一致性分析配置表
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService">
<summary>
医学审核生成规则
@ -2161,6 +2166,11 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.ReadingMedicalReviewService">
<summary>
阅片医学审核
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.ReadingMedicineQuestionService">
<summary>
医学审核问题
@ -2325,6 +2335,15 @@
阅片期
</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.TaskConsistentRuleView">
<summary> TaskConsistentRuleView 列表视图模型 </summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.TaskConsistentRuleQuery">
<summary>TaskConsistentRuleQuery 列表查询参数模型</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.TaskConsistentRuleAddOrEdit">
<summary> TaskConsistentRuleAddOrEdit 列表查询参数模型</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.TaskMedicalReviewRuleView">
<summary> TaskTaskMedicalReviewRuleView 列表视图模型 </summary>
</member>
@ -2717,6 +2736,11 @@
ITaskAllocationRuleService
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Interfaces.ITaskConsistentRuleService">
<summary>
ITaskConsistentRuleService
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Interfaces.ITaskMedicalReviewRuleService">
<summary>
ITaskTaskMedicalReviewRuleService

View File

@ -0,0 +1,53 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-07-01 15:33:01
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.ViewModel
{
/// <summary> TaskConsistentRuleView 列表视图模型 </summary>
public class TaskConsistentRuleView: TaskConsistentRuleAddOrEdit
{
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public DateTime UpdateTime { get; set; }
public Guid UpdateUserId { get; set; }
public UserSimpleInfo AnalysisDoctorUser { get; set; }
public UserSimpleInfo CompareDoctorUser { get; set; }
}
///<summary>TaskConsistentRuleQuery 列表查询参数模型</summary>
public class TaskConsistentRuleQuery
{
public Guid TrialId { get; set; }
public bool IsSelfAnalysis { get; set; }
}
///<summary> TaskConsistentRuleAddOrEdit 列表查询参数模型</summary>
public class TaskConsistentRuleAddOrEdit
{
public Guid? Id { get; set; }
public Guid AnalysisDoctorUserId { get; set; }
public bool IsEnable { get; set; }
public string Note { get; set; }
public Guid TrialId { get; set; }
public int PlanSubjectCount { get; set; }
public int PlanVisitCount { get; set; }
public int IntervalWeeks { get; set; }
public Guid? CompareDoctorUserId { get; set; }
public bool IsHaveReadingPeriod { get; set; }
public bool IsGenerateGlobalTask { get; set; }
}
}

View File

@ -67,7 +67,7 @@ namespace IRaCIS.Core.Application.ViewModel
public string UserName { get; set; }
public string FullName { get; set; }
public string UserTypeShortName { get; set; }
//public string UserTypeShortName { get; set; }
}

View File

@ -0,0 +1,25 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-07-01 15:35:00
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Interfaces
{
/// <summary>
/// ITaskConsistentRuleService
/// </summary>
public interface ITaskConsistentRuleService
{
Task<List<TaskConsistentRuleView>> GetTaskConsistentRuleList(TaskConsistentRuleQuery inQuery);
Task<IResponseOutput> AddOrUpdateTaskConsistentRule(TaskConsistentRuleAddOrEdit addOrEditTaskConsistentRule);
Task<IResponseOutput> DeleteTaskConsistentRule(Guid taskConsistentRuleId);
}
}

View File

@ -0,0 +1,89 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-07-01 15:33:04
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Core.Application.Service
{
/// <summary>
/// 一致性分析配置表
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskConsistentRuleService : BaseService, ITaskConsistentRuleService
{
private readonly IRepository<TaskConsistentRule> _taskConsistentRuleRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
public TaskConsistentRuleService(IRepository<VisitTask> visitTaskRepository, IRepository<TaskConsistentRule> taskConsistentRuleRepository)
{
_taskConsistentRuleRepository = taskConsistentRuleRepository;
_visitTaskRepository = visitTaskRepository;
}
[HttpPost]
public async Task<List<TaskConsistentRuleView>> GetTaskConsistentRuleList(TaskConsistentRuleQuery inQuery)
{
var taskConsistentRuleQueryable = _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.IsSelfAnalysis, t => t.CompareDoctorUserId != null)
.WhereIf(inQuery.IsSelfAnalysis == false, t => t.CompareDoctorUserId == null)
.ProjectTo<TaskConsistentRuleView>(_mapper.ConfigurationProvider);
return await taskConsistentRuleQueryable.ToListAsync();
}
public async Task<IResponseOutput> AddOrUpdateTaskConsistentRule(TaskConsistentRuleAddOrEdit addOrEditTaskConsistentRule)
{
var verifyExp1 = new EntityVerifyExp<TaskConsistentRule>()
{
VerifyExp = t => t.AnalysisDoctorUserId == addOrEditTaskConsistentRule.AnalysisDoctorUserId && t.CompareDoctorUserId == addOrEditTaskConsistentRule.CompareDoctorUserId && t.TrialId == addOrEditTaskConsistentRule.TrialId,
VerifyMsg = "已有该医生配置,不允许继续增加"
};
var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true, verifyExp1);
return ResponseOutput.Ok(entity.Id.ToString());
}
[HttpDelete("{taskConsistentRuleId:guid}")]
public async Task<IResponseOutput> DeleteTaskConsistentRule(Guid taskConsistentRuleId)
{
var config = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == taskConsistentRuleId);
//自身一致性分析
if (config.CompareDoctorUserId == null)
{
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.DoctorUserId == config.AnalysisDoctorUserId && t.TrialId == config.TrialId))
{
throw new BusinessValidationFailedException("已产生一致性分析任务,不允许删除");
}
}
//组内一致性分析
else
{
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.DoctorUserId == config.CompareDoctorUserId && t.TrialId == config.TrialId))
{
throw new BusinessValidationFailedException("已产生一致性分析任务,不允许删除");
}
}
var success = await _taskConsistentRuleRepository.DeleteFromQueryAsync(t => t.Id == taskConsistentRuleId, true);
return ResponseOutput.Ok();
}
}
}

View File

@ -8,6 +8,7 @@ using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Core.Application.Service
{
@ -32,7 +33,6 @@ namespace IRaCIS.Core.Application.Service
_taskMedicalReviewRuleRepository = taskMedicalReviewRuleRepository;
}
/// <summary>
@ -208,6 +208,8 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
[UnitOfWork]
[HttpPost]
public async Task<IResponseOutput> AssignMedicalReviewTask(AssignMedicalReviewTaskCommand command)
{
@ -215,12 +217,22 @@ namespace IRaCIS.Core.Application.Service
{
var task = await _taskMedicalReviewRepository.FirstOrDefaultAsync(t => t.Id == id);
if (command.TaskOptType == MedicalReviewTaskOptType.Assign || command.TaskOptType == MedicalReviewTaskOptType.ReAssign)
if (command.TaskOptType == MedicalReviewTaskOptType.Assign )
{
if (task.MedicalManagerUserId != null && task.MedicalManagerUserId !=command.MedicalManagerUserId)
{
throw new BusinessValidationFailedException("当前有任务已分配给其他人,不允许分配,请刷新列表");
}
task.MedicalManagerUserId = command.MedicalManagerUserId;
task.AllocateTime = DateTime.Now;
}
else if (command.TaskOptType == MedicalReviewTaskOptType.ReAssign)
{
task.MedicalManagerUserId = command.MedicalManagerUserId;
task.AllocateTime = DateTime.Now;
}
else if (command.TaskOptType == MedicalReviewTaskOptType.CancelAssign)
{

View File

@ -231,49 +231,67 @@ namespace IRaCIS.Core.Application.Service
}
[HttpPost]
public async Task<List<SelfConsistentView>> GetSelfConsistentList(SelfConsistentQuery inQuery)
{
var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.DoctorUserId == inQuery.AnalysisDoctorUserId)
.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
.Where(t => t.SignTime!.Value.AddDays(inQuery.IntervalWeeks * 7 + 1) > DateTime.Now)
//重阅产生的访视任务 要把之前的访视任务去除
.Where(t => t.ReReadingApplyState != ReReadingApplyState.Agree)
.WhereIf(inQuery.IsHaveReadingPeriod == false, t => t.ReadingCategory == ReadingCategory.Visit)
.WhereIf(inQuery.IsHaveReadingPeriod == true, t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)
.GroupBy(t => t.SubjectId)
.Select(g => new SelfConsistentView()
{
SubjectId = g.Key,
//[HttpPost]
//public async Task<PageOutput<SelfConsistentView>> GetSelfConsistentList(SelfConsistentQuery inQuery)
//{
// var group = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.DoctorUserId == inQuery.AnalysisDoctorUserId)
// .Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
// .Where(t => t.SignTime!.Value.AddDays(inQuery.IntervalWeeks * 7 + 1) > DateTime.Now)
// //重阅产生的访视任务 要把之前的访视任务去除
// .Where(t => t.ReReadingApplyState != ReReadingApplyState.Agree)
// .WhereIf(inQuery.IsHaveReadingPeriod == false, t => t.ReadingCategory == ReadingCategory.Visit)
// .WhereIf(inQuery.IsHaveReadingPeriod == true, t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)
// .GroupBy(t => t.SubjectId)
// ;
VisitTaskList = g.OrderBy(t => t.SubjectVisit.VisitNum).Select(c => new VisitTaskSimpleView()
{
Id = c.Id,
ReadingCategory = c.ReadingCategory,
TaskBlindName = c.TaskBlindName,
TaskCode = c.TaskCode,
TaskName = c.TaskName,
TaskState = c.TaskState,
ArmEnum = c.ArmEnum,
SubjectId = c.SubjectId,
TrialId = c.TrialId,
SubjectCode = c.Subject.Code,
TrialSiteCode = c.Subject.TrialSite.TrialSiteCode,
}).Take(2).ToList(),
// var query= group.Select(g => new SelfConsistentView()
// {
// SubjectId = g.Key,
VisitValidTaskCount = g.Count()
// VisitTaskList = g.OrderBy(t => t.SubjectVisit.VisitNum).Select(c => new VisitTaskSimpleView()
// {
// Id = c.Id,
// ReadingCategory = c.ReadingCategory,
// TaskBlindName = c.TaskBlindName,
// TaskCode = c.TaskCode,
// TaskName = c.TaskName,
// TaskState = c.TaskState,
// ArmEnum = c.ArmEnum,
// SubjectId = c.SubjectId,
// TrialId = c.TrialId,
// SubjectCode = c.Subject.Code,
// TrialSiteCode = c.Subject.TrialSite.TrialSiteCode,
// }).Take(2).ToList(),
});
// VisitValidTaskCount = g.Count()
var count = query.Count();
var list= query.Skip(0).Take(10).ToList();
// })
return query.ToList();
}
// //source = source.Skip((pageNumber - 1) * pageSize);
// //var items = await source
// // .Take(pageSize)
// // .ToArrayAsync(cancellationToken)
// // .ConfigureAwait(false);
// //var pagedList = new PageOutput<T>()
// //{
// // PageIndex = pageNumber,
// // PageSize = pageSize,
// // TotalCount = count,
// // CurrentPageData = items
// //};
// //var count = group.Count();
// //var list= query.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
// return query.ToList();
//}

View File

@ -190,8 +190,8 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.UserId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.UserCode))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.UserName))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName))
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.UserTypeRole.UserTypeShortName));
.ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName));
//.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.UserTypeRole.UserTypeShortName));
@ -214,6 +214,9 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TaskConsistentRule, TaskConsistentRuleView>();
CreateMap<TaskConsistentRuleAddOrEdit, TaskConsistentRule>();
}
}

View File

@ -0,0 +1,62 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-07-01 15:32:56
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///TaskConsistentRule
///</summary>
[Table("TaskConsistentRule")]
public class TaskConsistentRule : Entity, IAuditUpdate, IAuditAdd
{
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public DateTime UpdateTime { get; set; }
public Guid UpdateUserId { get; set; }
public Guid AnalysisDoctorUserId { get; set; }
public bool IsEnable { get; set; }
public string Note { get; set; }
public Guid TrialId { get; set; }
public int PlanSubjectCount { get; set; }
public int PlanVisitCount { get; set; }
public int IntervalWeeks { get; set; }
public Guid? CompareDoctorUserId { get; set; }
public bool IsHaveReadingPeriod { get; set; }
public bool IsGenerateGlobalTask { get; set; }
public User CompareDoctorUser { get; set; }
public User AnalysisDoctorUser { get; set; }
}
}

View File

@ -196,6 +196,8 @@ namespace IRaCIS.Core.Domain.Models
public decimal VisitTaskNum { get; set; }
public Guid? TaskConsistentRuleId { get; set; }
}
}

View File

@ -593,6 +593,8 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TaskMedicalReviewRule> TaskMedicalReviewRule { get; set; }
public virtual DbSet<TaskConsistentRule> TaskConsistentRule { get; set; }

View File

@ -4,7 +4,7 @@
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
public static readonly string DbDatabase = "IRaCIS_New_Tet";
//表名称用字符串,拼接
public static readonly string TableName = "ReadingMedicalReviewDialog";
public static readonly string TableName = "TaskConsistentRule";
//具体文件里面 例如service 可以配置是否分页
}
#>

View File

@ -113,7 +113,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> Delete<#=tableName#>(Guid <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id)
{
var success = await _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository.DeleteFromQueryAsync(t => t.Id == <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id,true);
return ResponseOutput.Result(success);
return ResponseOutput.Ok();
}

View File

@ -0,0 +1,64 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-07-01 15:37:24
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Service
{
/// <summary>
/// TaskConsistentRuleService
/// </summary>
[ ApiExplorerSettings(GroupName = "Test")]
public class TaskConsistentRuleService: BaseService, ITaskConsistentRuleService
{
private readonly IRepository<TaskConsistentRule> _taskConsistentRuleRepository;
public TaskConsistentRuleService(IRepository<TaskConsistentRule> taskConsistentRuleRepository)
{
_taskConsistentRuleRepository = taskConsistentRuleRepository;
}
public async Task<List<TaskConsistentRuleView>> GetTaskConsistentRuleList(TaskConsistentRuleQuery inQuery)
{
var taskConsistentRuleQueryable = _taskConsistentRuleRepository
.ProjectTo<TaskConsistentRuleView>(_mapper.ConfigurationProvider);
return await taskConsistentRuleQueryable.ToListAsync();
}
public async Task<IResponseOutput> AddOrUpdateTaskConsistentRule(TaskConsistentRuleAddOrEdit addOrEditTaskConsistentRule)
{
// 在此处拷贝automapper 映射
CreateMap<TaskConsistentRule, TaskConsistentRuleView>();
// CreateMap< TaskConsistentRule,TaskConsistentRuleAddOrEdit>().ReverseMap();
var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
[HttpDelete("{taskConsistentRuleId:guid}")]
public async Task<IResponseOutput> DeleteTaskConsistentRule(Guid taskConsistentRuleId)
{
var success = await _taskConsistentRuleRepository.DeleteFromQueryAsync(t => t.Id == taskConsistentRuleId,true);
return ResponseOutput.Ok();
}
}
}