Browse Source

体检报告

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
b9e17fc8f5
  1. 36
      src/Shentun.Peis.Application.Contracts/PrintReports/MedicalReportDto.cs
  2. 237
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  3. 41
      test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs
  4. 4
      test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

36
src/Shentun.Peis.Application.Contracts/PrintReports/MedicalReportDto.cs

@ -15,6 +15,8 @@ namespace Shentun.Peis.PrintReports
public class MedicalReportDto public class MedicalReportDto
{ {
#region 基础信息 #region 基础信息
//人员登记ID
public Guid PatientRegisterId { get; set; }
/// <summary> /// <summary>
/// 是个人还是单位体检,Y-是个人,N-是单位 /// 是个人还是单位体检,Y-是个人,N-是单位
/// </summary> /// </summary>
@ -138,15 +140,15 @@ namespace Shentun.Peis.PrintReports
/// <summary> /// <summary>
/// 综述 /// 综述
/// </summary> /// </summary>
public List<MedicalReportSumSummaryDto> SumSummarys { get; set; }
public List<MedicalReportSumSummaryDto> SumSummarys { get; set; } = new List<MedicalReportSumSummaryDto>();
/// <summary> /// <summary>
/// 建议 /// 建议
/// </summary> /// </summary>
public List<MedicalReportSumSuggestionDto> SumSuggestions { get; set; }
public List<MedicalReportSumSuggestionDto> SumSuggestions { get; set; } = new List<MedicalReportSumSuggestionDto>();
/// <summary> /// <summary>
/// 检查组合项目结果 /// 检查组合项目结果
/// </summary> /// </summary>
public List<MedicalReportRegisterCheckDto> RegisterChecks { get; set; }
public List<MedicalReportRegisterCheckDto> RegisterChecks { get; set; } = new List<MedicalReportRegisterCheckDto>();
@ -172,7 +174,7 @@ namespace Shentun.Peis.PrintReports
/// <summary> /// <summary>
/// 内容列表 /// 内容列表
/// </summary> /// </summary>
public List<MedicalReportSumSummaryContentDto> SummaryContents { get; set; }
public List<MedicalReportSumSummaryContentDto> SummaryContents { get; set; } = new List<MedicalReportSumSummaryContentDto>();
} }
/// <summary> /// <summary>
/// 综述内容 /// 综述内容
@ -239,20 +241,10 @@ namespace Shentun.Peis.PrintReports
public class MedicalReportRegisterCheckDto public class MedicalReportRegisterCheckDto
{ {
/// <summary> /// <summary>
/// 体检报告类别ID
/// 项目类别ID
/// </summary> /// </summary>
public char MedicalReportTypeId { get; set; }
///// <summary>
///// 体检报告类别名称
///// </summary>
//public string MedicalReportTypeName { get; set; }
public Guid ItemTypeId { get; set; }
public string TopItemTypeId { get; set; }
public string TopItemTypeName { get; set; }
/// <summary>
/// 项目类别名称
/// </summary>
public string ItemTypeName { get; set; }
/// <summary> /// <summary>
/// 组合项目名称,如果有多个组合项目用逗号隔开 /// 组合项目名称,如果有多个组合项目用逗号隔开
/// </summary> /// </summary>
@ -268,7 +260,7 @@ namespace Shentun.Peis.PrintReports
/// 检查日期 /// 检查日期
/// </summary> /// </summary>
public DateTime CheckDate { get; set; } public DateTime CheckDate { get; set; }
public List<MedicalReportMedicalReportTypeDto> MedicalReportTypes { get; set; } = new List<MedicalReportMedicalReportTypeDto>();
/// <summary> /// <summary>
/// 项目类别下的组合项目列表 /// 项目类别下的组合项目列表
/// </summary> /// </summary>
@ -311,7 +303,7 @@ namespace Shentun.Peis.PrintReports
/// <summary> /// <summary>
/// 项目单位 /// 项目单位
/// </summary> /// </summary>
public string UnitName { get; set; }
public string Unit { get; set; }
/// <summary> /// <summary>
/// 数据字体颜色 /// 数据字体颜色
@ -375,6 +367,10 @@ namespace Shentun.Peis.PrintReports
/// </summary> /// </summary>
public class MedicalReportItemTypeDto public class MedicalReportItemTypeDto
{ {
/// <summary>
/// 体检报告类别
/// </summary>
public char MedicalReportTypeId { get; set; }
/// <summary> /// <summary>
/// 项目类别编号 /// 项目类别编号
/// </summary> /// </summary>
@ -382,13 +378,11 @@ namespace Shentun.Peis.PrintReports
/// <summary> /// <summary>
/// 项目类别多级编码 /// 项目类别多级编码
/// </summary> /// </summary>
public string PathCode { get; set; }
public string ItemTypePathCode { get; set; }
/// <summary> /// <summary>
/// 项目类别名 /// 项目类别名
/// </summary> /// </summary>
public string ItemTypeName { get; set; } public string ItemTypeName { get; set; }
public char IsTop { get; set; }
/// <summary> /// <summary>
/// 显示顺序 /// 显示顺序
/// </summary> /// </summary>

237
src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs

@ -36,6 +36,7 @@ namespace Shentun.Peis.PrintReports
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<RegisterCheckSummary> _registerCheckSummaryRepository;
private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository; private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<Item, Guid> _itemRepository; private readonly IRepository<Item, Guid> _itemRepository;
@ -65,6 +66,7 @@ namespace Shentun.Peis.PrintReports
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<RegisterCheckSummary> registerCheckSummaryRepository,
IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository, IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository,
IRepository<Asbitem, Guid> asbitemRepository, IRepository<Asbitem, Guid> asbitemRepository,
IRepository<Item, Guid> itemRepository, IRepository<Item, Guid> itemRepository,
@ -107,6 +109,7 @@ namespace Shentun.Peis.PrintReports
this._sysParmValueManager = sysParmValueManager; this._sysParmValueManager = sysParmValueManager;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository; _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckItemRepository = registerCheckItemRepository; _registerCheckItemRepository = registerCheckItemRepository;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_registerCheckPictureRepository = registerCheckPictureRepository; _registerCheckPictureRepository = registerCheckPictureRepository;
_asbitemRepository = asbitemRepository; _asbitemRepository = asbitemRepository;
_itemRepository = itemRepository; _itemRepository = itemRepository;
@ -243,15 +246,6 @@ namespace Shentun.Peis.PrintReports
[HttpPost("api/app/printreport/GetMedicalReport")] [HttpPost("api/app/printreport/GetMedicalReport")]
public async Task<MedicalReportDto> GetMedicalReportAsync(PatientRegisterIdInputDto input) public async Task<MedicalReportDto> GetMedicalReportAsync(PatientRegisterIdInputDto input)
{ {
MedicalReportDto medicalReportDto = new MedicalReportDto();
var userlist = await _identityUserRepository.GetListAsync();
var customerOrgList = await _customerOrgRepository.GetListAsync();
var organizationUnitList = await _organizationUnitRepository.GetListAsync();
var sexList = await _sexRegisterRepository.GetListAsync();
var patientRegister = (await _patientRegisterRepository.GetDbSetAsync()) var patientRegister = (await _patientRegisterRepository.GetDbSetAsync())
.Include(x => x.Patient) .Include(x => x.Patient)
@ -260,17 +254,57 @@ namespace Shentun.Peis.PrintReports
{ {
throw new UserFriendlyException("人员登记信息不存在"); throw new UserFriendlyException("人员登记信息不存在");
} }
var medicalReportDto = await GetMedicalReportDto(patientRegister);
//获取综述
medicalReportDto.SumSummarys = await GetMedicalReportSummaryDtos(patientRegister);
//获取建议
medicalReportDto.SumSuggestions = await GetMedicalReportSuggestinoDtos(patientRegister);
//设置明细结果
await SetMedicalReportRegisterChecks(patientRegister, medicalReportDto);
return medicalReportDto;
}
/// <summary>
/// 打印Pacs条码数据
/// </summary>
/// <param name="PatientRegisterId"></param>
/// <returns></returns>
[HttpPost("api/app/printreport/getpacsnoreport")]
public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(Guid PatientRegisterId)
{
return await _checkRequestNoReportRepository.GetPacsNoReportAsync(PatientRegisterId);
}
/// <summary>
/// 打印收费单
/// </summary>
/// <param name="ChargeId">收费主表ID</param>
/// <returns></returns>
[HttpPost("api/app/printreport/getchargereport")]
public async Task<ChargeReportDto> GetChargeReportAsync(Guid ChargeId)
{
return await _chargeReportRepository.GetChargeReportAsync(ChargeId);
}
/// <summary>
/// 获取体检报告人员信息
/// </summary>
/// <param name="patientRegister"></param>
/// <returns></returns>
private async Task<MedicalReportDto> GetMedicalReportDto(PatientRegister patientRegister)
{
#region 系统参数配置 #region 系统参数配置
var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_address");
var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_fax");
var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_telphone");
var medicalCenterAddress = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_address");
var medicalCenterFax = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_fax");
var medicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_telphone");
#endregion #endregion
#region 人员信息 #region 人员信息
medicalReportDto = new MedicalReportDto
var medicalReportDto = new MedicalReportDto
{ {
//个人信息 //个人信息
PatientRegisterId = patientRegister.Id,
IsPersonal = 'N', IsPersonal = 'N',
TopCustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName, TopCustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName, DepartmentName = _cacheService.GetCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName,
@ -293,8 +327,8 @@ namespace Shentun.Peis.PrintReports
AuditDoctorName = _cacheService.GetUserNameAsync(patientRegister.AuditDoctorId).Result, AuditDoctorName = _cacheService.GetUserNameAsync(patientRegister.AuditDoctorId).Result,
AuditDate = patientRegister.AuditDate, AuditDate = patientRegister.AuditDate,
//体检中心信息 //体检中心信息
MedicalCenterTelphone = MedicalCenterTelphone,
MedicalCenterAddress = MedicalCenterAddress,
MedicalCenterTelphone = medicalCenterTelphone,
MedicalCenterAddress = medicalCenterAddress,
MedicalCenterId = patientRegister.MedicalCenterId, MedicalCenterId = patientRegister.MedicalCenterId,
MedicalCenterName = (await _organizationUnitRepository.GetAsync(patientRegister.MedicalCenterId)).DisplayName, MedicalCenterName = (await _organizationUnitRepository.GetAsync(patientRegister.MedicalCenterId)).DisplayName,
}; };
@ -303,20 +337,22 @@ namespace Shentun.Peis.PrintReports
medicalReportDto.IsPersonal = 'Y'; medicalReportDto.IsPersonal = 'Y';
} }
#endregion #endregion
var resultStatusList = (await _resultStatusRepository.GetListAsync());
//获取体检报告类别
medicalReportDto.MedicalReportTypes = await GetMedicalReportTypeList();
//获取项目类别
medicalReportDto.ItemTypes = await GetItemTypeList();
#region 综述
return medicalReportDto;
}
/// <summary>
/// 获取体检报告综述
/// </summary>
/// <param name="patientRegister"></param>
/// <returns></returns>
private async Task<List<MedicalReportSumSummaryDto>> GetMedicalReportSummaryDtos(PatientRegister patientRegister)
{
var sumSummarylist = (await _sumSummaryHeaderRepository.GetDbSetAsync()) var sumSummarylist = (await _sumSummaryHeaderRepository.GetDbSetAsync())
.Include(x => x.SumSummaryContents) .Include(x => x.SumSummaryContents)
.Where(m => m.PatientRegisterId == input.PatientRegisterId).OrderBy(o => o.DisplayOrder).ToList();
.Where(m => m.PatientRegisterId == patientRegister.Id).OrderBy(o => o.DisplayOrder).ToList();
var medicalReportSumSummaryDtos = new List<MedicalReportSumSummaryDto>();
if (sumSummarylist.Any()) if (sumSummarylist.Any())
{ {
medicalReportDto.SumSummarys = sumSummarylist.Select(s => new MedicalReportSumSummaryDto
medicalReportSumSummaryDtos = sumSummarylist.Select(s => new MedicalReportSumSummaryDto
{ {
SummaryTitle = s.SummaryTitle, SummaryTitle = s.SummaryTitle,
SummaryFlag = s.SummaryFlag, SummaryFlag = s.SummaryFlag,
@ -328,18 +364,22 @@ namespace Shentun.Peis.PrintReports
}).OrderBy(o => o.DisplayOrder).ToList() }).OrderBy(o => o.DisplayOrder).ToList()
}).OrderBy(o => o.DisplayOrder).ToList(); }).OrderBy(o => o.DisplayOrder).ToList();
} }
#endregion
#region 建议
return medicalReportSumSummaryDtos;
}
/// <summary>
/// 获取体检报告建议
/// </summary>
/// <param name="patientRegister"></param>
/// <returns></returns>
private async Task<List<MedicalReportSumSuggestionDto>> GetMedicalReportSuggestinoDtos(PatientRegister patientRegister)
{
var sumSuggestionlist = (await _sumSuggestionHeaderRepository.GetDbSetAsync()) var sumSuggestionlist = (await _sumSuggestionHeaderRepository.GetDbSetAsync())
.Include(x => x.SumSuggestionContents) .Include(x => x.SumSuggestionContents)
.Where(m => m.PatientRegisterId == input.PatientRegisterId).OrderBy(o => o.DisplayOrder).ToList();
.Where(m => m.PatientRegisterId == patientRegister.Id).OrderBy(o => o.DisplayOrder).ToList();
var medicalReportSumSuggestionDtos = new List<MedicalReportSumSuggestionDto>();
if (sumSuggestionlist.Any()) if (sumSuggestionlist.Any())
{ {
medicalReportDto.SumSuggestions = sumSuggestionlist.Select(s => new MedicalReportSumSuggestionDto
medicalReportSumSuggestionDtos = sumSuggestionlist.Select(s => new MedicalReportSumSuggestionDto
{ {
SuggestionTitle = s.SuggestionTitle, SuggestionTitle = s.SuggestionTitle,
SuggestionFlag = s.SuggestionFlag, SuggestionFlag = s.SuggestionFlag,
@ -371,12 +411,21 @@ namespace Shentun.Peis.PrintReports
}) })
.OrderBy(o => o.DisplayOrder).ToList(); .OrderBy(o => o.DisplayOrder).ToList();
} }
#endregion
#region 明细结果
var detailedResultsList = new List<DetailedResultsListDto>();
return medicalReportSumSuggestionDtos;
}
/// <summary>
/// 获取体检报告明细结果
/// </summary>
/// <param name="patientRegister"></param>
/// <param name="medicalReportDto"></param>
/// <returns></returns>
private async Task SetMedicalReportRegisterChecks(PatientRegister patientRegister, MedicalReportDto medicalReportDto)
{
var resultStatusList = (await _resultStatusRepository.GetListAsync());
//获取体检报告类别
medicalReportDto.MedicalReportTypes = await GetMedicalReportTypeList();
//获取项目类别
medicalReportDto.ItemTypes = await GetItemTypeList();
var registerChecklist = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() var registerChecklist = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
join registerAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() join registerAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
@ -386,6 +435,9 @@ namespace Shentun.Peis.PrintReports
join registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync() join registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckPicture.RegisterCheckId into registerCheckPictureExist on registerCheck.Id equals registerCheckPicture.RegisterCheckId into registerCheckPictureExist
from registerCheckPictureHaveEmpty in registerCheckPictureExist.DefaultIfEmpty() from registerCheckPictureHaveEmpty in registerCheckPictureExist.DefaultIfEmpty()
join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckSummary.RegisterCheckId into registerCheckSummaryExist
from registerCheckSummaryHaveEmpty in registerCheckSummaryExist.DefaultIfEmpty()
join asbitem in await _asbitemRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerAsbitem.AsbitemId equals asbitem.Id on registerAsbitem.AsbitemId equals asbitem.Id
join item in await _itemRepository.GetQueryableAsync() join item in await _itemRepository.GetQueryableAsync()
@ -394,13 +446,15 @@ namespace Shentun.Peis.PrintReports
on asbitem.ItemTypeId equals itemType.Id on asbitem.ItemTypeId equals itemType.Id
join medicalReportType in await _medicalReportTypeRepository.GetQueryableAsync() join medicalReportType in await _medicalReportTypeRepository.GetQueryableAsync()
on itemType.MedicalReportTypeId equals medicalReportType.Id on itemType.MedicalReportTypeId equals medicalReportType.Id
where (registerCheck.PatientRegisterId == input.PatientRegisterId)
where (registerCheck.PatientRegisterId == patientRegister.Id
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked)
select new select new
{ {
registerCheck, registerCheck,
registerAsbitem, registerAsbitem,
registerCheckItem, registerCheckItem,
registerCheckPictureHaveEmpty, registerCheckPictureHaveEmpty,
registerCheckSummaryHaveEmpty,
asbitem, asbitem,
item, item,
itemType, itemType,
@ -413,17 +467,20 @@ namespace Shentun.Peis.PrintReports
foreach (var registerCheckId in registerCheckIds) foreach (var registerCheckId in registerCheckIds)
{ {
var registerCheckRows = registerChecklist.Where(o => o.registerCheck.Id == registerCheckId).ToList(); var registerCheckRows = registerChecklist.Where(o => o.registerCheck.Id == registerCheckId).ToList();
var registerCheckRow = registerCheckRows.First();
var medicalReportRegisterCheckDto = new MedicalReportRegisterCheckDto() var medicalReportRegisterCheckDto = new MedicalReportRegisterCheckDto()
{ {
MedicalReportTypeId = registerCheckRows.First().medicalReportType.Id,
ItemTypeName = registerCheckRows.First().itemType.DisplayName,
ItemTypeId = registerCheckRow.itemType.Id,
AsbitemNames = string.Join(",", registerCheckRows. AsbitemNames = string.Join(",", registerCheckRows.
GroupBy(o => o.asbitem.Id). GroupBy(o => o.asbitem.Id).
Select(d => d.Select(o=>o.asbitem.DisplayName))),
CheckDate = (DateTime)registerCheckRows.First().registerCheck.CheckDate,
Select(d => d.First().asbitem.DisplayName
)
.ToList()
),
CheckDate = (DateTime)registerCheckRow.registerCheck.CheckDate,
}; };
//检查医生 //检查医生
var checkDoctorId = registerCheckRows.First().registerCheck.CheckDoctorId;
var checkDoctorId = registerCheckRow.registerCheck.CheckDoctorId;
if (!string.IsNullOrWhiteSpace(checkDoctorId)) if (!string.IsNullOrWhiteSpace(checkDoctorId))
{ {
if (Guid.TryParse(checkDoctorId, out var checkDoctorIdGuid)) if (Guid.TryParse(checkDoctorId, out var checkDoctorIdGuid))
@ -436,42 +493,60 @@ namespace Shentun.Peis.PrintReports
} }
} }
//显示顺序 //显示顺序
medicalReportRegisterCheckDto.DisplayOrder = registerCheckRows.First().itemType.DisplayOrder;
medicalReportRegisterCheckDto.DisplayOrder = registerCheckRow.asbitem.DisplayOrder;
//明细结果
foreach (var registerCheckItemRow in registerCheckRows)
{
if (medicalReportRegisterCheckDto.Items.
Where(o => o.ItemId == registerCheckItemRow.registerCheckItem.ItemId).Count() > 0)
{
continue;
} }
#endregion
return medicalReportDto;
var medicalReportCheckItemDto = new MedicalReportCheckItemDto()
{
ItemId = registerCheckItemRow.registerCheckItem.ItemId,
ItemName = registerCheckItemRow.item.DisplayName,
Result = registerCheckItemRow.registerCheckItem.Result,
ReferenceRangeValue = registerCheckItemRow.registerCheckItem.ReferenceRangeValue,
CriticalRangeValue = registerCheckItemRow.registerCheckItem.CriticalRangeValue,
Unit = registerCheckItemRow.registerCheckItem.Unit,
ReportFontColor = resultStatusList.Where(o => o.Id == registerCheckItemRow.registerCheckItem.ResultStatusId).First().ReportFontColor,
ReportBackgroundColor = resultStatusList.Where(o => o.Id == registerCheckItemRow.registerCheckItem.ResultStatusId).First().ReportBackgroundColor,
ReportPrompt = resultStatusList.Where(o => o.Id == registerCheckItemRow.registerCheckItem.ResultStatusId).First().ReportPrompt,
DisplayOrder = registerCheckItemRow.item.DisplayOrder,
};
medicalReportRegisterCheckDto.Items.Add(medicalReportCheckItemDto);
}
//小结
medicalReportRegisterCheckDto.Summarys = registerCheckRows.Select(o => new MedicalReportCheckAsbitemSummaryDto()
{
Summary = o.registerCheckSummaryHaveEmpty.Summary,
DisplayOrder = o.registerCheckSummaryHaveEmpty.DisplayOrder
}).OrderBy(o => o.DisplayOrder).Distinct().ToList();
//图片
var registerCheckPictures = registerCheckRows.Where(o => o.registerCheckPictureHaveEmpty != null &&
o.registerCheckPictureHaveEmpty.IsPrint == 'Y')
.Select(o => new
{
PictureFilename = o.registerCheckPictureHaveEmpty.PictureFilename,
DisplayOrder = o.registerCheckPictureHaveEmpty.DisplayOrder
}).OrderBy(o => o.DisplayOrder).Distinct().ToList();
foreach (var registerCheckPicture in registerCheckPictures)
{
var medicalReportCheckPictureDto = new MedicalReportCheckPictureDto();
medicalReportCheckPictureDto.PictureBase64 =
Shentun.Utilities.FileHelper.ToBase64(registerCheckPicture.PictureFilename);
medicalReportCheckPictureDto.DisplayOrder = registerCheckPicture.DisplayOrder;
medicalReportRegisterCheckDto.Pictures.Add(medicalReportCheckPictureDto);
}
medicalReportDto.RegisterChecks.Add(medicalReportRegisterCheckDto);
} }
/// <summary>
/// 打印Pacs条码数据
/// </summary>
/// <param name="PatientRegisterId"></param>
/// <returns></returns>
[HttpPost("api/app/printreport/getpacsnoreport")]
public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(Guid PatientRegisterId)
{
return await _checkRequestNoReportRepository.GetPacsNoReportAsync(PatientRegisterId);
} }
/// <summary> /// <summary>
/// 打印收费单
/// 获取项目类别
/// </summary> /// </summary>
/// <param name="ChargeId">收费主表ID</param>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/printreport/getchargereport")]
public async Task<ChargeReportDto> GetChargeReportAsync(Guid ChargeId)
{
return await _chargeReportRepository.GetChargeReportAsync(ChargeId);
}
private async Task<List<MedicalReportItemTypeDto>> GetItemTypeList() private async Task<List<MedicalReportItemTypeDto>> GetItemTypeList()
{ {
var itemTypes = await _itemTypeRepository.GetListAsync(); var itemTypes = await _itemTypeRepository.GetListAsync();
@ -480,19 +555,21 @@ namespace Shentun.Peis.PrintReports
{ {
var medicalReportItemTypeDto = new MedicalReportItemTypeDto() var medicalReportItemTypeDto = new MedicalReportItemTypeDto()
{ {
MedicalReportTypeId = itemType.MedicalReportTypeId,
ItemTypeId = itemType.Id, ItemTypeId = itemType.Id,
ItemTypeName = itemType.DisplayName, ItemTypeName = itemType.DisplayName,
PathCode = itemType.PathCode,
ItemTypePathCode = itemType.PathCode,
DisplayOrder = itemType.DisplayOrder, DisplayOrder = itemType.DisplayOrder,
IsTop = 'N'
}; };
if(itemType.PathCode.Length <= 5)
{
medicalReportItemTypeDto.IsTop = 'Y';
}
medicalReportItemTypeDtos.Add(medicalReportItemTypeDto);
} }
return medicalReportItemTypeDtos; return medicalReportItemTypeDtos;
} }
/// <summary>
/// 获取体检报告类别
/// </summary>
/// <returns></returns>
private async Task<List<MedicalReportMedicalReportTypeDto>> GetMedicalReportTypeList() private async Task<List<MedicalReportMedicalReportTypeDto>> GetMedicalReportTypeList()
{ {
var medicalReportTypes = (await _medicalReportTypeRepository.GetListAsync()).OrderBy(o => o.DisplayOrder); var medicalReportTypes = (await _medicalReportTypeRepository.GetListAsync()).OrderBy(o => o.DisplayOrder);

41
test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs

@ -43,5 +43,46 @@ namespace Shentun.Peis
await unitOfWork.CompleteAsync(); await unitOfWork.CompleteAsync();
} }
} }
[Fact]
public async Task GetMedicalReportAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var medicalReportDto = await _appService.GetMedicalReportAsync(new PatientRegisterIdInputDto()
{
PatientRegisterId = new Guid("3a11ee70-02cb-c5e6-a087-79ecdd0356b6")
});
_output.WriteLine(medicalReportDto.PatientName);
foreach (var medicalReportType in medicalReportDto.MedicalReportTypes)
{
_output.WriteLine("体检报告类别:" + medicalReportType.MedicalReportTypeName);
var topItemTypes = medicalReportDto.ItemTypes.Where(o => o.MedicalReportTypeId == medicalReportType.MedicalReportTypeId
&& o.ItemTypePathCode.Length == 5)
.OrderBy(o => o.DisplayOrder).ToList();
foreach (var topItemType in topItemTypes)
{
var itemTypes = medicalReportDto.ItemTypes.Where(o => o.ItemTypePathCode.StartsWith(topItemType.ItemTypePathCode)).ToList();
foreach (var itemType in itemTypes)
{
var registerChecks = medicalReportDto.RegisterChecks.Where(o => o.ItemTypeId == itemType.ItemTypeId).OrderBy(o => o.DisplayOrder).ToList();
if (registerChecks.Any())
{
_output.WriteLine("项目类别:" + itemType.ItemTypeName);
foreach (var registerCheck in registerChecks)
{
_output.WriteLine("检查医生:" + registerCheck.CheckDoctorName + "组合项目:" + registerCheck.AsbitemNames);
foreach (var registerCheckItem in registerCheck.Items)
{
_output.WriteLine("项目:" + registerCheckItem.ItemName + "结果:" + registerCheckItem.Result);
}
}
}
}
}
}
await unitOfWork.CompleteAsync();
}
}
} }
} }

4
test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

@ -40,8 +40,8 @@ public class PeisEntityFrameworkCoreTestModule : AbpModule
} }
private void ConfigurePostGress(IServiceCollection services) private void ConfigurePostGress(IServiceCollection services)
{ {
//string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
//string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
services.Configure<AbpDbContextOptions>(options => services.Configure<AbpDbContextOptions>(options =>
{ {

Loading…
Cancel
Save