Retrieving resource history
There are several ways to retrieve version history for resources with the FhirClient.
Note
Servers are not required to support version retrieval. If the history
interaction
is supported, the server can can choose on which level it is supported. You can check the
CapabilityStatement
of the server to see what it supports.
History of a specific resource
The version history of a specific resource can be retrieved with the
History
method of the FhirClient. It is possible to specify a date, to
include only the changes that were made after the given date, and a count
to specify the maximum number of results returned.
The method returns a Bundle resource with the history for the resource instance, for example:
var pat_31_hist = client.History("Patient/31");
// or
var pat_31_hist = client.History("Patient/31", new FhirDateTime("2016-11-29").ToDateTimeOffset());
// or
var pat_31_hist = client.History("Patient/31", new FhirDateTime("2016-11-29").ToDateTimeOffset(), 5);
Note
The Bundle may contain entries without a resource, when the version of the instance
was the result of a delete
interaction.
History for a resource type
Sometimes you may want to retrieve the history for a type of
resource instead of an instance (e.g. the versions of all Patients). In
this case you can use the TypeHistory
method.
var pat_hist = client.TypeHistory<Patient>();
As with the method on the instance level, a date and page size can optionally be specified.
System wide history
When a system wide history is needed, retrieving all versions of all
resources, the FhirClient’s WholeSystemHistory
method is used. Again, it is
possible to specify a date and a page size.
var lastMonth = DateTime.Today.AddMonths(-1);
var last_month_hist = client.WholeSystemHistory(since: lastMonth, pageSize: 10);
In this case the function retrieves all changes to all resources that have been done since the last month and limits the results to a maximum of 10. See Paged results for an example on how to page through the resulting Bundle.