Browse Source

PatientRegisterAppService

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
b4fb5cc296
  1. 27
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  2. 2
      src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs
  3. 17
      src/Shentun.Peis.Domain/RegisterCheckAsbitems/CreateRegisterCheckAsbitemEntity.cs
  4. 57
      src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs
  5. 39
      src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
  6. 113
      test/Shentun.Peis.Application.Tests/PatientRegisterAppServiceTest.cs
  7. 96
      test/Shentun.Peis.Domain.Tests/RegisterCheckAsbitemManagerTest.cs

27
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -64,7 +64,7 @@ namespace Shentun.Peis.PatientRegisters
private readonly IRepository<MedicalType, Guid> _medicalTypeRepository; private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
private readonly IRepository<SexHormoneTerm, Guid> _sexHormoneTermRepository; private readonly IRepository<SexHormoneTerm, Guid> _sexHormoneTermRepository;
private readonly IRepository<PayMode> _payModeRepository; private readonly IRepository<PayMode> _payModeRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository; private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository;
@ -131,7 +131,7 @@ namespace Shentun.Peis.PatientRegisters
this._medicalTypeRepository = medicalTypeRepository; this._medicalTypeRepository = medicalTypeRepository;
this._sexHormoneTermRepository = sexHormoneTermRepository; this._sexHormoneTermRepository = sexHormoneTermRepository;
this._payModeRepository = payModeRepository; this._payModeRepository = payModeRepository;
this._registerAsbitemRepository = registerAsbitemRepository;
this._registerCheckAsbitemRepository = registerAsbitemRepository;
this._registerCheckRepository = registerCheckRepository; this._registerCheckRepository = registerCheckRepository;
this._registerCheckItemRepository = registerCheckItemRepository; this._registerCheckItemRepository = registerCheckItemRepository;
this._registerCheckPictureRepository = registerCheckPictureRepository; this._registerCheckPictureRepository = registerCheckPictureRepository;
@ -576,11 +576,13 @@ namespace Shentun.Peis.PatientRegisters
var createEntity = ObjectMapper.Map<CreatePatientRegisterDto, PatientRegister>(input); var createEntity = ObjectMapper.Map<CreatePatientRegisterDto, PatientRegister>(input);
var createPatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input); var createPatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input);
var registerAsbitems = ObjectMapper.Map<List<CreateRegisterCheckAsbitemDto>, List<RegisterCheckAsbitem>>(input.RegisterAsbitems); var registerAsbitems = ObjectMapper.Map<List<CreateRegisterCheckAsbitemDto>, List<RegisterCheckAsbitem>>(input.RegisterAsbitems);
createPatientEntity.DisplayName = input.PatientName;
//创建人员信息 //创建人员信息
Patient patient = null; Patient patient = null;
if (createEntity.PatientId == Guid.Empty) if (createEntity.PatientId == Guid.Empty)
{ {
patient = await _patientManager.CreateAsync(createPatientEntity); patient = await _patientManager.CreateAsync(createPatientEntity);
await _patientrepository.InsertAsync(patient);
} }
else else
{ {
@ -591,8 +593,11 @@ namespace Shentun.Peis.PatientRegisters
createEntity.PatientId = patient.Id; createEntity.PatientId = patient.Id;
var entity = await _manager.CreateAsync(createEntity); var entity = await _manager.CreateAsync(createEntity);
//创建组合项目登记信息 //创建组合项目登记信息
var createRegisterAsbitems = await _registerAsbitemManager.CreateManyAsync(entity, registerAsbitems);
var createRegisterAsbitem = await _registerAsbitemManager.CreateManyAsync(entity, registerAsbitems);
await _repository.InsertAsync(entity);
await _registerCheckRepository.InsertManyAsync(createRegisterAsbitem.RegisterChecks);
await _registerCheckAsbitemRepository.InsertManyAsync(createRegisterAsbitem.RegisterCheckAsbitems);
await _registerCheckItemRepository.InsertManyAsync(createRegisterAsbitem.RegisterCheckItems);
msg = await GetPatientRegisterOrNo(entity.Id); msg = await GetPatientRegisterOrNo(entity.Id);
return msg; return msg;
} }
@ -748,7 +753,7 @@ namespace Shentun.Peis.PatientRegisters
if (input.Asbitems.Any()) if (input.Asbitems.Any())
{ {
//组合项目 //组合项目
var query_asbitem = from a in await _registerAsbitemRepository.GetQueryableAsync()
var query_asbitem = from a in await _registerCheckAsbitemRepository.GetQueryableAsync()
where input.Asbitems.Contains(a.AsbitemId) where input.Asbitems.Contains(a.AsbitemId)
select a.PatientRegisterId; select a.PatientRegisterId;
sumquery = sumquery.Where(m => query_asbitem.Contains(m.a.Id)); sumquery = sumquery.Where(m => query_asbitem.Contains(m.a.Id));
@ -757,7 +762,7 @@ namespace Shentun.Peis.PatientRegisters
if (input.IsPicture == 'Y') if (input.IsPicture == 'Y')
{ {
//查询有图数据 //查询有图数据
var query_picture = from a in await _registerAsbitemRepository.GetQueryableAsync()
var query_picture = from a in await _registerCheckAsbitemRepository.GetQueryableAsync()
join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId
select a.PatientRegisterId; select a.PatientRegisterId;
sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id)); sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id));
@ -2124,7 +2129,7 @@ namespace Shentun.Peis.PatientRegisters
} }
} }
await _registerAsbitemRepository.DeleteManyAsync(DeleteList);
await _registerCheckAsbitemRepository.DeleteManyAsync(DeleteList);
//遍历查询保留的项目是否存在新分组,如果存在,修改新分组的ID,然后list里面剔除项目 //遍历查询保留的项目是否存在新分组,如果存在,修改新分组的ID,然后list里面剔除项目
ReserveList.ForEach(reserveitem => ReserveList.ForEach(reserveitem =>
@ -2143,7 +2148,7 @@ namespace Shentun.Peis.PatientRegisters
} }
}); });
await _registerAsbitemRepository.UpdateManyAsync(ReserveList); //修改保留项目的分组
await _registerCheckAsbitemRepository.UpdateManyAsync(ReserveList); //修改保留项目的分组
} }
if (newGroupAsbitemList.Any()) if (newGroupAsbitemList.Any())
@ -2369,20 +2374,20 @@ namespace Shentun.Peis.PatientRegisters
public async Task<GetPatientRegisterItemStatusDto> GetPatientRegisterItemStatusAsync(Guid PatientRegisterId) public async Task<GetPatientRegisterItemStatusDto> GetPatientRegisterItemStatusAsync(Guid PatientRegisterId)
{ {
//未检组合项目 //未检组合项目
var UnCheckedAsbitem = (await _registerAsbitemRepository.GetDbSetAsync())
var UnCheckedAsbitem = (await _registerCheckAsbitemRepository.GetDbSetAsync())
.Include(x => x.Asbitem) .Include(x => x.Asbitem)
.Include(x => x.RegisterCheck) .Include(x => x.RegisterCheck)
.Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList(); .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//弃检检组合项目 //弃检检组合项目
var GiveUpAsbitem = (await _registerAsbitemRepository.GetDbSetAsync())
var GiveUpAsbitem = (await _registerCheckAsbitemRepository.GetDbSetAsync())
.Include(x => x.Asbitem) .Include(x => x.Asbitem)
.Include(x => x.RegisterCheck) .Include(x => x.RegisterCheck)
.Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList(); .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//组合项目已检,项目无明细的项目 //组合项目已检,项目无明细的项目
var registerAsbItemQueryable = await _registerAsbitemRepository.GetQueryableAsync();
var registerAsbItemQueryable = await _registerCheckAsbitemRepository.GetQueryableAsync();
var registerCheckQueryable = await _registerCheckRepository.GetQueryableAsync(); var registerCheckQueryable = await _registerCheckRepository.GetQueryableAsync();
var registerCheckItemQueryable = await _registerCheckItemRepository.GetQueryableAsync(); var registerCheckItemQueryable = await _registerCheckItemRepository.GetQueryableAsync();
var itemQueryable = await _itemRepository.GetQueryableAsync(); var itemQueryable = await _itemRepository.GetQueryableAsync();

2
src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs

@ -842,7 +842,7 @@ namespace Shentun.Peis.PatientRegisters
}; };
if (tailLen < 4) if (tailLen < 4)
{ {
throw new UserFriendlyException("人员条码号尾号长度必须大于4");
throw new UserFriendlyException("人员条码号尾号长度必须大于等于4");
} }

17
src/Shentun.Peis.Domain/RegisterCheckAsbitems/CreateRegisterCheckAsbitemEntity.cs

@ -0,0 +1,17 @@
using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.RegisterCheckAsbitems
{
public class CreateRegisterCheckAsbitemEntity
{
public List<RegisterCheckItem> RegisterCheckItems { get; set; }
public List<RegisterCheckAsbitem> RegisterCheckAsbitems { get; set; }
public List<RegisterCheck> RegisterChecks { get; set; }
}
}

57
src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs

@ -2,6 +2,7 @@
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.ReferenceRanges; using Shentun.Peis.ReferenceRanges;
using Shentun.Peis.RegisterCheckAsbitems;
using Shentun.Peis.RegisterCheckItems; using Shentun.Peis.RegisterCheckItems;
using Shentun.Peis.RegisterChecks; using Shentun.Peis.RegisterChecks;
using System; using System;
@ -22,7 +23,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// </summary> /// </summary>
public class RegisterCheckAsbitemManager : DomainService public class RegisterCheckAsbitemManager : DomainService
{ {
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<AsbitemDetail> _asbitemDetailRepository; private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
@ -35,7 +36,7 @@ namespace Shentun.Peis.RegisterAsbitems
private readonly RegisterCheckManager _registerCheckManager; private readonly RegisterCheckManager _registerCheckManager;
private readonly RegisterCheckItemManager _registerCheckItemManager; private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
public RegisterCheckAsbitemManager(IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
public RegisterCheckAsbitemManager(IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<AsbitemDetail> asbitemDetailRepository, IRepository<AsbitemDetail> asbitemDetailRepository,
@ -50,7 +51,7 @@ namespace Shentun.Peis.RegisterAsbitems
CacheService cacheService CacheService cacheService
) )
{ {
this._registerAsbitemRepository = registerAsbitemRepository;
this._registerCheckAsbitemRepository = registerCheckAsbitemRepository;
this._registerCheckRepository = registerCheckRepository; this._registerCheckRepository = registerCheckRepository;
this._registerCheckItemRepository = registerCheckItemRepository; this._registerCheckItemRepository = registerCheckItemRepository;
this._asbitemDetailRepository = asbitemDetailRepository; this._asbitemDetailRepository = asbitemDetailRepository;
@ -78,7 +79,7 @@ namespace Shentun.Peis.RegisterAsbitems
public async Task<RegisterCheckAsbitem> CreateAsync(Guid OrganizationUnitId, RegisterCheckAsbitem ent, bool IsAutoMerger) public async Task<RegisterCheckAsbitem> CreateAsync(Guid OrganizationUnitId, RegisterCheckAsbitem ent, bool IsAutoMerger)
{ {
var IsregisterAsbitemEnt = await _registerAsbitemRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == ent.PatientRegisterId && m.AsbitemId == ent.AsbitemId);
var IsregisterAsbitemEnt = await _registerCheckAsbitemRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == ent.PatientRegisterId && m.AsbitemId == ent.AsbitemId);
if (IsregisterAsbitemEnt == null) if (IsregisterAsbitemEnt == null)
{ {
@ -115,7 +116,7 @@ namespace Shentun.Peis.RegisterAsbitems
GroupPackageId = ent.GroupPackageId, GroupPackageId = ent.GroupPackageId,
RegisterCheckId = registerCheckEnt_Res.Id RegisterCheckId = registerCheckEnt_Res.Id
}; };
var registerAsbitemEnt_Res = await _registerAsbitemRepository.InsertAsync(entity, true);
var registerAsbitemEnt_Res = await _registerCheckAsbitemRepository.InsertAsync(entity, true);
if (registerCheckEnt_Res != null) if (registerCheckEnt_Res != null)
@ -193,7 +194,7 @@ namespace Shentun.Peis.RegisterAsbitems
{ {
//可以合并 //可以合并
//查询需要合并的数据 //查询需要合并的数据
var mergerRegisterAsbitemList = (await _registerAsbitemRepository.GetDbSetAsync()).Include(x => x.Asbitem).Include(x => x.Asbitem.ItemType)
var mergerRegisterAsbitemList = (await _registerCheckAsbitemRepository.GetDbSetAsync()).Include(x => x.Asbitem).Include(x => x.Asbitem.ItemType)
.Where(m => m.PatientRegisterId == ent.PatientRegisterId .Where(m => m.PatientRegisterId == ent.PatientRegisterId
&& m.Asbitem.IsItemResultMerger == 'Y' && m.Asbitem.IsItemResultMerger == 'Y'
&& m.Asbitem.ItemType.IsMergeAsbitem == 'Y' && m.Asbitem.ItemType.IsMergeAsbitem == 'Y'
@ -223,7 +224,7 @@ namespace Shentun.Peis.RegisterAsbitems
} }
public async Task<List<RegisterCheckAsbitem>> CreateManyAsync(PatientRegister patientRegister, List<RegisterCheckAsbitem> registerAsbitems)
public async Task<CreateRegisterCheckAsbitemEntity> CreateManyAsync(PatientRegister patientRegister, List<RegisterCheckAsbitem> registerAsbitems)
{ {
if (patientRegister == null) if (patientRegister == null)
{ {
@ -275,7 +276,7 @@ namespace Shentun.Peis.RegisterAsbitems
var newRegisterAsbitem = new RegisterCheckAsbitem(GuidGenerator.Create()) var newRegisterAsbitem = new RegisterCheckAsbitem(GuidGenerator.Create())
{ {
PatientRegisterId = patientRegister.Id, PatientRegisterId = patientRegister.Id,
AsbitemId = registerAsbitem.Id,
AsbitemId = registerAsbitem.AsbitemId,
Amount = registerAsbitem.Amount, Amount = registerAsbitem.Amount,
StandardPrice = registerAsbitem.StandardPrice, StandardPrice = registerAsbitem.StandardPrice,
ChargePrice = registerAsbitem.ChargePrice, ChargePrice = registerAsbitem.ChargePrice,
@ -296,13 +297,16 @@ namespace Shentun.Peis.RegisterAsbitems
{ {
registerCheck = new RegisterCheck(GuidGenerator.Create()) registerCheck = new RegisterCheck(GuidGenerator.Create())
{ {
PatientRegisterId = patientRegister.Id,
IsLock = 'N', IsLock = 'N',
CompleteFlag = RegisterCheckCompleteFlag.UnChecked, CompleteFlag = RegisterCheckCompleteFlag.UnChecked,
CriticalValueFlag = '0', CriticalValueFlag = '0',
CriticalValueProcessFlag = '0', CriticalValueProcessFlag = '0',
IsAudit = 'N'
IsAudit = 'N',
CheckRequestNo = await _registerCheckManager.CreateCheckRequestNo(patientRegister.MedicalCenterId)
}; };
registerCheckId = registerCheck.Id; registerCheckId = registerCheck.Id;
newRegisterAsbitem.RegisterCheckId = registerCheckId;
registerChecks.Add(registerCheck); registerChecks.Add(registerCheck);
} }
registerCheckIdValues[itemType.Id] = registerCheckId; registerCheckIdValues[itemType.Id] = registerCheckId;
@ -325,8 +329,25 @@ namespace Shentun.Peis.RegisterAsbitems
} }
} }
return createRegisterAsbitems;
var createRegisterCheckAsbitemEntity = new CreateRegisterCheckAsbitemEntity()
{
RegisterChecks = registerChecks,
RegisterCheckAsbitems = createRegisterAsbitems,
RegisterCheckItems = registerCheckItems
};
if(createRegisterCheckAsbitemEntity.RegisterChecks.Count == 0)
{
throw new UserFriendlyException("没有生成检查单");
}
if (createRegisterCheckAsbitemEntity.RegisterCheckAsbitems.Count == 0)
{
throw new UserFriendlyException("没有生成登记组合项目");
}
if (createRegisterCheckAsbitemEntity.RegisterCheckItems.Count == 0)
{
throw new UserFriendlyException("没有生成登记明细项目");
}
return createRegisterCheckAsbitemEntity;
} }
/// <summary> /// <summary>
/// 删除数据 判断条件(1.只能删除未收费的 2.已完成体检的不能删除) /// 删除数据 判断条件(1.只能删除未收费的 2.已完成体检的不能删除)
@ -335,7 +356,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// <returns></returns> /// <returns></returns>
public async Task DeleteAsync(Guid RegisterAsbitemId) public async Task DeleteAsync(Guid RegisterAsbitemId)
{ {
var registerAsbitemEnt = await _registerAsbitemRepository.GetAsync(RegisterAsbitemId);
var registerAsbitemEnt = await _registerCheckAsbitemRepository.GetAsync(RegisterAsbitemId);
if (registerAsbitemEnt == null) if (registerAsbitemEnt == null)
throw new UserFriendlyException($"数据有误"); throw new UserFriendlyException($"数据有误");
if (registerAsbitemEnt.IsCharge == 'Y') if (registerAsbitemEnt.IsCharge == 'Y')
@ -344,7 +365,7 @@ namespace Shentun.Peis.RegisterAsbitems
if (registerCheckEnt != null && registerCheckEnt.CompleteFlag == RegisterCheckCompleteFlag.Checked) if (registerCheckEnt != null && registerCheckEnt.CompleteFlag == RegisterCheckCompleteFlag.Checked)
throw new UserFriendlyException($"当前体检项目已完成,不能删除"); throw new UserFriendlyException($"当前体检项目已完成,不能删除");
await _registerAsbitemRepository.DeleteAsync(registerAsbitemEnt);
await _registerCheckAsbitemRepository.DeleteAsync(registerAsbitemEnt);
} }
@ -456,7 +477,7 @@ namespace Shentun.Peis.RegisterAsbitems
{ {
//原有项目 //原有项目
var registerAsbitemList = await _registerAsbitemRepository.GetListAsync(m => RegisterAsbitemIds.Contains(m.Id));
var registerAsbitemList = await _registerCheckAsbitemRepository.GetListAsync(m => RegisterAsbitemIds.Contains(m.Id));
//待删除RegisterCheck //待删除RegisterCheck
List<Guid> RegisterCheckIds = registerAsbitemList.GroupBy(g => g.RegisterCheckId.Value).Select(s => s.Key).ToList(); List<Guid> RegisterCheckIds = registerAsbitemList.GroupBy(g => g.RegisterCheckId.Value).Select(s => s.Key).ToList();
@ -566,7 +587,7 @@ namespace Shentun.Peis.RegisterAsbitems
{ {
//原有项目 //原有项目
var registerAsbitemList = await _registerAsbitemRepository.GetListAsync(m => RegisterAsbitemIds.Contains(m.Id));
var registerAsbitemList = await _registerCheckAsbitemRepository.GetListAsync(m => RegisterAsbitemIds.Contains(m.Id));
//待删除RegisterCheck //待删除RegisterCheck
List<Guid> RegisterCheckIds = new List<Guid> { RegisterCheckId }; List<Guid> RegisterCheckIds = new List<Guid> { RegisterCheckId };
@ -662,7 +683,7 @@ namespace Shentun.Peis.RegisterAsbitems
#endregion #endregion
//更新RegisterAsbitem表RegisterCheckId //更新RegisterAsbitem表RegisterCheckId
await _registerAsbitemRepository.UpdateManyAsync(registerAsbitemList);
await _registerCheckAsbitemRepository.UpdateManyAsync(registerAsbitemList);
} }
@ -674,7 +695,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// <exception cref="UserFriendlyException"></exception> /// <exception cref="UserFriendlyException"></exception>
public async Task CheckIsDelete(Guid RegisterAsbitemId) public async Task CheckIsDelete(Guid RegisterAsbitemId)
{ {
var registerAsbitemEnt = await _registerAsbitemRepository.GetAsync(RegisterAsbitemId);
var registerAsbitemEnt = await _registerCheckAsbitemRepository.GetAsync(RegisterAsbitemId);
if (registerAsbitemEnt == null) if (registerAsbitemEnt == null)
throw new UserFriendlyException($"数据有误"); throw new UserFriendlyException($"数据有误");
if (registerAsbitemEnt.IsCharge == 'Y') if (registerAsbitemEnt.IsCharge == 'Y')
@ -694,7 +715,7 @@ namespace Shentun.Peis.RegisterAsbitems
public async Task CheckIsItemType(List<Guid> RegisterAsbitemIds) public async Task CheckIsItemType(List<Guid> RegisterAsbitemIds)
{ {
var query = from a in await _registerAsbitemRepository.GetQueryableAsync()
var query = from a in await _registerCheckAsbitemRepository.GetQueryableAsync()
join b in await _asbitemRepository.GetQueryableAsync() on a.AsbitemId equals b.Id join b in await _asbitemRepository.GetQueryableAsync() on a.AsbitemId equals b.Id
where RegisterAsbitemIds.Contains(a.Id) where RegisterAsbitemIds.Contains(a.Id)
group b by b.ItemTypeId; group b by b.ItemTypeId;

39
src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs

@ -335,7 +335,7 @@ namespace Shentun.Peis.RegisterChecks
var check_request_no_rule_coding = "0"; // 模式(0 日期+尾号 1.顺序递增) var check_request_no_rule_coding = "0"; // 模式(0 日期+尾号 1.顺序递增)
var check_request_no_rule_tail_len = "4"; //尾号长度 var check_request_no_rule_tail_len = "4"; //尾号长度
var check_request_no_rule_prefix_len = "T"; //前缀
var check_request_no_rule_prefix = ""; //前缀
if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").Count() > 0) if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").Count() > 0)
@ -343,34 +343,53 @@ namespace Shentun.Peis.RegisterChecks
//获取体检中心配置 //获取体检中心配置
check_request_no_rule_coding = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault().ParmValue; check_request_no_rule_coding = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault().ParmValue;
} }
else
if(string.IsNullOrWhiteSpace(check_request_no_rule_coding))
{ {
//获取全局配置 //获取全局配置
check_request_no_rule_coding = spv_global.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault().ParmValue; check_request_no_rule_coding = spv_global.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault().ParmValue;
} }
if (string.IsNullOrWhiteSpace(check_request_no_rule_coding))
{
throw new UserFriendlyException("检查申请单号编码方式不能为空");
}
if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").Count() > 0) if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").Count() > 0)
{ {
//获取体检中心配置 //获取体检中心配置
check_request_no_rule_tail_len = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault().ParmValue; check_request_no_rule_tail_len = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault().ParmValue;
} }
else
if (string.IsNullOrWhiteSpace(check_request_no_rule_tail_len))
{ {
//获取全局配置 //获取全局配置
check_request_no_rule_tail_len = spv_global.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault().ParmValue; check_request_no_rule_tail_len = spv_global.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault().ParmValue;
} }
if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix_len").Count() > 0)
if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix").Count() > 0)
{ {
//获取体检中心配置 //获取体检中心配置
check_request_no_rule_prefix_len = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix_len").FirstOrDefault().ParmValue;
check_request_no_rule_prefix = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix").FirstOrDefault().ParmValue;
} }
else
if (string.IsNullOrWhiteSpace(check_request_no_rule_prefix))
{ {
//获取全局配置 //获取全局配置
check_request_no_rule_prefix_len = spv_global.Where(m => m.SysParmId == "check_request_no_rule_prefix_len").FirstOrDefault().ParmValue;
check_request_no_rule_prefix = spv_global.Where(m => m.SysParmId == "check_request_no_rule_prefix").FirstOrDefault().ParmValue;
} }
if (string.IsNullOrWhiteSpace(check_request_no_rule_tail_len))
{
throw new UserFriendlyException("检查申请单号尾号长度不能为空");
}
int tailLen;
if (!int.TryParse(check_request_no_rule_tail_len, out tailLen))
{
throw new UserFriendlyException("检查申请单号尾号长度必须是数字");
};
if (tailLen < 4)
{
throw new UserFriendlyException("检查申请单号尾号长度必须大于等于4");
}
var primarykeyBuilderEnt = await _primarykeyBuilderRepository.FirstOrDefaultAsync(f => f.PrimarykeyBuilderId == "check_request_no"); var primarykeyBuilderEnt = await _primarykeyBuilderRepository.FirstOrDefaultAsync(f => f.PrimarykeyBuilderId == "check_request_no");
@ -398,7 +417,7 @@ namespace Shentun.Peis.RegisterChecks
} }
primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号 primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号
CheckRequestNo = check_request_no_rule_prefix_len + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt); await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt);
} }
@ -406,7 +425,7 @@ namespace Shentun.Peis.RegisterChecks
{ {
//初始写入 //初始写入
CheckRequestNo = check_request_no_rule_prefix_len + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
primarykeyBuilderEnt = new PrimarykeyBuilder primarykeyBuilderEnt = new PrimarykeyBuilder
{ {
@ -446,7 +465,7 @@ namespace Shentun.Peis.RegisterChecks
} }
CheckRequestNo = check_request_no_rule_prefix_len + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
CheckRequestNo = check_request_no_rule_prefix + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
#endregion #endregion
} }

113
test/Shentun.Peis.Application.Tests/PatientRegisterAppServiceTest.cs

@ -0,0 +1,113 @@
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.RegisterAsbitems;
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 PatientRegisterAppServiceTest : PeisApplicationTestBase
{
private readonly IRepository<PatientRegister> _repository;
private readonly PatientRegisterAppService _appService;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public PatientRegisterAppServiceTest(ITestOutputHelper testOutputHelper)
{
_output = testOutputHelper;
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
_repository = GetRequiredService<IRepository<PatientRegister>>();
_appService = GetRequiredService<PatientRegisterAppService>();
}
[Fact]
public async Task CreatePatientRegisterAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
var entity = new CreatePatientRegisterDto()
{
MedicalCenterId = new Guid("68f2d834-2bf0-4978-ad54-d2133c12a333"),
PatientId = new Guid("3a119be6-d9aa-2e13-a764-0b363c60169d"),
CustomerOrgId = new Guid("00000000-0000-0000-0000-000000000001"),
CustomerOrgRegisterId = new Guid("00000000-0000-0000-0000-000000000002"),
PatientName = "test",
SexId = SexFlag.UnKnown,
BirthDate = null,
Age = 38,
JobCardNo = "jobCardNo",
MedicalCardNo = "MedicalCardNo",
MaritalStatusId = MaritalStatusFlag.Married,
MedicalTypeId = new Guid("3a0c5093-6dbf-d29b-cfbc-b1f742ee59d3"),
PersonnelTypeId = new Guid("3a0c5099-a5f3-e41a-dfab-caeae79e0dfe"),
JobPost = "JobPost",
JobTitle = "JobTitle",
Salesman = "Salesman",
SexHormoneTermId = new Guid("3a0d38cf-8b3c-95db-1a69-5119f28dc468"),
MedicalConclusionId = new Guid("3a0c50fe-cacf-d3c8-8c3c-9d3495d8bd76"),
IsUpload = 'N',
CompleteFlag = PatientRegisterCompleteFlag.PreRegistration,
IsMedicalStart = 'N',
MedicalStartDate = null,
IsRecoverGuide = 'N',
SummaryDate = null,
IsAudit = 'N',
IsLock = 'N',
IsNameHide = 'N',
IsPhoneFollow = 'N',
IsVip = 'N',
Remark = "Remark"
};
entity.RegisterAsbitems.Add(new CreateRegisterCheckAsbitemDto()
{
AsbitemId = new Guid("3a0c55fa-63b9-1510-3e81-20750c496d44"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
entity.RegisterAsbitems.Add(new CreateRegisterCheckAsbitemDto()
{
AsbitemId = new Guid("3a0c5600-ae78-9ed4-e3c1-993ef41d3c51"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
entity.RegisterAsbitems.Add(new CreateRegisterCheckAsbitemDto()
{
AsbitemId = new Guid("3a0c5635-b904-dc9b-593e-93d0dd228576"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
entity.RegisterAsbitems.Add(new CreateRegisterCheckAsbitemDto()
{
AsbitemId = new Guid("3a11abbc-b19e-3549-e639-acc0e9aa6fbc"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
var newEntity = await _appService.CreatePatientRegisterAsync(entity);
await unitOfWork.CompleteAsync();
}
}
}
}

96
test/Shentun.Peis.Domain.Tests/RegisterCheckAsbitemManagerTest.cs

@ -0,0 +1,96 @@
using Shentun.Peis.Enums;
using Shentun.Peis.GuidTypes;
using Shentun.Peis.Models;
using Shentun.Peis.RegisterAsbitems;
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 RegisterCheckAsbitemManagerTest : PeisDomainTestBase
{
private readonly IRepository<RegisterCheckAsbitem, Guid> _repository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly RegisterCheckAsbitemManager _manager;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public RegisterCheckAsbitemManagerTest(ITestOutputHelper output)
{
_output = output;
_repository = GetRequiredService<IRepository<RegisterCheckAsbitem, Guid>>();
_patientRegisterRepository = GetRequiredService<IRepository<PatientRegister, Guid>>();
_registerCheckRepository = GetRequiredService<IRepository<RegisterCheck, Guid>>();
_registerCheckItemRepository = GetRequiredService<IRepository<RegisterCheckItem>>();
_manager = GetRequiredService<RegisterCheckAsbitemManager>();
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
}
[Fact]
public async Task CreateManyAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
var patientRegister = await _patientRegisterRepository.GetAsync(new Guid("3a11a1ad-4def-555b-0f6f-dbbadd652d9f"));
List<RegisterCheckAsbitem> registerAsbitems = new List<RegisterCheckAsbitem>();
registerAsbitems.Add(new RegisterCheckAsbitem()
{
AsbitemId = new Guid("3a0c55fa-63b9-1510-3e81-20750c496d44"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
registerAsbitems.Add(new RegisterCheckAsbitem()
{
AsbitemId = new Guid("3a0c5600-ae78-9ed4-e3c1-993ef41d3c51"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
registerAsbitems.Add(new RegisterCheckAsbitem()
{
AsbitemId = new Guid("3a0c5635-b904-dc9b-593e-93d0dd228576"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
registerAsbitems.Add(new RegisterCheckAsbitem()
{
AsbitemId = new Guid("3a11abbc-b19e-3549-e639-acc0e9aa6fbc"),
StandardPrice = 10,
ChargePrice = 10,
Amount = 1,
PayTypeFlag = PayTypeFlag.PersonPay,
IsCharge = 'N'
});
var newEntity = await _manager.CreateManyAsync(patientRegister, registerAsbitems);
await _registerCheckRepository.InsertManyAsync(newEntity.RegisterChecks);
await _repository.InsertManyAsync(newEntity.RegisterCheckAsbitems);
await _registerCheckItemRepository.InsertManyAsync(newEntity.RegisterCheckItems);
await unitOfWork.CompleteAsync();
}
}
}
}
Loading…
Cancel
Save