Most of the changes requested in this section apply to 6.5 of the
FHIR will need to be able to access different versions of a resource.
To enable this most
effectively, the spec should support the following URL extensions on
for GET, PUT, and POST operations:
(resourceURL) = (baseURL)/(sectionPath)/(sectionDocument)
(versionAwareResourceURL) = (resource)/history/(version-id)
where (version-id) is any unique string. Also, a GET on the (resourceURL) should
return the representation of the resource in the HTTP body, a status
code of 200, and
a Content-Location header containing the (versionAwareResourceURL) of
version of that resource.
If the resource was deleted with a DELETE, the service SHOULD return a
code 410, with no body. However it MAY return a 404 as alternative.
To enable safe updates, the following process MUST be used:
The client reads obtains the representation of the current version
by performing a GET
on the (resourceURL). This contains the reference to (versionAwareResourceURL).
The client makes the necessary changes to the state.
The client MUST then PUT the updates representation to the
(resourceURL) and quote the versionAwareResourceURL in the Content-Location
header of the PUT operation.
If the (versionAwareResourceURL) provided by the client is the
current version, the
server accepts the representation and persists the change, and returns a HTTP
a status code of 202 ok,
a Content-Location header with the (versionAwareResourceURL) of the new
the representation of the new version of the resource in the
If the (versionAwareResourceURL) represents no longer the current version, the
server MUST return a HTTP response with status code 412, a Content-Location
header with the new (versionAwareResourceURL), and a representation of
version of the resource.