Reading Data
This section contains information about methods for reading data from the CDR.
The $diff
operation can be used to generate a differential between two versions of a resource, or even two different resources of the same type.
Differentials generated by this operation are in FHIR Patch format.
In generated differentials, where a value has changed (i.e. a replace operation), an additional part value will be present on the given operation called previousValue
. This part shows the value as it was in the from version of the resource.
When the $diff operation is invoked at the instance level (meaning it is invoked on a specific resource ID), it will compare two versions of the given resource.
fromVersion=[versionId]
: (optional) If specified, compare using this version as the source. If not specified, the immediately previous version will be compared.includeMeta=true
: (optional) If specified, changes to Resource.meta will be included in the diff. This element is omitted by default.To invoke:
GET http://fhir.example.com/baseR4/Patient/123/$diff
The server will produce a response resembling the following:
{
"resourceType": "Parameters",
"parameter": [ {
"name": "operation",
"part": [ {
"name": "type",
"valueCode": "replace"
}, {
"name": "path",
"valueString": "Patient.name.family"
}, {
"name": "previousValue",
"valueId": "Smyth"
}, {
"name": "value",
"valueId": "SmithB"
} ]
} ]
}
When the $diff operation is invoked at the type level (meaning it is invoked on a resource type but not on an individual instance), it will compare two different resources of the same type.
from=[reference]
: Specifies the source of the comparison. The value must include a resource type and a resource ID, and can optionally include a version, e.g. Patient/123
or Patient/123/_history/2
.to=[reference]
: Specifies the target of the comparison. The value must include a resource type and a resource ID, and can optionally include a version, e.g. Patient/123
or Patient/123/_history/2
.includeMeta=true
: (optional) If specified, changes to Resource.meta will be included in the diff. This element is omitted by default.To invoke:
GET http://fhir.example.com/baseR4/$diff?from=Patient/1&to=Patient/2
The server will produce a response resembling the following:
{
"resourceType": "Parameters",
"parameter": [ {
"name": "operation",
"part": [ {
"name": "type",
"valueCode": "replace"
}, {
"name": "path",
"valueString": "Patient.id"
}, {
"name": "previousValue",
"valueId": "1"
}, {
"name": "value",
"valueId": "2"
} ]
} ]
}
The HAPI-FHIR server supports the Patient/$everything operation and accepts all the IN parameters defined in the documentation. Additionally, Smile CDR allows you to provide an _id
parameter, in order to filter the set of patients you wish to get everything for. The following requests are all equivalent, and these example queries fetch everything for Patient/1, Patient/2 and Patient/3:
GET [base]/Patient/$everything?_id=1,2,3
GET [base]/Patient/$everything?_id=1&_id=2&_id=3
POST [base]/Patient/$everything
{
"resourceType": "Parameters",
"parameter": [ {
"name": "_id",
"valueString": "1"
}, {
"name": "_id",
"valueString": "2"
},{
"name": "_id",
"valueString": "3"
}
]
}
GET [base]/Patient/1/$everything
GET [base]/Patient/2/$everything
GET [base]/Patient/3/$everything