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; } + + } }