FHIR API: Patient Update v2
Pre-requisites
Resource:
PUT /partners/fhir/stu3/api/v2/Bundle/{id}
Authentication:
Endpoint is secured with mutual TLS. More information can be found here: API Authentication
API Request
Request Parameters
| Name | Description | Type | Required | Example |
|---|---|---|---|---|
| id | Patient logical ID (FHIR ID) of the patient to be updated. Note: patient.id received in the response of the Patient Creation v2 API |
String | Yes | Bj6.1Lq-hvb-28 |
Request Headers
| Name | Description | Type | Required | Example |
|---|---|---|---|---|
| org_id | Organization OID | String | Yes | 2.16.724.4.2 |
| x-origin-request-id | Request Unique ID generated by EMR middleware (UUID) | String | Yes | 5109d51b-421e-4746-b673-16e3fe2b3442" |
| client_id | Public identifier for organizations generated by Roche DC | String | Yes | 1234567890 |
| client_secret | Client related secret known only to the EMR and Roche DC | String | Yes | 1234567890 |
| Content-Type | json or fhir+json | String | Yes | application/json or application/fhir+json |
Profile overview
The list of profiles used in Patient Creation.
- message-header (mandatory)
- patient-v2 (mandatory)
- condition (optional)
Request Example
- The phone number of the patient with logical id Bj6.1Lq-hvb-28 (already created in RDC) is updated from "123123123" to "123456789":
curl --location --request PUT 'https://api-services-eu.rochedcplatform.com/partners/fhir/stu3/api/v2/Bundle/Bj6.1Lq-hvb-28' \ --header 'client_id: 1234567890' \ --header 'client_secret: 1234567890' \ --header 'Content-Type: application/fhir+json' \ --header 'org_Id: 2.16.724.4.2' \ --data-raw '{ "resourceType": "Bundle", "type": "message", "entry": [ { "resource": { "resourceType": "MessageHeader", "id": "88a37162-3d7c-41c3-89ab-6e25fd68ba00", "event": { "code": "new-bundle", "system": "http://roche.com/fhir/rdc/message-type", "display": "New bundle generated" }, "source": { "endpoint": "<Organization OID>", "software": "EMR middleware", "version": "1.0.0" }, "timestamp": "2020-03-27T12:21:39.471Z", "meta": { "profile": [ "http://roche.com/fhir/rdc/StructureDefinition/message-header" ] } } }, { "resource": { "resourceType": "Patient", "meta": { "profile": [ "http://roche.com/fhir/rdc/StructureDefinition/patient-v2" ] }, "id": "Bj6.1Lq-hvb-28", "identifier": [ { "system": "urn:oid:2.16.724.4.41", "value": "12345678Z" } ], "name": [ { "family": "Doe", "given": [ "John" ] } ], "telecom": [ { "system": "phone", "value": "123456789" }, { "system": "email", "value": "johndoe123@email.com" } ], "gender": "male", "birthDate": "1991-01-01", "managingOrganization": { "identifier": [ { "system": "urn:oid:1.3.6.1.4.1.56221.1.1", "value": "2.16.724.4.2" } ] } } }, { "resource": { "resourceType": "Condition", "clinicalStatus": "active", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "426875007", "display": "Latent autoimmune diabetes mellitus in adult (disorder)" } ] }, "subject": { "reference": "Patient/sample-id-454b-b5c7-f1ed1fb4ght" } } } ] }'
API Response
API code response
| HTTP Response Code | Description | Response Body | FHIR error code | FHIR error code description |
|---|---|---|---|---|
| 200 | Patient Bundle updated | Bundle | NA | NA |
| 400 | Request failed because of incorrect parameters, returns no data | OperationOutcome | required | Request failed because of incorrect parameters, returns no data |
| 400 | Request failed because of incorrect parameters, returns no data | OperationOutcome | structure | A structural issue in the content such as wrong namespace, or unable to parse the content completely, or invalid json syntax. |
| 400 | Request failed because of incorrect parameters, returns no data | OperationOutcome | invalid | Content invalid against the specification or a profile. |
| 401 | Request failed with unauthorized access, returns no data | Empty | NA | NA |
| 403 | Not Authorized, organization id not valid | Empty | NA | NA |
| 404 | Patient Not Found | OperationOutcome | not-found | Patient Not Found |
| 405 | Method Not Allowed | Empty | NA | NA |
| 415 | Unsupported Media Type. | OperationOutcome | not-supported | Content-Type is not one of (application/json, application/fhir+json) |
| 500 | Request failed with internal exception | OperationOutcome | exception | Internal server error. |
| 501 | Not implemented | Empty | NA | NA |
API Payload response
Successful response object:
{
"resourceType": "Bundle",
"type": "message",
"entry": [
{
"resource": {
"resourceType": "MessageHeader",
"id": "88a37162-3d7c-41c3-89ab-6e25fd68ba00",
"event": {
"code": "new-bundle",
"system": "http://roche.com/fhir/rdc/message-type",
"display": "New bundle generated"
},
"source": {
"endpoint": "<Organization OID>",
"software": "EMR middleware",
"version": "1.0.0"
},
"timestamp": "2020-03-27T12:21:39.471Z",
"meta": {
"profile": [
"http://roche.com/fhir/rdc/StructureDefinition/message-header"
]
}
}
},
{
"resource": {
"resourceType": "Patient",
"meta": {
"profile": [
"http://roche.com/fhir/rdc/StructureDefinition/patient-v2"
]
},
"id": "Bj6.1Lq-hvb-28",
"identifier": [
{
"system": "urn:oid:2.16.724.4.41",
"value": "12345678Z"
}
],
"name": [
{
"family": "Doe",
"given": [
"John"
]
}
],
"telecom": [
{
"system": "phone",
"value": "123123123"
},
{
"system": "email",
"value": "johndoe123@email.com"
}
],
"gender": "male",
"birthDate": "1991-01-01",
"managingOrganization": {
"identifier": [
{
"system": "urn:oid:1.3.6.1.4.1.56221.1.1",
"value": "2.16.724.4.2"
}
]
}
}
},
{
"resource": {
"resourceType": "Condition",
"clinicalStatus": "active",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "426875007",
"display": "Latent autoimmune diabetes mellitus in adult (disorder)"
}
]
},
"subject": {
"reference": "Patient/sample-id-454b-b5c7-f1ed1fb4ght"
}
}
}
]
}
Error response object:
As an example, if we try to update a record that does not exist, we will obtain a 404 HTTP error status code together the following response body:
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "not-found",
"diagnostics": "Patient not found"
}
]
}