Searching for Data
This section contains information about methods for searching for data in the CDR.
In addition to implementing most of the FHIR Search specification, Smile CDR implements the following extensions:
An additional search parameter called _source
can be used to search for resources based on information about the system or request that created the resource. See Storing Source Information.
Date searches can be performed relative to "now" using the %now
parameter value. For example, to search for Procedures with a date later than now, you can search for /Procedure?date=ge%now
.
Note the '%' would need to be URL escaped so the actual URL will be /Procedure?date=ge%25now
The way this works is Smile substitutes %now
with the current date and time in the standard FHIR format yyyy-MM-ddTHH:mm:ss
before submitting it to the FHIR Storage module.
Similarly date searches can be performed relative to 'today' using the '%today' parameter value. '%today' works the same as '%now' except that it searches as a 'date' type as opposed to a 'dateTime' type.
Smile CDR does not currently support the _containedType
FHIR Search parameter, or the _contained=both
directive. See Index Contained for information on indexing contained resources.
Smile CDR searches may not correctly process :[type]
modifiers if the resource indicated by the modified search parameter is a contained resource. For example, consider the following search.
http://localhost:8000/Observation
Suppose Observation/A
has a reference to Device/B
, which in turn has a reference to Organization/C
, and Organization/C
has the name "HealthOrg". In this case, Observation/A
will not be included in the search result, because the subject
search parameter is restricted to Patient
resources. However, if Observation/D
has a reference to #contained-device
, which also refers to Organization/C
, then Observation/D
will be included in the search result, because we can not apply the type restriction to contained resources.
Composite and Combo SearchParameters are composed of other SearchParameters which are listed under the component
element of the SearchParameter.
Smile Digital Health support subsets of SearchParameterTypes for composed SearchParameters which will differ based on the containing SearchParameter definition (see sp_unique extension) and whether Indexing of Search Parameters is enabled.
The following table lists supported Types for contained SearchParameters based on the containing composed SearchParameter. Note the limitations described in the following section as well.
Containing composed SP / Contained SP Type | String | Token | Date | Quantity | Uri | Number | Reference |
---|---|---|---|---|---|---|---|
Combo Unique | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Combo Non-Unique | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Composite with full text indexing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Composite without full text indexing | ✔ | ✔ | ✔ | ✔ |
HFJ_IDX_CMP_STRING_UNIQ
table does not incorporate the partition ID.code
and has a required terminology binding (e.g. Patient.gender
).[resourceType]/[id]
. Searches will only leverage the index if the search URL is also in this exact form.