public FhirResponse Handle(IKey key, SearchParams searchParameters) { Validate.TypeName(key.TypeName); Validate.HasSearchParameters(searchParameters); var hl7Type = key.TypeName.GetHl7ModelType(); var modelFactory = this._provider.GetService(typeof(ResourceSearchHandlerFactory)) as ResourceSearchHandlerFactory; IResourceSearchHandler synapseModelHandler = modelFactory.GetHandler(hl7Type); var fhirParam = FHIRParam.Create(key.TypeName, key.ResourceId, key.VersionId); var searchResultData = synapseModelHandler.Handle(fhirParam, searchParameters); var fhirResponseFactory = this._provider.GetService(typeof(IFhirResponseFactory)) as IFhirResponseFactory; var resourcesData = searchResultData.ResourcesData; Bundle bundle = new Bundle() { Type = Bundle.BundleType.Searchset, Total = resourcesData.Count, Id = resourcesData.IsCollectionValid()? Guid.NewGuid().ToString() : SearchWarningMsg }; bundle.Append(resourcesData); return(fhirResponseFactory.GetFhirResponse(bundle)); }
public SynapseResource Handle(IKey key, SynapseResource resource) // Just for the observation, temporary implementation -- can be removed later { var hl7Type = key.TypeName.GetHl7ModelType(); var modelFactory = this._provider.GetService(typeof(ResourceCommandHandlerFactory)) as ResourceCommandHandlerFactory; IResourceCommandHandler commandHandler = modelFactory.GetHandler(hl7Type); var fhirParam = FHIRParam.Create(key.TypeName, key.ResourceId, key.VersionId); var synapseResource = commandHandler.Handle(resource); if (synapseResource == null) { throw new InterneuronBusinessException(StatusCodes.Status500InternalServerError); } return(synapseResource); }
private void ProcessSearchResult(FHIRParam fhirParam, SearchResultData searchResultData, List <dynamic> searchResults) { var mainEntityInResult = searchResults[0]; if (mainEntityInResult == null) { return; } var searchEntityType = fhirParam.TypeName.GetHL7ModelType(); var dataType = Extensions.TypeExtensions.ConvertToListOrType(searchEntityType, mainEntityInResult); var data = this._mapper.Map(mainEntityInResult, mainEntityInResult.GetType(), dataType); if (data is System.Collections.IEnumerable) { foreach (var dataItem in data) { AppendWithSubsequentData(searchEntityType, dataItem, searchResults); var resourceData = new ResourceData(fhirParam) { Resource = dataItem }; searchResultData.ResourcesData.Add(resourceData); } } else { AppendWithSubsequentData(searchEntityType, data, searchResults); var resourceData = new ResourceData(fhirParam) { Resource = data }; searchResultData.ResourcesData.Add(resourceData); } }
public FhirResponse Handle(IKey key) { Validate.HasTypeName(key); Validate.HasResourceId(key); Validate.HasNoVersion(key); Validate.Key(key); var hl7Type = key.TypeName.GetHl7ModelType(); //Startup.AutofacContainer.Resolve<ISynapseResourceService<CorePerson>>(); var modelFactory = this._provider.GetService(typeof(ResourceQueryHandlerFactory)) as ResourceQueryHandlerFactory; IResourceQueryHandler synapseModelHandler = modelFactory.GetHandler(hl7Type); var fhirParam = FHIRParam.Create(key.TypeName, key.ResourceId, key.VersionId); var resourceData = synapseModelHandler.Handle(fhirParam); var fhirResponseFactory = this._provider.GetService(typeof(IFhirResponseFactory)) as IFhirResponseFactory; return(fhirResponseFactory.GetFhirResponse(resourceData, key)); }
public SearchResultData Handle(FHIRParam fhirParam, SearchParams searchParams) { var searchEntityIdentifier = $"Search_{fhirParam.TypeName}"; var resourcesData = new List <ResourceData>(); var searchResultData = new SearchResultData { ResourcesData = resourcesData }; var searchTermsBuilder = this._provider.GetService(typeof(SearchTermsBuilderFactory)) as SearchTermsBuilderFactory; var supportedSearchTerms = searchTermsBuilder.GetSearchTermsBuilder(searchEntityIdentifier).GetSearchTerms(); var synapseSearchTerms = new SearchOpProcessor().GetSynapseSearchTerms(supportedSearchTerms, searchParams); var searchResults = this._genericSearchRepository.Search(searchEntityIdentifier, synapseSearchTerms); if (searchResults.IsNull()) { return(searchResultData); } ProcessSearchResult(fhirParam, searchResultData, searchResults); return(searchResultData); #region Oldcode /* * var mainEntityInResult = searchResults[0]; * * if (mainEntityInResult == null) return searchResultData; * * * //var firstResType = ((System.Runtime.Remoting.ObjectHandle)firstRes).Unwrap().GetType(); * * //var data = this._mapper.Map<List<Encounter>>(searchResults[0]); * * //Type dataType; * * //var x = firstRes.Get * //if (firstRes is System.Collections.IEnumerable) * //{ * // dataType = typeof(List<>).MakeGenericType(fhirParam.TypeName.GetHL7ModelType().ConvertTo<List<>>()); * //} * //else * //{ * // dataType = fhirParam.TypeName.GetHL7ModelType(); * //} * * var searchEntityType = fhirParam.TypeName.GetHL7ModelType(); * var dataType = Extensions.TypeExtensions.ConvertToListOrType(searchEntityType, mainEntityInResult); * * var data = this._mapper.Map(mainEntityInResult, mainEntityInResult.GetType(), dataType);// typeof(List<Encounter>)); * * if (data is System.Collections.IEnumerable) * { * foreach (var dataItem in data) * { * AppendWithSubsequentData(searchEntityType, dataItem, searchResults); * * var resourceData = new ResourceData(fhirParam) * { * Resource = dataItem * }; * searchResultData.ResourcesData.Add(resourceData); * } * } * else * { * AppendWithSubsequentData(searchEntityType, data, searchResults); * * var resourceData = new ResourceData(fhirParam) * { * Resource = data * }; * * searchResultData.ResourcesData.Add(resourceData); * } * * return searchResultData; */ #endregion }