diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs
index 61420fdeb..8e776395c 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs
@@ -64,6 +64,45 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// 创建时间
///
public DateTime CreateTime { get; set; }
+
+ ///
+ /// 阅片人是否认同
+ ///
+ public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } = MedicalReviewDoctorUserIdea.defalut;
+
+ ///
+ /// 是否有问题
+ ///
+ public bool IsHaveQuestion { get; set; } = false;
+
+ ///
+ /// 质询问题
+ ///
+ public string Questioning { get; set; } = string.Empty;
+
+ ///
+ /// 审核建议
+ ///
+ public AuditAdvice AuditAdviceEnum { get; set; } = AuditAdvice.None;
+
+ ///
+ /// 不同意重阅原因
+ ///
+ public string DisagreeReason { get; set; } = string.Empty;
+
+ ///
+ /// 是否申请重阅
+ ///
+ public bool IsApplyHeavyReading { get; set; } = false;
+
+
+ ///
+ /// 是否是当前用户
+ ///
+ public bool IsCurrentUser { get; set; }
+
+
+ public string CreateUserName { get; set; }
}
public class GetMedicalReviewDialogInDto
@@ -74,7 +113,38 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class SendMedicalReviewDialogInDto
{
public Guid TaskMedicalReviewId { get; set; }
+
public string Content { get; set; }
+
+ ///
+ /// 阅片人是否认同
+ ///
+ public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } = MedicalReviewDoctorUserIdea.defalut;
+
+ ///
+ /// 是否有问题
+ ///
+ public bool IsHaveQuestion { get; set; } = false;
+
+ ///
+ /// 质询问题
+ ///
+ public string Questioning { get; set; } = string.Empty;
+
+ ///
+ /// 审核建议
+ ///
+ public AuditAdvice AuditAdviceEnum { get; set; } = AuditAdvice.None;
+
+ ///
+ /// 不同意重阅原因
+ ///
+ public string DisagreeReason { get; set; } = string.Empty;
+
+ ///
+ /// 是否申请重阅
+ ///
+ public bool IsApplyHeavyReading { get; set; } = false;
}
public class SaveMedicineQuestionInDto
@@ -145,6 +215,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class SaveMedicalReviewInfoInDto
{
+ public bool IsSendDialog { get; set; }
+
public Guid TaskMedicalReviewId { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs
index b9d0f7dec..a37ed87e9 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs
@@ -23,6 +23,7 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository _readingMedicineTrialQuestionRepository;
private readonly IRepository _trialRepository;
private readonly IRepository _visitTaskRepository;
+ private readonly IRepository _userTaskRepository;
private readonly IRepository _taskMedicalReviewRepository;
private readonly IRepository _readingMedicalReviewDialogRepository;
private readonly IRepository _readingMedicineQuestionAnswerRepository;
@@ -32,6 +33,7 @@ namespace IRaCIS.Core.Application.Service
IRepository readingMedicineTrialQuestionRepository,
IRepository trialRepository,
IRepository visitTaskRepository,
+ IRepository userTaskRepository,
IRepository taskMedicalReviewRepository,
IRepository readingMedicalReviewDialogRepository,
IRepository readingMedicineQuestionAnswerRepository,
@@ -41,6 +43,7 @@ namespace IRaCIS.Core.Application.Service
this._readingMedicineTrialQuestionRepository = readingMedicineTrialQuestionRepository;
this._trialRepository = trialRepository;
this._visitTaskRepository = visitTaskRepository;
+ this._userTaskRepository = userTaskRepository;
this._taskMedicalReviewRepository = taskMedicalReviewRepository;
this._readingMedicalReviewDialogRepository = readingMedicalReviewDialogRepository;
this._readingMedicineQuestionAnswerRepository = readingMedicineQuestionAnswerRepository;
@@ -252,9 +255,25 @@ namespace IRaCIS.Core.Application.Service
Questioning = inDto.Questioning,
ImagePath = inDto.ImagePath,
AuditAdviceEnum = inDto.AuditAdviceEnum,
+ SaveConclusionTime=DateTime.Now,
});
+ if(inDto.IsSendDialog)
+ {
+ var visitTaskId = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).Select(x => x.VisitTaskId).FirstOrDefaultAsync();
+ await _readingMedicalReviewDialogRepository.AddAsync(new ReadingMedicalReviewDialog()
+ {
+ AuditAdviceEnum = inDto.AuditAdviceEnum,
+ TaskMedicalReviewId = inDto.TaskMedicalReviewId,
+ UserTypeShortName = _userInfo.UserTypeShortName,
+ IsHaveQuestion=inDto.IsHaveQuestion,
+ Questioning=inDto.Questioning,
+ VisitTaskId= visitTaskId,
+ UserTypeEnumInt = _userInfo.UserTypeEnumInt,
+ });
+ }
+
var result = await _taskMedicalReviewRepository.SaveChangesAsync();
return ResponseOutput.Result(result);
}
@@ -291,6 +310,12 @@ namespace IRaCIS.Core.Application.Service
Content = inDto.Content,
UserTypeEnumInt = _userInfo.UserTypeEnumInt,
VisitTaskId = visitTaskId,
+ AuditAdviceEnum=inDto.AuditAdviceEnum,
+ DisagreeReason=inDto.DisagreeReason,
+ DoctorUserIdeaEnum=inDto.DoctorUserIdeaEnum,
+ IsApplyHeavyReading=inDto.IsApplyHeavyReading,
+ IsHaveQuestion=inDto.IsHaveQuestion,
+ Questioning=inDto.Questioning,
};
await _readingMedicalReviewDialogRepository.AddAsync(dialog);
@@ -308,17 +333,11 @@ namespace IRaCIS.Core.Application.Service
public async Task> GetMedicalReviewDialog(GetMedicalReviewDialogInDto inDto)
{
List result = await _readingMedicalReviewDialogRepository.Where(x => x.TaskMedicalReviewId == inDto.TaskMedicalReviewId)
- .Select(x => new GetMedicalReviewDialogOutDto()
- {
-
- Content = x.Content,
- CreateTime = x.CreateTime,
- CreateUserId = x.CreateUserId,
- UserTypeEnumInt = x.UserTypeEnumInt,
- UserTypeShortName = x.UserTypeShortName,
-
- }).OrderBy(x => x.CreateTime).ToListAsync();
-
+ .ProjectTo(_mapper.ConfigurationProvider)
+ .OrderBy(x => x.CreateTime).ToListAsync();
+ result.ForEach(x => {
+ x.IsCurrentUser = x.CreateUserId == _userInfo.Id;
+ });
return result;
}
@@ -331,7 +350,18 @@ namespace IRaCIS.Core.Application.Service
public async Task FinishMedicalReview(FinishMedicalReviewInDto inDto)
{
+ var taskmedicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).Select(x => new
+ {
+ x.SaveConclusionTime,
+ x.SaveQuestionTime,
+ }).FirstNotNullAsync();
+
+ if (taskmedicalReview.SaveQuestionTime == null || taskmedicalReview.SaveConclusionTime==null)
+ {
+ throw new BusinessValidationFailedException("请先保存问题和结论");
+
+ }
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(inDto.TaskMedicalReviewId, x => new TaskMedicalReview()
{
@@ -358,6 +388,19 @@ namespace IRaCIS.Core.Application.Service
IsApplyHeavyReading=inDto.IsApplyHeavyReading,
});
+ var visitTaskId = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).Select(x => x.VisitTaskId).FirstOrDefaultAsync();
+ await _readingMedicalReviewDialogRepository.AddAsync(new ReadingMedicalReviewDialog()
+ {
+
+ TaskMedicalReviewId = inDto.TaskMedicalReviewId,
+ UserTypeShortName = _userInfo.UserTypeShortName,
+ DoctorUserIdeaEnum = inDto.DoctorUserIdeaEnum,
+ DisagreeReason = inDto.DisagreeReason,
+ IsApplyHeavyReading = inDto.IsApplyHeavyReading,
+ VisitTaskId = visitTaskId,
+ UserTypeEnumInt = _userInfo.UserTypeEnumInt,
+ });
+
var result = await _taskMedicalReviewRepository.SaveChangesAsync();
return ResponseOutput.Result(result);
}
diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
index 8f757fb7f..04e67c787 100644
--- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
@@ -95,6 +95,10 @@ namespace IRaCIS.Core.Application.Service
CreateMap()
.ForMember(x => x.TaskMedicalReviewId, y => y.MapFrom(n => n.Id));
+
+ CreateMap()
+ .ForMember(x => x.CreateUserName, y => y.MapFrom(n => n.CreateUser.UserName));
+
#endregion
diff --git a/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs b/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs
index 129d276bc..4202a2ef9 100644
--- a/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs
+++ b/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs
@@ -128,6 +128,12 @@ namespace IRaCIS.Core.Domain.Models
public bool IsApplyHeavyReading { get; set; } = false;
+ ///
+ /// 保存结论时间
+ ///
+ public DateTime? SaveConclusionTime { get; set; }
+
+
}
}
diff --git a/IRaCIS.Core.Domain/Reading/ReadingMedicalReviewDialog.cs b/IRaCIS.Core.Domain/Reading/ReadingMedicalReviewDialog.cs
index 98a43da8c..934662746 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingMedicalReviewDialog.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingMedicalReviewDialog.cs
@@ -49,8 +49,42 @@ namespace IRaCIS.Core.Domain.Models
/// 创建时间
///
public DateTime CreateTime { get; set; }
-
- }
+
+ ///
+ /// 阅片人是否认同
+ ///
+ public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } = MedicalReviewDoctorUserIdea.defalut;
+
+ ///
+ /// 是否有问题
+ ///
+ public bool IsHaveQuestion { get; set; } = false;
+
+ ///
+ /// 质询问题
+ ///
+ public string Questioning { get; set; } = string.Empty;
+
+ ///
+ /// 审核建议
+ ///
+ public AuditAdvice AuditAdviceEnum { get; set; } = AuditAdvice.None;
+
+ ///
+ /// 不同意重阅原因
+ ///
+ public string DisagreeReason { get; set; } = string.Empty;
+
+
+ ///
+ /// 是否申请重阅
+ ///
+ public bool IsApplyHeavyReading { get; set; } = false;
+
+ [ForeignKey("CreateUserId")]
+ public User CreateUser { get; set; }
+
+ }
}