On this page:

1.0Table of Contents

 

This online document contains instructions for how to install Smile CDR, how to plan and execute a deployment that meets your specific needs, how to manage and maintain that deployment, and how to keep it healthy.

If this is your first time reading these documents, we highly recommend you start by reading the Basic Concepts page.


1.0.0 Welcome to Smile CDR
1.0.0 Table of Contents
1.1.0 Changelog
1.1.1 Smile CDR 2019.08.R01 (Igloo)
1.1.2 Smile CDR 2019.05.R02 (Hippo)
1.1.3 Smile CDR 2019.05.R01 (Hippo)
1.1.4 Smile CDR 2019.02.R01 (Gale)
1.1.5 Smile CDR 2018.11.R01 (Food)
1.1.6 Smile CDR 2018.09.R01 (Economist)
1.1.7 Smile CDR 2018.05.R01 (Dromedário)
1.1.8 Smile CDR 2018.03.R01 (Crouton)
1.1.9 Smile CDR 2017.11.R01 (Buccaneer)
1.1.10 Smile CDR 2017.09.R01 (Aardvark)
1.1.11 Smile CDR 2017.07.R01
2.0.0 Getting Started
2.0.0 Basic Concepts
2.0.1 Nodes and Modules
2.0.2 The Cluster Manager Module
2.0.3 Module Dependencies
2.1.0 Platform Requirements
2.1.1 Server Requirements
2.1.2 Java Requirements
2.1.3 Database Requirements
2.1.4 Network Infrastructure
3.0.0 Installation
3.0.0 Installing Smile CDR
3.0.1 Installing to Linux / OSX
3.0.2 Basic Configuration
3.0.3 Quick Start
3.0.4 The Initial Configuration
3.0.5 The Node Configuration Properties File
3.0.6 Module Property Source
3.0.7 Variable Substitution
3.0.8 Fetching Configuration Using Scripts
3.0.9 Configuring Your Database
3.0.10 Starting the CDR
3.1.0 Docker Container Installation
3.1.1 Quick Start
3.1.2 Basic Configuration
3.1.3 Customizing Smile CDR in Docker Container
3.1.4 Using System Environment for Variable Substitution
3.1.5 Configuring Databases for Smile CDR Installed in Container
3.2.0 Unix Service Installation
3.2.1 Testing the Service
3.2.2 Starting Automatically on Boot
3.3.0 Tuning your Installation
3.3.1 Memory Settings
3.4.0 Message Brokers
3.4.1 Subscription Queues
3.4.2 Subscription Queue Names
3.5.0 Message Broker: ActiveMQ
3.5.1 Resource Limits
3.6.0 Message Broker: Kafka
3.6.1 Kafka Topic Names
3.7.0 Upgrading Smile CDR
4.0.0 Tutorial and Tour
4.0.0 Preamble and Setup
4.0.1 Getting Up to Speed
4.0.2 Preparing Your Instance
4.0.3 Accessing the Web Admin Console
4.0.4 Enabling Anonymous Access to the FHIR Endpoint
4.0.5 Uploading Sample FHIR Resources
4.1.0 FHIR Basics
4.1.1 Resources
4.1.2 Datatypes
4.1.3 Parts of a Resource
4.1.4 Encodings (MIME Types, Wire Formats)
4.2.0 FHIR Search Queries
4.2.1 How Searching Works
4.2.2 Basic Searching: Finding Patients
4.2.3 References: Finding Encounters
4.2.4 Quantities: Finding Laboratory Values
4.2.5 Dates and Times: Narrowing Your Search Window
4.2.6 Paging Search Results
4.2.7 Sorting Search Results
4.2.8 Fulltext Searching
4.2.9 The Patient $everything Search (Across Patient Chart)
4.3.0 FHIR CRUD Operations
4.3.1 Testing Tools
4.3.2 FHIR Create
4.3.3 FHIR Update
4.3.4 FHIR Patch
4.3.5 FHIR Read / vRead
4.3.6 FHIR Delete
4.4.0 SMART on FHIR Apps
4.4.1 Accessing the Web Admin Console
4.4.2 Creating a Client Definition
4.4.3 Launch SMART on FHIR Growth Chart App
4.5.0 Processing HL7 v2.x Feeds
4.5.1 Transmitting to Smile CDR
4.5.2 ORU (Observation Result) Messages
4.5.3 ADT (Admission/Discharge/Transfer) Messages
5.0.0 FHIR Storage
5.0.0 Concepts in Smile CDR
5.0.1 The FHIR Storage Module
5.0.2 The FHIR REST Endpoint Module
5.0.3 Clustering
5.0.4 Basic Configurations
5.1.0 FHIR Storage (Relational) Module
5.1.1 Preparing for a New Installation
5.1.2 Creating the Module
5.1.3 Configuration
5.2.0 FHIR Endpoint Module
5.2.1 Creating the Module
5.2.2 Configuration
5.3.0 FHIRWeb Console
5.3.1 Architecture
5.3.2 Security
5.3.3 Creating the Module
5.3.4 Using the Console
5.3.5 Configuration
5.4.0 Performance and Caching
5.4.1 The Query Cache
5.4.2 Search Counts
5.5.0 Resource IDs
5.5.1 Server Assigned IDs
5.5.2 Client Assigned IDs
5.6.0 Search Parameters
5.6.1 Search Parameter Concepts
5.6.2 Default Search Parameters
5.6.3 Managing Search Parameters
5.6.4 An Example Search Parameter
5.6.5 Enforcing Uniqueness
5.6.6 Unique Composite Search Parameters
5.6.7 Search Parameter Statistics
5.6.8 Defining Paths Using FHIRPath
5.6.9 Filter Search Parameter
5.7.0 Subscription
5.7.1 Smile CDR Subscription Architecture
5.7.2 Subscription Matcher Module
5.7.3 Criteria
5.7.4 Channel Types
5.7.5 Channel Type: rest-hook
5.7.6 Channel Type: email
5.7.7 Channel Type: websocket
5.7.8 Other Channel Types
5.7.9 Manually Triggering Subscriptions
5.7.10 Subscription Activation
5.7.11 In-Memory Matching
5.7.12 Replication Mode
5.7.13 Strip Version IDs
5.7.14 Delivering Latest Version
5.7.15 Custom Delivery Class
5.7.16 Troubleshooting
5.8.0 Terminology
5.8.1 Uploading CodeSystems
5.8.2 Uploading External CodeSystems
5.8.3 Uploading LOINC
5.8.4 Uploading SNOMED CT
5.8.5 Uploading Custom Vocabularies
5.8.6 Applying Deltas to External CodeSystems
5.8.7 Delta Add Operation: $apply-codesystem-delta-add
5.8.8 Delta Remove Operation: $apply-codesystem-delta-remove
5.8.9 Reference: CSV Vocabulary Input Files
5.9.0 Multitenancy
5.10.0 Searching for Data
5.10.1 FHIR Search Extensions
5.10.2 Unsupported Search Parameters
5.11.0 Updating Data
5.11.1 Patching Data
5.11.2 Tag Retention
5.12.0 Deleting Data
5.12.1 Deletes and Referential Integrity
5.12.2 Transactional Delete
5.12.3 Cascading Deletes
5.12.4 The $expunge Operation
5.13.0 Interceptors
5.13.1 Coding and Deploying Interceptors
5.13.2 Starter Project
5.13.3 Example: Attribute Enhancement
5.14.0 Binary Data
5.14.1 Binary Storage
5.14.2 Binary Access Operations
5.14.3 Serving Raw Media Resources
5.15.0 Request Tracing and Provenance
5.15.1 Request Tracing
5.15.2 Performance Tracing
5.15.3 Storing Source Information
6.0.0 LiveBundle
6.0.0 LiveBundle Overview
6.0.1 Configuration
6.0.2 Usage
6.0.3 LiveBundle Architecture
6.0.4 LiveBundle Aggregation
6.0.5 LiveBundle Retrieval
6.0.6 LiveBundle Seeding
6.0.7 LiveBundle Troubleshooting
6.1.0 LiveBundle API
6.1.1 Add a Subscriber to a Watchlist
6.1.2 Remove Subscriber from a Watchlist
6.1.3 View list of Subscibers to a Watchlist
6.1.4 Request a LiveBundle
6.2.0 LiveBundle Rule Definition
6.2.1 Loading Rules
6.2.2 Example LiveBundle Javascript
6.2.3 LiveBundle Watchlist
6.2.4 LiveBundle Rule
6.2.5 LiveBundle Filter
6.2.6 LiveBundle Keeper
6.3.0 LiveBundle Keepers
6.3.1 LiveBundle Keeper Examples
6.3.2 LatestByPath
6.3.3 LatestByParamPath
6.3.4 LatestByParamPathByMonth
6.3.5 ToggleByPath
6.3.6 ToggleBySearch
6.3.7 WatchlistPopulator
7.0.0 Security
7.0.0 Security in Smile CDR
7.0.1 Inbound Security Module
7.0.2 FHIR Listener Module
7.0.3 Admin Modules
7.0.4 Auth Directory
7.0.5 Audit Database
7.0.6 Outbound Security Modules
7.1.0 Authorization and Consent
7.1.1 Authorization Service
7.1.2 Consent Service
7.2.0 Inbound Security Module
7.2.1 Permissions
7.2.2 Callback Script
7.3.0 Local Inbound Security Module
7.3.1 Configuration: Credentials
7.3.2 Caching
7.4.0 LDAP Inbound Security Module
7.4.1 Requirements
7.4.2 Permissions
7.4.3 Callback Scripts
7.4.4 Configuration
7.5.0 Scripted Inbound Security Module
7.5.1 Script Format
7.5.2 Script Examples
7.6.0 Trusted Client Mode
7.6.1 Configuring Trusted Client Mode
7.6.2 Making Trusted Client Requests
7.6.3 Automatically Creating Users
7.7.0 Roles and Permissions
7.7.1 System-Defined Roles
7.7.2 System-Defined Permissions
7.8.0 Callback Scripts
7.8.1 Method: onAuthenticateSuccess
7.9.0 SMART on FHIR: Introduction
7.9.1 The SMART Launch Sequence
7.9.2 The Interactive Launch Process
7.9.3 Authorization Flows / Grant Types
7.9.4 Launch Scopes
7.9.5 The OpenID and Profile Scopes
7.10.0 SMART on FHIR: Scopes
7.10.1 The OpenID and Profile Scopes
7.11.0 SMART on FHIR: Auth Flows
7.11.1 Launch Flow: Authorization Code
7.11.2 Launch Flow: Implicit Grant
7.11.3 Launch Flow: Resource Owner Password Credentials
7.11.4 Non-Interactive User Flow: Cross-Organization Data Access Profile
7.11.5 System Flow: Client Credentials
7.11.6 System Flow: Refresh
7.12.0 SMART on FHIR: Endpoints
7.12.1 Server Metadata Endpoint
7.12.2 UserInfo Endpoint
7.13.0 SMART on FHIR: Smile CDR Support
7.13.1 Supported Scopes
7.13.2 Scope Permission Model
7.13.3 Online / Offline Access
7.13.4 User and Patient Resource Linkage
7.14.0 SMART Outbound Security Module
7.14.1 Setting Up This Module
7.14.2 Configuring Clients
7.14.3 Client Secrets
7.14.4 SMART Callback Script
7.14.5 Client Credentials Grant
7.14.6 Cross-Organization Data Access Profile Grant
7.14.7 Approving Scopes
7.14.8 Skinning the Server
7.15.0 SMART Inbound Security Module
7.15.1 Architecture
7.15.2 Requirements
7.15.3 Setting Up This Module
7.15.4 Accepting Tokens
7.15.5 Accepting Internal Access Tokens
7.15.6 Accepting External Access Tokens
7.15.7 Creating a Server Definition
7.16.0 SMART Session Management
7.16.1 Token Revocation Endpoint
7.16.2 User Logout Endpoint
7.17.0 Anonymous Access
7.18.0 Consent Service
7.18.1 Enabling the Consent Service
7.18.2 Method: consentStartOperation
7.18.3 Method: consentCanSeeResource
7.18.4 Method: consentWillSeeResource
7.18.5 Method: completeOperationSuccess
7.18.6 Method: completeOperationFailure
7.18.7 Example: Tag-Based Consent Script
7.19.0 Security Recipes
7.19.1 App: Local Users with HTTP Basic Authentication
7.20.0 Two Factor Authentication
7.20.1 User Activating TOTP
7.20.2 Enforcing Two Factor Authentication
7.21.0 Troubleshooting Security
8.0.0 FHIR Hybrid Providers
8.0.0 Hybrid Providers
8.0.1 Architecture
8.0.2 Resource Providers
8.0.3 The Spring Context Config Class
8.0.4 Building Your Hybrid Providers
8.0.5 Deploying Your Hybrid Providers
8.0.6 Accessing Security Attributes
8.0.7 Exceptions
8.0.8 Example Project
9.0.0 FHIR Gateway
9.0.0 FHIR Gateway
9.0.1 Gateway Architecture
9.0.2 Creating a FHIR Gateway Endpoint
9.0.3 Invoking Operations
9.0.4 Request/Response Translation
10.0.0 Master Data Management
10.0.0 EMPI Mode
10.0.1 Person Linking in Smile CDR
10.0.2 Automatic Linking
10.0.3 Example
10.0.4 Querying The EMPI
11.0.0 Clustering
11.0.0 Designing a Cluster
11.0.1 Module Design
11.0.2 Adding and Removing Nodes
11.0.3 Multi-Master Clusters
12.0.0 Logging
12.0.0 Overview
12.1.0 Audit Log
12.2.0 Transaction Log
12.2.1 Transaction Log Configuration
12.2.2 Event Types and SubTypes
12.3.0 System Logging
12.3.1 Changing Logging Settings
12.4.0 Troubleshooting Logs
12.4.1 HTTP Troubleshooting Log
12.4.2 Security Troubleshooting Log
12.4.3 Subscription Troubleshooting Log
12.4.4 LiveBundle Troubleshooting Log
13.0.0 HL7 v2.x Support
13.0.0 Introduction
13.0.1 Inbound HL7 v2.x Support
13.0.2 Outbound HL7 v2.x Support
13.1.0 Inbound Messaging
13.1.1 Callback Scripts
13.1.2 Function: onPreConvertHl7V2ToFhir(theMessage, theConversionResult)
13.1.3 Function: onPostConvertHl7V2ToFhir(theMessage, theConversionResult)
13.1.4 Function addMessage(thePath, theMessageLevel, theIssue)
13.2.0 Outbound Messaging
13.2.1 Enriching Message Conversion using Scripts
13.2.2 Function: onPostConvertFhirToHl7V2(theTriggerResource, theOutgoingMessage, theContext)
13.2.3 Using Persisted MessageHeader Resources
13.3.0 Transactions
13.3.1 ADT (Patient Administration) Domain
13.3.2 OMG (Orders) Domain
13.3.3 ORU (Results) Domain
13.3.4 RDE/RAS (Pharmacy) Domain
13.4.0 Structure Definitions
13.4.1 Structure: ADT_A01
13.4.2 Structure: ADT_A02
13.4.3 Structure: ADT_A03
13.4.4 Structure: ADT_A05
13.4.5 Structure: ADT_A06
13.4.6 Structure: ADT_A09
13.4.7 Structure: ADT_A12
13.4.8 Structure: ADT_A17
13.4.9 Structure: ADT_A21
13.4.10 Structure: ADT_A30
13.4.11 Structure: ADT_A38
13.4.12 Structure: ADT_A39
13.4.13 Structure: ADT_A44
13.4.14 Structure: ADT_A45
13.4.15 Structure: ADT_A54
13.4.16 Structure: ADT_A60
13.4.17 Structure: ADT_A61
13.4.18 Structure: OMG_O19
13.4.19 Structure: ORU_R01
13.4.20 Structure: RAS_O17
13.4.21 Structure: RDE_O11
13.5.0 Segment Definitions
13.5.1 Segment: MSH (Message Header)
13.5.2 Segment: PID (Patient)
13.5.3 Segment: PV1 (Visit/Encounter)
13.5.4 Segment: ROL (Role)
13.5.5 Segment: DG1 (Diagnosis)
13.5.6 Segment: PR1 (Procedure)
13.5.7 Segment: MRG (Merge Patient Information)
13.5.8 Segment: GT1 (Guarantor)
13.5.9 Segment: IN1 (Insurance)
13.5.10 Segment: IN2 (Insurance Additional Information)
13.5.11 Segment: ORC (Order Control)
13.5.12 Segment: OBR (Observation Request)
13.5.13 Segment: OBX (Observation)
13.5.14 Segment: NK1 (Next of Kin / Patient Contact)
13.5.15 Segment: NTE (Note)
13.5.16 Segment: RXA (Pharmacy Administration)
13.5.17 Segment: RXC (Pharmacy Component)
13.5.18 Segment: ZXC (Pharmacy Component)
13.5.19 Segment: RXE (Pharmacy Encoded Order)
13.5.20 Segment: RXR (Pharmacy Route)
13.5.21 Segment: IAM (Patient Adverse Reaction)
13.5.22 Segment: SPM (Specimen)
13.5.23 Segment: ZXT (Non-Standard)
13.5.24 A Note about Extra Components
13.6.0 Table Definitions
13.6.1 Table 0001: Administrative Sex
13.6.2 Table 0002: Marital Status
13.6.3 Table 0004: Patient Class
13.6.4 Table 0038: Order Status
13.6.5 Table 0052: Diagnosis Type
13.6.6 Table 0063: v2 Relationship
13.6.7 Table 0074: Dianostic Service Section ID
13.6.8 Table 0078: Observation Interpretation Codes
13.6.9 Table 0085: Observation Status
13.6.10 Table 0119: Order Control
13.6.11 Table 0125: Observation Value Type
13.6.12 Table 0127: Allergen Type
13.6.13 Table 0128: Allergen Severity
13.6.14 Table 0131: v2 Contact Role
13.6.15 Table 0136: Yes/No
13.6.16 Table 0166: RX Component Type
13.6.17 Table 0190: Address Type
13.6.18 Table 0200: Name Type Code
13.6.19 Table 0201: Telecom Use
13.6.20 Table 0202: Telecom Equipment Type
13.6.21 Table 0203: Identifier Type
13.6.22 Table 0271: Result Status
13.6.23 Table 0322: Completion Status
13.6.24 Table 0438: Allergy Clinical Status Code
13.7.0 Naming System Mapping
13.7.1 Default Mappings
13.7.2 Using NamingSystem for Mapping Identifiers
13.8.0 Processing Results Feeds
13.8.1 Unsolicited Observation Request (ORU^R01)
13.9.0 Protocol
13.9.1 Encoding Format
13.9.2 ER7 (Pipe-Delimited) Format
13.9.3 Minimal Lower Layer Protocol (MLLP) Transport
13.9.4 HL7 over HTTP
13.9.5 Character Encoding / Charsets
14.0.0 CDA Exchange Module
14.0.0 Introduction
14.1.0 JavaScript Templates
14.1.1 The simplest CDA template script
14.1.2 Adding header information to our CDA template script
14.1.3 Adding and populating a section in our CDA template script
14.1.4 Using the Fhir.search() API to dynamically populate sections
14.1.5 Specifying input parameters
14.1.6 More complicated input parameters
14.1.7 Putting it all together
14.2.0 Rest API Operations
14.2.1 Endpoints for configuring templates
14.2.2 Endpoints for applying templates
14.3.0 Available Document and Section Types
14.3.1 Valid Document Types
14.3.2 Valid Resources for the header
14.3.3 Valid Section Types and Sources
14.3.4 Allergy and Intolerances Section
14.3.5 Medications Section
14.3.6 Problem Section
14.3.7 Results Section
14.3.8 Social History Section
14.3.9 Vital Signs Section
14.3.10 Dialysis Prescription Section
14.3.11 Reason for Referral Section
14.4.0 Further Reading
15.0.0 Bulk Operations
15.0.0 ETL Importer
15.0.1 Importing CSV Data
15.0.2 Ingesting Data
16.0.0 Monitoring
16.0.0 Monitoring Basics
16.0.1 HTTP Endpoint Health Check
16.0.2 Runtime Health Checks
17.0.0 JSON Admin Endpoints
17.0.0 JSON Admin API
17.0.1 Security
17.0.2 Format
17.1.0 Audit Log Endpoint
17.1.1 Fetch Audit Log
17.1.2 Fetch Individual Event
17.2.0 Bulk Import Endpoint
17.2.1 Process ETL File
17.2.2 Smileutil: CSV Bulk Import File
17.3.0 CDA Exchange Endpoint
17.3.1 Create CDA Template
17.3.2 Update CDA Template
17.3.3 Update CDA Template script via text
17.3.4 View CDA Template(s)
17.3.5 Delete CDA template
17.3.6 Use / Apply CDA Template
17.3.7 Create CDA from Composition/Bundle
17.3.8 Example CDA Template
17.4.0 Module Config Endpoint
17.4.1 Fetch Config: Module Property File
17.4.2 Fetch Config: All Modules
17.4.3 Fetch Config: Single Module
17.4.4 Create Module
17.4.5 Set Module Config
17.4.6 Start Module
17.4.7 Stop Module
17.4.8 Restart Module
17.4.9 Archive Module
17.5.0 OpenID Connect Clients Endpoint
17.5.1 Fetch All Clients
17.5.2 Fetch Individual Client by Client ID
17.5.3 Create Client
17.5.4 Update Client
17.6.0 OpenID Connect Servers Endpoint
17.6.1 Fetch All Servers
17.6.2 Find Individual Server by Issuer ID
17.6.3 Create Server
17.6.4 Update Server
17.7.0 Runtime Status Endpoint
17.7.1 Fetch Complete Node Status Information
17.7.2 Fetch All Runtime Health Checks
17.8.0 Transaction Log Endpoint
17.8.1 Fetch Transaction Log
17.8.2 Fetch Individual Event
17.9.0 User Management Endpoint
17.9.1 Search for Users (All Modules)
17.9.2 Search for Users (Specific Module)
17.9.3 Create User
17.9.4 Update User
17.9.5 Update Password
17.9.6 Update Own Password
17.9.7 2FA: Create New Key
17.9.8 2FA: Generate QR Code
17.9.9 2FA: Confirm Key
17.9.10 2FA: Delete Key
18.0.0 Product Configuration
18.0.0 HTTP Server Setup
18.0.1 Respecting Forward Headers
18.0.2 Specifying a Custom Context Path
18.0.3 Enabling TLS (HTTPS / SSL)
18.0.4 Selecting Ciphers and Protocol
18.0.5 Enabling TLS Mutual Authentication (Client Auth)
18.0.6 Access Logs
18.0.7 Frame Options
19.0.0 Java Execution Environment
19.0.0 Security Attributes
20.0.0 JavaScript Execution Environment
20.0.0 Introduction
20.1.0 Converter API
20.1.1 Method: hl7v2TsToFhirDate(dt);
20.1.2 Method: hl7v2TsToFhirDateTime(ts);
20.1.3 Method: hl7v2TsToFhirDateTime(ts, impliedTimeZone);
20.1.4 Method: urlDecode(string);
20.1.5 Method: urlEncode(string);
20.2.0 Environment API
20.3.0 Exceptions API
20.3.1 Method: Exceptions.newTrustedException(theMessage)
20.3.2 Method: Exceptions.newTrustedException(theStatusCode, theMessage)
20.4.0 FHIR REST API
20.4.1 Method: create(resource)
20.4.2 Method: read(url)
20.4.3 Method: search().forResource(resourceType)
20.4.4 Method: transaction(IBundleBuilder theTransaction)
20.4.5 Method: translate()
20.4.6 Method: update(resource)
20.4.7 Authentication
20.5.0 FHIR Model API
20.5.1 Method: ResourceBuilder.build(resourceType)
20.5.2 Working with Resources
20.5.3 Working with Composition resources
20.5.4 Working with Bundle resources
20.5.5 Contained Resources
20.5.6 Meta Elements
20.5.7 Removing Data
20.6.0 HL7 v2.x Mapping API
20.6.1 Repetitions
20.6.2 Structure Interrogation
20.6.3 Content Clearing
20.6.4 Content Interrogation
20.6.5 Parsing Raw Field Values
20.6.6 Encoding
20.6.7 The Hl7V2 Object
20.6.8 Working with Variable Datatypes
20.6.9 Working with Z-Segments
20.7.0 HTTP API
20.7.1 Request Creation Methods
20.7.2 Request Execution Methods
20.7.3 Response Processing Methods
20.8.0 Log API
20.8.1 Methods: debug(string), info(string), warn(string), error(string)
20.9.0 Composition Resource API
20.9.1 Method: set*(value)
20.9.2 Method: setDate(epoch)
20.9.3 Method: setType(documentType)
20.9.4 Method: addSection(sectionType)
20.10.0 Composition Section API
20.10.1 Method: populate(List resources)
20.10.2 Method: setTitle(title)
20.10.3 Method: setCode(system, code, display)
20.11.0 TransactionBuilder API
20.11.1 Method: newTransactionBuilder()
20.11.2 Method: create(resource)
20.11.3 Method Chain: createConditional(resource).onToken(parameter, system, value)
20.11.4 Method Chain: updateConditional(resource).onToken(parameter, system, value)
20.11.5 Methods: toXml(), toXml(prettyPrint), toJson(), toJson(prettyPrint)
20.11.6 Fhir.transaction(transaction)
20.12.0 Util API
20.12.1 Method: sleep(millis)
20.13.0 UUID API
20.13.1 Method: newPlaceholderId()
20.14.0 Callback Models
20.14.1 AssociatedResource
20.14.2 AuthenticationContext
20.14.3 AuthenticationFailure
20.14.4 GrantedAuthority
20.14.5 Hl7V2GeneratedMessageContext
20.14.6 Hl7V2ReceivedMessageConversionResult
20.14.7 Hl7V2ReceivedMessage
20.14.8 LaunchContext
20.14.9 LaunchResourceId
20.14.10 OAuth2ClientDetails
20.14.11 OAuth2ClientSecret
20.14.12 OAuth2Clients
20.14.13 OAuth2Server
20.14.14 OAuth2Servers
20.14.15 RequestDetailsJson
20.14.16 ScriptAuthenticationOutcomeFactory
20.14.17 ScriptConsentContextServices
20.14.18 SecurityInLdapAuthenticationContext
20.14.19 SecurityInSmartAuthenticationContext
20.14.20 SmartCodapAuthorizationRequest
20.14.21 SmartOnPostAuthorizeDetails
20.14.22 UserSessionDetails
20.14.23 UsernamePasswordAuthenticationRequest
21.0.0 Database Administration
21.0.0 Database Design
21.0.1 Cluster Manager Database
21.0.2 FHIR Relational Storage
21.1.0 Setting Up PostgreSQL
21.1.1 Supported Versions
21.1.2 Setting up a Cluster Manager Database
21.1.3 Setting up a FHIR Storage (Relational) Database
21.2.0 Setting Up MySQL
21.2.1 Supported Versions
21.2.2 Setting up a Cluster Manager Database
21.2.3 Setting up a FHIR Storage (Relational) Database
21.3.0 Setting Up MariaDB
21.3.1 Supported Versions
21.3.2 Setting up a Cluster Manager Database
21.3.3 Setting up a FHIR Storage (Relational) Database
21.4.0 Setting Up Oracle
21.4.1 Supported Versions
21.4.2 Setting up a Cluster Manager Database
21.4.3 Setting up a FHIR Storage (Relational) Database
21.5.0 Setting Up SQL Server (MSSQL)
21.5.1 Supported Versions
21.5.2 Setting up a Cluster Manager Database
21.5.3 Setting up a FHIR Storage (Relational) Database
22.0.0 Smile CDR CLI (smileutil)
22.0.0 Introduction
22.1.0 HL7 v2.x Analyze Flat File
22.1.1 Usage
22.1.2 Options
22.2.0 Migrate Database
22.2.1 Options
22.2.2 Examples
22.3.0 HL7 v2.x Transmit Flat File
22.3.1 Usage
22.3.2 Options
22.3.3 Multiplex Paths
22.4.0 Synchronize FHIR Servers
22.4.1 Usage
22.4.2 Options
22.4.3 Selecting Resources to Synchronize
22.4.4 Using a Search as the Source
22.4.5 Using a Directory as the Source
22.4.6 Prefixing Numeric IDs
22.4.7 Synchronization Modes
22.4.8 Uploading Synthea (Synthetic Generated) Resources
22.4.9 Setting up a Resource Gold Master
22.5.0 Upload Sample Dataset
22.5.1 Usage
22.5.2 Options
22.6.0 Upload CSV Bulk Import File
22.6.1 Usage
22.6.2 Options
22.6.3 Sending Batches for a Single File
22.7.0 Upload Terminology
22.7.1 Usage
22.7.2 Options
22.7.3 Example: Add Delta to Custom Terminology
22.8.0 Upload Bundle Files
22.8.1 Usage
22.8.2 Options
22.9.0 Validate FHIR Resources
22.9.1 Usage
22.9.2 Options
22.9.3 Profile Mode
22.9.4 Schema and Schematron Mode
22.10.0 Import CSV to ConceptMap
22.10.1 Usage
22.10.2 Options
22.11.0 Export ConceptMap to CSV
22.11.1 Usage
22.11.2 Options
22.12.0 Execute Script Function
22.12.1 Usage
22.12.2 Options
22.12.3 A Complete Example: Authenticate
22.12.4 Available Functions
22.12.5 Function: authenticate
23.0.0 Modules
23.0.0 CDA Exchange
23.0.1 Configuration Categories
23.1.0 Cluster Manager
23.1.1 Configuration Categories
23.2.0 ETL Importer
23.2.1 Configuration Categories
23.3.0 FHIR REST Endpoint (DSTU2)
23.3.1 Configuration Categories
23.4.0 FHIR REST Endpoint (R3)
23.4.1 Configuration Categories
23.5.0 FHIR Storage (DSTU2 Relational)
23.5.1 Configuration Categories
23.6.0 FHIR Storage (R3 Relational)
23.6.1 Configuration Categories
23.7.0 Subscription Matcher (R3)
23.7.1 Configuration Categories
23.8.0 Subscription Matcher (R4)
23.8.1 Configuration Categories
23.9.0 FHIRWeb Console
23.9.1 Configuration Categories
23.10.0 HL7 v2.x Listening Endpoint
23.10.1 Configuration Categories
23.11.0 HL7 v2.x Sending Endpoint
23.11.1 Configuration Categories
23.12.0 JSON Admin API
23.12.1 Configuration Categories
23.13.0 LDAP Inbound Security
23.13.1 Configuration Categories
23.14.0 Local Inbound Security
23.14.1 Configuration Categories
23.15.0 Scripted Inbound Security
23.15.1 Configuration Categories
23.16.0 SMART App Host
23.16.1 Configuration Categories
23.17.0 SMART Inbound Security
23.17.1 Configuration Categories
23.18.0 SMART Outbound Security
23.18.1 Configuration Categories
23.19.0 Web Admin Console
23.19.1 Configuration Categories
24.0.0 Configuration Categories
24.0.0 Web Admin Console Settings
24.0.1 Property: Transaction Log - Event Body Display Mode
24.1.0 Authentication Callback Scripts
24.1.1 Property: Authentication Callback Script (Text)
24.1.2 Property: Authentication Callback Script (File)
24.2.0 Auth: General for APIs
24.2.1 Property: Allow Anonymous Access
24.2.2 Property: Anonymous Account Username
24.3.0 Auth: General for Web
24.4.0 Auth: HTTP Basic
24.4.1 Property: HTTP Basic Security
24.4.2 Property: HTTP Basic Realm
24.5.0 Auth: OpenID Connect
24.5.1 Property: OpenID Connect Security
24.6.0 Browser Syntax Highlighting
24.6.1 Property: Browser Syntax Highlighting Enabled
24.6.2 Property: Show Request Headers
24.6.3 Property: Show Response Headers
24.7.0 Capability Statement (metadata)
24.7.1 Property: Include Resource Counts
24.7.2 Property: Cache Resource Counts (Mins)
24.8.0 Cluster Manager Subscription Messaging
24.8.1 Property: Matching Queue Consumers
24.8.2 Property: Consumers Per Delivery Queue
24.9.0 Cluster Manager Maintenance
24.9.1 Property: Heartbeat Persist Frequency MS
24.9.2 Property: Stats Persist Frequency MS
24.9.3 Property: Stats Cleanup Frequency MS
24.9.4 Property: Audit Log Enabled
24.9.5 Property: Transaction Log Retention (Days)
24.9.6 Property: Stats Retention (Days) - Minute Level
24.9.7 Property: Stats Retention (Days) - Hour Level
24.9.8 Property: Stats Retention (Days) - Day Level
24.10.0 Cluster Manager Message Broker
24.10.1 Property: Message Broker Type
24.10.2 Property: Message Broker Username
24.10.3 Property: Message Broker Password
24.10.4 Property: Message Broker Address
24.11.0 Cluster Manager Kafka
24.11.1 Property: Kafka Bootstrap Address
24.11.2 Property: Kafka Subscription Matcher Consumer Group Id
24.11.3 Property: Kafka Consumer Auto Commit Enabled
24.11.4 Property: Kafka Consumer Ack Mode
24.11.5 Property: Kafka Broker SSL Enabled
24.11.6 Property: Kafka SSL Truststore File Location
24.11.7 Property: Kafka SSL Truststore Password
24.11.8 Property: Kafka SSL Keystore Location
24.11.9 Property: Kafka Keystore Password
24.11.10 Property: Kafka SSL Key Password
24.12.0 Credentials
24.12.1 Property: Password Encoding Scheme
24.12.2 Property: Cache Successful Credentials
24.12.3 Property: Case-Sensitive Usernames
24.12.4 Property: Case-Sensitive Passwords
24.12.5 Property: Create Unknown Users
24.12.6 Property: Minimum Password Requirements
24.12.7 Property: Password Mismatch Error
24.13.0 Cross-Origin Resource Sharing (CORS)
24.13.1 Property: CORS Enabled
24.13.2 Property: CORS Origins
24.14.0 Database
24.14.1 Property: Database Type
24.14.2 Property: Database Connection URL
24.14.3 Property: Database Username
24.14.4 Property: Database Password
24.14.5 Property: Schema Update Mode
24.14.6 Property: Min Idle Connections
24.14.7 Property: Max Idle Connections
24.14.8 Property: Max Total Connections
24.14.9 Property: Connection Max Lifetime (millis)
24.14.10 Property: Max Wait (Seconds)
24.14.11 Property: Default Query Timeout (Seconds)
24.14.12 Property: Pool Prepared Statements
24.14.13 Property: SQL Parameter Bind Mode
24.15.0 ETL Import: CSV Properties
24.15.1 Property: CSV File Delimiter
24.15.2 Property: Parse Quotes
24.16.0 ETL Import: Source
24.16.1 Property: Import Source
24.16.2 Property: Mapping Script
24.16.3 Property: Worker Thread Count
24.16.4 Property: Worker Row Hashing Function
24.17.0 FHIR Binary Storage
24.17.1 Property: Binary Access Operations Enabled
24.17.2 Property: Binary Storage Mode
24.17.3 Property: Minimum Size (bytes)
24.17.4 Property: Maximum Size (bytes)
24.17.5 Property: Filesystem Mode: Base Directory
24.18.0 FHIR Configuration
24.18.1 Property: Allow Multiple Delete Enabled
24.18.2 Property: Cascading Deletes Enabled
24.18.3 Property: Allow Inline Match URL References Enabled
24.18.4 Property: Allow External References Enabled
24.18.5 Property: Enforce Referential Integrity on Write
24.18.6 Property: Enforce Referential Integrity on Delete
24.18.7 Property: Auto-Create Placeholder Reference Targets
24.18.8 Property: Mark Resources for Reindexing after SearchParameter change
24.18.9 Property: Server ID Mode
24.18.10 Property: Client ID Mode
24.18.11 Property: Enforce Reference Target Types
24.18.12 Property: Expunge Operation Enabled
24.18.13 Property: Allow storing all bundle types
24.18.14 Property: Store Meta.source information
24.19.0 FHIR Consent Service
24.20.0 FHIR LiveBundle Service
24.20.1 Property: LiveBundle Enabled
24.20.2 Property: LiveBundle Rule Definition Script (Text)
24.20.3 Property: LiveBundle Rule Definition Script (File)
24.21.0 FHIR EMPI Server
24.21.1 Property: EMPI Mode Enabled (Experimental)
24.22.0 FHIR Endpoint Conversion
24.22.1 Property: Versioned API Mode
24.23.0 FHIR Endpoint Security
24.23.1 Property: Automatically Narrow Search Scope
24.24.0 FHIR Gateway Target
24.25.0 FHIR Gateway Cache
24.26.0 FHIR Multitenancy
24.26.1 Property: Multitenancy Mode
24.26.2 Property: Tenant IDs
24.27.0 FHIR Performance
24.27.1 Property: Reuse Cached Results Timeout (Millis)
24.27.2 Property: Expire Search Results After Minutes
24.27.3 Property: Index Missing Search Params
24.27.4 Property: Default Total Calculation Mode
24.27.5 Property: Suppress Scheduled Maintenance Jobs
24.27.6 Property: Reindex Thread Count
24.27.7 Property: Expunge Batch Size
24.27.8 Property: Expunge Thread Count
24.28.0 FHIR Performance Tracing
24.28.1 Property: Performance Tracing Enabled
24.28.2 Property: Output to Transaction Log
24.28.3 Property: Output to System Log
24.28.4 Property: Output to Response Headers
24.28.5 Property: Capture Raw SQL
24.28.6 Property: Trigger
24.29.0 FHIR Resource Types
24.29.1 Property: Resource Types (whitelist)
24.30.0 FHIR REST Endpoint
24.30.1 Property: Fixed Value for Endpoint Base URL
24.30.2 Property: Pretty-Print by Default
24.30.3 Property: Default Encoding
24.30.4 Property: Default Prefer Return
24.30.5 Property: Interceptor Bean Types
24.30.6 Property: Serve Raw Media Resources
24.31.0 FHIR Search
24.31.1 Property: Fetch Size (Default Maximum)
24.31.2 Property: Page Size (Default)
24.31.3 Property: Page Size (Maximum)
24.31.4 Property: Allow :contains Searches
24.31.5 Property: GraphQL Enabled
24.31.6 Property: Filter Search Parameter Enabled
24.31.7 Property: Search Cache Storage
24.31.8 Property: Infinispan Servers
24.31.9 Property: Infinispan Cache Name
24.31.10 Property: Infinispan Hot Rod Protocol Version
24.32.0 FHIR Interceptors
24.32.1 Property: Interceptor Bean Types
24.32.2 Property: FHIR storage Callback Script (Text)
24.32.3 Property: FHIR storage Callback Script (File)
24.33.0 FHIR Subscription Persistence
24.33.1 Property: REST Hook Subscription Enabled
24.33.2 Property: Email Subscription Enabled
24.33.3 Property: Websocket Subscription Enabled
24.34.0 FHIR Subscription Delivery
24.34.1 Property: Subscription Delivery Queue Naming
24.34.2 Property: Email From Address
24.34.3 Property: Email SMTP Hostname
24.34.4 Property: Email SMTP Port
24.34.5 Property: Email SMTP Username
24.34.6 Property: Email SMTP Password
24.35.0 HL7 v2.x to FHIR Mapper - Forced Namespace Mode
24.35.1 Property: Forced Namespace Mode: Patient System
24.35.2 Property: Forced Namespace Mode: Encounter System
24.36.0 HL7 v2.x to FHIR Mapper - General
24.36.1 Property: Inferred TimeZone When Not Present
24.36.2 Property: Creation Mode - Practitioner
24.36.3 Property: Patient Primary Identifier Search Parameter
24.36.4 Property: Mapper Bean Types
24.37.0 HL7 v2.x Mapper - Medications
24.37.1 Property: Use Standalone Medications with Administered Code
24.37.2 Property: Use Standalone Medications with Component Code
24.37.3 Property: Use Standalone Medications with Give Code
24.38.0 HL7 v2.x to FHIR Mapper - OBR
24.38.1 Property: Observation Identification Mode
24.38.2 Property: Use OBR-2 as Primary Identifier
24.38.3 Property: Use OBR-3 as Primary Identifier
24.39.0 HL7 v2.x to FHIR Mapper - OBSERVATION Group
24.39.1 Property: OBSERVATION Group Text Delimiter - OBX
24.39.2 Property: OBSERVATION Group Text Delimiter - NTE
24.40.0 HL7 v2.x to FHIR Mapper - ORDER_OBSERVATION Group
24.40.1 Property: ORDER_OBSERVATION Group Text Delimiter - NTE
24.41.0 HL7 v2.x to FHIR Mapper - PV1
24.41.1 Property: Treat PV1-3 and PV1-6 Patient Locations as Single Atomic Locations
24.42.0 HL7 v2.x Listener Script
24.42.1 Property: Listener Processing Script (Text)
24.42.2 Property: Listener Processing Script (File)
24.43.0 HL7 v2.x MLLP Listener
24.43.1 Property: HL7 v2.x Listener Port
24.43.2 Property: Charset: Respect MSH-18
24.43.3 Property: Charset: Forced
24.43.4 Property: Unprocessable Message Handling
24.44.0 FHIR to HL7 v2.x Mapper Script
24.44.1 Property: HL7 v2.x Conversion Mapper Script (Text)
24.44.2 Property: HL7 v2.x Conversion Mapper Script (File)
24.45.0 HL7 v2.x MLLP Sender
24.45.1 Property: Transport Protocol
24.45.2 Property: HL7 v2.x Destination Host
24.45.3 Property: HL7 v2.x Destination Port
24.45.4 Property: Request Path
24.45.5 Property: Send Timeout (millis)
24.45.6 Property: Map Identifiers using NamingSystem
24.45.7 Property: Use Persisted Message Headers
24.45.8 Property: Retry message on NAK
24.45.9 Property: Delay Between Failed Deliveries (millis)
24.46.0 HTTP Access Log
24.46.1 Property: Appenders
24.47.0 HTTP Listener
24.47.1 Property: Listener Port
24.47.2 Property: Context Path
24.47.3 Property: Respect Forward Headers
24.47.4 Property: Endpoint Health Path
24.48.0 HTTP Request Pool
24.48.1 Property: Thread Pool Minimum Size
24.48.2 Property: Thread Pool Maximum Size
24.48.3 Property: Thread Pool Accept Queue Size
24.49.0 HTTP Security
24.49.1 Property: Pin Host
24.49.2 Property: Suppress Platform Information
24.49.3 Property: Suppress Error Details
24.49.4 Property: Block HTTP HEAD
24.49.5 Property: Block HTTP OPTIONS
24.49.6 Property: Frame Options (Allow From)
24.50.0 Hybrid Providers Definitions
24.50.1 Property: Spring Context Config Class
24.50.2 Property: FHIR Version
24.51.0 Initial User Seeding
24.51.1 Property: Initial Seed Username
24.51.2 Property: Initial Seed Password
24.52.0 JSON Web KeySet (JWKS)
24.52.1 Property: Signing JWKS (File)
24.52.2 Property: Signing JWKS (Text)
24.52.3 Property: Signing Key ID
24.53.0 LDAP Authentication
24.53.1 Property: LDAP Server URL
24.53.2 Property: System User DN
24.53.3 Property: System User Password
24.53.4 Property: Native Permission User Attribute
24.53.5 Property: User Attribute: Given Name
24.53.6 Property: User Attribute: Family Name
24.53.7 Property: Global Permissions
24.53.8 Property: Base DN for Groups
24.53.9 Property: Search Groups Recursively
24.53.10 Property: Authentication: User Base DN
24.53.11 Property: Authentication: User Query
24.53.12 Property: Require Group DN
24.54.0 Lucene FullText Indexing
24.54.1 Property: Lucene Enabled
24.54.2 Property: Lucene Index Directory
24.54.3 Property: FullText Index Delay (Secs)
24.54.4 Property: FullText Indexing Pass Size
24.54.5 Property: Use In-Memory Lucene Indexing Only
24.55.0 Narrative Generator
24.56.0 OpenID Connect (OIC)
24.56.1 Property: Client Secret Encoding
24.56.2 Property: Issuer URL
24.56.3 Property: Cache Authorizations (millis)
24.57.0 Request Validating
24.57.1 Property: Request Validating Enabled
24.57.2 Property: Fail On Severity
24.57.3 Property: Validation Tags Enabled
24.57.4 Property: Validation Response Headers Enabled
24.58.0 Inbound SMART on FHIR Authentication
24.58.1 Property: Trust Intra-Cluster SMART Tokens from Module(s)
24.58.2 Property: Authentication Cache Timeout (Seconds)
24.58.3 Property: Prevent Token KeyID Reuse
24.58.4 Property: Require Key Expiry
24.59.0 Inbound SMART on FHIR Endpoints
24.59.1 Property: Token Endpoint
24.59.2 Property: Authorization Endpoint
24.60.0 Security Inbound Script
24.60.1 Property: Script (Text)
24.60.2 Property: Script (File)
24.61.0 SMART Authorization
24.61.1 Property: Enforce Approved Scopes to Restrict Permissions
24.62.0 Sessions
24.62.1 Property: Use In-Memory Sessions
24.62.2 Property: Session Timeout (Mins)
24.62.3 Property: Session Scavenger Interval (Millis)
24.63.0 SMART Outbound Security: Callback Script
24.63.1 Property: Post Authorization Script (Text)
24.63.2 Property: Post Authorization Script (File)
24.64.0 SMART Outbound Security: CODAP
24.64.1 Property: Enable Cross-Organization Data Access Profile
24.64.2 Property: CODAP Authorization Script (Text)
24.64.3 Property: CODAP Authorization Script (File)
24.65.0 SMART Outbound Security: Login Skin
24.65.1 Property: WebJar ID
24.65.2 Property: Login Page Template
24.65.3 Property: Approval Page Template
24.65.4 Property: Error Page Template
24.66.0 Two Factor Authentication
24.66.1 Property: TOTP Issuer Name
24.66.2 Property: Lock After Failed Attempts
24.67.0 TLS / SSL (Encryption)
24.67.1 Property: TLS KeyStore Filename
24.67.2 Property: TLS KeyStore Password
24.67.3 Property: TLS KeyStore Key Alias
24.67.4 Property: TLS KeyStore Key Password
24.67.5 Property: TLS Enabled
24.67.6 Property: TLS Client Authentication
24.67.7 Property: TLS TrustStore Filename
24.67.8 Property: TLS TrustStore Password
24.67.9 Property: TLS Cipher Whitelist
24.67.10 Property: TLS Cipher Blacklist
24.67.11 Property: TLS Protocol Whitelist
24.67.12 Property: TLS Protocol Blacklist
24.68.0 Trusted Client
24.68.1 Property: Trusted Client Mode Enabled
24.68.2 Property: Assert Permissions
24.69.0 Trusted Client
24.69.1 Property: Transaction Log Enabled
24.69.2 Property: Persist Transaction Bodies (Global)
24.69.3 Property: Persist Transaction Bodies: Incoming Request
24.69.4 Property: Persist Transaction Bodies: Incoming Response
24.69.5 Property: Truncate Transaction Bodies (bytes)
24.69.6 Property: Event Whitelist
24.69.7 Property: Event Blacklist
24.70.0 Miscellaneous Categories
24.70.1 Additional Configuration
24.70.2 Dependencies
25.0.0 Product Reference
25.0.0 Enumerated Types
25.0.1 Node And Module Status
25.0.2 Transaction Log Outcomes
25.0.3 Module Types
26.0.0 Appendix
26.0.0 Preparing a Linux Host
26.0.1 Ubuntu Host with PostgreSQL / NGINX / Letsencrypt
26.0.2 Install nginx And Configure it to Front the Server
26.0.3 Red Hat Enterprise Linux (RHEL) or CentOS
26.1.0 Production Checklist
26.1.1 Host Server Setup
26.1.2 CDR Process Settings
26.1.3 FHIR Server Performance
26.1.4 Monitoring
26.1.5 Security
26.1.6 Message Broker
26.2.0 Installing Smile CDR, NGINX and PostgreSQL in a Docker Stack
26.2.1 Initial Setup of Docker and Context
26.2.2 Prepare Configuration for Smile CDR Docker Service
26.2.3 Prepare Configuration for NGINX Docker Service
26.2.4 Prepare Configuration for PostgreSQL Docker Service
26.2.5 Create Docker compose file for Smile CDR Docker stack
26.2.6 Build and Launch Smile CDR Stack
26.3.0 Deploying a Kubernetes Managed Cluster
26.3.1 Overview of Smile CDR Kubernetes Deployment Process
26.3.2 Pre-requisite Steps
26.3.3 Configuring Kubernetes
26.3.4 Service Definitions
26.3.5 ConfigMap Definitions
26.3.6 StatefulSet Definitions
26.3.7 Deploying Smile CDR in a Kubernetes Cluster
26.3.8 Configuring Reverse Proxy and Load Balancer
26.4.0 Password Hashing Algorithms
26.4.1 Available Algorithms
26.5.0 JWT Signature Algorithms