Resource Provenance
Any time a FHIR resource is created, updated, or deleted, the Oystehr FHIR API automatically creates a Provenance resource (opens in a new tab) to track the change. This provides you with an audit trail for all other FHIR resources. The automatically created FHIR Provenance records include the following details:
- What resource was changed (in the
targetproperty). - Who made the change (in the
agentproperty). - When the change was was made (in the
recordedproperty).
Here is an example Provenance resource that was automatically created when a Patient resource was created:
{
"resourceType": "Provenance",
"id": "794d3c6b-8ef4-4c51-9fd8-cccf976e5227",
"target": [
{
"reference": "Patient/eb683ca9-0e64-4a3e-98c6-c83ed8f383c3/_history/e4525e35-1914-4962-86fa-be52a617a30d"
}
],
"recorded": "2023-03-24T07:16:35.722Z",
"activity": {
"coding": [
{
"code": "CREATE"
}
]
},
"agent": [
{
"who": {
"reference": "Practitioner/eab11834-8082-44c4-8b4f-f5cbfbd8c6a3"
}
}
],
"meta": {
"versionId": "96e221a0-30b8-4626-9571-fcf12a408f6f",
"lastUpdated": "2023-03-24T07:16:35.722Z"
}
}Determining the history of a resource
In combination with resource history, changes can be tracked to resources over time, including when the changes were made, and who made them.
Consider the Patient resource referenced above. After calling https://fhir-api.zapehr.com/r4/Patient/eb683ca9-0e64-4a3e-98c6-c83ed8f383c3/_history, we get:
{
"resourceType":"Bundle",
"type":"history",
"entry":[
{
"fullUrl":"https://testing.fhir-api.zapehr.com/r4/Patient/eb683ca9-0e64-4a3e-98c6-c83ed8f383c3",
"request":{
"method":"POST",
"url":"Patient"
},
"response":{
"status":"200",
"outcome":{
"resourceType":"OperationOutcome",
"id":"ok",
"issue":[
{
"severity":"information",
"code":"informational",
"details":{
"text":"All OK"
}
}
]
},
"lastModified":"2023-03-24T07:16:35.355Z"
},
"resource":{
"resourceType":"Patient",
"name":[
{
"given":[
"Jon"
],
"family":"Snow"
}
],
"id":"eb683ca9-0e64-4a3e-98c6-c83ed8f383c3",
"meta":{
"versionId":"e4525e35-1914-4962-86fa-be52a617a30d",
"lastUpdated":"2023-03-24T07:16:35.355Z"
}
}
}
]
}We can call https://fhir-api.zapehr.com/r4/Provenance?target=Patient/eb683ca9-0e64-4a3e-98c6-c83ed8f383c3 to get all of the Provenance records for the Patient resource. This returns a Bundle of Provenance records, including the one above. From this resource we can determine that Practitioner/eab11834-8082-44c4-8b4f-f5cbfbd8c6a3 created the Patient.