医学审核

This commit is contained in:
2022-06-29 13:49:12 +08:00
parent 014b4c21e2
commit d6e5b1bd46
17 changed files with 640 additions and 8 deletions
@@ -5,7 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Service.Allocation.DTO
namespace IRaCIS.Core.Application.Service.ViewModel
{
public class AllocationVisitViewModel
{
@@ -0,0 +1,50 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 13:36:46
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.ViewModel
{
/// <summary> TaskTaskMedicalReviewRuleView 列表视图模型 </summary>
public class TaskMedicalReviewRuleView : TaskMedicalReviewRuleAddOrEdit
{
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public DateTime UpdateTime { get; set; }
public Guid UpdateUserId { get; set; }
public UserSimpleInfo DoctorUser { get; set; }
}
///<summary>TaskTaskMedicalReviewRuleQuery 列表查询参数模型</summary>
public class TaskMedicalReviewRuleQuery
{
[NotDefault]
public Guid TrialId { get; set; }
}
///<summary> TaskTaskMedicalReviewRuleAddOrEdit 列表查询参数模型</summary>
public class TaskMedicalReviewRuleAddOrEdit
{
public Guid? Id { get; set; }
public Guid DoctorUserId { get; set; }
public bool IsEnable { get; set; }
public string Note { get; set; }
public Guid TrialId { get; set; }
public int PlanVisitCount { get; set; }
public int PlanJudgeCount { get; set; }
public int PlanGlobalCount { get; set; }
public int PlanTumorCount { get; set; }
}
}
@@ -0,0 +1,79 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 10:59:50
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.ViewModel
{
/// <summary> TaskMedicalReviewView 列表视图模型 </summary>
public class TaskMedicalReviewView: VisitTaskViewBasic
{
public Guid Id { get; set; }
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public DateTime UpdateTime { get; set; }
public Guid UpdateUserId { get; set; }
public DateTime? AllocateTime { get; set; }
public int AuditState { get; set; }
public DateTime? AuditSignTime { get; set; }
public int DoctorUserIdeaEnum { get; set; }
public Guid? MedicalManagerUserId { get; set; }
public string AuditSuggestion { get; set; }
public UserSimpleInfo DoctorUser { get; set; }
public UserSimpleInfo MedicalManagerUser { get; set; }
}
///<summary>TaskMedicalReviewQuery 列表查询参数模型</summary>
public class TaskMedicalReviewQuery : PageInput
{
public Guid TrialId { get; set; }
public Guid? SiteId { get; set; }
public Guid? SubjectId { get; set; }
public string SubjectCode { get; set; } = String.Empty;
public string TaskName { get; set; } = String.Empty;
public bool? IsUrgent { get; set; }
public Guid? DoctorUserId { get; set; }
public ReadingCategory? ReadingCategory { get; set; }
public ReadingTaskState? ReadingTaskState { get; set; }
}
public class AssignMedicalReviewTaskCommand
{
public Guid Id { get; set; }
public Guid? MedicalManagerUserId { get; set; }
public MedicalReviewTaskOptType TaskOptType { get; set; }
}
public enum MedicalReviewTaskOptType
{
Assign = 1,
ReAssign = 2,
CancelAssign = 3,
}
}
@@ -65,6 +65,15 @@ namespace IRaCIS.Core.Application.ViewModel
public string UserTypeShortName { get; set; }
}
public class UserSimpleInfo
{
public string UserCode { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string UserTypeShortName { get; set; }
}
public class JudgeVisitTaskView : VisitTaskView
{
@@ -195,9 +204,9 @@ namespace IRaCIS.Core.Application.ViewModel
public ReadingCategory? ReadingCategory { get; set; }
public ReadingTaskState? ReadingTaskState { get; set; }
public TaskAllocationState? TaskAllocationState { get; set; }
public ReadingTaskState? ReadingTaskState { get; set; }
public DateTime? BeginAllocateDate { get; set; }
@@ -242,7 +251,7 @@ namespace IRaCIS.Core.Application.ViewModel
public int? VisitValidTaskCount { get; set; }
public int? VisitValidCount => VisitTaskList.Count();
public int? VisitValidCount => VisitTaskList.Select(t=>t.TaskName).Distinct().Count();
public List<VisitTaskSimpleView> VisitTaskList { get; set; }
}
@@ -252,6 +261,9 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid Id { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Arm ArmEnum { get; set; }
public string TaskCode { get; set; }
public string TaskName { get; set; }
@@ -0,0 +1,25 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 13:37:37
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Interfaces
{
/// <summary>
/// ITaskTaskMedicalReviewRuleService
/// </summary>
public interface ITaskMedicalReviewRuleService
{
Task<List<TaskMedicalReviewRuleView>> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery queryTaskTaskMedicalReviewRule);
Task<IResponseOutput> AddOrUpdateTaskMedicalReviewRule(TaskMedicalReviewRuleAddOrEdit addOrEditTaskTaskMedicalReviewRule);
Task<IResponseOutput> DeleteTaskMedicalReviewRule(Guid taskTaskMedicalReviewRuleId);
}
}
@@ -0,0 +1,23 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 10:59:32
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Interfaces
{
/// <summary>
/// ITaskMedicalReviewService
/// </summary>
public interface ITaskMedicalReviewService
{
//Task<PageOutput<TaskMedicalReviewView>> GetTaskMedicalReviewList(TaskMedicalReviewQuery queryTaskMedicalReview);
}
}
@@ -0,0 +1,112 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 10:59:39
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
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>
/// 任务医学审核
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewService : BaseService, ITaskMedicalReviewService
{
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
public TaskMedicalReviewService(IRepository<TaskMedicalReview> taskMedicalReviewRepository)
{
_taskMedicalReviewRepository = taskMedicalReviewRepository;
}
/// <summary>
/// PM 医学审核(挑选任务生成后的列表)
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<TaskMedicalReviewView>> GetMedicalReviewTaskList(TaskMedicalReviewQuery inQuery)
{
var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId)
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
.WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
.WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
.WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);
var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TaskMedicalReviewView.Id) : inQuery.SortField, inQuery.Asc);
return pageList;
}
/// <summary>
/// MIM 医学审核
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<TaskMedicalReviewView>> GetMIMMedicalReviewTaskList(TaskMedicalReviewQuery inQuery)
{
var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id)
.WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId)
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
.WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
.WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
.WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);
var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TaskMedicalReviewView.Id) : inQuery.SortField, inQuery.Asc);
return pageList;
}
/// <summary>
/// 123 分别是 分配,重新分配,取消分配
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
public async Task<IResponseOutput> AssignMedicalReviewTask(AssignMedicalReviewTaskCommand command)
{
var task = await _taskMedicalReviewRepository.FirstOrDefaultAsync(t => t.Id == command.Id);
if (command.TaskOptType == MedicalReviewTaskOptType.Assign || command.TaskOptType == MedicalReviewTaskOptType.ReAssign)
{
task.MedicalManagerUserId = command.MedicalManagerUserId;
task.AllocateTime = DateTime.Now;
}
else if (command.TaskOptType == MedicalReviewTaskOptType.CancelAssign)
{
task.MedicalManagerUserId = null;
task.AllocateTime = null;
}
await _taskMedicalReviewRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
}
}
@@ -0,0 +1,60 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-29 13:38:40
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
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>
/// 医学审核生成规则
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewRuleService : BaseService, ITaskMedicalReviewRuleService
{
private readonly IRepository<TaskMedicalReviewRule> _taskTaskMedicalReviewRuleRepository;
public TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> taskTaskMedicalReviewRuleRepository)
{
_taskTaskMedicalReviewRuleRepository = taskTaskMedicalReviewRuleRepository;
}
[HttpPost]
public async Task<List<TaskMedicalReviewRuleView>> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery inQuery)
{
var taskTaskMedicalReviewRuleQueryable = _taskTaskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider);
return await taskTaskMedicalReviewRuleQueryable.ToListAsync();
}
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateTaskMedicalReviewRule(TaskMedicalReviewRuleAddOrEdit addOrEditTaskTaskMedicalReviewRule)
{
var entity = await _taskTaskMedicalReviewRuleRepository.InsertOrUpdateAsync(addOrEditTaskTaskMedicalReviewRule, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
[HttpDelete("{taskMedicalReviewRuleId:guid}")]
public async Task<IResponseOutput> DeleteTaskMedicalReviewRule(Guid taskTaskMedicalReviewRuleId)
{
var success = await _taskTaskMedicalReviewRuleRepository.DeleteFromQueryAsync(t => t.Id == taskTaskMedicalReviewRuleId);
return ResponseOutput.Ok();
}
}
}
@@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// 一致性分析列表 (一致性分析 最后勾选 产生的任务)
/// 一致性分析列表 (自身 组内 最后勾选 产生的任务)
/// </summary>
/// <param name="queryVisitTask"></param>
/// <returns></returns>
@@ -256,6 +256,8 @@ namespace IRaCIS.Core.Application.Service
TaskCode = c.TaskCode,
TaskName = c.TaskName,
TaskState = c.TaskState,
ArmEnum=c.ArmEnum,
SubjectId=c.SubjectId,
TrialId = c.TrialId
}).ToList(),
@@ -165,6 +165,25 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.DoctorUserId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName));
CreateMap<TaskMedicalReview, TaskMedicalReviewView>().IncludeMembers(t => t.VisitTask)
.ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.VisitTask.DoctorUser))
.ForMember(o => o.MedicalManagerUser, t => t.MapFrom(u => u.MedicalManagerUser));
CreateMap<VisitTask, TaskMedicalReviewView>();
CreateMap<User, UserSimpleInfo>()
.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));
CreateMap<TaskMedicalReviewRule, TaskMedicalReviewRuleView>();
CreateMap<TaskMedicalReviewRuleAddOrEdit, TaskMedicalReviewRule>();
}
}