Smile CDR v2023.02.PRE
On this page:

6.1FHIR Storage Modules

 

In order to implement a FHIR Repository using Smile CDR, a FHIR Storage module is used to provide the actual data storage.

Typically, this module will be paired with a FHIR Endpoint module in order to provide a REST API that can be used to interact with the repository. It is even possible to pair multiple FHIR Endpoint modules with a single FHIR Storage module, for example if you had different security or validation needs for different modules.

6.1.1Feature Comparison Summary

 

Comparison tables for Smile CDR's support for MongoDB versus Relational (RDBMS) are below. Broader support for MongoDB will be available in future releases.

6.1.2Features

 
FeatureMongoRDBMSNotes
DSTU 2
DSTU 3
R4
R5
Search
Subscriptions
Security
Hybrid Provider
Gateway
Clustering
HL7 V2
CDA
ETL Import
Bulk ExportMongo currently only supports system level export, and does not support mdm
JSON Admin
LiveBundle DSTU 3+ only
MDM/EMPIDSTU 3+ only, Mongo persistence currently does not support mdm expansion search
Terminology Service
Pagination
Partitioning
Referential Integrity on Delete See Validating References And Referential Integrity
Validating ReferencesSee Validating References And Referential Integrity

6.1.3FHIR Operations

 
Operation / LevelMongoRDBMSNotes
Read / Instance
VRead / Instance
Search / Type
Search / Server
History / Instance
History / Type
History / Server In MongoDB, server history is stored but not yet accessible by API
Create / Type
Update / Instance
Transaction / Server
Batch / Server
$reindex / ServerAll resources reindexing is currently not supported
$everything/ Instance/Type

6.1.4Search Parameters

 
Parameters for all resourcesMongoRDBMS
_id
_lastUpdated
_tag*See note on _tag below
_source
_profile
_security
_text
_content
_list
_has
_type
_filter
Search result parameters----------
_sortSee note on _sort below
_count
_include
_revinclude*See note on _revinclude below
_summary*
_total=none*
_total=accurate
_total=estimated
_elements
_contained
_containedType
_fhirpath
  • _tag On RDBMS, tags can be stored as a single collection for all versions of a resource, or can be versioned along with resource contents. Partial searches by System are not supported and the Operation Outcome will be an error stating that the value|code are both required.

  • _revinclude On MongoDB, the _revinclude parameter is only currently supported when the target of the _revinclude is a single resource, e.g. Patient?_id=123&_revinclude=*. Furthermore, _iterate is currently not supported while using _revinclude.

  • _tag On MongoDB, tags on resources are version specific.

  • _sort On MongoDB, the _sort parameter currently only supports sorting by a single sort parameter, e.g. Observation?_sort=category. Combining multiple sort parameters (e.g. Observation?_sort=status,-date,category) is not supported.

6.1.5Search Parameter Types

 
data typeprefixMongoRDBMSNotes
numbereq
numberne
numbergt
numberlt
numberge
numberle
numberap
dateeq
datene
dategt
datelt
datege*
datele*
datesa
dateeb
dateap
stringcontains
stringexact
stringtext
uriabove
uribelow
tokentext
tokennot
tokenabove
tokenbelow
tokenin
tokennot-in
tokenof-type
quantityeqMongoDB: See note on quantity search parameters below
quantityne
quantitygt
quantitylt
quantityge
quantityle
quantityap
referencemdm

MongoDB Quantity Search Parameters

On MongoDB, search parameters of type Quantity are supported, but they do not take units of measure into consideration. For example, a search for /Observation?value-quantity=gt5.4|http://unitsofmeasure.org|mg will match any Observations with Observation.valueQuantity containing a numeric value above 5.4, regardless of the source units.