diff --git a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs
index 09096b726..bb909cccd 100644
--- a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs
+++ b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs
@@ -24,6 +24,7 @@ namespace IRaCIS.Core.API
{
//此处的Name 是控制器上分组的名称 Title是界面的大标题
//分组
+
options.SwaggerDoc("Reviewer", new OpenApiInfo {Title = "医生模块",Version = "Reviewer", });
options.SwaggerDoc("Trial", new OpenApiInfo { Title = "项目模块", Version = "Trial" });
options.SwaggerDoc("Enroll", new OpenApiInfo { Title = "入组模块", Version = "Enroll" });
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 5375f2026..05f2395dc 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -2431,6 +2431,11 @@
+
+
+ 添加或更新项目医生项目价格
+
+
Dashboard统计、全局工作量统计、入组两个维度统计(按照项目、按照人)
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
new file mode 100644
index 000000000..04dc40d20
--- /dev/null
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
@@ -0,0 +1,37 @@
+using IRaCIS.Core.Domain.Share.Reading;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.Application.Service.Reading.Dto
+{
+ public class GetReadModuleDto
+ {
+ public Guid TrialId { get; set; }
+ }
+
+ public class GetReadModuleOutDto: ReadModule
+ {
+ public string SubjectCode { get; set; }
+
+ public string SiteCode { get; set; }
+
+ public Guid? SiteId { get; set; }
+ }
+
+
+ public class GetReadModuleDtoOut
+ {
+ public string SubjectCode { get; set; }
+
+ public string SiteCode { get; set; }
+
+ public Guid? SiteId { get; set; }
+
+ public Guid? SubjectId { get; set; }
+
+ public List Data { get; set; }
+ }
+}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs
new file mode 100644
index 000000000..171c2eb28
--- /dev/null
+++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs
@@ -0,0 +1,66 @@
+using IRaCIS.Application.Interfaces;
+using IRaCIS.Core.Infra.EFCore;
+using IRaCIS.Core.Domain.Share;
+using IRaCIS.Core.Application.Filter;
+using Microsoft.AspNetCore.Mvc;
+using IRaCIS.Core.Application.Service.WorkLoad.DTO;
+using Microsoft.AspNetCore.Authorization;
+using IRaCIS.Core.Application.Auth;
+using IRaCIS.Core.Application.Service.Reading.Dto;
+using IRaCIS.Core.Domain.Share.Reading;
+
+namespace IRaCIS.Application.Services
+{
+ [ApiExplorerSettings(GroupName = "Reading")]
+ public class ReadModuleService : BaseService
+ {
+
+ public IRepository _subjectVisitRepository;
+ public ReadModuleService(IRepository subjectVisitRepository
+ )
+ {
+ _subjectVisitRepository = subjectVisitRepository;
+ }
+
+
+ ///
+ /// 添加或更新项目医生项目价格
+ ///
+ [HttpPost]
+ public async Task> GetReadModule(GetReadModuleDto dto)
+ {
+ var visits = await _subjectVisitRepository.Where(x => x.TrialId == dto.TrialId).Include(x=>x.Subject).Include(x => x.Site)
+ .Select(x=>new GetReadModuleOutDto ()
+ {
+ CreateTime=x.CreateTime,
+ Id=x.Id,
+ SubjectId=x.SubjectId,
+ SubjectVisitId=x.Id,
+ IsUrgent=x.IsUrgent,
+ ModuleName= x.InPlan?"计划内访视":"计划外访视",
+ ModuleType= x.InPlan? ModuleTypeEnum.InPlanSubjectVisit: ModuleTypeEnum.OutPlanSubjectVisit,
+ SubjectCode=x.Subject.Code,
+ SiteCode=x.Site.SiteCode,
+ SiteId=x.Site.Id,
+ }).ToListAsync();
+
+ var data = visits.GroupBy(x => new { x.SiteId, x.SubjectId, x.SiteCode, x.SubjectCode }).Select(x => new GetReadModuleDtoOut()
+ {
+
+ SiteCode = x.Key.SiteCode,
+ SiteId = x.Key.SiteId,
+ SubjectCode = x.Key.SubjectCode,
+ SubjectId = x.Key.SubjectId,
+ Data = x.ToList().OrderBy(y => y.ModuleType).ToList(),
+ }).ToList();
+
+ return data;
+ }
+
+
+
+
+
+
+ }
+}
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
new file mode 100644
index 000000000..6191647a6
--- /dev/null
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.Domain.Share.Reading
+{
+ ///
+ /// 模块枚举
+ ///
+ public enum ModuleTypeEnum
+ {
+ ///
+ /// 计划内访视
+ ///
+ InPlanSubjectVisit=0,
+
+ ///
+ /// 计划外访视
+ ///
+ OutPlanSubjectVisit = 1,
+
+ ///
+ /// 阅片期
+ ///
+ Read = 2,
+
+ ///
+ /// 裁判
+ ///
+ Referee = 3,
+
+ ///
+ /// 肿瘤学
+ ///
+ Oncology = 4,
+ }
+}
diff --git a/IRaCIS.Core.Domain/Reading/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadModule.cs
new file mode 100644
index 000000000..706bdfcd7
--- /dev/null
+++ b/IRaCIS.Core.Domain/Reading/ReadModule.cs
@@ -0,0 +1,62 @@
+
+
+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
+{
+ ///
+ ///ReadModule
+ ///
+ [Table("ReadModule")]
+ public class ReadModule : Entity, IAuditAdd
+ {
+
+ ///
+ /// 受试者ID
+ ///
+ public Guid? SubjectId { get; set; }
+
+ ///
+ /// 模块类型
+ ///
+ public ModuleTypeEnum ModuleType { get; set; }
+
+ ///
+ /// 模块名称
+ ///
+ public string ModuleName { get; set; }
+
+ ///
+ /// 是否加急
+ ///
+ public bool? IsUrgent { get; set; }
+
+ ///
+ /// 访视ID
+ ///
+ public Guid? SubjectVisitId { get; set; }
+
+ ///
+ /// 状态
+ ///
+ public int? Status { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public Guid CreateUserId { get; set; }
+
+ }
+
+
+
+}