Most of the changes requested in this section apply to 6.5 of the
hData specification.
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
SectionDocuments
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
the current
version of that resource.
If the resource was deleted with a DELETE, the service SHOULD return a
HTTP status
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
response with
a status code of 202 ok,
a Content-Location header with the (versionAwareResourceURL) of the new
version, and
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
the latest
version of the resource.