Class JpaStorageSettings

java.lang.Object
ca.uhn.fhir.jpa.model.entity.StorageSettings
ca.uhn.fhir.jpa.api.config.JpaStorageSettings

public class JpaStorageSettings extends StorageSettings
  • Field Details

  • Constructor Details

  • Method Details

    • isIncludeHashIdentityForTokenSearches

      If this is enabled (default is false), searches on token indexes will include the HASH_IDENTITY column on all generated FHIR search query SQL. This is an experimental flag that may be changed or removed in a future release.
      Since:
      7.6.0
    • setIncludeHashIdentityForTokenSearches

      public void setIncludeHashIdentityForTokenSearches(boolean theIncludeHashIdentityForTokenSearches)
      If this is enabled (default is false), searches on token indexes will include the HASH_IDENTITY column on all generated FHIR search query SQL. This is an experimental flag that may be changed or removed in a future release.
      Since:
      7.6.0
    • getInlineResourceTextBelowSize

      Deprecated.
      This setting no longer does anything as of HAPI FHIR 7.0.0
      Since:
      5.7.0
    • setInlineResourceTextBelowSize

      @Deprecated public void setInlineResourceTextBelowSize(int theInlineResourceTextBelowSize)
      Deprecated.
      This setting no longer does anything as of HAPI FHIR 7.0.0
      Since:
      5.7.0
    • getTagStorageMode

      Sets the tag storage mode for the server. Default is JpaStorageSettings.TagStorageModeEnum.VERSIONED.
      Since:
      5.5.0
    • setTagStorageMode

      public void setTagStorageMode(@Nonnull JpaStorageSettings.TagStorageModeEnum theTagStorageMode)
      Sets the tag storage mode for the server. Default is JpaStorageSettings.TagStorageModeEnum.VERSIONED.
      Since:
      5.5.0
    • getMaximumIncludesToLoadPerPage

      Specifies the maximum number of _include and _revinclude results to return in a single page of results. The default is 1000, and null may be used to indicate that there is no limit.
      Since:
      5.5.0
    • setMaximumIncludesToLoadPerPage

      public void setMaximumIncludesToLoadPerPage(@Nullable Integer theMaximumIncludesToLoadPerPage)
      Specifies the maximum number of _include and _revinclude results to return in a single page of results. The default is 1000, and null may be used to indicate that there is no limit.
      Since:
      5.5.0
    • getHistoryCountMode

      When performing a FHIR history operation, a Bundle.total value is included in the response, indicating the total number of history entries. This response is calculated using a SQL COUNT query statement which can be expensive. This setting allows the results of the count query to be cached, resulting in a much lighter load on the server, at the expense of returning total values that may be slightly out of date. Total counts can also be disabled, or forced to always be accurate.

      In HistoryCountModeEnum.CACHED_ONLY_WITHOUT_OFFSET mode, a loading cache is used to fetch the value, meaning that only one thread per JVM will fetch the count, and others will block while waiting for the cache to load, avoiding excessive load on the database.

      Default is HistoryCountModeEnum.CACHED_ONLY_WITHOUT_OFFSET

      Since:
      5.4.0
    • setHistoryCountMode

      public void setHistoryCountMode(@Nonnull HistoryCountModeEnum theHistoryCountMode)
      When performing a FHIR history operation, a Bundle.total value is included in the response, indicating the total number of history entries. This response is calculated using a SQL COUNT query statement which can be expensive. This setting allows the results of the count query to be cached, resulting in a much lighter load on the server, at the expense of returning total values that may be slightly out of date. Total counts can also be disabled, or forced to always be accurate.

      In HistoryCountModeEnum.CACHED_ONLY_WITHOUT_OFFSET mode, a loading cache is used to fetch the value, meaning that only one thread per JVM will fetch the count, and others will block while waiting for the cache to load, avoiding excessive load on the database.

      Default is HistoryCountModeEnum.CACHED_ONLY_WITHOUT_OFFSET

      Since:
      5.4.0
    • isLastNEnabled

      public boolean isLastNEnabled()
      If set to true (default is false) the $lastn operation will be enabled for indexing Observation resources. This operation involves creating a special set of tables in hsearch for discovering Observation resources. Enabling this setting increases the amount of storage space required, and can slow write operations, but can be very useful for searching for collections of Observations for some applications.
      Since:
      5.1.0
    • setLastNEnabled

      public void setLastNEnabled(boolean theLastNEnabled)
      If set to true (default is false) the $lastn operation will be enabled for indexing Observation resources. This operation involves creating a special set of tables in hsearch for discovering Observation resources. Enabling this setting increases the amount of storage space required, and can slow write operations, but can be very useful for searching for collections of Observations for some applications.
      Since:
      5.1.0
    • getTranslationCachesExpireAfterWriteInMinutes

      Specifies the duration in minutes for which values will be retained after being written to the terminology translation cache. Defaults to 60.
    • getMatchUrlCache

      @Deprecated public boolean getMatchUrlCache()
      Deprecated.
      Deprecated in 5.5.0. Use isMatchUrlCacheEnabled() instead (the name of this method is misleading)
      If enabled, resolutions for match URLs (e.g. conditional create URLs, conditional update URLs, etc) will be cached in an in-memory cache. This cache can have a noticeable improvement on write performance on servers where conditional operations are frequently performed, but note that this cache will not be invalidated based on updates to resources so this may have detrimental effects.

      Default is false

      Since:
      5.4.0
    • setMatchUrlCache

      @Deprecated public void setMatchUrlCache(boolean theMatchUrlCache)
      Deprecated.
      Deprecated in 5.5.0. Use setMatchUrlCacheEnabled(boolean) instead (the name of this method is misleading)
      If enabled, resolutions for match URLs (e.g. conditional create URLs, conditional update URLs, etc) will be cached in an in-memory cache. This cache can have a noticeable improvement on write performance on servers where conditional operations are frequently performed, but note that this cache will not be invalidated based on updates to resources so this may have detrimental effects.

      Default is false

      Since:
      5.4.0
    • isMatchUrlCacheEnabled

      public boolean isMatchUrlCacheEnabled()
      If enabled, resolutions for match URLs (e.g. conditional create URLs, conditional update URLs, etc) will be cached in an in-memory cache. This cache can have a noticeable improvement on write performance on servers where conditional operations are frequently performed, but note that this cache will not be invalidated based on updates to resources so this may have detrimental effects.

      Default is false

      Since:
      5.5.0
    • setMatchUrlCacheEnabled

      public void setMatchUrlCacheEnabled(boolean theMatchUrlCache)
      If enabled, resolutions for match URLs (e.g. conditional create URLs, conditional update URLs, etc) will be cached in an in-memory cache. This cache can have a noticeable improvement on write performance on servers where conditional operations are frequently performed, but note that this cache will not be invalidated based on updates to resources so this may have detrimental effects.

      Default is false

      Since:
      5.5.0
    • isEnforceReferenceTargetTypes

      If set to true (default is true) when a resource is being persisted, the target resource types of references will be validated to ensure that they are appropriate for the field containing the reference. This is generally a good idea because invalid reference target types may not be searchable.
    • setEnforceReferenceTargetTypes

      public void setEnforceReferenceTargetTypes(boolean theEnforceReferenceTargetTypes)
      If set to true (default is true) when a resource is being persisted, the target resource types of references will be validated to ensure that they are appropriate for the field containing the reference. This is generally a good idea because invalid reference target types may not be searchable.
    • getDefaultTotalMode

      public ca.uhn.fhir.rest.api.SearchTotalModeEnum getDefaultTotalMode()
      If a non-null value is supplied (default is null), a default for the _total parameter may be specified here. For example, setting this value to SearchTotalModeEnum.ACCURATE will force a count to always be calculated for all searches. This can have a performance impact since it means that a count query will always be performed, but this is desirable for some solutions.
    • setDefaultTotalMode

      public void setDefaultTotalMode(ca.uhn.fhir.rest.api.SearchTotalModeEnum theDefaultTotalMode)
      If a non-null value is supplied (default is null), a default for the _total parameter may be specified here. For example, setting this value to SearchTotalModeEnum.ACCURATE will force a count to always be calculated for all searches. This can have a performance impact since it means that a count query will always be performed, but this is desirable for some solutions.
    • getWarmCacheEntries

      Returns a set of searches that should be kept "warm", meaning that searches will periodically be performed in the background to keep results ready for this search
    • setWarmCacheEntries

      public void setWarmCacheEntries(List<WarmCacheEntry> theWarmCacheEntries)
    • isStatusBasedReindexingDisabled

      If set to true (default is false), the reindexing of search parameters using a query on the HFJ_RESOURCE.SP_INDEX_STATUS column will be disabled completely. This query is just not efficient on Oracle and bogs the system down when there are a lot of resources. A more efficient way of doing this will be introduced in the next release of HAPI FHIR.
      Since:
      3.5.0
    • setStatusBasedReindexingDisabled

      public void setStatusBasedReindexingDisabled(boolean theStatusBasedReindexingDisabled)
      If set to true (default is false), the reindexing of search parameters using a query on the HFJ_RESOURCE.SP_INDEX_STATUS column will be disabled completely. This query is just not efficient on Oracle and bogs the system down when there are a lot of resources. A more efficient way of doing this will be introduced in the next release of HAPI FHIR.
      Since:
      3.5.0
    • getBundleTypesAllowedForStorage

      This setting specifies the bundle types (Bundle.type) that are allowed to be stored as-is on the /Bundle endpoint.
      See Also:
    • setBundleTypesAllowedForStorage

      public void setBundleTypesAllowedForStorage(Set<String> theBundleTypesAllowedForStorage)
      This setting specifies the bundle types (Bundle.type) that are allowed to be stored as-is on the /Bundle endpoint.
      See Also:
    • getCacheControlNoStoreMaxResultsUpperLimit

      Specifies the highest number that a client is permitted to use in a Cache-Control: nostore, max-results=NNN directive. If the client tries to exceed this limit, the request will be denied. Defaults to 1000.
    • setCacheControlNoStoreMaxResultsUpperLimit

      public void setCacheControlNoStoreMaxResultsUpperLimit(Integer theCacheControlNoStoreMaxResults)
      Specifies the highest number that a client is permitted to use in a Cache-Control: nostore, max-results=NNN directive. If the client tries to exceed this limit, the request will be denied. Defaults to 1000.
    • getCountSearchResultsUpTo

      When searching, if set to a non-null value (default is null) the search coordinator will attempt to find at least this many results before returning a response to the client. This parameter mainly affects whether a "total count" is included in the response bundle for searches that return large amounts of data.

      For a search that returns 10000 results, if this value is set to 10000 the search coordinator will find all 10000 results prior to returning, so the initial response bundle will have the total set to 10000. If this value is null (or less than 10000) the response bundle will likely return slightly faster, but will not include the total. Subsequent page requests will likely include the total however, if they are performed after the search coordinator has found all results.

      Set this value to 0 to always load all results before returning.

    • setCountSearchResultsUpTo

      public void setCountSearchResultsUpTo(Integer theCountSearchResultsUpTo)
      When searching, if set to a non-null value (default is null) the search coordinator will attempt to find at least this many results before returning a response to the client. This parameter mainly affects whether a "total count" is included in the response bundle for searches that return large amounts of data.

      For a search that returns 10000 results, if this value is set to 10000 the search coordinator will find all 10000 results prior to returning, so the initial response bundle will have the total set to 10000. If this value is null (or less than 10000) the response bundle will likely return slightly faster, but will not include the total. Subsequent page requests will likely include the total however, if they are performed after the search coordinator has found all results.

      Set this value to 0 to always load all results before returning.

    • getDeferIndexingForCodesystemsOfSize

      When a code system is added that contains more than this number of codes, the code system will be indexed later in an incremental process in order to avoid overwhelming Lucene with a huge number of codes in a single operation.

      Defaults to 100

    • setDeferIndexingForCodesystemsOfSize

      public void setDeferIndexingForCodesystemsOfSize(int theDeferIndexingForCodesystemsOfSize)
      When a code system is added that contains more than this number of codes, the code system will be indexed later in an incremental process in order to avoid overwhelming Lucene with a huge number of codes in a single operation.

      Defaults to 100

    • getEverythingIncludesFetchPageSize

      Unlike with normal search queries, $everything queries have their _includes loaded by the main search thread and these included results are added to the normal search results instead of being added on as extras in a page. This means that they will not appear multiple times as the search results are paged over.

      In order to recursively load _includes, we process the original results in batches of this size. Adjust with caution, increasing this value may improve performance but may also cause memory issues.

      The default value is 50

    • setEverythingIncludesFetchPageSize

      public void setEverythingIncludesFetchPageSize(int theEverythingIncludesFetchPageSize)
      Unlike with normal search queries, $everything queries have their _includes loaded by the main search thread and these included results are added to the normal search results instead of being added on as extras in a page. This means that they will not appear multiple times as the search results are paged over.

      In order to recursively load _includes, we process the original results in batches of this size. Adjust with caution, increasing this value may improve performance but may also cause memory issues.

      The default value is 50

    • getExpireSearchResultsAfterMillis

      Sets the number of milliseconds that search results for a given client search should be preserved before being purged from the database.

      Search results are stored in the database so that they can be paged over multiple requests. After this number of milliseconds, they will be deleted from the database, and any paging links (next/prev links in search response bundles) will become invalid. Defaults to 1 hour.

      To disable this feature entirely, see setExpireSearchResults(boolean)

      Since:
      1.5
    • setExpireSearchResultsAfterMillis

      public void setExpireSearchResultsAfterMillis(long theExpireSearchResultsAfterMillis)
      Sets the number of milliseconds that search results for a given client search should be preserved before being purged from the database.

      Search results are stored in the database so that they can be paged over multiple requests. After this number of milliseconds, they will be deleted from the database, and any paging links (next/prev links in search response bundles) will become invalid. Defaults to 1 hour.

      To disable this feature entirely, see setExpireSearchResults(boolean)

      Since:
      1.5
    • getFetchSizeDefaultMaximum

      Gets the default maximum number of results to load in a query.

      For example, if the database has a million Patient resources in it, and the client requests GET /Patient, if this value is set to a non-null value (default is null) only this number of results will be fetched. Setting this value appropriately can be useful to improve performance in some situations.

    • setFetchSizeDefaultMaximum

      public void setFetchSizeDefaultMaximum(Integer theFetchSizeDefaultMaximum)
      Gets the default maximum number of results to load in a query.

      For example, if the database has a million Patient resources in it, and the client requests GET /Patient, if this value is set to a non-null value (default is null) only this number of results will be fetched. Setting this value appropriately can be useful to improve performance in some situations.

    • getMaximumExpansionSize

    • setMaximumExpansionSize

      public void setMaximumExpansionSize(int theMaximumExpansionSize)
      Sets the maximum number of codes that will be added to an in-memory valueset expansion before the operation will be failed as too costly. Note that this setting applies only to in-memory expansions and does not apply to expansions that are being pre-calculated.

      The default value for this setting is 1000.

    • getMaximumSearchResultCountInTransaction

      Provides the maximum number of results which may be returned by a search (HTTP GET) which is executed as a sub-operation within within a FHIR transaction or batch operation. For example, if this value is set to 100 and a FHIR transaction is processed with a sub-request for Patient?gender=male, the server will throw an error (and the transaction will fail) if there are more than 100 resources on the server which match this query.

      The default value is null, which means that there is no limit.

    • setMaximumSearchResultCountInTransaction

      public void setMaximumSearchResultCountInTransaction(Integer theMaximumSearchResultCountInTransaction)
      Provides the maximum number of results which may be returned by a search (HTTP GET) which is executed as a sub-operation within within a FHIR transaction or batch operation. For example, if this value is set to 100 and a FHIR transaction is processed with a sub-request for Patient?gender=male, the server will throw an error (and the transaction will fail) if there are more than 100 resources on the server which match this query.

      The default value is null, which means that there is no limit.

    • getReindexThreadCount

      public int getReindexThreadCount()
      This setting controls the number of threads allocated to resource reindexing (which is only ever used if SearchParameters change, or a manual reindex is triggered due to a HAPI FHIR upgrade or some other reason).

      The default value is set to the number of available processors (via Runtime.getRuntime().availableProcessors()). Value for this setting must be a positive integer.

    • setReindexThreadCount

      public void setReindexThreadCount(int theReindexThreadCount)
      This setting controls the number of threads allocated to resource reindexing (which is only ever used if SearchParameters change, or a manual reindex is triggered due to a HAPI FHIR upgrade or some other reason).

      The default value is set to the number of available processors (via Runtime.getRuntime().availableProcessors()). Value for this setting must be a positive integer.

    • getExpungeThreadCount

      public int getExpungeThreadCount()
      This setting controls the number of threads allocated to the expunge operation

      The default value is set to the number of available processors (via Runtime.getRuntime().availableProcessors()). Value for this setting must be a positive integer.

    • setExpungeThreadCount

      public void setExpungeThreadCount(int theExpungeThreadCount)
      This setting controls the number of threads allocated to the expunge operation

      The default value is set to the number of available processors (via Runtime.getRuntime().availableProcessors()). Value for this setting must be a positive integer.

    • getResourceEncoding

    • setResourceEncoding

      public void setResourceEncoding(ResourceEncodingEnum theResourceEncoding)
    • getResourceMetaCountHardLimit

      If set, an individual resource will not be allowed to have more than the given number of tags, profiles, and security labels (the limit is for the combined total for all of these things on an individual resource).

      If set to null, no limit will be applied.

      The default value for this setting is 1000.

    • setResourceMetaCountHardLimit

      public void setResourceMetaCountHardLimit(Integer theResourceMetaCountHardLimit)
      If set, an individual resource will not be allowed to have more than the given number of tags, profiles, and security labels (the limit is for the combined total for all of these things on an individual resource).

      If set to null, no limit will be applied.

      The default value for this setting is 1000.

    • getResourceClientIdStrategy

      Controls the behaviour when a client-assigned ID is encountered, i.e. an HTTP PUT on a resource ID that does not already exist in the database.

      Default is JpaStorageSettings.ClientIdStrategyEnum.ALPHANUMERIC

    • setResourceClientIdStrategy

      public void setResourceClientIdStrategy(JpaStorageSettings.ClientIdStrategyEnum theResourceClientIdStrategy)
      Controls the behaviour when a client-assigned ID is encountered, i.e. an HTTP PUT on a resource ID that does not already exist in the database.

      Default is JpaStorageSettings.ClientIdStrategyEnum.ALPHANUMERIC

      Parameters:
      theResourceClientIdStrategy - Must not be null
    • getResourceServerIdStrategy

      This setting configures the strategy to use in generating IDs for newly created resources on the server. The default is JpaStorageSettings.IdStrategyEnum.SEQUENTIAL_NUMERIC.

      This strategy is only used for server-assigned IDs, i.e. for HTTP POST where the client is requesing that the server store a new resource and give it an ID.

    • setResourceServerIdStrategy

      This setting configures the strategy to use in generating IDs for newly created resources on the server. The default is JpaStorageSettings.IdStrategyEnum.SEQUENTIAL_NUMERIC.

      This strategy is only used for server-assigned IDs, i.e. for HTTP POST where the client is requesing that the server store a new resource and give it an ID.

      Parameters:
      theResourceIdStrategy - The strategy. Must not be null.
    • getReuseCachedSearchResultsForMillis

      If set to a non null value (default is non null) if an identical search is requested multiple times within this window, the same results will be returned to multiple queries. For example, if this value is set to 1 minute and a client searches for all patients named "smith", and then a second client also performs the same search within 1 minute, the same cached results will be returned.

      This approach can improve performance, especially under heavy load, but can also mean that searches may potentially return slightly out-of-date results.

      Note that if this is set to a non-null value, clients may override this setting by using the Cache-Control header. If this is set to null, the Cache-Control header will be ignored.

    • setReuseCachedSearchResultsForMillis

      public void setReuseCachedSearchResultsForMillis(Long theReuseCachedSearchResultsForMillis)
      If set to a non null value (default is non null) if an identical search is requested multiple times within this window, the same results will be returned to multiple queries. For example, if this value is set to 1 minute and a client searches for all patients named "smith", and then a second client also performs the same search within 1 minute, the same cached results will be returned.

      This approach can improve performance, especially under heavy load, but can also mean that searches may potentially return slightly out-of-date results.

      Note that if this is set to a non-null value, clients may override this setting by using the Cache-Control header. If this is set to null, the Cache-Control header will be ignored.

    • isAllowInlineMatchUrlReferences

      See Also:
    • setAllowInlineMatchUrlReferences

      public void setAllowInlineMatchUrlReferences(boolean theAllowInlineMatchUrlReferences)
      Should references containing match URLs be resolved and replaced in create and update operations. For example, if this property is set to true and a resource is created containing a reference to "Patient?identifier=12345", this is reference match URL will be resolved and replaced according to the usual match URL rules.

      Default is true beginning in HAPI FHIR 2.4, since this feature is now specified in the FHIR specification. (Previously it was an experimental/proposed feature)

      Since:
      1.5
    • isAllowMultipleDelete

      public boolean isAllowMultipleDelete()
    • setAllowMultipleDelete

      public void setAllowMultipleDelete(boolean theAllowMultipleDelete)
    • isPopulateIdentifierInAutoCreatedPlaceholderReferenceTargets

      When StorageSettings.setAutoCreatePlaceholderReferenceTargets(boolean) is enabled, if this setting is set to true (default is true) and the source reference has an identifier populated, the identifier will be copied to the target resource.

      When enabled, if an Observation contains a reference like the one below, and no existing resource was found that matches the given ID, a new one will be created and its Patient.identifier value will be populated using the value from Observation.subject.identifier.

       {
         "resourceType": "Observation",
         "subject": {
           "reference": "Patient/ABC",
           "identifier": {
             "system": "http://foo",
             "value": "123"
           }
         }
       }
       

      This method is often combined with setAllowInlineMatchUrlReferences(boolean).

      In other words if an Observation contains a reference like the one below, and no existing resource was found that matches the given match URL, a new one will be created and its Patient.identifier value will be populated using the value from Observation.subject.identifier.

       {
         "resourceType": "Observation",
         "subject": {
           "reference": "Patient?identifier=http://foo|123",
           "identifier": {
             "system": "http://foo",
             "value": "123"
           }
         }
       }
       

      Note that the default for this setting was previously false, and was changed to true in 5.4.0 with consideration to the following:

       CP = Auto-Create Placeholder Reference Targets
       PI = Populate Identifier in Auto-Created Placeholder Reference Targets
      
       CP | PI
       -------
        F | F  invalid input: '<'- PI=F is ignored
        F | T  invalid input: '<'- PI=T is ignored
        T | F  invalid input: '<'- resources may reference placeholder reference targets that are never updated : (
        T | T  invalid input: '<'- placeholder reference targets can be updated : )
       

      Where CP=T and PI=F, the following could happen:

      1. Resource instance A is created with a reference to resource instance B. B is a placeholder reference target without an identifier.
      2. Resource instance C is conditionally created using a match URL. It is not matched to B although these resources represent the same entity.
      3. A continues to reference placeholder B, and does not reference populated C.

      There may be cases where configuring this setting to false would be appropriate; however, these are exceptional cases that should be opt-in.

      Since:
      4.2.0
    • setPopulateIdentifierInAutoCreatedPlaceholderReferenceTargets

      public void setPopulateIdentifierInAutoCreatedPlaceholderReferenceTargets(boolean thePopulateIdentifierInAutoCreatedPlaceholderReferenceTargets)
      When StorageSettings.setAutoCreatePlaceholderReferenceTargets(boolean) is enabled, if this setting is set to true (default is true) and the source reference has an identifier populated, the identifier will be copied to the target resource.

      When enabled, if an Observation contains a reference like the one below, and no existing resource was found that matches the given ID, a new one will be created and its Patient.identifier value will be populated using the value from Observation.subject.identifier.

       {
         "resourceType": "Observation",
         "subject": {
           "reference": "Patient/ABC",
           "identifier": {
             "system": "http://foo",
             "value": "123"
           }
         }
       }
       

      This method is often combined with setAllowInlineMatchUrlReferences(boolean).

      In other words if an Observation contains a reference like the one below, and no existing resource was found that matches the given match URL, a new one will be created and its Patient.identifier value will be populated using the value from Observation.subject.identifier.

       {
         "resourceType": "Observation",
         "subject": {
           "reference": "Patient?identifier=http://foo|123",
           "identifier": {
             "system": "http://foo",
             "value": "123"
           }
         }
       }
       

      Note that the default for this setting was previously false, and was changed to true in 5.4.0 with consideration to the following:

       CP = Auto-Create Placeholder Reference Targets
       PI = Populate Identifier in Auto-Created Placeholder Reference Targets
      
       CP | PI
       -------
        F | F  invalid input: '<'- PI=F is ignored
        F | T  invalid input: '<'- PI=T is ignored
        T | F  invalid input: '<'- resources may reference placeholder reference targets that are never updated : (
        T | T  invalid input: '<'- placeholder reference targets can be updated : )
       

      Where CP=T and PI=F, the following could happen:

      1. Resource instance A is created with a reference to resource instance B. B is a placeholder reference target without an identifier.
      2. Resource instance C is conditionally created using a match URL. It is not matched to B although these resources represent the same entity.
      3. A continues to reference placeholder B, and does not reference populated C.

      There may be cases where configuring this setting to false would be appropriate; however, these are exceptional cases that should be opt-in.

      Since:
      4.2.0
    • isEnforceReferentialIntegrityOnDelete

      If set to false (default is true) resources will be permitted to be deleted even if other resources currently contain references to them.

      This property can cause confusing results for clients of the server since searches, includes, and other FHIR features may not behave as expected when referential integrity is not preserved. Use this feature with caution.

    • setEnforceReferentialIntegrityOnDelete

      public void setEnforceReferentialIntegrityOnDelete(boolean theEnforceReferentialIntegrityOnDelete)
      If set to false (default is true) resources will be permitted to be deleted even if other resources currently contain references to them.

      This property can cause confusing results for clients of the server since searches, includes, and other FHIR features may not behave as expected when referential integrity is not preserved. Use this feature with caution.

    • isEnforceReferentialIntegrityOnWrite

      If set to false (default is true) resources will be permitted to be created or updated even if they contain references to local resources that do not exist.

      For example, if a patient contains a reference to managing organization Organization/FOO but FOO is not a valid ID for an organization on the server, the operation will be blocked unless this property has been set to false

      This property can cause confusing results for clients of the server since searches, includes, and other FHIR features may not behave as expected when referential integrity is not preserved. Use this feature with caution.

    • setEnforceReferentialIntegrityOnWrite

      public void setEnforceReferentialIntegrityOnWrite(boolean theEnforceReferentialIntegrityOnWrite)
      If set to false (default is true) resources will be permitted to be created or updated even if they contain references to local resources that do not exist.

      For example, if a patient contains a reference to managing organization Organization/FOO but FOO is not a valid ID for an organization on the server, the operation will be blocked unless this property has been set to false

      This property can cause confusing results for clients of the server since searches, includes, and other FHIR features may not behave as expected when referential integrity is not preserved. Use this feature with caution.

    • isExpireSearchResults

      public boolean isExpireSearchResults()
      If this is set to false (default is true) the stale search deletion task will be disabled (meaning that search results will be retained in the database indefinitely). USE WITH CAUTION.

      This feature is useful if you want to define your own process for deleting these (e.g. because you are running in a cluster)

    • setExpireSearchResults

      public void setExpireSearchResults(boolean theDeleteStaleSearches)
      If this is set to false (default is true) the stale search deletion task will be disabled (meaning that search results will be retained in the database indefinitely). USE WITH CAUTION.

      This feature is useful if you want to define your own process for deleting these (e.g. because you are running in a cluster)

    • isExpungeEnabled

      public boolean isExpungeEnabled()
      If set to true (default is false), the $expunge operation will be enabled on this server. This operation is potentially dangerous since it allows a client to physically delete data in a way that can not be recovered (without resorting to backups).

      It is recommended to not enable this setting without appropriate security in place on your server to prevent non-administrators from using this operation.

    • setExpungeEnabled

      public void setExpungeEnabled(boolean theExpungeEnabled)
      If set to true (default is false), the $expunge operation will be enabled on this server. This operation is potentially dangerous since it allows a client to physically delete data in a way that can not be recovered (without resorting to backups).

      It is recommended to not enable this setting without appropriate security in place on your server to prevent non-administrators from using this operation.

    • isDeleteExpungeEnabled

      public boolean isDeleteExpungeEnabled()
      If set to true (default is false), the _expunge parameter on the DELETE operation will be enabled on this server. DELETE _expunge removes all data associated with a resource in a highly performant way, skipping most of the the checks that are enforced with usual DELETE operations. The only check that is performed before deleting the data is that no other resources reference the resources about to be deleted. This operation is potentially dangerous since it allows a client to physically delete data in a way that can not be recovered (without resorting to backups).

      It is recommended to not enable this setting without appropriate security in place on your server to prevent non-administrators from using this operation.

    • setDeleteExpungeEnabled

      public void setDeleteExpungeEnabled(boolean theDeleteExpungeEnabled)
      If set to true (default is false), the _expunge parameter on the DELETE operation will be enabled on this server. DELETE _expunge removes all data associated with a resource in a highly performant way, skipping most of the the checks that are enforced with usual DELETE operations. The only check that is performed before deleting the resources and their indexes is that no other resources reference the resources about to be deleted. This operation is potentially dangerous since it allows a client to physically delete data in a way that can not be recovered (without resorting to backups).

      It is recommended to not enable this setting without appropriate security in place on your server to prevent non-administrators from using this operation.

    • getExpungeBatchSize

      public int getExpungeBatchSize()
      The expunge batch size (default 800) determines the number of records deleted within a single transaction by the expunge operation. When expunging via DELETE ?_expunge=true, then this value determines the batch size for the number of resources deleted and expunged at a time.
    • setExpungeBatchSize

      public void setExpungeBatchSize(int theExpungeBatchSize)
      The expunge batch size (default 800) determines the number of records deleted within a single transaction by the expunge operation. When expunging via DELETE ?_expunge=true, then this value determines the batch size for the number of resources deleted and expunged at a time.
    • isMarkResourcesForReindexingUponSearchParameterChange

      Should resources be marked as needing reindexing when a SearchParameter resource is added or changed. This should generally be true (which is the default)
    • setMarkResourcesForReindexingUponSearchParameterChange

      public void setMarkResourcesForReindexingUponSearchParameterChange(boolean theMarkResourcesForReindexingUponSearchParameterChange)
      Should resources be marked as needing reindexing when a SearchParameter resource is added or changed. This should generally be true (which is the default)
    • isSchedulingDisabled

      public boolean isSchedulingDisabled()
    • setSchedulingDisabled

      public void setSchedulingDisabled(boolean theSchedulingDisabled)
    • isSuppressUpdatesWithNoChange

      If set to true (default is true), if a client performs an update which does not actually result in any chance to a given resource (e.g. an update where the resource body matches the existing resource body in the database) the operation will succeed but a new version (and corresponding history entry) will not actually be created. The existing resource version will be returned to the client.

      If set to false, all updates will result in the creation of a new version

    • setSuppressUpdatesWithNoChange

      public void setSuppressUpdatesWithNoChange(boolean theSuppressUpdatesWithNoChange)
      If set to true (default is true), if a client performs an update which does not actually result in any chance to a given resource (e.g. an update where the resource body matches the existing resource body in the database) the operation will succeed but a new version (and corresponding history entry) will not actually be created. The existing resource version will be returned to the client.

      If set to false, all updates will result in the creation of a new version

    • isUniqueIndexesCheckedBeforeSave

      When using unique indexes, if this setting is set to true (default is true) the system will test for the existence of a particular unique index value prior to saving a new one.

      This causes friendlier error messages to be generated, but adds an extra round-trip to the database for eavh save so it can cause a small performance hit.

    • setUniqueIndexesCheckedBeforeSave

      public void setUniqueIndexesCheckedBeforeSave(boolean theUniqueIndexesCheckedBeforeSave)
      When using unique indexes, if this setting is set to true (default is true) the system will test for the existence of a particular unique index value prior to saving a new one.

      This causes friendlier error messages to be generated, but adds an extra round-trip to the database for each save so it can cause a small performance hit.

    • isUniqueIndexesEnabled

      public boolean isUniqueIndexesEnabled()
      If set to true (default is true), indexes will be created for search parameters marked as HapiExtensions.EXT_SP_UNIQUE. This is a HAPI FHIR specific extension which can be used to specify that no more than one resource can exist which matches a given criteria, using a database constraint to enforce this.
    • setUniqueIndexesEnabled

      public void setUniqueIndexesEnabled(boolean theUniqueIndexesEnabled)
      If set to true (default is true), indexes will be created for search parameters marked as HapiExtensions.EXT_SP_UNIQUE. This is a HAPI FHIR specific extension which can be used to specify that no more than one resource can exist which matches a given criteria, using a database constraint to enforce this.
    • isValidateSearchParameterExpressionsOnSave

      If true (default is true), before allowing a SearchParameter resource to be stored (create, update, etc.) the expression will be performed against an empty resource to ensure that the FHIRPath executor is able to process it.

      This should proabably always be set to true, but is configurable in order to support some unit tests.

    • setValidateSearchParameterExpressionsOnSave

      public void setValidateSearchParameterExpressionsOnSave(boolean theValidateSearchParameterExpressionsOnSave)
      If true (default is true), before allowing a SearchParameter resource to be stored (create, update, etc.) the expression will be performed against an empty resource to ensure that the FHIRPath executor is able to process it.

      This should proabably always be set to true, but is configurable in order to support some unit tests.

    • getSearchPreFetchThresholds

      This setting sets the number of search results to prefetch. For example, if this list is set to [100, 1000, -1] then the server will initially load 100 results and not attempt to load more. If the user requests subsequent page(s) of results and goes past 100 results, the system will load the next 900 (up to the following threshold of 1000). The system will progressively work through these thresholds.

      A threshold of -1 means to load all results. Note that if the final threshold is a number other than -1, the system will never prefetch more than the given number.

    • setSearchPreFetchThresholds

      public void setSearchPreFetchThresholds(List<Integer> thePreFetchThresholds)
      This setting sets the number of search results to prefetch. For example, if this list is set to [100, 1000, -1] then the server will initially load 100 results and not attempt to load more. If the user requests subsequent page(s) of results and goes past 100 results, the system will load the next 900 (up to the following threshold of 1000). The system will progressively work through these thresholds.

      A threshold of -1 means to load all results. Note that if the final threshold is a number other than -1, the system will never prefetch more than the given number.

    • isFilterParameterEnabled

      public boolean isFilterParameterEnabled()
      If set to true the _filter search parameter will be enabled on this server. Note that _filter is very powerful, but also potentially dangerous as it can allow a user to create a query for which there are no indexes or efficient query plans for the database to leverage while performing the query. As a result, this feature is recommended only for servers where the querying applications are known in advance and a database administrator can properly tune the database for the resulting queries.
    • setFilterParameterEnabled

      public void setFilterParameterEnabled(boolean theFilterParameterEnabled)
      If set to true the _filter search parameter will be enabled on this server. Note that _filter is very powerful, but also potentially dangerous as it can allow a user to create a query for which there are no indexes or efficient query plans for the database to leverage while performing the query. As a result, this feature is recommended only for servers where the querying applications are known in advance and a database administrator can properly tune the database for the resulting queries.
    • getStoreMetaSourceInformation

      If enabled, resource source information (Resource.meta.source) will be persisted along with each resource. This adds extra table and index space so it should be disabled if it is not being used.

      Default is JpaStorageSettings.StoreMetaSourceInformationEnum.SOURCE_URI_AND_REQUEST_ID

    • setStoreMetaSourceInformation

      If enabled, resource source information (Resource.meta.source) will be persisted along with each resource. This adds extra table and index space so it should be disabled if it is not being used.

      Default is JpaStorageSettings.StoreMetaSourceInformationEnum.SOURCE_URI_AND_REQUEST_ID

    • isAccessMetaSourceInformationFromProvenanceTable

      If set to true (default is false), the system will read Resource.meta.source values from the HFJ_RES_VER_PROV table. This table was replaced by dedicated columns in the HFJ_RES_VER table as of HAPI FHIR 6.8.0 (Smile CDR 2023.08.R01) and as of that version there is no need to read from the dedicated table. However, if old data still remains and has not been migrated (using a $reindex operation) then you can enable this setting in order to read from the old table.
      Since:
      8.0.0
    • setAccessMetaSourceInformationFromProvenanceTable

      public void setAccessMetaSourceInformationFromProvenanceTable(boolean theAccessMetaSourceInformationFromProvenanceTable)
      If set to true (default is false), the system will read Resource.meta.source values from the HFJ_RES_VER_PROV table. This table was replaced by dedicated columns in the HFJ_RES_VER table as of HAPI FHIR 6.8.0 (Smile CDR 2023.08.R01) and as of that version there is no need to read from the dedicated table. However, if old data still remains and has not been migrated (using a $reindex operation) then you can enable this setting in order to read from the old table.
      Since:
      8.0.0
    • isPreExpandValueSets

      public boolean isPreExpandValueSets()

      If set to true, ValueSets and expansions are stored in terminology tables. This is to facilitate optimization of the $expand operation on large ValueSets.

      The default value for this setting is true.

      Since:
      4.1.0
    • setPreExpandValueSets

      public void setPreExpandValueSets(boolean thePreExpandValueSets)

      If set to true, ValueSets and expansions are stored in terminology tables. This is to facilitate optimization of the $expand operation on large ValueSets.

      The default value for this setting is true.

      Since:
      4.1.0
    • getPreExpandValueSetsDefaultOffset

      This is the default value of offset parameter for the ValueSet $expand operation when isPreExpandValueSets() returns true.

      The default value for this setting is 0.

      Since:
      4.1.0
    • getPreExpandValueSetsDefaultCount

      This is the default value of count parameter for the ValueSet $expand operation when isPreExpandValueSets() returns true.

      The default value for this setting is 1000.

      Since:
      4.1.0
    • setPreExpandValueSetsDefaultCount

      public void setPreExpandValueSetsDefaultCount(int thePreExpandValueSetsDefaultCount)

      This is the default value of count parameter for the ValueSet $expand operation when isPreExpandValueSets() returns true.

      If thePreExpandValueSetsDefaultCount is greater than getPreExpandValueSetsMaxCount(), the lesser value is used.

      The default value for this setting is 1000.

      Since:
      4.1.0
    • getPreExpandValueSetsMaxCount

      This is the max value of count parameter for the ValueSet $expand operation when isPreExpandValueSets() returns true.

      The default value for this setting is 1000.

      Since:
      4.1.0
    • setPreExpandValueSetsMaxCount

      public void setPreExpandValueSetsMaxCount(int thePreExpandValueSetsMaxCount)

      This is the max value of count parameter for the ValueSet $expand operation when isPreExpandValueSets() returns true.

      If thePreExpandValueSetsMaxCount is lesser than getPreExpandValueSetsDefaultCount(), the default count is lowered to the new max count.

      The default value for this setting is 1000.

      Since:
      4.1.0
    • isDeleteEnabled

      public boolean isDeleteEnabled()
      This setting should be disabled (set to false) on servers that are not allowing deletes. Default is true. If deletes are disabled, some checks for resource deletion can be skipped, which improves performance. This is particularly helpful when large amounts of data containing client-assigned IDs are being loaded, but it can also improve search performance.

      If deletes are disabled, it is also not possible to un-delete a previously deleted resource.

      Since:
      5.0.0
    • setDeleteEnabled

      public void setDeleteEnabled(boolean theDeleteEnabled)
      This setting should be disabled (set to false) on servers that are not allowing deletes. Default is true. If deletes are disabled, some checks for resource deletion can be skipped, which improves performance. This is particularly helpful when large amounts of data containing client-assigned IDs are being loaded, but it can also improve search performance.

      If deletes are disabled, it is also not possible to un-delete a previously deleted resource.

      Since:
      5.0.0
    • getMaximumDeleteConflictQueryCount

      This determines the maximum number of conflicts that should be fetched and handled while retrying a delete of a resource. This can also be thought of as the maximum number of rounds of cascading deletion.

      The default value for this setting is 60.

      Since:
      5.1.0
    • setMaximumDeleteConflictQueryCount

      public void setMaximumDeleteConflictQueryCount(Integer theMaximumDeleteConflictQueryCount)

      This determines the maximum number of conflicts that should be fetched and handled while retrying a delete of a resource. This can also be thought of as the maximum number of rounds of cascading deletion.

      The default value for this setting is 60.

      Since:
      5.1.0
    • setPreloadBlobFromInputStream

      @Deprecated public void setPreloadBlobFromInputStream(Boolean thePreloadBlobFromInputStream)
      Deprecated.
      In 5.2.0 this setting no longer does anything

      This determines whether $binary-access-write operations should first load the InputStream into memory before persisting the contents to the database. This needs to be enabled for MS SQL Server as this DB requires that the blob size be known in advance.

      Note that this setting should be enabled with caution as it can lead to significant demands on memory.

      The default value for this setting is false.

      Since:
      5.1.0
    • getInternalSynchronousSearchSize

      This determines the internal search size that is run synchronously during operations such as searching for Code System IDs by System and Code

      Since:
      5.4.0
    • setInternalSynchronousSearchSize

      public void setInternalSynchronousSearchSize(Integer theInternalSynchronousSearchSize)

      This determines the internal search size that is run synchronously during operations such as searching for Code System IDs by System and Code

      Since:
      5.4.0
    • isEnableTaskBulkImportJobExecution

      If this is enabled (this is the default), this server will attempt to activate and run Bulk Import batch jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • setEnableTaskBulkImportJobExecution

      public void setEnableTaskBulkImportJobExecution(boolean theEnableTaskBulkImportJobExecution)
      If this is enabled (this is the default), this server will attempt to activate and run Bulk Import batch jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • isEnableTaskBulkExportJobExecution

      If this is enabled (this is the default), this server will attempt to activate and run Bulk Export batch jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • setEnableTaskBulkExportJobExecution

      public void setEnableTaskBulkExportJobExecution(boolean theEnableTaskBulkExportJobExecution)
      If this is enabled (this is the default), this server will attempt to activate and run Bulk Export batch jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • isEnableTaskPreExpandValueSets

      If this is enabled (this is the default), this server will attempt to pre-expand any ValueSets that have been uploaded and are not yet pre-expanded. Otherwise, this server will not.
      Since:
      5.5.0
    • setEnableTaskPreExpandValueSets

      public void setEnableTaskPreExpandValueSets(boolean theEnableTaskPreExpandValueSets)
      If this is enabled (this is the default), this server will attempt to pre-expand any ValueSets that have been uploaded and are not yet pre-expanded. Otherwise, this server will not.
      Since:
      5.5.0
    • isEnableTaskStaleSearchCleanup

      If this is enabled (this is the default), this server will periodically scan for and try to delete stale searches in the database. Otherwise, this server will not.
      Since:
      5.5.0
    • setEnableTaskStaleSearchCleanup

      public void setEnableTaskStaleSearchCleanup(boolean theEnableTaskStaleSearchCleanup)
      If this is enabled (this is the default), this server will periodically scan for and try to delete stale searches in the database. Otherwise, this server will not.
      Since:
      5.5.0
    • isEnableTaskResourceReindexing

      If this is enabled (this is the default), this server will attempt to run resource reindexing jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • setEnableTaskResourceReindexing

      public void setEnableTaskResourceReindexing(boolean theEnableTaskResourceReindexing)
      If this is enabled (this is the default), this server will attempt to run resource reindexing jobs. Otherwise, this server will not.
      Since:
      5.5.0
    • isAccountForDateIndexNulls

      public boolean isAccountForDateIndexNulls()
      If set to true (default is false), date indexes will account for null values in the range columns. As of 5.3.0 we no longer place null values in these columns, but legacy data may exist that still has these values. Note that enabling this results in more complexity in the search SQL.
      Since:
      5.5.0
    • setAccountForDateIndexNulls

      public void setAccountForDateIndexNulls(boolean theAccountForDateIndexNulls)
      If set to true (default is false), date indexes will account for null values in the range columns. As of 5.3.0 we no longer place null values in these columns, but legacy data may exist that still has these values. Note that enabling this results in more complexity in the search SQL.
      Since:
      5.5.0
    • canDeleteExpunge

      public boolean canDeleteExpunge()
    • cannotDeleteExpungeReason

    • getHSearchIndexPrefix

      Sets a prefix for any indexes created when interacting with hsearch. This will apply to fulltext search indexes and terminology expansion indexes.
      Since:
      5.6.0
    • setHSearchIndexPrefix

      public void setHSearchIndexPrefix(String thePrefix)
      Sets a prefix for any indexes created when interacting with hsearch. This will apply to fulltext search indexes and terminology expansion indexes.
      Since:
      5.6.0
    • isAdvancedHSearchIndexing

      public boolean isAdvancedHSearchIndexing()
      Is HSearch indexing enabled beyond _contains or _text?
      Since:
      5.6.0
    • setAdvancedHSearchIndexing

      public void setAdvancedHSearchIndexing(boolean theAdvancedHSearchIndexing)
      Enable/disable HSearch indexing enabled beyond _contains or _text.

      String, token, and reference parameters can be indexed in HSearch. This extends token search to support :text searches, as well as supporting :contains and :text on string parameters.

      Since:
      5.6.0
    • isStoreResourceInHSearchIndex

      Is storing of Resource in HSearch index enabled?
      Since:
      5.7.0
    • setStoreResourceInHSearchIndex

      public void setStoreResourceInHSearchIndex(boolean theStoreResourceInHSearchIndex)

      Enable Resource to be stored inline with HSearch index mappings. This is useful in cases where after performing a search operation the resulting resource identifiers don't have to be looked up in the persistent storage, but rather the inline stored resource can be used instead.

      For e.g - Storing Observation resource in HSearch index would be useful when performing $lastn operation.

      Since:
      5.7.0
    • isConcurrentBundleValidation

      public boolean isConcurrentBundleValidation()
      Since:
      5.7.0
      See Also:
      • FhirValidator.isConcurrentBundleValidation()
    • setConcurrentBundleValidation

      public JpaStorageSettings setConcurrentBundleValidation(boolean theConcurrentBundleValidation)
      Since:
      5.7.0
      See Also:
      • FhirValidator.isConcurrentBundleValidation()
    • isAllowAutoInflateBinaries

      public boolean isAllowAutoInflateBinaries()
      This setting indicates whether binaries are allowed to be automatically inflated from external storage during requests. Default is true.
      Returns:
      whether binaries are allowed to be automatically inflated from external storage during requests.
      Since:
      6.0.0
    • setAllowAutoInflateBinaries

      public void setAllowAutoInflateBinaries(boolean theAllowAutoDeExternalizingBinaries)
      This setting indicates whether binaries are allowed to be automatically inflated from external storage during requests. Default is true.
      Parameters:
      theAllowAutoDeExternalizingBinaries - the value to set.
      Since:
      6.0.0
    • getAutoInflateBinariesMaximumBytes

      This setting controls how many bytes of binaries will be automatically inflated from external storage during requests. which contain binary data. Default is 10MB
      Returns:
      the number of bytes to de-externalize during requests.
      Since:
      6.0.0
    • setAutoInflateBinariesMaximumBytes

      public void setAutoInflateBinariesMaximumBytes(long theAutoInflateBinariesMaximumBytes)
      This setting controls how many bytes of binaries will be automatically inflated from external storage during requests. which contain binary data. Default is 10MB
      Parameters:
      theAutoInflateBinariesMaximumBytes - the maximum number of bytes to de-externalize.
      Since:
      6.0.0
    • getBulkExportFileRetentionPeriodHours

      This setting controls how long Bulk Export collection entities will be retained after job start. Default is 2 hours. Setting this value to 0 or less will cause Bulk Export collection entities to never be expired.
      Since:
      6.0.0
    • setBulkExportFileRetentionPeriodHours

      public void setBulkExportFileRetentionPeriodHours(int theBulkExportFileRetentionPeriodHours)
      This setting controls how long Bulk Export collection entities will be retained after job start. Default is 2 hours. Setting this value to 0 or less will cause Bulk Export collection entities to never be expired.
      Since:
      6.0.0
    • getEnableBulkExportJobReuse

      public boolean getEnableBulkExportJobReuse()
      This setting controls whether, upon receiving a request for an $export operation, if a batch job already exists that exactly matches the new request, the system should attempt to reuse the batch job. Default is true.
    • setEnableBulkExportJobReuse

      public void setEnableBulkExportJobReuse(boolean theEnableBulkExportJobReuse)
      This setting controls whether, upon receiving a request for an $export operation, if a batch job already exists that exactly matches the new request, the system should attempt to reuse the batch job. Default is true.
    • isUpdateWithHistoryRewriteEnabled

      This setting indicates whether updating the history of a resource is allowed. Default is false.
      Since:
      6.1.0
    • setUpdateWithHistoryRewriteEnabled

      public void setUpdateWithHistoryRewriteEnabled(boolean theUpdateWithHistoryRewriteEnabled)
      This setting indicates whether updating the history of a resource is allowed. Default is false.
      Since:
      6.1.0
    • isPreserveRequestIdInResourceBody

      This setting indicate whether a providedResource.meta.source requestID (source#requestID) should be preserved or overwritten.
      Since:
      6.2.0
    • setPreserveRequestIdInResourceBody

      public void setPreserveRequestIdInResourceBody(boolean thePreserveRequestIdInResourceBody)
      This setting indicate whether a providedResource.meta.source requestID (source#requestID) should be preserved or overwritten. Default is false. This means that a client provided requestId will be overwritten.
      Since:
      6.2.0
    • getBulkExportFileMaximumCapacity

      This setting controls how many resources will be stored in each binary file created by a bulk export. Default is 1000 resources per file.
      Since:
      6.2.0
    • setBulkExportFileMaximumCapacity

      public void setBulkExportFileMaximumCapacity(int theBulkExportFileMaximumCapacity)
      This setting controls how many resources will be stored in each binary file created by a bulk export. Default is 1000 resources per file.
      Since:
      6.2.0
      See Also:
    • getBulkExportFileMaximumSize

      Defines the maximum size for a single work chunk or report file to be held in memory or stored in the database for bulk export jobs. Note that the framework will attempt to not exceed this limit, but will only estimate the actual chunk size as it works, so this value should be set below any hard limits that may be present.
      Since:
      7.2.0
      See Also:
    • setBulkExportFileMaximumSize

      public void setBulkExportFileMaximumSize(long theBulkExportFileMaximumSize)
      Defines the maximum size for a single work chunk or report file to be held in memory or stored in the database for bulk export jobs. Default is 100 MB. Note that the framework will attempt to not exceed this limit, but will only estimate the actual chunk size as it works, so this value should be set below any hard limits that may be present.
      Since:
      7.2.0
      See Also:
    • isJobFastTrackingEnabled

      public boolean isJobFastTrackingEnabled()
      If this setting is enabled, then gated batch jobs that produce only one chunk will immediately trigger a batch maintenance job. This may be useful for testing, but is not recommended for production use.
      Since:
      6.4.0
    • setJobFastTrackingEnabled

      public void setJobFastTrackingEnabled(boolean theJobFastTrackingEnabled)
      If this setting is enabled, then gated batch jobs that produce only one chunk will immediately trigger a batch maintenance job. This may be useful for testing, but is not recommended for production use.
      Since:
      6.4.0
    • isResourceDbHistoryEnabled

      public boolean isResourceDbHistoryEnabled()
      If set to false (default is true), the server will not preserve resource history and will delete previous versions of resources when a resource is updated.

      Note that this does not make the server completely version-less. Resources will still have a version number which increases every time a resource is modified, operations such as vread and history will still be supported, and features such as ETags and ETag-aware updates will still work. Disabling this setting simply means that when a resource is updated, the previous version of the resource will be expunged. This could be done in order to conserve space, or in cases where there is no business value to storing previous versions of resources.

      Since:
      7.0.0
    • setResourceDbHistoryEnabled

      public void setResourceDbHistoryEnabled(boolean theResourceHistoryEnabled)
      If set to false (default is true), the server will not preserve resource history and will delete previous versions of resources when a resource is updated.

      Note that this does not make the server completely version-less. Resources will still have a version number which increases every time a resource is modified, operations such as vread and history will still be supported, and features such as ETags and ETag-aware updates will still work. Disabling this setting simply means that when a resource is updated, the previous version of the resource will be expunged. This could be done in order to conserve space, or in cases where there is no business value to storing previous versions of resources.

      Since:
      7.0.0
    • isNonResourceDbHistoryEnabled

      This setting controls whether MdmLink and other non-resource DB history is enabled.

      By default, this is enabled unless explicitly disabled.

      Returns:
      Whether non-resource DB history is enabled (default is true);
      Since:
      6.6.0
    • getIssueSeverityForCodeDisplayMismatch

      @Nonnull public ca.uhn.fhir.context.support.IValidationSupport.IssueSeverity getIssueSeverityForCodeDisplayMismatch()
      This setting controls the validation issue severity to report when a code validation finds that the code is present in the given CodeSystem, but the display name being validated doesn't match the expected value(s). Defaults to IValidationSupport.IssueSeverity.WARNING. Set this value to IValidationSupport.IssueSeverity.INFORMATION if you don't want to see display name validation issues at all in resource validation outcomes.
      Since:
      7.0.0
    • setIssueSeverityForCodeDisplayMismatch

      public void setIssueSeverityForCodeDisplayMismatch(@Nonnull ca.uhn.fhir.context.support.IValidationSupport.IssueSeverity theIssueSeverityForCodeDisplayMismatch)
      This setting controls the validation issue severity to report when a code validation finds that the code is present in the given CodeSystem, but the display name being validated doesn't match the expected value(s). Defaults to IValidationSupport.IssueSeverity.WARNING. Set this value to IValidationSupport.IssueSeverity.INFORMATION if you don't want to see display name validation issues at all in resource validation outcomes.
      Parameters:
      theIssueSeverityForCodeDisplayMismatch - The severity. Must not be null.
      Since:
      7.0.0
    • isWriteToLegacyLobColumns

      public boolean isWriteToLegacyLobColumns()
      This method returns whether data will be stored in LOB columns as well as the columns introduced to migrate away from LOB. Writing to LOB columns is set to false by default. Enabling the setting will effectively double the persisted information. If enabled, a careful monitoring of LOB table (if applicable) is required to avoid exceeding the table maximum capacity.
      Since:
      7.2.0
    • setWriteToLegacyLobColumns

      public void setWriteToLegacyLobColumns(boolean theWriteToLegacyLobColumns)
      This setting controls whether data will be stored in LOB columns as well as the columns introduced to migrate away from LOB. Writing to LOB columns is set to false by default. Enabling the setting will effectively double the persisted information. When enabled, a careful monitoring of LOB table (if applicable) is required to avoid exceeding the table maximum capacity.
      Parameters:
      theWriteToLegacyLobColumns -
      Since:
      7.2.0
    • setNonResourceDbHistoryEnabled

      public void setNonResourceDbHistoryEnabled(boolean theNonResourceDbHistoryEnabled)
      This setting controls whether MdmLink and other non-resource DB history is enabled.

      By default, this is enabled unless explicitly disabled.

      Parameters:
      theNonResourceDbHistoryEnabled - Whether non-resource DB history is enabled (default is true);
      Since:
      6.6.0
    • setPreventInvalidatingConditionalMatchCriteria

      public void setPreventInvalidatingConditionalMatchCriteria(boolean theCriteria)
    • isPreventInvalidatingConditionalMatchCriteria

    • getRestDeleteByUrlResourceIdThreshold

    • setRestDeleteByUrlResourceIdThreshold

      public void setRestDeleteByUrlResourceIdThreshold(long theRestDeleteByUrlResourceIdThreshold)