Esempio n. 1
0
        public void Seed()
        {
            IList <DtoServiceSearchParameter> DtoServiceSearchParameterList = ServiceSearchParameterFactory.FhirAPISearchParameters();
            var LastUpdated = DateTimeOffset.Now;

            foreach (var SearchParameter in DtoServiceSearchParameterList)
            {
                var ServiceSearchParameter = new DbModel.Entity._ServiceSearchParameter()
                {
                    Name        = SearchParameter.Name,
                    Description = SearchParameter.Description,
                    Expression  = SearchParameter.Expression,
                    Resource    = SearchParameter.Resource,
                    Type        = SearchParameter.Type,
                    Url         = SearchParameter.Url,
                    XPath       = SearchParameter.XPath,
                    IsIndexed   = true,
                    LastUpdated = LastUpdated,
                    Status      = PublicationStatus.Active
                };
                if (SearchParameter.TargetResourceTypeList != null && SearchParameter.TargetResourceTypeList.Count > 0)
                {
                    ServiceSearchParameter.TargetResourceTypeList = new List <_ServiceSearchParameterTargetResource>();
                    foreach (var ResourceTypeTarget in SearchParameter.TargetResourceTypeList)
                    {
                        ServiceSearchParameter.TargetResourceTypeList.Add(new _ServiceSearchParameterTargetResource()
                        {
                            ResourceType = ResourceTypeTarget.ResourceType
                        });
                    }
                }
                _Context.ServiceSearchParameter.Add(ServiceSearchParameter);
            }
            _Context.SaveChanges();
        }
        /// <summary>
        /// Get the search Parameters to seed the database on database creation.
        /// Only seed for Resource types 'Resource', 'Task', 'AuditEvent' and 'SearchParameter' as all others will be loaded by the server
        /// start-up task Pyro.Common.PyroHealthFhirResource.Tasks.SetSearchParameterDefinitions. We must however load these three
        /// now as they are required to index the search parameters for the Tasks resources and SearchParameter and AuditEvent resources loaded on start-up
        /// The Task SetSearchParameterDefinitions will update these search parameters table entries with their matching Resource Id and versions
        /// as the Task runs.
        /// </summary>
        /// <returns></returns>
        private IList <SearchParam> GetServiceSearchParameterList()
        {
            IList <DtoServiceSearchParameter> ServiceSearchParameterList = ServiceSearchParameterFactory.FhirAPISearchParameters();
            var ReturnList  = new List <SearchParam>();
            var LastUpdated = DateTimeOffset.Now;

            foreach (var SearchParameter in ServiceSearchParameterList.Where(x =>
                                                                             x.Resource == ResourceType.Resource.GetLiteral() ||
                                                                             x.Resource == ResourceType.Task.GetLiteral() ||
                                                                             x.Resource == ResourceType.SearchParameter.GetLiteral() ||
                                                                             x.Resource == ResourceType.AuditEvent.GetLiteral()))
            {
                var ServiceSearchParameter = new SearchParam()
                {
                    Name        = SearchParameter.Name,
                    Description = SearchParameter.Description,
                    Expression  = SearchParameter.Expression,
                    Resource    = SearchParameter.Resource,
                    Type        = SearchParameter.Type,
                    Url         = SearchParameter.Url,
                    XPath       = SearchParameter.XPath,
                    IsIndexed   = true,
                    LastUpdated = LastUpdated,
                    Status      = PublicationStatus.Active
                };
                if (SearchParameter.TargetResourceTypeList != null && SearchParameter.TargetResourceTypeList.Count > 0)
                {
                    foreach (var ResourceTypeTarget in SearchParameter.TargetResourceTypeList)
                    {
                        ServiceSearchParameter.TargetResourceTypeList.Add(new SParamResource()
                        {
                            ResourceType = ResourceTypeTarget.ResourceType
                        });
                    }
                }
                ReturnList.Add(ServiceSearchParameter);
            }
            return(ReturnList);
        }