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
Below is a table containing all the possible resources the $everything
command can return:
Resource List |
---|
Account |
AdverseEvent |
AllergyIntolerance |
Appointment |
AppointmentResponse |
AuditEvent |
Basic |
BodyStructure |
CarePlan |
CareTeam |
ChargeItem |
Claim |
ClaimResponse |
ClinicalImpression |
Communication |
CommunicationRequest |
Composition |
Condition |
Consent |
Coverage |
CoverageEligibilityRequest |
CoverageEligibilityResponse |
DetectedIssue |
Device |
DeviceRequest |
DeviceUseStatement |
DiagnosticReport |
DocumentManifest |
DocumentReference |
Encounter |
EnrollmentRequest |
EpisodeOfCare |
ExplanationOfBenefit |
FamilyMemberHistory |
Flag |
Goal |
Group |
ImagingStudy |
Immunization |
ImmunizationEvaluation |
ImmunizationRecommendation |
Invoice |
List |
MeasureReport |
Media |
Medication |
MedicationAdministration |
MedicationDispense |
MedicationRequest |
MedicationStatement |
MolecularSequence |
NutritionOrder |
Observation |
Organization |
Person |
Practitioner |
Procedure |
Provenance |
QuestionnaireResponse |
RelatedPerson |
RequestGroup |
ResearchSubject |
RiskAssessment |
Schedule |
ServiceRequest |
Specimen |
SupplyDelivery |
SupplyRequest |
VisionPrescription |
$everything
allows filtering resource types out of the patient compartment.
For examples on how to do this, see the documentation.
You are about to leave the Smile Digital Health documentation and navigate to the Open Source HAPI-FHIR Documentation.