@ -7,6 +7,7 @@ using Shentun.Peis.Enums;
using Shentun.Peis.Models ;
using Shentun.Peis.Models ;
using Shentun.Peis.PatientRegisters ;
using Shentun.Peis.PatientRegisters ;
using Shentun.Peis.Permissions ;
using Shentun.Peis.Permissions ;
using SqlSugar ;
using System ;
using System ;
using System.Collections.Generic ;
using System.Collections.Generic ;
using System.Linq ;
using System.Linq ;
@ -35,6 +36,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
private readonly IRepository < SumSuggestionContent , Guid > _sumSuggestionContentRepository ;
private readonly IRepository < SumSuggestionContent , Guid > _sumSuggestionContentRepository ;
private readonly IRepository < SumSummaryHeader , Guid > _sumSummaryHeaderRepository ;
private readonly IRepository < SumSummaryHeader , Guid > _sumSummaryHeaderRepository ;
private readonly IRepository < SumSummaryContent , Guid > _sumSummaryContentRepository ;
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 ;
private readonly CacheService _cacheService ;
public ThirdPartyPublicInterfaceAppService (
public ThirdPartyPublicInterfaceAppService (
IRepository < PatientRegister , Guid > patientRegisterRepository ,
IRepository < PatientRegister , Guid > patientRegisterRepository ,
@ -49,7 +55,12 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
IRepository < SumSuggestionHeader , Guid > sumSuggestionHeaderRepository ,
IRepository < SumSuggestionHeader , Guid > sumSuggestionHeaderRepository ,
IRepository < SumSuggestionContent , Guid > sumSuggestionContentRepository ,
IRepository < SumSuggestionContent , Guid > sumSuggestionContentRepository ,
IRepository < SumSummaryHeader , Guid > sumSummaryHeaderRepository ,
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 ;
_patientRegisterRepository = patientRegisterRepository ;
_cacheService = cacheService ;
_cacheService = cacheService ;
@ -64,6 +75,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
_sumSuggestionContentRepository = sumSuggestionContentRepository ;
_sumSuggestionContentRepository = sumSuggestionContentRepository ;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository ;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository ;
_sumSummaryContentRepository = sumSummaryContentRepository ;
_sumSummaryContentRepository = sumSummaryContentRepository ;
_registerCheckSummaryRepository = registerCheckSummaryRepository ;
_resultStatusRepository = resultStatusRepository ;
_columnReferenceRepository = columnReferenceRepository ;
_columnReferenceCodeRepository = columnReferenceCodeRepository ;
_columnReferenceInterfaceRepository = columnReferenceInterfaceRepository ;
}
}
@ -110,19 +126,21 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
MobileTelephone = patientRegisterEnt . Patient . MobileTelephone
MobileTelephone = patientRegisterEnt . Patient . MobileTelephone
} ;
} ;
var registerCheckItemList = from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
var registerCheckItemList = from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
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 registerCheckItem in await _registerCheckItemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckItem . RegisterCheckId
join item in await _itemRepository . GetQueryableAsync ( ) on registerCheckItem . ItemId equals item . Id
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
join itemType in await _itemTypeRepository . GetQueryableAsync ( ) on item . ItemTypeId equals itemType . Id into itemTypeTemp
from itemTypeHaveEmpty in itemTypeTemp . DefaultIfEmpty ( )
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
where patientRegister . Id = = patientRegisterEnt . Id
select new
select new
{
{
registerCheckItem ,
registerCheckItem ,
ItemName = item . DisplayName ,
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 ,
ItemName = s . ItemName ,
ReferenceRangeValue = s . registerCheckItem . ReferenceRangeValue ,
ReferenceRangeValue = s . registerCheckItem . ReferenceRangeValue ,
Result = s . registerCheckItem . Result ,
Result = s . registerCheckItem . Result ,
Unit = s . registerCheckItem . Unit
Unit = s . registerCheckItem . Unit ,
ResultStatusName = s . ResultStatusName
} ) . ToList ( ) ;
} ) . ToList ( ) ;
//总检综述
var sumSummaryList = from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
//组合项目情况
#region 组合项目情况
var sumSummaryList = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join sumSummaryHeader in await _sumSummaryHeaderRepository . GetQueryableAsync ( ) on patientRegister . Id equals sumSummaryHeader . PatientRegisterId
join sumSummaryHeader in await _sumSummaryHeaderRepository . GetQueryableAsync ( ) on patientRegister . Id equals sumSummaryHeader . PatientRegisterId
join sumSummaryContent in await _sumSummaryContentRepository . GetQueryableAsync ( ) on sumSummaryHeader . Id equals sumSummaryContent . SumSummaryHeaderId
join sumSummaryContent in await _sumSummaryContentRepository . GetQueryableAsync ( ) on sumSummaryHeader . Id equals sumSummaryContent . SumSummaryHeaderId
where patientRegister . Id = = patientRegisterEnt . Id
where patientRegister . Id = = patientRegisterEnt . Id
orderby sumSummaryHeader . DisplayOrder , sumSummaryContent . DisplayOrder
orderby sumSummaryHeader . DisplayOrder , sumSummaryContent . DisplayOrder
select new
select new
{
{
sumSummaryHeaderId = sumSummaryHeader . Id ,
SummaryTitle = sumSummaryHeader . SummaryTitle ,
SummaryTitle = sumSummaryHeader . SummaryTitle ,
SummaryContent = sumSummaryContent . SummaryContent
SummaryContent = sumSummaryContent . SummaryContent
} ;
} ) . ToList ( ) ;
var sumSummaryGroup = sumSummaryList . GroupBy ( g = > g . sumSummaryHeaderId ) ;
result . SumSummarys = sumSummaryList . Select ( s = > new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto
List < BasicInformationOfMedicalExaminationPersonnelSumSummaryDto > sumSummarys = new List < BasicInformationOfMedicalExaminationPersonnelSumSummaryDto > ( ) ;
foreach ( var item in sumSummaryGroup )
{
sumSummarys . Add ( new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto
{
{
SumSummaryTitle = s . SummaryTitle ,
SumSummaryContent = s . SummaryContent
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 ( ) ;
} ) . 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 ( )
var sumSuggestionsList = from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
@ -189,6 +261,7 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
SumSuggestionContent = ss . SuggestionContent
SumSuggestionContent = ss . SuggestionContent
} ) . ToList ( )
} ) . ToList ( )
} ) . ToList ( ) ;
} ) . ToList ( ) ;
#endregion
listDto . Add ( result ) ;
listDto . Add ( result ) ;
}
}
@ -290,38 +363,55 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces
asbitem ,
asbitem ,
ItemTypeName = itemTypeHaveEmpty ! = null ? itemTypeHaveEmpty . DisplayName : "" ,
ItemTypeName = itemTypeHaveEmpty ! = null ? itemTypeHaveEmpty . DisplayName : "" ,
ItemTypeId = itemTypeHaveEmpty ! = null ? itemTypeHaveEmpty . Id . ToString ( ) : ""
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 ) )
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 ( $"体检编号不存在" ) ;
throw new UserFriendlyException ( $"体检编号不存在" ) ;
var patientInfo = new PatientPacsInfo_PatientInfoDto
var patientInfo = new PatientPacsInfo_PatientInfoDto
{
{
addr = "" ,
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 ,
ksbm = s . ItemTypeId ,
ksmc = s . ItemTypeName ,
ksmc = s . ItemTypeName ,
sqdh = s . CheckRequestNo + "-" + ( query . IndexOf ( s ) + 1 ) ,
sqdh = s . CheckRequestNo + "-" + ( queryList . IndexOf ( s ) + 1 ) ,
xmbh = s . asbitem . Id . ToString ( ) ,
xmbh = s . asbitem . Id . ToString ( ) ,
xmlx = "1" ,
xmlx = "1" ,
xmmc = s . asbitem . DisplayName ,
xmmc = s . asbitem . DisplayName ,