spring:
  datasource:
    url: 'jdbc:h2:file:./target/database/h2'
    #url: jdbc:h2:mem:test_mem
    username: null
    password: null
    driverClassName: org.h2.Driver
    max-active: 15

    # Database connection pool size
    hikari:
      maximum-pool-size: 10
  jpa:
    properties:
      hibernate.format_sql:                   false
      hibernate.show_sql:                     false
#      hibernate.dialect:                      org.hibernate.dialect.h2dialect # Currently not included, so commenting out will lead to an error
#      hibernate.hbm2ddl.auto:                 update
#      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
      hibernate.search.enabled:                     true
      hibernate.search.backend.type:                lucene
      hibernate.search.backend.analysis.configurer: ca.uhn.fhir.jpa.search.HapiLuceneAnalysisConfigurer
      hibernate.search.backend.directory.type:      local-filesystem
      hibernate.search.backend.directory.root:      target/lucenefiles
      hibernate.search.backend.lucene_version:      lucene_current
  batch:
    job:
      enabled: false
hapi:
  fhir:
    fhir_version:                           R4                          # (Default: R4) This is the FHIR version. Choose between, DSTU2, DSTU3, R4 or R5
    use_apache_address_strategy:            false                       # (Default: false) Enable to use the ApacheProxyAddressStrategy which uses X-Forwarded-* headers to determine the FHIR server address
    use_apache_address_strategy_https:      false                       # (Default: false) Forces the use of the https:// protocol for the returned server address. Alternatively, it may be set using the X-Forwarded-Proto header.
#    server_address:                         http://hapi.fhir.org/baseR4 # This is the address of the REST FHIR API hosted by the server (typically at /fhir). When you make a request to /fhir/Patient (for example) HAPI will respond with urls that are based on this configuration property, i.e., <hapi.fhir.server_address>/Patient/Patient1.
#    defer_indexing_for_codesystems_of_size: 101

    ## One or more implementation guides that should be loaded onto the FHIR server upon launching
    # Example from registry (packages.fhir.org)
    #    swiss:
    #      name: swiss.mednet.fhir
    #      version: 0.8.0
    # Example not from registry
    #    ips_1_0_0:
    #      url: https://build.fhir.org/ig/HL7/fhir-ips/package.tgz
    #      name: hl7.fhir.uv.ips
    #      version: 1.0.0
    implementationguides:
      uscore:
        name: hl7.fhir.us.core
        version: 3.1.0
      mcode:
        name: hl7.fhir.us.mcode
        version: 1.16.0
      # mcode:
      #   url: http://build.fhir.org/ig/HL7/fhir-mCODE-ig/package.tgz
      #   name: hl7.fhir.us.mcode
      #   version: 4.0.1
      loinc:
        url: https://fhir.loinc.org/ValueSet/LL1162-8
        name: http://loinc.org
        version: 2.67
      icd10:
        url: http://hl7.org/fhir/sid/icd-10-cm
        name: http://hl7.org/fhir/sid/icd-10-cm
        version: 2.1.0
      snomed:
        url: https://build.fhir.org/ig/FHIR/snomed-ig/validator.pack
        name: http://hl7.org/fhir/sid/icd-10-cm
        version: 1.0.0
 
     ## Array of strings that represents a list of resource types supported by the HAPI installation 
#    supported_resource_types:
#      - Patient
#      - Observation
    
    ## FHIR server options
    allow_contains_searches:                   false        # (Default: false) If set to true, clients will be permitted to use the ':contains' modifier on String searches. This is a potentially slow operation so enable with caution.
    allow_cascading_deletes:                   true         # (Default: false) Enable this setting to permit cascading deletes across resource references.
    allow_external_references:                 false        # (Default: false) If enabled, the server will allow resources to have references to external servers.
    allow_multiple_delete:                     true         # (Default: false) If enabled, the server will allow delete operations that match more than one resource. Enabling this setting can be convenient but it increases the possibility of accidental bulk deletion.
    allow_override_default_search_params:      true
    auto_create_placeholder_reference_targets: false        # (Default: false) If this setting is enabled and a resource is created with a reference to a non-existing resource, the server will automatically create an empty placeholder resource to satisfy this reference.
    client_id_strategy:                        ALPHANUMERIC # (Default: ALPHANUMERIC) This influences what IDs are accepted by Create-as-Update requests. By default, only IDs that start with letters are allowed when calling a PUT that represents creating a new resource. This can be overridden with ANY and it will allow any format of resource IDs.
    cql_enabled:                               false        # (Default: false) Enable Clinical Quality Language, see for more information https://cql.hl7.org/
    enable_index_contained_resource:           true         # (Default: false) If enabled, the server will generate appropriate indexes to support the _contained search parameter flag, which allows chained searches to descend automatically into contained resources.
    enable_repository_validating_interceptor:  false
#    enable_index_missing_fields:               false
    enforce_referential_integrity_on_delete:   true         # (Default: true)  If disabled, resources may be deleted even if they are referenced by other resources. 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. Disable with caution.
    enforce_referential_integrity_on_write:    true         # (Default: true)  If disabled, resources may be created or updated even if they contain references to local resources that do not exist. 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. In particular, resource references to target resources that do not exist at the time that the source resource is created will not be indexed, even if the target resource is created later. Disable with caution.
#    etag_support_enabled:                      true
    expunge_enabled:                           false        # (Default: false) Enabling this setting allows the Expunge Operation ($expunge) to be performed by users with appropriate permission. Expunge is a dangerous operation so it is disabled by default.
#    daoconfig_client_id_strategy:              null
#    fhirpath_interceptor_enabled:              false
    filter_search_enabled:                     false        # (Default: false) This setting enables the '_filter' search parameter. Filter is a standard FHIR search parameter that can be used to narrow down the scope of a search.
    graphql_enabled:                           true         # (Default: true)  If enabled, endpoints configured against this storage module will support GraphQL Queries.
    mdm_enabled:                               false        # (Default: false) Enable MDM matching rules, which are configured in mdm-rules.json (when provided within the same folder as this configuration file). The rules in this example file should be replaced with actual matching rules appropriate to your data. Note that MDM relies on subscriptions, so for MDM to work, subscriptions must be enabled.
#    narrative_enabled:                         true
#    retain_cached_searches_mins:               60
    reuse_cached_search_results_millis:        0            # (Default 60000)  If set, any searches repeated during this period for the exact same criteria will reuse the same search results instead of performing a new search. Set this value to 0 to disable the query cache entirely or set to a positive number of milliseconds to specify a specific timeout.

    ## Default properties
    default_encoding:     JSON
    default_pretty_print: true
    default_page_size:    50 # (Default: 50) This value sets the default page size for Bundle results of search and history operations.

     ## The presence of this property object in the config enabled partitioning/multi-tenancy.
#     partitioning:
#       allow_references_across_partitions:    false
#       partitioning_include_in_search_hashes: false
    cors:
      allow_Credentials: true
      # Array of strings that can represent multiple origins allowed by CORS. This affects how the FHIR REST API responds with the Allowed-Origin header.
      # 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

    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
    tester:
      home:
        name: Local XRTS Validator Tester
        server_address: 'http://localhost:8080/fhir'
        refuse_to_fetch_third_party_urls: false
        fhir_version: R4
      global:
        name: Global Tester
        server_address: "http://hapi.fhir.org/baseR4"
        refuse_to_fetch_third_party_urls: false
        fhir_version: R4
    validation:
      requests_enabled:  false
      responses_enabled: false
#    binary_storage_enabled: true
#    bulk_export_enabled: true
    subscription:
      resthook_enabled: true
#      websocket_enabled: false
#      email:
#        from: some@test.com
#        host: google.com
#        port:
#        username:
#        password:
#        auth:
#        startTlsEnable:
#        startTlsRequired:
#        quitWait:
#    lastn_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: 2
#elasticsearch:
#  debug:
#    pretty_print_json_log: false
#    refresh_after_write: false
#  enabled: false
#  password: SomePassword
#  required_index_status: YELLOW
#  rest_url: 'localhost:9200'
#  protocol: 'http'
#  schema_management_strategy: CREATE
#  username: SomeUsername
