On this page:

5.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.

5.1.1Feature Comparison

 

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

Features

FeatureMongoRDBMSNotes
DSTU 2
DSTU 3
R4
R5
FHIR StorageMongo doesn't currently enforce referential integrity
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/EMPI DSTU 3+ only
Terminology Service
Pagination
Partitioning

FHIR 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
------------------------------------------------------------------------------------------------------------------

Search Parameters

Parameters for all resourcesMongoRDBMS
_id
_lastUpdated
_tagSee note on _tag below
_source
_profile
_security
_text
_content
_list
_has
_type
_filter
Search result parameters----------
_sort
_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. On MongoDB, tags are always resource version specific. On MongoDB partial searches (search by system or by tag) are not supported.

  • _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.

Search 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
---------------------------------------------------------------------------------------------------------

##* 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.