Node and Module Framework
Welcome to Smile CDR! Before getting started, let's spend a few minutes going over the basic concepts of how the software works.
A Smile CDR deployment is divided into nodes and modules.
process
is a single JVM process that runs on a server, and is executing Smile CDR. This will be either a process in linux, or a docker container.node
is a unique set of configuration, which can be run by multiple processes
, and contains a defined set of modules
.module
is a Smile CDR software component running within a node that handles a specific piece of functionality. It is part of a node
.Each module in a node has its own configuration, and performs a specific function within Smile CDR. As an example, the simplest version of a FHIR server built with Smile CDR would consist of several modules, including:
The following diagram shows a simple example of a single process
with a single node
containing several modules
.
Every node has at least one module: the cluster manager. The cluster manager module is present even if you only have a single process (non-clustered deployment). It handles most of the basic bootstrap functionality of the system, including loading and saving module configuration, starting and stopping other modules, performance metrics tracking, health checks, etc.
Within a node, a module can depend on other modules for functionality it needs. For example, the FHIR Listener module – that exposes an HTTP REST endpoint to which clients can connect – needs:
There are different types of modules that can satisfy dependencies between modules. For example, the required Inbound security module might be a Local Inbound Security module, which is a security module that saves user accounts in Smile CDR's own database (including salted password hashes) so that users can be authenticated without needing to connect to an external user database. On the other hand, it could also be an LDAP Inbound Security module, which delegates password checks to an external LDAP directory.
You are about to leave the Smile Digital Health documentation and navigate to the Open Source HAPI-FHIR Documentation.