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