You're reading the documentation for a development version. For the latest released version, please have a look at 1.1.1.
Installation
Note
If you don’t already have a license, you can request a license key at https://open-fhir.com#access. License will be provided automatically to you via email.
Docker
openFHIR can be easily installed using Docker. The official Docker image is available at openfhir/openfhir:latest.
To run Open-FHIR using Docker, use the following command:
docker run -e SPRING_DATA_MONGODB_URI=mongodb://your-mongodb-url \
-e LICENSE=/path/to/license \
-p 8080:8080 openfhir/openfhir:latest
Database
At the moment, mongodb and postgres are supported. By default, mongodb will be used. To change this, configure “db.type” property.
MongoDB
-e DB.TYPE=mongo
or in docker compose
services:
openfhir:
....
environment:
SPRING_DATA_MONGODB_URI: "mongodb://openfhir:openfhir@mongodb:27017/openfhir"
DB_TYPE: "mongo"
Postgres
-e DB.TYPE=postgres
or in docker compose
services:
openfhir:
....
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/openfhir
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
DB_TYPE: "postgres"
Database stores the following state:
bootstrapEntity: collection holding a state of all files that were bootstrapped at startup (so they aren’t processed again at each startup)
conceptMapFhirEntity: concept maps for terminology (see more: Terminology)
fhirConnectContextEntity: FHIR Connect context mappers
fhirConnectMapperEntity: FHIR Connect model mappers
optEntity: Operational templates (unless the engine is integrated to an external openEHR repository, see more: Integrations)
Example docker compose - postgres
services:
openfhir:
image: openfhir/openfhir:latest
restart: always
network_mode: host
container_name: openfhir
ports:
- "8080:8080"
volumes:
- "/opt/openfhir/config/examples/:/home/"
- "/opt/openfhir/config/license.json:/app/openfhir-license.json"
- "/opt/openfhir/config/bootstrap/:/app/bootstrap/"
- "/opt/openfhir/config/application.yaml:/application.yaml"
postgres:
image: postgres:16
network_mode: host
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- "/opt/openfhir/config/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql"
init-db.sql
-- Create OpenFHIR database and user
CREATE DATABASE openfhir;
CREATE USER openfhir WITH ENCRYPTED PASSWORD 'openfhir';
GRANT ALL PRIVILEGES ON DATABASE openfhir TO openfhir;
-- Ensure the users can connect and create objects within their databases
ALTER DATABASE openfhir OWNER TO openfhir;
-- Grant privileges to schemas (optional but recommended)
ALTER ROLE openfhir SET search_path TO public;
application.yaml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/openfhir
username: openfhir
password: openfhir
db:
type: postgres
server:
error:
include-stacktrace: never
include-message: always
port: 8080
license: /app/openfhir-license.json
bootstrap:
dir: /app/bootstrap
recursively-open-directories: true
Example docker compose - mongo
Example docker compose file
services:
openfhir:
image: openfhir/openfhir:latest
container_name: openfhir
ports:
- "8080:8080"
volumes:
- "/home/user/Documents/openFHIR/license.json:/app/openfhir-license.json"
- "/home/user/Documents/openFHIR/openfhir-bootstrap/:/app/bootstrap/"
environment:
SPRING_DATA_MONGODB_URI: "mongodb://openfhir:openfhir@mongodb:27017/openfhir"
LICENSE: "/app/openfhir-license.json" # could also be left out, as this is the default
BOOTSTRAP_DIR: "/app/bootstrap/" # could also be left out, as this is the default
mongodb:
image: mongo:latest
container_name: mongodb
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: "admin"
MONGO_INITDB_ROOT_PASSWORD: "admin"
MONGO_INITDB_DATABASE: "openfhir"
volumes:
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
init-mongo.js
// Connect to the admin database to create a user for a specific database
db = db.getSiblingDB('openfhir');
// Create a new user with readWrite access to the 'openfhir' database
db.createUser({
user: 'openfhir',
pwd: 'openfhir',
roles: [
{
role: 'readWrite',
db: 'openfhir'
}
]
});