You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
11 KiB
230 lines
11 KiB
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.VisualBasic;
|
|
using NPOI.SS.Formula.Functions;
|
|
using Shentun.Peis.Models;
|
|
using Shentun.Peis.PatientRegisters;
|
|
using Shentun.Peis.Permissions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
|
namespace Shentun.Peis.ThirdPartyPublicInterfaces
|
|
{
|
|
/// <summary>
|
|
/// 第三方公开接口
|
|
/// </summary>
|
|
public class ThirdPartyPublicInterfaceAppService : ApplicationService
|
|
{
|
|
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
|
|
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
|
|
private readonly IRepository<Item, Guid> _itemRepository;
|
|
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
|
|
private readonly IRepository<Patient, Guid> _patientRepository;
|
|
private readonly CacheService _cacheService;
|
|
public ThirdPartyPublicInterfaceAppService(
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository,
|
|
CacheService cacheService,
|
|
IRepository<RegisterCheck, Guid> registerCheckRepository,
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
|
|
IRepository<RegisterCheckItem> registerCheckItemRepository,
|
|
IRepository<Item, Guid> itemRepository,
|
|
IRepository<ItemType, Guid> itemTypeRepository,
|
|
IRepository<Asbitem, Guid> asbitemRepository,
|
|
IRepository<Patient, Guid> patientRepository)
|
|
{
|
|
_patientRegisterRepository = patientRegisterRepository;
|
|
_cacheService = cacheService;
|
|
_registerCheckRepository = registerCheckRepository;
|
|
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
|
|
_registerCheckItemRepository = registerCheckItemRepository;
|
|
_itemRepository = itemRepository;
|
|
_itemTypeRepository = itemTypeRepository;
|
|
_asbitemRepository = asbitemRepository;
|
|
_patientRepository = patientRepository;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 查询体检人员基本信息
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.Third.Default)]
|
|
[HttpPost("api/Third/ThirdPartyPublicInterface/GetBasicInformationOfMedicalExaminationPersonnel")]
|
|
public async Task<BasicInformationOfMedicalExaminationPersonnelDto> GetBasicInformationOfMedicalExaminationPersonnelAsync(PublicPatientRegisterNoInputDto input)
|
|
{
|
|
if (input == null)
|
|
{
|
|
throw new UserFriendlyException($"请求参数错误");
|
|
}
|
|
|
|
var result = new BasicInformationOfMedicalExaminationPersonnelDto();
|
|
|
|
var patientRegisterEnt = await _patientRegisterRepository.FirstOrDefaultAsync(m => m.PatientRegisterNo == input.PatientRegisterNo);
|
|
if (patientRegisterEnt != null)
|
|
{
|
|
result = new BasicInformationOfMedicalExaminationPersonnelDto
|
|
{
|
|
BirthDate = patientRegisterEnt.BirthDate != null ? patientRegisterEnt.BirthDate.Value.ToString("yyyy-MM-dd") : "",
|
|
PatientRegisterNo = patientRegisterEnt.PatientRegisterNo,
|
|
CompleteFlag = patientRegisterEnt.CompleteFlag,
|
|
IsMedicalStart = patientRegisterEnt.IsMedicalStart,
|
|
MedicalStartDate = patientRegisterEnt.MedicalStartDate != null ? patientRegisterEnt.MedicalStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
|
PatientName = patientRegisterEnt.PatientName,
|
|
SexName = _cacheService.GetSexNameAsync(patientRegisterEnt.SexId).Result,
|
|
SummaryDoctorName = _cacheService.GetSurnameAsync(patientRegisterEnt.SummaryDoctorId).Result,
|
|
SummaryDate = patientRegisterEnt.SummaryDate != null ? patientRegisterEnt.SummaryDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
|
};
|
|
}
|
|
else
|
|
{
|
|
throw new UserFriendlyException($"条码号不正确");
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 查询体检明细项目信息
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.Third.Default)]
|
|
[HttpPost("api/Third/ThirdPartyPublicInterface/GetPhysicalExaminationDetailsItemInformation")]
|
|
public async Task<List<PhysicalExaminationDetailsItemInformationDto>> GetPhysicalExaminationDetailsItemInformationAsync(PublicPatientRegisterNoInputDto input)
|
|
{
|
|
if (input == null)
|
|
{
|
|
throw new UserFriendlyException($"请求参数错误");
|
|
}
|
|
|
|
var query = 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()
|
|
where patientRegister.PatientRegisterNo == input.PatientRegisterNo
|
|
select new
|
|
{
|
|
PatientRegisterNo = patientRegister.PatientRegisterNo,
|
|
registerCheckItem,
|
|
ItemName = item.DisplayName,
|
|
ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : ""
|
|
|
|
};
|
|
|
|
if (query.Count() == 0)
|
|
{
|
|
throw new UserFriendlyException($"条码号不正确");
|
|
}
|
|
|
|
var entList = query.Select(s => new PhysicalExaminationDetailsItemInformationDto
|
|
{
|
|
ItemName = s.ItemName,
|
|
ItemResult = s.registerCheckItem.Result,
|
|
ItemTypeName = s.ItemTypeName,
|
|
PatientRegisterNo = s.PatientRegisterNo,
|
|
ReferenceRangeValue = s.registerCheckItem.ReferenceRangeValue,
|
|
Unit = s.registerCheckItem.Unit
|
|
}).ToList();
|
|
|
|
return entList;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 查询pacs条码信息
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("api/Third/ThirdPartyPublicInterface/getPatientItems")]
|
|
public async Task<PatientPacsInfoDto> GetPatientPacsInfoAsync(PatientPacsInfoInputDto input)
|
|
{
|
|
if (input == null)
|
|
{
|
|
throw new UserFriendlyException($"请求参数错误");
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(input.tjbh))
|
|
throw new UserFriendlyException($"体检编号不能为空");
|
|
|
|
|
|
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
|
|
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id into patientTemp
|
|
from patientHaveEmpty in patientTemp.DefaultIfEmpty()
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
|
|
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
|
|
where registerCheck.CheckRequestNo == input.tjbh
|
|
orderby asbitem.DisplayOrder ascending
|
|
select new
|
|
{
|
|
patientRegister,
|
|
IdNo = patientHaveEmpty != null ? patientHaveEmpty.IdNo : "",
|
|
MobileTelephone = patientHaveEmpty != null ? patientHaveEmpty.MobileTelephone : "",
|
|
CheckRequestNo = registerCheck.CheckRequestNo,
|
|
asbitem,
|
|
ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
|
|
ItemTypeId = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.Id.ToString() : ""
|
|
}).ToList();
|
|
|
|
|
|
if (!string.IsNullOrEmpty(input.xmlx))
|
|
{
|
|
//检查类型检索
|
|
}
|
|
|
|
if (query.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
|
|
};
|
|
|
|
|
|
var items = query.Select(s => new PatientPacsInfo_ItemsDto
|
|
{
|
|
ksbm = s.ItemTypeId,
|
|
ksmc = s.ItemTypeName,
|
|
sqdh = s.CheckRequestNo + "-" + (query.IndexOf(s) + 1),
|
|
xmbh = s.asbitem.Id.ToString(),
|
|
xmlx = "1",
|
|
xmmc = s.asbitem.DisplayName,
|
|
}).ToList();
|
|
|
|
return new PatientPacsInfoDto
|
|
{
|
|
PatientInfo = patientInfo,
|
|
Items = items
|
|
};
|
|
}
|
|
|
|
}
|
|
}
|