Configuration Files
Runtime behavior and logging are controlled using configuration files.
Parent topic: Deployment Details
Properties File
The runtime behavior of the FHIR JPA server can be managed using the hdr_fhir.yaml file: <HDR_DOMAIN>/config/fhir/hdr_fhir.yaml
Example 4-1 hdr_fhir.yaml file
#Adds the option to go to eg. http://localhost:8080/actuator/health for seeing the running configuration
#see https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints
management:
endpoints:
web:
exposure:
include: "health,prometheus"
spring:
main:
allow-circular-references: true
#allow-bean-definition-overriding: true
flyway:
enabled: false
check-location: false
baselineOnMigrate: true
#########
# datasrouce - specify datasource here(name of the datasource configured in your app server)
#########
datasource:
jndi_name: jdbc/OrclFhirDataSource
jpa:
properties:
hibernate.format_sql: false
hibernate.show_sql: false
#Hibernate dialect is automatically detected except Postgres and H2.
hibernate.hbm2ddl.auto: none
hibernate.jdbc.batch_size: 20
hibernate.cache.use_query_cache: false
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_structured_entries: false
hibernate.cache.use_minimal_puts: false
### These settings will enable fulltext search with lucene or elastic
hibernate.search.enabled: true
### lucene parameters
hibernate.search.backend.type: lucene
hibernate.search.backend.analysis.configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiLuceneAnalysisConfigurer
hibernate.search.backend.directory.type: local-filesystem
hibernate.search.backend.directory.root: target/lucenefiles
hibernate.search.backend.lucene_version: lucene_current
### elastic parameters ===> see also elasticsearch section below <===
# hibernate.search.backend.type: elasticsearch
# hibernate.search.backend.analysis.configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiElasticAnalysisConfigurer
hapi:
fhir:
### This is the FHIR version. Choose between, DSTU2, DSTU3, R4 or R5
fhir_version: R4
### This enables the swagger-ui at <BaseUrl>/swagger-ui/index.html as well as the <BaseUrl>/api-docs
openapi_enabled: true
### enable to use the ApacheProxyAddressStrategy which uses X-Forwarded-* headers
### to determine the FHIR server address
# use_apache_address_strategy: false
### forces the use of the https:// protocol for the returned server address.
### alternatively, it may be set using the X-Forwarded-Proto header.
# use_apache_address_strategy_https: false
### enables the server to host content like HTML, css, etc. under the url pattern of /static/**
### the deepest folder level will be used. E.g. - if you put file:/foo/bar/bazz as value then the files are resolved under /static/bazz/**
#staticLocation: file:/foo/bar/bazz
### enable to set the Server URL
# server_address: http://hapi.fhir.org/baseR4
# defer_indexing_for_codesystems_of_size: 101
##########################
# Repository Validation(resource validation against Implementation Gudie)
# IG can be loaded from remote url(http:), local file(file:) or classpath(classpath:)
# If no url specified, IG is downloaded from central package respository(https://packages.fhir.org/)
# note: url can be either http:, https:, classpath:, or file:
##########################
load_ig_on_server_startup: false
install_transitive_ig_dependencies: false
implementationguides:
# australia_core:
# name: hl7.fhir.au.base
# version: 4.1.0
# url:
us_core:
name: hl7.fhir.us.core
version: 6.0.0
# url:
# supported_resource_types:
# - Patient
# - Observation
###############
# Repository validation enable/disable
###############
validation_repository_enabled: false
##################################################
# Allowed Bundle Types for persistence (defaults are: COLLECTION,DOCUMENT,MESSAGE)
##################################################
allowed_bundle_types: COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET
allow_cascading_deletes: true
allow_contains_searches: true
allow_external_references: true
allow_multiple_delete: true
allow_override_default_search_params: true
auto_create_placeholder_reference_targets: false
# cr_enabled: true
# ips_enabled: false
default_encoding: JSON
# default_pretty_print: true
default_page_size: 20
delete_expunge_enabled: true
enable_index_missing_fields: false
# enable_index_of_type: true
# enable_index_contained_resource: false
### !!Extended Lucene/Elasticsearch Indexing is still a experimental feature, expect some features (e.g. _total=accurate) to not work as expected!!
### more information here: https://hapifhir.io/hapi-fhir/docs/server_jpa/elastic.html
advanced_lucene_indexing: false
# bulk_export_enabled: false
# bulk_import_enabled: false
# enforce_referential_integrity_on_delete: false
# This is an experimental feature, and does not fully support _total and other FHIR features.
enforce_referential_integrity_on_delete: false
enforce_referential_integrity_on_write: false
etag_support_enabled: true
expunge_enabled: true
# client_id_strategy: ALPHANUMERIC
fhirpath_interceptor_enabled: false
filter_search_enabled: true
graphql_enabled: true
narrative_enabled: false
# mdm_enabled: true
# local_base_urls:
# - https://hapi.fhir.org/baseR4
mdm_enabled: false
# partitioning:
# allow_references_across_partitions: false
# partitioning_include_in_search_hashes: false
cors:
allow_Credentials: true
# These are allowed_origin patterns, see: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/cors/CorsConfiguration.html#setAllowedOriginPatterns-java.util.List-
allowed_origin:
- '*'
# Search coordinator thread pool sizes
search-coord-core-pool-size: 20
search-coord-max-pool-size: 100
search-coord-queue-capacity: 200
# comma-separated package names, will be @ComponentScan'ed by Spring to allow for creating custom Spring beans
#custom-bean-packages:
# comma-separated list of fully qualified interceptor classes.
# classes listed here will be fetched from the Spring context when combined with 'custom-bean-packages',
# or will be instantiated via reflection using an no-arg contructor; then registered with the server
#custom-interceptor-classes:
# Threadpool size for BATCH'ed GETs in a bundle.
# bundle_batch_pool_size: 10
# bundle_batch_pool_max_size: 50
logger:
error_format: 'ERROR - ${requestVerb} ${requestUrl}'
format: >-
Path[${servletPath}] Source[${requestHeader.x-forwarded-for}]
Operation[${operationType} ${operationName} ${idOrResourceName}]
UA[${requestHeader.user-agent}] Params[${requestParameters}]
ResponseEncoding[${responseEncodingNoDefault}]
log_exceptions: true
name: fhirtest.access
max_binary_size: 104857600
max_page_size: 200
retain_cached_searches_mins: 60
reuse_cached_search_results_millis: -1
#############
#Resource validation configuration
#############
validation:
requests_enabled: false
responses_enabled: false
# if remote terminology validation is set to true, make sure that request validation is also enabled(requests_enabled property).
remote_terminology_service_enabled: false
remote_terminology_server_base_url: https://lforms-fhir.nlm.nih.gov/baseR4
#############
binary_storage_enabled: true
############
#below property decides whether to store the resource as plain text in RES_TEXT_VC column.
#if the resource size is below the size as set in the below property, it goes RES_TEXT_VC column,
#if its larger than the property set value, it goes to RES_TEXT as compressed blob.
# summary - the resource is stored in either RES_TEXT_VC or RES_TEXT dependeing on the size set below.
inline_resource_storage_below_size: 0
# bulk_export_enabled: true
subscription:
resthook_enabled: false
websocket_enabled: false
# email:
# from: some@test.com
# host: localhost
# port: 22
# username:
# password:
# auth:
# startTlsEnable:
# startTlsRequired:
# quitWait:
# lastn_enabled: true
# store_resource_in_lucene_index_enabled: true
### This is configuration for normalized quantity search level default is 0
### 0: NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED - default
### 1: NORMALIZED_QUANTITY_STORAGE_SUPPORTED
### 2: NORMALIZED_QUANTITY_SEARCH_SUPPORTED
normalized_quantity_search_level: 0
metadata:
implementation_description: Oracle FHIR Server
software_name: Oracle FHIR Server
publisher: Oracle Corporation
software_version: 8.1.4
resource_count_enabled: false
resource_compression_enabled: true
response_highlighter_enabled: true
allow_placeholder_references: true
response_timing_log_enabled: false
############
# for extracting unique request id from the incoming REST HTTP request and log the id into server log file.
enable_http_header_logging: true
request_id_key_http_header: X-Request-ID
############
############
# for controlling scheduled job - resourcecountcache
enable_resource_count_scheduling_job: false
resource_count_cache_expiry_time_in_minutes: 240
resource_count_job_scheduling_time_in_minutes: 10
############
audit:
enabled: true
datastore_type: DB
savemessagepayload_enabled: false
standard: CUSTOM
elasticsearch:
debug:
pretty_print_json_log: false
refresh_after_write: false
enabled: false
required_index_status: YELLOW
rest_url: 'localhost:9200'
protocol: 'http'
schema_management_strategy: CREATE
username: SomeUsername
password: SomePassword
oauth:
enabled: false
token_issuer: "https://dev-t9brtcqa.auth0.com/"
token_audience: "https://fhir-hdr.auth.com/api/v2/"
token_alg: HS256
scopes: "fhir.admin,fhir.users,fhir.users.restricted"
fhir.admin: read,create,update,delete
fhir.users: read,create
fhir.users.restricted: read
#note: add more if needed
#scopes and allowed fhir resources
fhir.admin.allowedapis: ALL
fhir.users.allowedapis: ALL
#ResearchStudy
fhir.users.restricted.allowedapis: Patient, Observation, AllergyIntolerance, Medication, Condition, Procedure, Immunization
Parent topic: Configuration Files
Log Configurations
HDR FHIR has several logging mechanisms that each serve a distinct purpose. These mechanisms are described in the table below. Oracle HDR FHIR uses the log4j2 logging framework to emit these logs. These logs are generated at runtime by all components of the FHIR. The location of the log4j2.properties is: <HDR_DOMAIN>/config/fhir/ log4j2.properties.
Table 4-1 Log files
| Log | File | Purpose | Retention |
|---|---|---|---|
|
Application log |
<HDR_DOMAIN>/logs/ hdr-fhir.log |
Application Logging is a traditional file-based log of events and internal processing details of Oracle HDR FHIR. These logs are useful for troubleshooting. Application logs can be enabled and disabled at runtime by modifying the log4j2 properties file. |
Logs are rotated and compressed on a Time basis, although this can be configured using the log4j2.properties file. |
|
Audit Log |
<HDR_DOMAIN>/logs/ audit-hdr-fhir.log |
The audit log is intended to record actions taken by users. This log can be enabled or disabled using “audit.enabled" property defined in the hdr_fhir.properties file. |
Logs are rotated and compressed on a Time basis, although this can be configured using log4j2.properties file. |
Parent topic: Configuration Files