Basic Concepts
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.
Each module in a node has its own configuration, and performs a specific function within the 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 server 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 node (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.