@ -3,13 +3,16 @@ using Microsoft.AspNetCore.Authorization; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Microsoft.AspNetCore.Mvc ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Microsoft.EntityFrameworkCore ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Microsoft.VisualBasic ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  NPOI.OpenXmlFormats.Wordprocessing ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Shentun.Peis.Enums ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Shentun.Peis.Models ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Collections.Generic ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Collections.Immutable ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Linq ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Text ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Threading.Tasks ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Volo.Abp.Account ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Volo.Abp.Application.Services ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Volo.Abp.Domain.Repositories ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Volo.Abp.Identity ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -31,6 +34,8 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        private  readonly  IRepository < ResultStatus >  _resultStatusRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        private  readonly  ISumSummaryReportRepository  _sumSummaryReportRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        private  readonly  CacheService  _cacheService ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        private  readonly  IRepository < RegisterCheckSummary ,  Guid >  _registerCheckSummaryRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        private  readonly  IRepository < Asbitem ,  Guid >  _asbitemRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  SumSummaryReportAppService (  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < RegisterCheck ,  Guid >  registerCheckRepository ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < IdentityUser ,  Guid >  identityUserRepository ,  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -39,8 +44,9 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < RegisterCheckAsbitem ,  Guid >  registerAsbitemRepository ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ISumSummaryReportRepository  sumSummaryReportRepository ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < ResultStatus >  resultStatusRepository ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            CacheService  cacheService  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            CacheService  cacheService ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < RegisterCheckSummary ,  Guid >  registerCheckSummaryRepository ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            IRepository < Asbitem ,  Guid >  asbitemRepository )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            this . _registerCheckRepository  =  registerCheckRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            this . _identityUserRepository  =  identityUserRepository ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -50,6 +56,8 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            this . _sumSummaryReportRepository  =  sumSummaryReportRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            _cacheService  =  cacheService ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            _resultStatusRepository  =  resultStatusRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            _registerCheckSummaryRepository  =  registerCheckSummaryRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            _asbitemRepository  =  asbitemRepository ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        /// <summary>
  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -68,7 +76,7 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Include ( x  = >  x . RegisterCheckAsbitems )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x  = >  x . Asbitem )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x  = >  x . ItemType )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x = > x . MedicalReportType )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x   = >   x . MedicalReportType )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Include ( x  = >  x . RegisterCheckSummaries )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Include ( x  = >  x . RegisterCheckItems )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x  = >  x . Item )  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -89,7 +97,7 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ItemName  =  sa . Item . DisplayName ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ItemResult  =  sa . Result ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ReferenceRangeValue  =  sa . ReferenceRangeValue ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ResultStatusName  =  ( resultStatus . Where ( o = > o . Id  = =  sa . ResultStatusId ) . FirstOrDefault ( )  = =  null ) ?  "" :  resultStatus . Where ( o  = >  o . Id  = =  sa . ResultStatusId ) . FirstOrDefault ( ) . ReportPrompt ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ResultStatusName  =  ( resultStatus . Where ( o   = >   o . Id  = =  sa . ResultStatusId ) . FirstOrDefault ( )  = =  null )   ?  ""   :  resultStatus . Where ( o  = >  o . Id  = =  sa . ResultStatusId ) . FirstOrDefault ( ) . ReportPrompt ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    Unit  =  sa . Unit  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                } ) . ToList ( ) ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                Summarys  =  s . RegisterCheckSummaries . Count  >  0  ?  s . RegisterCheckSummaries . Select ( sb  = >  new  DetailedResultsList_Asbitem_Summary  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -125,49 +133,29 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        [HttpGet("api/app/sumsummaryreport/getitemtypecontrastlist")]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  async  Task < List < ItemTypeContrastListDto > >  GetItemTypeContrastListAsync ( Guid  PatientId )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            List < ItemTypeContrastListDto >  msg  =  new  List < ItemTypeContrastListDto > ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  userlist  =  await  _identityUserRepository . GetListAsync ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //var entlist = (await _registerCheckRepository.GetDbSetAsync())
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .Include(x => x.RegisterAsbitem.PatientRegister)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .Include(x => x.RegisterAsbitem.Asbitem.ItemType)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .Include(x => x.RegisterCheckSummaries)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .Include(x => x.RegisterCheckItems)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .ThenInclude(x => x.Item)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .Where(m => m.RegisterAsbitem.PatientRegister.PatientId == PatientId)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //     .ToList();
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  entlist  =  ( await  _registerCheckRepository . GetDbSetAsync ( ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . Include ( x  = >  x . RegisterCheckAsbitems )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . ThenInclude ( x  = >  x . Asbitem )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . ThenInclude ( x  = >  x . ItemType )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . Include ( x  = >  x . RegisterCheckAsbitems )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . ThenInclude ( x  = >  x . PatientRegister )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . Include ( x  = >  x . RegisterCheckSummaries )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . Include ( x  = >  x . RegisterCheckItems )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . ThenInclude ( x  = >  x . Item )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . Where ( m  = >  m . RegisterCheckAsbitems . First ( ) . PatientRegister . PatientId  = =  PatientId )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                       . ToList ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ////查询所有项目类别
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //var ItemTypeNames = new HashSet<string>(entlist.Select(s => s.RegisterAsbitem.Asbitem.ItemType.DisplayName).ToList()).ToList();
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //以registercheck表为主
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  registercheckList  =  entlist . Select ( s  = >  new  ItemTypeContrastList_Result  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                ItemTypeName  =  string . Join ( "|" ,  s . RegisterCheckAsbitems . Select ( rs  = >  rs . Asbitem . ItemType . DisplayName ) . ToList ( ) ) ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                RegisterDate  =  DataHelper . ConversionDateToString ( s . RegisterCheckAsbitems . First ( ) . PatientRegister . CreationTime ) ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                PatientRegisterId  =  s . RegisterCheckAsbitems . First ( ) . PatientRegisterId ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                Summarys  =  string . Join ( "|" ,  s . RegisterCheckAsbitems . Select ( rs  = >  rs . Asbitem . DisplayName ) . ToList ( ) )  +  ":"  +  string . Join ( "," ,  s . RegisterCheckSummaries . Select ( sb  = >  sb . Summary ) . ToList ( ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            } ) . ToList ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  query  =  from  a  in  await  _patientRegisterRepository . GetQueryableAsync ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        join  b  in  await  _registerCheckRepository . GetQueryableAsync ( )  on  a . Id  equals  b . PatientRegisterId  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        join  c  in  await  _registerAsbitemRepository . GetQueryableAsync ( )  on  b . Id  equals  c . RegisterCheckId  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        join  d  in  await  _asbitemRepository . GetQueryableAsync ( )  on  c . AsbitemId  equals  d . Id  into  dd  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        from  ad  in  dd . DefaultIfEmpty ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        join  e  in  await  _itemTypeRepository . GetQueryableAsync ( )  on  ad . ItemTypeId  equals  e . Id  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        join  f  in  await  _registerCheckSummaryRepository . GetQueryableAsync ( )  on  b . Id  equals  f . RegisterCheckId  into  ff  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        from  af  in  ff . DefaultIfEmpty ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        where  a . PatientId  = =  PatientId  & &  a . CompleteFlag  ! =  PatientRegisterCompleteFlag . PreRegistration  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        select  new  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            RegisterDate  =  a . CreationTime ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            PatientRegisterId  =  a . Id ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            ItemTypeName  =  e . DisplayName ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            Summary  =  af  ! =  null  ?  af . Summary  :  ""  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        } ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  grouplist  =  registercheckList . GroupBy ( g  = >  new  {  g . PatientRegisterId ,  g . ItemTypeName  } ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  grouplist  =  query . ToList ( ) . GroupBy ( g  = >  new  {  g . PatientRegisterId ,  g . ItemTypeName  } ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            foreach  ( var  g  in  grouplist )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -176,8 +164,8 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    ItemTypeName  =  glist . FirstOrDefault ( ) . ItemTypeName ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    RegisterDate  =  glist . FirstOrDefault ( ) . RegisterDate ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    Summarys  =  string . Join ( "\n" ,  glist . Select ( s  = >  s . Summarys  ) . ToList ( ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    RegisterDate  =  DataHelper . ConversionDateToString ( glist . FirstOrDefault ( ) . RegisterDate ) ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    Summarys  =  string . Join ( "\n" ,  glist . Select ( s  = >  s . Summary ) . ToList ( ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                } ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                msg . Add ( resultlist ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -205,7 +193,8 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x  = >  x . SumSummaryContents )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Include ( x  = >  x . SumSuggestionHeaders )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ThenInclude ( x  = >  x . SumSuggestionContents )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Where ( m  = >  m . PatientId  = =  PatientId  & &  ( m . SumSummaryHeaders . Count  >  0  | |  m . SumSuggestionHeaders . Count  >  0 ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . Where ( m  = >  m . PatientId  = =  PatientId  & &  ( m . SumSummaryHeaders . Count  >  0  | |  m . SumSuggestionHeaders . Count  >  0 )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 & &  m . CompleteFlag  ! =  PatientRegisterCompleteFlag . PreRegistration )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 . ToList ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -240,7 +229,7 @@ namespace Shentun.Peis.SumSummaryReports 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . Include ( x  = >  x . Asbitem )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . Include ( x  = >  x . RegisterCheck )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . Include ( x  = >  x . PatientRegister )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . Where ( m  = >  m . PatientRegister . PatientId  = =  PatientId )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . Where ( m  = >  m . PatientRegister . PatientId  = =  PatientId  & &  m . PatientRegister . CompleteFlag  ! =  PatientRegisterCompleteFlag . PreRegistration  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            . ToList ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  grouplist  =  entlist . GroupBy ( o  = >  o . AsbitemId ) ;