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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 5
0
        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
        }