Browse Source

生成小结

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
1c93c8c63b
  1. 11
      src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs
  2. 80
      src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs
  3. 4
      src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs
  4. 4
      src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs
  5. 2
      src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummaryManager.cs
  6. 30
      src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
  7. 98
      test/Shentun.Peis.Application.Tests/RegisterCheckAppServiceTest.cs

11
src/Shentun.Peis.Application.Contracts/RegisterChecks/UpdateCheckResultDto.cs

@ -20,7 +20,7 @@ namespace Shentun.Peis.RegisterChecks
/// <summary>
/// 检查日期(格式:2023-07-18) 空值跟null取当前日期
/// </summary>
public string? CheckDate { get; set; }
public DateTime? CheckDate { get; set; }
public List<UpdateRegisterCheckItemDetail> RegisterCheckItems { get; set; }
public List<UpdateRegisterCheckSummaryDetail> Summarys { get; set; } = new List<UpdateRegisterCheckSummaryDetail>();
public List<UpdateRegisterCheckSuggestionDetail> Suggestions { get; set; } = new List<UpdateRegisterCheckSuggestionDetail>();
@ -75,13 +75,8 @@ namespace Shentun.Peis.RegisterChecks
public class UpdateRegisterCheckSuggestionDetail
{
/// <summary>
/// 综述
/// </summary>
public string Summary { get; set; }
/// <summary>
/// 综述标志
/// 建议
/// </summary>
public char SummaryFlag { get; set; }
public string Suggestion { get; set; }
}
}

80
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<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly IRepository<RegisterCheckSuggestion, Guid> _registerCheckSuggestionRepository;
private readonly IRepository<IdentityUser, Guid> _userRepository;
private readonly RegisterCheckManager _registerCheckManager;
private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly CacheService _cacheService;
private readonly IGuidGenerator _guidGenerator;
public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<ReferenceRange, Guid> referenceRangeRepository,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
IRepository<RegisterCheckSuggestion, Guid> registerCheckSuggestionRepository,
IRepository<IdentityUser, Guid> 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;
}
/// <summary>
@ -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);
}
}
///// <summary>
///// 弃检跟恢复操作 0(为未检), 1(已检), 2(弃检)

4
src/Shentun.Peis.Domain/RegisterCheckSuggestions/RegisterCheckSuggestion.cs

@ -14,6 +14,10 @@ namespace Shentun.Peis.Models
[Table("register_check_suggestion")]
public class RegisterCheckSuggestion : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public RegisterCheckSuggestion() { }
public RegisterCheckSuggestion(Guid id):base(id)
{
}
/// <summary>
/// 登记检查ID
/// </summary>

4
src/Shentun.Peis.Domain/RegisterCheckSummarys/RegisterCheckSummary.cs

@ -14,6 +14,10 @@ namespace Shentun.Peis.Models
[Table("register_check_summary")]
public class RegisterCheckSummary : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public RegisterCheckSummary() { }
public RegisterCheckSummary(Guid id):base(id)
{
}
/// <summary>
/// 登记检查ID
/// </summary>

2
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);

30
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;
}
/// <summary>
/// 更改危警值内容
/// </summary>

98
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<RegisterCheck> _repository;
private readonly RegisterCheckAppService _appService;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public RegisterCheckAppServiceTest(ITestOutputHelper testOutputHelper)
{
_output = testOutputHelper;
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
_repository = GetRequiredService<IRepository<RegisterCheck>>();
_appService = GetRequiredService<RegisterCheckAppService>();
}
[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<UpdateRegisterCheckItemDetail>
{
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<UpdateRegisterCheckSummaryDetail>()
{
new UpdateRegisterCheckSummaryDetail()
{
Summary = "dsfdsfdsfdsfdsf"
},
new UpdateRegisterCheckSummaryDetail()
{
Summary = "ddddddd"
}
},
Suggestions = new List<UpdateRegisterCheckSuggestionDetail>() { new UpdateRegisterCheckSuggestionDetail()
{
Suggestion = "dddd"
},
new UpdateRegisterCheckSuggestionDetail()
{
Suggestion = "sssss"
}
}
};
await _appService.UpdateCheckResult(updateCheckResultDto);
await unitOfWork.CompleteAsync();
}
}
}
}
Loading…
Cancel
Save