From 1c93c8c63bd51fb9acd2cce4bf46c52af9853b72 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Wed, 17 Apr 2024 20:53:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=B0=8F=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RegisterChecks/UpdateCheckResultDto.cs | 11 +-- .../RegisterChecks/RegisterCheckAppService.cs | 80 ++++++++++++++- .../RegisterCheckSuggestion.cs | 4 + .../RegisterCheckSummary.cs | 4 + .../RegisterCheckSummaryManager.cs | 2 +- .../RegisterChecks/RegisterCheckManager.cs | 30 ++++++ .../RegisterCheckAppServiceTest.cs | 98 +++++++++++++++++++ 7 files changed, 216 insertions(+), 13 deletions(-) create mode 100644 test/Shentun.Peis.Application.Tests/RegisterCheckAppServiceTest.cs diff --git a/src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs b/src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs index d66743e..ec75cc2 100644 --- a/src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs +++ b/src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs @@ -20,7 +20,7 @@ namespace Shentun.Peis.RegisterChecks /// /// 检查日期(格式:2023-07-18) 空值跟null取当前日期 /// - public string? CheckDate { get; set; } + public DateTime? CheckDate { get; set; } public List RegisterCheckItems { get; set; } public List Summarys { get; set; } = new List(); public List Suggestions { get; set; } = new List(); @@ -75,13 +75,8 @@ namespace Shentun.Peis.RegisterChecks public class UpdateRegisterCheckSuggestionDetail { /// - /// 综述 - /// - public string Summary { get; set; } - - /// - /// 综述标志 + /// 建议 /// - public char SummaryFlag { get; set; } + public string Suggestion { get; set; } } } diff --git a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs index 8e6ff4f..2c10f4f 100644 --- a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs +++ b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Peis.PatientRegisters; using Shentun.Peis.RegisterCheckItems; @@ -12,8 +13,10 @@ using System.Text; using System.Threading.Tasks; using TencentCloud.Ame.V20190916.Models; using Volo.Abp; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; using Volo.Abp.Identity; using Volo.Abp.ObjectMapping; using Volo.Abp.Users; @@ -28,20 +31,41 @@ namespace Shentun.Peis.RegisterChecks [Authorize] public class RegisterCheckAppService : ApplicationService { + private readonly IRepository _registerCheckItemRepository; + private readonly IRepository _patientRegisterRepository; + private readonly IRepository _referenceRangeRepository; private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerCheckSummaryRepository; + private readonly IRepository _registerCheckSuggestionRepository; private readonly IRepository _userRepository; private readonly RegisterCheckManager _registerCheckManager; - - + private readonly RegisterCheckItemManager _registerCheckItemManager; + private readonly CacheService _cacheService; + private readonly IGuidGenerator _guidGenerator; public RegisterCheckAppService(IRepository registerCheckRepository, + IRepository registerCheckItemRepository, + IRepository patientRegisterRepository, + IRepository referenceRangeRepository, + IRepository registerCheckSummaryRepository, + IRepository registerCheckSuggestionRepository, IRepository userRepository, - RegisterCheckManager registerCheckManager) + RegisterCheckManager registerCheckManager, + RegisterCheckItemManager registerCheckItemManager, + CacheService cacheService, + IGuidGenerator guidGenerator) { this._registerCheckRepository = registerCheckRepository; this._userRepository = userRepository; this._registerCheckManager = registerCheckManager; - + this._patientRegisterRepository = patientRegisterRepository; + this._referenceRangeRepository = referenceRangeRepository; + _registerCheckItemRepository = registerCheckItemRepository; + _registerCheckSummaryRepository = registerCheckSummaryRepository; + _registerCheckSuggestionRepository = registerCheckSuggestionRepository; + this._registerCheckItemManager = registerCheckItemManager; + _cacheService = cacheService; + _guidGenerator = guidGenerator; } /// @@ -137,12 +161,60 @@ namespace Shentun.Peis.RegisterChecks return entdto; } + [HttpPost("api/app/registercheck/UpdateCheckResult")] public async Task UpdateCheckResult(UpdateCheckResultDto input) { if(input == null) { throw new UserFriendlyException("input参数不能为空"); } + var registerCheck = await _registerCheckRepository.GetAsync(input.RegisterCheckId); + var patientRegister = await _patientRegisterRepository.GetAsync(registerCheck.PatientRegisterId); + //修改医生和检查日期 + _registerCheckManager.UpdateCheckDoctorAndDateAsync(patientRegister, registerCheck, input.CheckDoctorId, input.CheckDate); + await _registerCheckRepository.UpdateAsync(registerCheck); + //修改项目结果 + var registerCheckItems = await _registerCheckItemRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId); + foreach (var registerCheckItem in registerCheckItems) + { + var inputCheckItem = input.RegisterCheckItems.Where(o=>o.ItemId == registerCheckItem.ItemId).FirstOrDefault(); + if (inputCheckItem == null) + { + continue; + } + registerCheckItem.Result = inputCheckItem.Result; + registerCheckItem.CheckDoctorName = inputCheckItem.CheckDoctorName; + registerCheckItem.CriticalValue = inputCheckItem.CriticalValue; + registerCheckItem.CheckDate = DateTime.Now; + } + await _registerCheckItemRepository.UpdateManyAsync(registerCheckItems); + //修改小结 + var deleteRegisterCheckSummarys = await _registerCheckSummaryRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId); + await _registerCheckSummaryRepository.DeleteManyAsync(deleteRegisterCheckSummarys); + for(var i = 0; i < input.Summarys.Count; i++) + { + var registerCheckSummary = new RegisterCheckSummary(_guidGenerator.Create()) + { + DisplayOrder = i + 1, + RegisterCheckId = input.RegisterCheckId, + Summary = input.Summarys[i].Summary, + SummaryFlag = '0' + }; + await _registerCheckSummaryRepository.InsertAsync(registerCheckSummary); + } + //修改建议 + var _registerCheckSuggestions = await _registerCheckSuggestionRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId); + await _registerCheckSuggestionRepository.DeleteManyAsync(_registerCheckSuggestions); + for (var i = 0; i < input.Suggestions.Count; i++) + { + var registerCheckSuggestion = new RegisterCheckSuggestion(_guidGenerator.Create()) + { + DisplayOrder = i + 1, + RegisterCheckId = input.RegisterCheckId, + Suggestion = input.Suggestions[i].Suggestion, + }; + await _registerCheckSuggestionRepository.InsertAsync(registerCheckSuggestion); + } } ///// ///// 弃检跟恢复操作 0(为未检), 1(已检), 2(弃检) diff --git a/src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs b/src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs index 6fb6958..e461240 100644 --- a/src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs +++ b/src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs @@ -14,6 +14,10 @@ namespace Shentun.Peis.Models [Table("register_check_suggestion")] public class RegisterCheckSuggestion : AuditedEntity, IHasConcurrencyStamp { + public RegisterCheckSuggestion() { } + public RegisterCheckSuggestion(Guid id):base(id) + { + } /// /// 登记检查ID /// diff --git a/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs b/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs index d9385e1..605091c 100644 --- a/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs +++ b/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs @@ -14,6 +14,10 @@ namespace Shentun.Peis.Models [Table("register_check_summary")] public class RegisterCheckSummary : AuditedEntity, IHasConcurrencyStamp { + public RegisterCheckSummary() { } + public RegisterCheckSummary(Guid id):base(id) + { + } /// /// 登记检查ID /// diff --git a/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummaryManager.cs b/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummaryManager.cs index 792bab0..54795af 100644 --- a/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummaryManager.cs +++ b/src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummaryManager.cs @@ -60,7 +60,7 @@ namespace Shentun.Peis.RegisterCheckSummarys var registerCheckSummaryList = await _registerCheckSummaryRepository.GetListAsync(m => m.RegisterCheckId == RegisterCheckId); if (registerCheckSummaryList.Any()) { - + //删除医生小结 await _registerCheckSummaryRepository.DeleteManyAsync(registerCheckSummaryList); diff --git a/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs b/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs index 1df9f78..6529f84 100644 --- a/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs +++ b/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs @@ -137,7 +137,37 @@ namespace Shentun.Peis.RegisterChecks return await _registerCheckRepository.UpdateAsync(entity); } + public void UpdateCheckDoctorAndDateAsync( + PatientRegister patientRegister, + RegisterCheck entity, + string checkDoctorId, + DateTime? checkDate + ) + { + if (entity == null) + { + throw new UserFriendlyException("请求参数有误"); + } + if (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + { + throw new UserFriendlyException("已总检不允许修改"); + } + if (patientRegister.IsLock == 'Y') + { + throw new UserFriendlyException("人员已加锁不允许修改"); + } + if (entity.IsLock == 'Y') + { + throw new UserFriendlyException("检查项目已加锁不允许修改"); + } + if (checkDate == null) + entity.CheckDate = DateTime.Now; + else + entity.CheckDate = checkDate; + entity.CheckDoctorId = checkDoctorId; + entity.CompleteFlag = RegisterCheckCompleteFlag.Checked; + } /// /// 更改危警值内容 /// diff --git a/test/Shentun.Peis.Application.Tests/RegisterCheckAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/RegisterCheckAppServiceTest.cs new file mode 100644 index 0000000..7d53068 --- /dev/null +++ b/test/Shentun.Peis.Application.Tests/RegisterCheckAppServiceTest.cs @@ -0,0 +1,98 @@ +using Shentun.Peis.DiagnosisFunctions; +using Shentun.Peis.Models; +using Shentun.Peis.RegisterAsbitems; +using Shentun.Peis.RegisterChecks; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Uow; +using Xunit; +using Xunit.Abstractions; + +namespace Shentun.Peis +{ + public class RegisterCheckAppServiceTest : PeisApplicationTestBase + { + private readonly IRepository _repository; + private readonly RegisterCheckAppService _appService; + private readonly ITestOutputHelper _output; + private readonly IUnitOfWorkManager _unitOfWorkManager; + public RegisterCheckAppServiceTest(ITestOutputHelper testOutputHelper) + { + _output = testOutputHelper; + _unitOfWorkManager = GetRequiredService(); + _repository = GetRequiredService>(); + _appService = GetRequiredService(); + } + + [Fact] + public async Task UpdateCheckResult() + { + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { + var updateCheckResultDto = new UpdateCheckResultDto() + { + RegisterCheckId = new Guid("3a11ee70-0351-8970-5bc5-dc0f72e62339"), + CheckDoctorId = "王医生", + CheckDate = new DateTime(2022,1,1), + RegisterCheckItems = new List + { + new UpdateRegisterCheckItemDetail() + { + ItemId = new Guid("3a0c6555-0dad-55b4-b59f-b11e8074cfdd"), + Result = "阳性" + }, + + new UpdateRegisterCheckItemDetail() + { + ItemId = new Guid("3a0c6558-e2a6-4aab-e6e9-d34957a7c3ed"), + Result = "阴性" + }, + new UpdateRegisterCheckItemDetail() + { + ItemId = new Guid("3a0c655a-1fdc-2447-6dc9-d8ec8e110d2e"), + Result = "阳性" + }, + new UpdateRegisterCheckItemDetail() + { + ItemId = new Guid("3a0c655c-1c9f-c8c5-150a-59b3cc351472"), + Result = "阴性" + }, + new UpdateRegisterCheckItemDetail() + { + ItemId = new Guid("3a0c655d-6ab7-ca7e-3920-3b493ec83192"), + Result = "阳性" + }, + }, + Summarys = new List() + { + new UpdateRegisterCheckSummaryDetail() + { + Summary = "dsfdsfdsfdsfdsf" + }, + new UpdateRegisterCheckSummaryDetail() + { + Summary = "ddddddd" + } + }, + Suggestions = new List() { new UpdateRegisterCheckSuggestionDetail() + { + Suggestion = "dddd" + }, + new UpdateRegisterCheckSuggestionDetail() + { + Suggestion = "sssss" + } + } + }; + await _appService.UpdateCheckResult(updateCheckResultDto); + await unitOfWork.CompleteAsync(); + + + } + } + } +}