Firely Server can validate a resource against a profile as defined in the $validate operation.
You can call validate on three levels:
feature_validation_system
feature_validation_type
feature_validation_instance
Besides that you can configure Firely Server to validate every incoming resource and even filter on specific profiles. See the section on feature_prevalidation
. In all cases, the feature_validation_pre
is that Firely Server must have access to all relevant StructureDefinitions.
Validation has some feature_validation_limitations
.
Note
The very first validation call will take a considerable amount of time, typically around 5 seconds. This is because Firely Server maintains a cache of validation information, and on the first call that cache is still empty. Subsequent calls are much faster.
POST <firely_server_endpoint>/$validate[?profile=<canonical-url-of-structuredefinition>]
There are two ways of calling $validate:
- With a Resource or a Bundle of resources as body, and optionally, a profile parameter on the url.
With a Parameters resource as body, having
- a parameter element with the Resource to validate in the resource parameter;
- (optionally) the profile to validate against in the profile parameter
In both cases the request must have a Content-Type header matching the format of the body (application/fhir+json
or application/fhir+xml
).
If you do not specify a profile parameter, Firely Server will validate the Resource against any profiles mentioned in meta.profile
as well as the base profile from the FHIR Specification.
If you call $validate on the system level, Firely Server will make no assumptions about the ResourceType of the Resource to validate.
POST <firely_server_endpoint>/<resourcetype>/$validate[?profile=<canonical-url-of-structuredefinition>]
You can call $validate in the same two ways as with feature_validation_system
.
If you call $validate on the ResourceType level, Firely Server will check whether the Resource to validate is of the same <resourcetype> as provided in the url.
GET <firely_server_endpoint>/<resourcetype>/<id>/$validate[?profile=<canonical-url-of-structuredefinition>]
This time you can only use the (optional) profile parameter on the url to specify a StructureDefinition to validate against.
Firely Server must be aware of all the StructureDefinitions referenced directly via parameter or indirectly by a profile in meta.profile
. Refer to the conformance
for more information.
- The mode parameter is not yet supported.
- Implicit ValueSets (ones that use the .filter property) are not supported - create explicit ones instead (without the .filter property).