Feature/cds config (#857)
* Added MCP support using SSE on http://localhost:8080/sse * Reverted change that IntelliJ complains about * Pre-rework * Cleaned up the code a fair bit * Renamed * Renamed * Running spotless * Reuse FhirContext in result serialization to make MCP server work with R5 * Added support for transactions * PoC tool for CDS Hooks * some cleanup * Upgrade of model protocol * Added comments * Removed field injection ... CDS to be changed to AutoConfig eventually * Adjusted to new builder pattern * Update src/main/java/ca/uhn/fhir/rest/server/MCPBridge.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * A bit of restructuring * More rework * Removing (suspected unnecessary) formatting * Add more example doc * Added a smoke- / passthrough-test * Applied spotless * Update src/main/java/ca/uhn/fhir/jpa/starter/mcp/RequestBuilder.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/main/java/ca/uhn/fhir/jpa/starter/mcp/RequestBuilder.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/main/java/ca/uhn/fhir/jpa/starter/mcp/ToolFactory.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/main/java/ca/uhn/fhir/rest/server/McpCdsBridge.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/main/java/ca/uhn/fhir/rest/server/McpCdsBridge.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Formatting * Added some documentation * spotless cares about MD? * Reverting back to default values * minor refinements * Fixed CDS hooks configuration * Fixed some wirings * Readded missing elements * getting closer to get test running again ... * applying review * Readded exclude * Bumped spring-ai deps * added agents file * Updated according to review --------- Co-authored-by: Ádám Z. Kövér <adamzkover@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
d29b9f80af
commit
d76662c9e9
@@ -1,24 +1,22 @@
|
||||
#Uncomment the "servlet" and "context-path" lines below to make the fhir endpoint available at /example/path/fhir instead of the default value of /fhir
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Server & Spring Boot
|
||||
# -------------------------------------------------------------------------------------
|
||||
server:
|
||||
# servlet:
|
||||
# context-path: /example/path
|
||||
# Uncomment to serve FHIR under a non-default context path (e.g., /example/path/fhir)
|
||||
# servlet:
|
||||
# context-path: /example/path
|
||||
port: 8080
|
||||
tomcat:
|
||||
# allow | as a separator in the URL
|
||||
# allow | as a separator in URLs
|
||||
relaxed-query-chars: "|"
|
||||
#Adds the option to go to e.g. 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:
|
||||
health:
|
||||
elasticsearch:
|
||||
enabled: false
|
||||
#The following configuration will enable the actuator endpoints at /actuator/health, /actuator/info, /actuator/prometheus, /actuator/metrics. For security purposes, only /actuator/health is enabled by default.
|
||||
# Actuator endpoints: only /actuator/health exposed by default
|
||||
endpoints:
|
||||
enabled-by-default: false
|
||||
web:
|
||||
exposure:
|
||||
# expose only health (default) — change to [health,info,prometheus,metrics] if you want them reachable
|
||||
include: health
|
||||
include: "health" # or "info,health,prometheus,metrics" or "*" for all
|
||||
endpoint:
|
||||
info:
|
||||
enabled: true
|
||||
@@ -30,40 +28,42 @@ management:
|
||||
enabled: true
|
||||
group:
|
||||
liveness:
|
||||
include:
|
||||
- livenessState
|
||||
- readinessState
|
||||
include: [ "livenessState", "readinessState" ]
|
||||
prometheus:
|
||||
enabled: true
|
||||
prometheus:
|
||||
metrics:
|
||||
export:
|
||||
enabled: true
|
||||
spring:
|
||||
ai:
|
||||
# Run e.g. `npx @modelcontextprotocol/inspector` and connect to http://localhost:8080/mcp/message using Streamable HTTP
|
||||
|
||||
# Add the following to the MCP server settings file in e.g. cursor or claude (Desktop applications) for local debugging:
|
||||
# cursor:
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "hapi": {
|
||||
# "url": "http://localhost:8080/mcp/message"
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
# or claude:
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "hapi": {
|
||||
# "command": "npx",
|
||||
# "args": [
|
||||
# "mcp-remote@latest",
|
||||
# "http://localhost:8080/mcp/message"
|
||||
# ]
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
spring:
|
||||
# -------------------------------------------------------------------------------
|
||||
# A. Spring AI — Model Context Protocol (MCP)
|
||||
# -------------------------------------------------------------------------------
|
||||
ai:
|
||||
# Run e.g. `npx @modelcontextprotocol/inspector` and connect to http://localhost:8080/mcp/messages using Streamable HTTP
|
||||
|
||||
# Add the following to the MCP server settings file in e.g. cursor or claude (Desktop applications) for local debugging:
|
||||
# cursor:
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "hapi": {
|
||||
# "url": "http://localhost:8080/mcp/messages"
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
# or claude:
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "hapi": {
|
||||
# "command": "npx",
|
||||
# "args": [
|
||||
# "mcp-remote@latest",
|
||||
# "http://localhost:8080/mcp/messages"
|
||||
# ]
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
mcp:
|
||||
server:
|
||||
@@ -75,48 +75,43 @@ spring:
|
||||
mcp-endpoint: /mcp/messages
|
||||
|
||||
|
||||
#schema:
|
||||
# fhir-enabled: true
|
||||
# fhir:
|
||||
# base-url: http://localhost:8080/fhir
|
||||
|
||||
#query:
|
||||
# prompt:
|
||||
# template: |
|
||||
# You are a FHIR assistant. Translate the following question into a valid FHIR RESTful API query:
|
||||
# "{{query}}"
|
||||
# Use the provided FHIR schema:
|
||||
# {{schema}}
|
||||
#base-url: /api/v1
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# B. Core Spring
|
||||
# -------------------------------------------------------------------------------
|
||||
main:
|
||||
allow-bean-definition-overriding: false
|
||||
allow-circular-references: true
|
||||
|
||||
autoconfigure:
|
||||
# This exclude is only needed for setups not using Elasticsearch where the elasticsearch sniff is not needed.
|
||||
exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration
|
||||
main:
|
||||
allow-bean-definition-overriding: false
|
||||
allow-circular-references: true
|
||||
|
||||
flyway:
|
||||
enabled: false
|
||||
baseline-on-migrate: true
|
||||
fail-on-missing-locations: false
|
||||
|
||||
datasource:
|
||||
#url: 'jdbc:h2:file:./target/database/h2'
|
||||
# url: "jdbc:h2:file:./target/database/h2"
|
||||
url: jdbc:h2:mem:test_mem
|
||||
username: sa
|
||||
password: null
|
||||
driver-class-name: org.h2.Driver
|
||||
|
||||
# database connection pool size
|
||||
# max-active: 15 # (ignored with HikariCP; use hikari.maximum-pool-size)
|
||||
hikari:
|
||||
maximum-pool-size: 10
|
||||
# elasticsearch:
|
||||
# uris: http://localhost:9200
|
||||
# username: elastic
|
||||
# password: changeme
|
||||
|
||||
jpa:
|
||||
properties:
|
||||
hibernate:
|
||||
format_sql: false
|
||||
show_sql: false
|
||||
# Hibernate dialect is auto-detected except for H2/Postgres.
|
||||
# If using H2: ca.uhn.fhir.jpa.model.dialect.HapiFhirH2Dialect
|
||||
# If using Postgres: ca.uhn.fhir.jpa.model.dialect.HapiFhirPostgresDialect
|
||||
dialect: ca.uhn.fhir.jpa.model.dialect.HapiFhirH2Dialect
|
||||
|
||||
# --- Optional Hibernate DDL & tuning (commented out from source) ---
|
||||
hbm2ddl:
|
||||
auto: update
|
||||
jdbc:
|
||||
@@ -126,43 +121,73 @@ spring:
|
||||
use_second_level_cache: false
|
||||
use_structured_entries: false
|
||||
use_minimal_puts: false
|
||||
format_sql: false
|
||||
show_sql: false
|
||||
#If using H2, then supply the value of ca.uhn.fhir.jpa.model.dialect.HapiFhirH2Dialect
|
||||
#If using postgres, then supply the value of ca.uhn.fhir.jpa.model.dialect.HapiFhirPostgresDialect
|
||||
#dialect: ca.uhn.fhir.jpa.model.dialect.HapiFhirPostgresDialect
|
||||
dialect: ca.uhn.fhir.jpa.model.dialect.HapiFhirH2Dialect
|
||||
|
||||
# --- Hibernate Search (Lucene/Elasticsearch) ---
|
||||
search:
|
||||
enabled: true
|
||||
schema_management:
|
||||
strategy: create
|
||||
### lucene parameters
|
||||
backend:
|
||||
type: lucene
|
||||
directory:
|
||||
type: local-filesystem
|
||||
root: target/lucenefiles
|
||||
analysis:
|
||||
configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiLuceneAnalysisConfigurer
|
||||
|
||||
### elastic parameters ===> see also elasticsearch section below <===
|
||||
# backend:
|
||||
# type: elasticsearch
|
||||
# discovery: true
|
||||
# analysis:
|
||||
# configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiElasticAnalysisConfigurer
|
||||
# hosts: localhost:9200
|
||||
# protocol: http
|
||||
# username: elastic
|
||||
# password: changeme
|
||||
# refresh_after_write: true
|
||||
enabled: false
|
||||
# Lucene backend (default example)
|
||||
# backend:
|
||||
# type: lucene
|
||||
# analysis:
|
||||
# configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiLuceneAnalysisConfigurer
|
||||
# directory:
|
||||
# type: local-filesystem
|
||||
# root: target/lucenefiles
|
||||
# lucene_version: lucene_current
|
||||
# Elasticsearch backend (alternative) — see also hapi.fhir.elasticsearch section in docs
|
||||
# backend:
|
||||
# type: elasticsearch
|
||||
# analysis:
|
||||
# configurer: ca.uhn.fhir.jpa.search.HapiHSearchAnalysisConfigurers$HapiElasticAnalysisConfigurer
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# HAPI FHIR — grouped by domain
|
||||
# -------------------------------------------------------------------------------------
|
||||
hapi:
|
||||
fhir:
|
||||
### This flag when enabled to true, will avail evaluate measure operations from CR Module.
|
||||
### Flag is false by default, can be passed as command line argument to override.
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# A. Core Server & API
|
||||
# -------------------------------------------------------------------------------
|
||||
openapi_enabled: true # Swagger UI at /fhir/swagger-ui/index.html; API docs at /fhir/api-docs
|
||||
fhir_version: R4 # DSTU2 | DSTU3 | R4 | R5
|
||||
# use_apache_address_strategy: false
|
||||
# use_apache_address_strategy_https: false
|
||||
# custom_content_path: ./custom # folder name must be 'custom'
|
||||
# app_content_path: ./configs/app # served under /web/app
|
||||
# server_address: http://hapi.fhir.org/baseR4
|
||||
# defer_indexing_for_codesystems_of_size: 101
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# B. Implementation Guides (IG) & Package Install
|
||||
# -------------------------------------------------------------------------------
|
||||
ig_runtime_upload_enabled: false
|
||||
# validate_resource_status_for_package_upload: false # default true
|
||||
# install_transitive_ig_dependencies: true
|
||||
# implementationguides:
|
||||
# swiss:
|
||||
# name: swiss.mednet.fhir
|
||||
# version: 0.8.0
|
||||
# reloadExisting: false
|
||||
# installMode: STORE_AND_INSTALL
|
||||
# ips_1_0_0:
|
||||
# packageUrl: https://costateixeira.github.io/smart-ips-pilgrimage-fulltest/package.tgz
|
||||
# name: smart.who.int.ips-pilgrimage-test
|
||||
# version: 0.1.0
|
||||
# installMode: STORE_AND_INSTALL
|
||||
# additionalResourceFolders:
|
||||
# - example
|
||||
# - example2
|
||||
# supported_resource_types:
|
||||
# - Patient
|
||||
# - Observation
|
||||
# allowed_bundle_types: COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# C. Clinical Reasoning / CQL / Care Gaps / CDS Hooks
|
||||
# -------------------------------------------------------------------------------
|
||||
cr:
|
||||
enabled: false
|
||||
enabled: false # exposes Clinical Reasoning operation endpoints
|
||||
caregaps:
|
||||
reporter: "default"
|
||||
section_author: "default"
|
||||
@@ -174,8 +199,7 @@ hapi:
|
||||
cql:
|
||||
use_embedded_libraries: true
|
||||
compiler:
|
||||
### These are low-level compiler options.
|
||||
### They are not typically needed by most users.
|
||||
# low-level compiler options (typically not needed)
|
||||
# validate_units: true
|
||||
# verify_only: false
|
||||
# compatibility_level: "1.5"
|
||||
@@ -200,124 +224,84 @@ hapi:
|
||||
debug_logging_enabled: false
|
||||
# enable_validation: false
|
||||
# enable_expression_caching: true
|
||||
terminology:
|
||||
valueset_preexpansion_mode: REQUIRE # USE_IF_PRESENT, REQUIRE, IGNORE
|
||||
valueset_expansion_mode: PERFORM_NAIVE_EXPANSION # AUTO, USE_EXPANSION_OPERATION, PERFORM_NAIVE_EXPANSION
|
||||
valueset_membership_mode: USE_EXPANSION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_EXPANSION
|
||||
code_lookup_mode: USE_VALIDATE_CODE_OPERATION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_CODESYSTEM_URL
|
||||
data:
|
||||
search_parameter_mode: USE_SEARCH_PARAMETERS # AUTO, USE_SEARCH_PARAMETERS, FILTER_IN_MEMORY
|
||||
terminology_parameter_mode: FILTER_IN_MEMORY # AUTO, USE_VALUE_SET_URL, USE_INLINE_CODES, FILTER_IN_MEMORY
|
||||
profile_mode: DECLARED # ENFORCED, DECLARED, OPTIONAL, TRUST, OFF
|
||||
|
||||
terminology:
|
||||
valueset_preexpansion_mode: REQUIRE # USE_IF_PRESENT | REQUIRE | IGNORE
|
||||
valueset_expansion_mode: PERFORM_NAIVE_EXPANSION # AUTO | USE_EXPANSION_OPERATION | PERFORM_NAIVE_EXPANSION
|
||||
valueset_membership_mode: USE_EXPANSION # AUTO | USE_VALIDATE_CODE_OPERATION | USE_EXPANSION
|
||||
code_lookup_mode: USE_VALIDATE_CODE_OPERATION # AUTO | USE_VALIDATE_CODE_OPERATION | USE_CODESYSTEM_URL
|
||||
data:
|
||||
search_parameter_mode: USE_SEARCH_PARAMETERS # AUTO | USE_SEARCH_PARAMETERS | FILTER_IN_MEMORY
|
||||
terminology_parameter_mode: FILTER_IN_MEMORY # AUTO | USE_VALUE_SET_URL | USE_INLINE_CODES | FILTER_IN_MEMORY
|
||||
profile_mode: DECLARED # ENFORCED | DECLARED | OPTIONAL | TRUST | OFF
|
||||
cdshooks:
|
||||
enabled: false
|
||||
clientIdHeaderName: client_id
|
||||
|
||||
### This enables the swagger-ui at /fhir/swagger-ui/index.html as well as the /fhir/api-docs (see https://hapifhir.io/hapi-fhir/docs/server_plain/openapi.html)
|
||||
openapi_enabled: true
|
||||
### This is the FHIR version. Choose between, DSTU2, DSTU3, R4 or R5
|
||||
fhir_version: R4
|
||||
### Flag is false by default. This flag enables runtime installation of IG's.
|
||||
ig_runtime_upload_enabled: false
|
||||
### This flag when enabled to true, will avail evaluate measure operations from CR Module.
|
||||
|
||||
### 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 overwrite defaults on HTML, css, etc. under the url pattern of eg. /content/custom **
|
||||
### Folder with custom content MUST be named custom. If omitted then default content applies
|
||||
#custom_content_path: ./custom
|
||||
### enables the server host custom content. If e.g. the value ./configs/app is supplied then the content
|
||||
### will be served under /web/app
|
||||
#app_content_path: ./configs/app
|
||||
### enable to set the Server URL
|
||||
# server_address: http://hapi.fhir.org/baseR4
|
||||
# defer_indexing_for_codesystems_of_size: 101
|
||||
### Flag is true by default. This flag filters resources during package installation, allowing only those resources with a valid status (e.g. active) to be installed.
|
||||
# validate_resource_status_for_package_upload: false
|
||||
# install_transitive_ig_dependencies: true
|
||||
#implementationguides:
|
||||
### example from registry (packages.fhir.org)
|
||||
# swiss:
|
||||
# name: swiss.mednet.fhir
|
||||
# version: 0.8.0
|
||||
# reloadExisting: false
|
||||
# installMode: STORE_AND_INSTALL
|
||||
# example not from registry
|
||||
# ips_1_0_0:
|
||||
# packageUrl: https://costateixeira.github.io/smart-ips-pilgrimage-fulltest/package.tgz
|
||||
# name: smart.who.int.ips-pilgrimage-test
|
||||
# version: 0.1.0
|
||||
# installMode: STORE_AND_INSTALL
|
||||
# additionalResourceFolders:
|
||||
# - example
|
||||
# - example2
|
||||
# supported_resource_types:
|
||||
# - Patient
|
||||
# - Observation
|
||||
##################################################
|
||||
# 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
|
||||
# mass_ingestion_mode_enabled: false
|
||||
### tells the server to automatically append the current version of the target resource to references at these paths
|
||||
# auto_version_reference_at_paths: Device.patient, Device.location, Device.parent, DeviceMetric.parent, DeviceMetric.source, Observation.device, Observation.subject
|
||||
# ips_enabled: false
|
||||
# default_encoding: JSON
|
||||
# default_pretty_print: true
|
||||
# default_page_size: 20
|
||||
# delete_enabled: true
|
||||
# delete_expunge_enabled: true
|
||||
# match_url_cache_enabled: false
|
||||
# enable_repository_validating_interceptor: true
|
||||
### Reduce the size used by search indexes by not tagging every row with the resource type and parameter name (this setting makes manual inspection of the database more difficult, but does not impact HAPI FHIR functionality in any way)
|
||||
# index_storage_optimized: false
|
||||
# enable_index_missing_fields: false
|
||||
# enable_index_of_type: true
|
||||
# enable_index_contained_resource: false
|
||||
# upliftedRefchains_enabled: true
|
||||
# resource_dbhistory_enabled: 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
|
||||
# -------------------------------------------------------------------------------
|
||||
# D. Search & Indexing
|
||||
# -------------------------------------------------------------------------------
|
||||
# NOTE: Extended Lucene/Elasticsearch indexing is experimental.
|
||||
# See https://hapifhir.io/hapi-fhir/docs/server_jpa/elastic.html
|
||||
advanced_lucene_indexing: false
|
||||
search_index_full_text_enabled: false
|
||||
# language_search_parameter_enabled: true
|
||||
# upliftedRefchains_enabled: true
|
||||
# index_storage_optimized: false
|
||||
# enable_index_missing_fields: false
|
||||
# enable_index_of_type: true
|
||||
# enable_index_contained_resource: false
|
||||
# store_resource_in_lucene_index_enabled: true
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# E. Bulk Operations
|
||||
# -------------------------------------------------------------------------------
|
||||
bulk_export_enabled: false
|
||||
bulk_import_enabled: false
|
||||
# language_search_parameter_enabled: true
|
||||
# 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
|
||||
# server_id_strategy: SEQUENTIAL_NUMERIC
|
||||
# fhirpath_interceptor_enabled: false
|
||||
# filter_search_enabled: true
|
||||
# graphql_enabled: true
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# F. Write / Delete / Integrity
|
||||
# -------------------------------------------------------------------------------
|
||||
# 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
|
||||
# mass_ingestion_mode_enabled: false
|
||||
# auto_version_reference_at_paths: Device.patient, Device.location, Device.parent, DeviceMetric.parent, DeviceMetric.source, Observation.device, Observation.subject
|
||||
# client_id_strategy: ALPHANUMERIC
|
||||
# server_id_strategy: SEQUENTIAL_NUMERIC
|
||||
# enforce_referential_integrity_on_delete: false
|
||||
# enforce_referential_integrity_on_write: false
|
||||
# etag_support_enabled: true
|
||||
# expunge_enabled: true
|
||||
# fhirpath_interceptor_enabled: false
|
||||
# filter_search_enabled: true
|
||||
# graphql_enabled: true
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# G. Narrative & Validation
|
||||
# -------------------------------------------------------------------------------
|
||||
narrative_enabled: false
|
||||
# validation:
|
||||
# requests_enabled: true
|
||||
# responses_enabled: true
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# H. MDM (Master Data Management)
|
||||
# -------------------------------------------------------------------------------
|
||||
mdm_enabled: false
|
||||
mdm_rules_json_location: "mdm-rules.json"
|
||||
## see: https://hapifhir.io/hapi-fhir/docs/interceptors/built_in_server_interceptors.html#jpa-server-retry-on-version-conflicts
|
||||
# userRequestRetryVersionConflictsInterceptorEnabled : false
|
||||
# local_base_urls:
|
||||
# - https://hapi.fhir.org/baseR4
|
||||
# pre_expand_value_sets: true
|
||||
# enable_task_pre_expand_value_sets: true
|
||||
# pre_expand_value_sets_default_count: 1000
|
||||
# pre_expand_value_sets_max_count: 1000
|
||||
# maximum_expansion_size: 1000
|
||||
# userRequestRetryVersionConflictsInterceptorEnabled: false
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# I. Terminology / ValueSet Expansion
|
||||
# -------------------------------------------------------------------------------
|
||||
# pre_expand_value_sets: true
|
||||
# enable_task_pre_expand_value_sets: true
|
||||
# pre_expand_value_sets_default_count: 1000
|
||||
# pre_expand_value_sets_max_count: 1000
|
||||
# maximum_expansion_size: 1000
|
||||
logical_urls:
|
||||
- http://terminology.hl7.org/*
|
||||
- https://terminology.hl7.org/*
|
||||
@@ -328,38 +312,32 @@ hapi:
|
||||
- http://loinc.org/*
|
||||
- https://loinc.org/*
|
||||
|
||||
### Uncomment the following section, and any sub-properties you need in order to enable
|
||||
### partitioning support on this server.
|
||||
#partitioning:
|
||||
# allow_references_across_partitions: false
|
||||
# partitioning_include_in_search_hashes: false
|
||||
# default_partition_id: 0
|
||||
### Enable the following setting to enable Database Partitioning Mode
|
||||
### See: https://hapifhir.io/hapi-fhir/docs/server_jpa_partitioning/db_partition_mode.html
|
||||
# database_partition_mode_enabled: true
|
||||
### Partition Style: Partitioning requires a partition interceptor which helps the server
|
||||
### select which partition(s) should be accessed for a given request. You can supply your
|
||||
### own interceptor (see https://hapifhir.io/hapi-fhir/docs/server_jpa_partitioning/partitioning.html#partition-interceptors )
|
||||
### but the following setting can also be used to use a built-in form.
|
||||
### Patient ID Partitioning Mode uses the patient/subject ID to determine the partition
|
||||
# patient_id_partitioning_mode: true
|
||||
### Request tenant mode can be used for a multi-tenancy setup where the request path is
|
||||
### expected to have an additional path element, e.g. GET http://example.com/fhir/TENANT-ID/Patient/A
|
||||
# request_tenant_partitioning_mode: false
|
||||
# -------------------------------------------------------------------------------
|
||||
# J. Partitioning & Multitenancy
|
||||
# -------------------------------------------------------------------------------
|
||||
# partitioning:
|
||||
# allow_references_across_partitions: false
|
||||
# partitioning_include_in_search_hashes: false
|
||||
# default_partition_id: 0
|
||||
# database_partition_mode_enabled: true
|
||||
# patient_id_partitioning_mode: true
|
||||
# request_tenant_partitioning_mode: false
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# K. CORS
|
||||
# -------------------------------------------------------------------------------
|
||||
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
|
||||
# -------------------------------------------------------------------------------
|
||||
# L. Search Orchestration
|
||||
# -------------------------------------------------------------------------------
|
||||
search-coord-core-pool-size: 20
|
||||
search-coord-max-pool-size: 100
|
||||
search-coord-queue-capacity: 200
|
||||
|
||||
# Search Prefetch Thresholds.
|
||||
|
||||
# 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
|
||||
@@ -367,87 +345,78 @@ hapi:
|
||||
# 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.
|
||||
# CSV list; -1 as final value means "all"
|
||||
search_prefetch_thresholds: 13,503,2003,-1
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# M. Extensibility (custom beans / interceptors / providers)
|
||||
# -------------------------------------------------------------------------------
|
||||
# comma-separated package names, will be @ComponentScan'ed by Spring to allow for creating custom Spring beans
|
||||
#custom-bean-packages:
|
||||
|
||||
# custom-provider-classes:
|
||||
# custom-interceptor-classes:
|
||||
# custom-provider-classes:
|
||||
|
||||
# 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 a no-arg constructor; then registered with the server
|
||||
#custom-interceptor-classes:
|
||||
|
||||
# comma-separated list of fully qualified provider classes.
|
||||
# classes listed here will be fetched from the Spring context when combined with 'custom-bean-packages',
|
||||
# or will be instantiated via reflection using a no-arg constructor; then registered with the server
|
||||
#custom-provider-classes:
|
||||
# specify what should be stored in meta.source based on StoreMetaSourceInformationEnum defaults to NONE
|
||||
# store_meta_source_information: NONE
|
||||
# Threadpool size for BATCH'ed GETs in a bundle.
|
||||
# bundle_batch_pool_size: 10
|
||||
# bundle_batch_pool_max_size: 50
|
||||
# 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: 60000
|
||||
# The remote_terminology_service block is commented out by default because it requires external terminology service endpoints.
|
||||
# Uncomment and configure the block below if you need to enable remote terminology validation or mapping.
|
||||
#remote_terminology_service:
|
||||
# all:
|
||||
# system: '*'
|
||||
# url: 'https://tx.fhir.org/r4/'
|
||||
# snomed:
|
||||
# system: 'http://snomed.info/sct'
|
||||
# url: 'https://tx.fhir.org/r4/'
|
||||
# loinc:
|
||||
# system: 'http://loinc.org'
|
||||
# url: 'https://hapi.fhir.org/baseR4/'
|
||||
tester:
|
||||
home:
|
||||
name: Local 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: true
|
||||
# responses_enabled: true
|
||||
# binary_storage_enabled: true
|
||||
# -------------------------------------------------------------------------------
|
||||
# N. Logging
|
||||
# -------------------------------------------------------------------------------
|
||||
# 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
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# O. Storage / Pagination / Caching
|
||||
# -------------------------------------------------------------------------------
|
||||
# max_binary_size: 104857600
|
||||
# max_page_size: 200
|
||||
# retain_cached_searches_mins: 60
|
||||
# reuse_cached_search_results_millis: 60000
|
||||
inline_resource_storage_below_size: 4000
|
||||
# bulk_export_enabled: true
|
||||
# subscription:
|
||||
# resthook_enabled: true
|
||||
# websocket_enabled: false
|
||||
# polling_interval_ms: 5000
|
||||
# immediately_queued: false
|
||||
# email:
|
||||
# from: some@test.com
|
||||
# host: google.com
|
||||
# port:
|
||||
# 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: 2
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# P. Remote Terminology Service (disabled by default)
|
||||
# -------------------------------------------------------------------------------
|
||||
# remote_terminology_service:
|
||||
# all:
|
||||
# system: "*"
|
||||
# url: "https://tx.fhir.org/r4/"
|
||||
# snomed:
|
||||
# system: "http://snomed.info/sct"
|
||||
# url: "https://tx.fhir.org/r4/"
|
||||
# loinc:
|
||||
# system: "http://loinc.org"
|
||||
# url: "https://hapi.fhir.org/baseR4/"
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# Q. Subscriptions (disabled by default)
|
||||
# -------------------------------------------------------------------------------
|
||||
# subscription:
|
||||
# resthook_enabled: true
|
||||
# websocket_enabled: false
|
||||
# polling_interval_ms: 5000
|
||||
# immediately_queued: false
|
||||
# email:
|
||||
# from: some@test.com
|
||||
# host: google.com
|
||||
# port:
|
||||
# username:
|
||||
# password:
|
||||
# auth:
|
||||
# startTlsEnable:
|
||||
# startTlsRequired:
|
||||
# quitWait:
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# R. LastN (analytics)
|
||||
# -------------------------------------------------------------------------------
|
||||
# lastn_enabled: true
|
||||
|
||||
Reference in New Issue
Block a user