conditionalUpdate method
If a resource is found with the identifier specified in the query parameters, updates the entire contents of that resource.
Implements the FHIR standard conditional update interaction, limited to
searching by resource identifier. Search term for identifier should be in
the pattern identifier=system|value
or identifier=value
- similar to
the search
method on resources with a specific identifier. If the search
criteria identify more than one match, the request returns a 412 Precondition Failed
error. If the search criteria identify zero matches,
and the supplied resource body contains an id
, and the FHIR store has
enable_update_create set, creates the resource with the client-specified
ID. It is strongly advised not to include or encode any sensitive data
such as patient identifiers in client-specified resource IDs. Those IDs
are part of the FHIR resource path recorded in Cloud Audit Logs and
Pub/Sub notifications. Those IDs can also be contained in reference fields
within other resources. If the search criteria identify zero matches, and
the supplied resource body does not contain an id
, the resource is
created with a server-assigned ID as per the create method. The request
body must contain a JSON-encoded FHIR resource, and the request headers
must contain Content-Type: application/fhir+json
. On success, the
response body contains a JSON-encoded representation of the updated
resource, including the server-assigned version ID. Errors generated by
the FHIR store contain a JSON-encoded OperationOutcome
resource
describing the reason for the error. If the request cannot be mapped to a
valid API method on a FHIR store, a generic GCP error might be returned
instead. For samples that show how to call conditionalUpdate
, see
Conditionally updating a FHIR resource.
request
- The metadata request object.
Request parameters:
parent
- Required. The name of the FHIR store this resource belongs to.
Value must have pattern
^projects/\[^/\]+/locations/\[^/\]+/datasets/\[^/\]+/fhirStores/\[^/\]+$
.
type
- Required. The FHIR resource type to update, such as Patient or
Observation. For a complete list, see the FHIR Resource Index
(DSTU2,
STU3,
R4). Must
match the resource type in the provided content.
Value must have pattern ^\[^/\]+$
.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a HttpBody.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<HttpBody> conditionalUpdate(
HttpBody request,
core.String parent,
core.String type, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' +
core.Uri.encodeFull('$parent') +
'/fhir/' +
core.Uri.encodeFull('$type');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return HttpBody.fromJson(response_ as core.Map<core.String, core.dynamic>);
}