Browse Source

条码

bjmzak
wxd 2 years ago
parent
commit
35d15dc5b2
  1. 24
      src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs
  2. 8
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  3. 156
      src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs

24
src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs

@ -76,12 +76,18 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
/// 体检项目情况
/// </summary>
public List<BasicInformationOfMedicalExaminationPersonnelItemDto> Items { get; set; }
/// <summary>
/// 总检综述
/// </summary>
public List<BasicInformationOfMedicalExaminationPersonnelSumSummaryDto> SumSummarys { get; set; }
/// <summary>
/// 项目异常结果
/// </summary>
public List<BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto> AsbitemAbnormals { get; set; }
/// <summary>
/// 总检建议
/// </summary>
@ -116,6 +122,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
/// 参考范围
/// </summary>
public string ReferenceRangeValue { get; set; }
/// <summary>
/// 结果状态
/// </summary>
public string ResultStatusName { get; set; }
}
@ -163,4 +174,17 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
/// </summary>
public string SumSuggestionContent { get; set; }
}
public class BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto
{
/// <summary>
/// 体检项目名称
/// </summary>
public string AsbitemName { get; set; }
/// <summary>
/// 异常结果
/// </summary>
public string AsbitemAbnormalResult { get; set; }
}
}

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

@ -466,10 +466,10 @@ namespace Shentun.Peis.PrintReports
/// <summary>
/// 打印Pacs条码数据
/// </summary>
/// <param name="PatientRegisterId"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PrintReport/getpacsnoreport")]
public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(Guid PatientRegisterId)
public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(PatientRegisterIdInputDto input)
{
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
@ -479,9 +479,9 @@ namespace Shentun.Peis.PrintReports
from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty()
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitemHaveEmpty.ItemTypeId equals itemType.Id into itemTypeTemp
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
where (patientRegister.Id == PatientRegisterId
where (patientRegister.Id == input.PatientRegisterId
&& !string.IsNullOrEmpty(registerCheck.CheckRequestNo)
&& asbitemHaveEmpty.BarcodeMode != '2'
&& asbitemHaveEmpty.BarcodeMode != BarcodeModeFlag.NoPrint
)
select new
{

156
src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs

@ -7,6 +7,7 @@ using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.Permissions;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@ -35,6 +36,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly IRepository<ResultStatus> _resultStatusRepository;
private readonly IRepository<ColumnReference, Guid> _columnReferenceRepository;
private readonly IRepository<ColumnReferenceCode, Guid> _columnReferenceCodeRepository;
private readonly IRepository<ColumnReferenceInterface, Guid> _columnReferenceInterfaceRepository;
private readonly CacheService _cacheService;
public ThirdPartyPublicInterfaceAppService(
IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -49,7 +55,12 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
IRepository<SumSummaryContent, Guid> sumSummaryContentRepository)
IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
IRepository<ResultStatus> resultStatusRepository,
IRepository<ColumnReference, Guid> columnReferenceRepository,
IRepository<ColumnReferenceCode, Guid> columnReferenceCodeRepository,
IRepository<ColumnReferenceInterface, Guid> columnReferenceInterfaceRepository)
{
_patientRegisterRepository = patientRegisterRepository;
_cacheService = cacheService;
@ -64,6 +75,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
_sumSuggestionContentRepository = sumSuggestionContentRepository;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository;
_sumSummaryContentRepository = sumSummaryContentRepository;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_resultStatusRepository = resultStatusRepository;
_columnReferenceRepository = columnReferenceRepository;
_columnReferenceCodeRepository = columnReferenceCodeRepository;
_columnReferenceInterfaceRepository = columnReferenceInterfaceRepository;
}
@ -110,19 +126,21 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
MobileTelephone = patientRegisterEnt.Patient.MobileTelephone
};
var registerCheckItemList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckItem.RegisterCheckId
join item in await _itemRepository.GetQueryableAsync() on registerCheckItem.ItemId equals item.Id
join itemType in await _itemTypeRepository.GetQueryableAsync() on item.ItemTypeId equals itemType.Id into itemTypeTemp
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
join resultStatus in await _resultStatusRepository.GetQueryableAsync() on registerCheckItem.ResultStatusId equals resultStatus.Id into resultStatusTemp
from resultStatusHaveEmpty in resultStatusTemp.DefaultIfEmpty()
where patientRegister.Id == patientRegisterEnt.Id
select new
{
registerCheckItem,
ItemName = item.DisplayName,
DepartmentName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : ""
DepartmentName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
ResultStatusName = resultStatusHaveEmpty != null ? resultStatusHaveEmpty.DisplayName : "正常"
};
@ -134,28 +152,82 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
ItemName = s.ItemName,
ReferenceRangeValue = s.registerCheckItem.ReferenceRangeValue,
Result = s.registerCheckItem.Result,
Unit = s.registerCheckItem.Unit
Unit = s.registerCheckItem.Unit,
ResultStatusName = s.ResultStatusName
}).ToList();
//总检综述
var sumSummaryList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join sumSummaryHeader in await _sumSummaryHeaderRepository.GetQueryableAsync() on patientRegister.Id equals sumSummaryHeader.PatientRegisterId
join sumSummaryContent in await _sumSummaryContentRepository.GetQueryableAsync() on sumSummaryHeader.Id equals sumSummaryContent.SumSummaryHeaderId
where patientRegister.Id == patientRegisterEnt.Id
orderby sumSummaryHeader.DisplayOrder, sumSummaryContent.DisplayOrder
select new
{
SummaryTitle = sumSummaryHeader.SummaryTitle,
SummaryContent = sumSummaryContent.SummaryContent
};
result.SumSummarys = sumSummaryList.Select(s => new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto
//组合项目情况
#region 组合项目情况
var sumSummaryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join sumSummaryHeader in await _sumSummaryHeaderRepository.GetQueryableAsync() on patientRegister.Id equals sumSummaryHeader.PatientRegisterId
join sumSummaryContent in await _sumSummaryContentRepository.GetQueryableAsync() on sumSummaryHeader.Id equals sumSummaryContent.SumSummaryHeaderId
where patientRegister.Id == patientRegisterEnt.Id
orderby sumSummaryHeader.DisplayOrder, sumSummaryContent.DisplayOrder
select new
{
sumSummaryHeaderId = sumSummaryHeader.Id,
SummaryTitle = sumSummaryHeader.SummaryTitle,
SummaryContent = sumSummaryContent.SummaryContent
}).ToList();
var sumSummaryGroup = sumSummaryList.GroupBy(g => g.sumSummaryHeaderId);
List<BasicInformationOfMedicalExaminationPersonnelSumSummaryDto> sumSummarys = new List<BasicInformationOfMedicalExaminationPersonnelSumSummaryDto>();
foreach (var item in sumSummaryGroup)
{
SumSummaryTitle = s.SummaryTitle,
SumSummaryContent = s.SummaryContent
}).ToList();
sumSummarys.Add(new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto
{
SumSummaryTitle = item.FirstOrDefault().SummaryTitle,
SumSummaryContent = string.Join(',', item.Select(s => s.SummaryContent.Trim().Replace("\n", "")).ToList())
});
}
result.SumSummarys = sumSummarys;
#endregion
#region 组合项目异常
var registerCheckSummaryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in (await _registerCheckRepository.GetQueryableAsync())
.Include(x => x.RegisterCheckAsbitems).ThenInclude(x => x.Asbitem).AsQueryable()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckSummary.RegisterCheckId
where patientRegister.Id == patientRegisterEnt.Id
select new
{
registerCheck,
registerCheckSummary
}).ToList();
var registerCheckSummaryGroup = registerCheckSummaryList.GroupBy(g => g.registerCheck.Id);
List<BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto> asbitemAbnormals = new List<BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto>();
foreach (var item in registerCheckSummaryGroup)
{
//默认结果集合
var defaultResultList = item.FirstOrDefault().registerCheck.RegisterCheckAsbitems.Select(s => s.Asbitem.DefaultResult.Trim().Replace("\n", "")).ToList();
var summaryList = item.Where(m => !defaultResultList.Contains(m.registerCheckSummary.Summary.Trim().Replace("\n", ""))).Select(s => s.registerCheckSummary.Summary).ToList();
if (summaryList.Any())
{
asbitemAbnormals.Add(new BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto
{
AsbitemName = string.Join(',', item.FirstOrDefault().registerCheck.RegisterCheckAsbitems.Select(s => s.Asbitem.DisplayName).ToList()),
AsbitemAbnormalResult = string.Join(',', summaryList),
});
}
}
result.AsbitemAbnormals = asbitemAbnormals;
#endregion
#region 总检建议
//总检建议
var sumSuggestionsList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
@ -189,6 +261,7 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
SumSuggestionContent = ss.SuggestionContent
}).ToList()
}).ToList();
#endregion
listDto.Add(result);
}
@ -290,38 +363,55 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
asbitem,
ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
ItemTypeId = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.Id.ToString() : ""
}).ToList();
});
//var NoSetupDeviceType = query.Where(m => m.asbitem.DeviceTypeId == null || m.asbitem.DeviceTypeId == Guid.Empty).Select(s => s.asbitem.DisplayName).ToList();
//if (NoSetupDeviceType.Any())
// throw new UserFriendlyException($"检查项目{string.Join(',', NoSetupDeviceType)}未设置仪器类别");
if (!string.IsNullOrEmpty(input.xmlx))
{
//检查类型检索
////仪器类别ID
//var deviceTypeId = (from columnReference in await _columnReferenceRepository.GetQueryableAsync()
// join columnReferenceCode in await _columnReferenceCodeRepository.GetQueryableAsync() on columnReference.Id equals columnReferenceCode.ColumnReferenceId
// join columnReferenceInterface in await _columnReferenceInterfaceRepository.GetQueryableAsync() on columnReferenceCode.Id equals columnReferenceInterface.ColumnReferenceCodeId
// where columnReference.DisplayName == "仪器类别" && columnReferenceInterface.InterfaceCodeValue == input.xmlx
// select columnReferenceCode.CodeValue).FirstOrDefault();
//query = query.Where(m => m.asbitem.DeviceTypeId == Guid.Parse(deviceTypeId));
}
if (query.Count == 0)
var queryList = query.ToList();
if (queryList.Count() == 0)
throw new UserFriendlyException($"体检编号不存在");
var patientInfo = new PatientPacsInfo_PatientInfoDto
{
addr = "",
tjbh = query.FirstOrDefault().CheckRequestNo,
csrq = query.FirstOrDefault().patientRegister.BirthDate != null ? query.FirstOrDefault().patientRegister.BirthDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
djr = _cacheService.GetSurnameAsync(query.FirstOrDefault().patientRegister.CreatorId).Result,
djrq = query.FirstOrDefault().patientRegister.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
lxdh = query.FirstOrDefault().MobileTelephone,
nl = query.FirstOrDefault().patientRegister.Age.ToString(),
sfzh = query.FirstOrDefault().IdNo,
tjrq = query.FirstOrDefault().patientRegister.MedicalStartDate != null ? query.FirstOrDefault().patientRegister.MedicalStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
xb = query.FirstOrDefault().patientRegister.SexId == 'M' ? "1" : (query.FirstOrDefault().patientRegister.SexId == 'F' ? "2" : "9"),
xm = query.FirstOrDefault().patientRegister.PatientName
tjbh = queryList.FirstOrDefault().CheckRequestNo,
csrq = queryList.FirstOrDefault().patientRegister.BirthDate != null ? queryList.FirstOrDefault().patientRegister.BirthDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
djr = _cacheService.GetSurnameAsync(queryList.FirstOrDefault().patientRegister.CreatorId).Result,
djrq = queryList.FirstOrDefault().patientRegister.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
lxdh = queryList.FirstOrDefault().MobileTelephone,
nl = queryList.FirstOrDefault().patientRegister.Age.ToString(),
sfzh = queryList.FirstOrDefault().IdNo,
tjrq = queryList.FirstOrDefault().patientRegister.MedicalStartDate != null ? queryList.FirstOrDefault().patientRegister.MedicalStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
xb = queryList.FirstOrDefault().patientRegister.SexId == 'M' ? "1" : (queryList.FirstOrDefault().patientRegister.SexId == 'F' ? "2" : "9"),
xm = queryList.FirstOrDefault().patientRegister.PatientName
};
var items = query.Select(s => new PatientPacsInfo_ItemsDto
var items = queryList.Select(s => new PatientPacsInfo_ItemsDto
{
ksbm = s.ItemTypeId,
ksmc = s.ItemTypeName,
sqdh = s.CheckRequestNo + "-" + (query.IndexOf(s) + 1),
sqdh = s.CheckRequestNo + "-" + (queryList.IndexOf(s) + 1),
xmbh = s.asbitem.Id.ToString(),
xmlx = "1",
xmmc = s.asbitem.DisplayName,

Loading…
Cancel
Save