FHIR API: Patient Creation v2


Pre-requisites


Resource:

POST /partners/fhir/stu3/api/v2/Bundle

Authentication:

Endpoint is secured with mutual TLS. More information can be found here: API Authentication


API Request

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.

Note

While creating a patient, the patient identifier value and the email must be unique.

Starting from the Patient Creation v2 API, the 'patient.managingOrganization' field can be sent as a optional parameter in the payload.


Request Example

  • Patient Request example with Type-1 diabetes condition:
curl --location --request POST 'https://api-services-eu.rochedcplatform.com/partners/fhir/stu3/api/v2/Bundle' \
--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"
                    ]
                },
                "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"
                }
            }
        }
    ]
}'


API Response

API code response

HTTP Response Code Description Response Body FHIR error code FHIR error code description
201 Patient Bundle created 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
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)
422 Unprocessed Entity OperationOutcome exception FHIRID creation failed. Retrieval of FHIRID from RDCP identities exceeded pre-defined Timeout
422 Conflict / User already exists OperationOutcome duplicate The resource already exists. Please retrieve the fhir-id from the field details.text and use it to request an update to the existing resource.
Note: the error response object also includes the expression field and the patient.id in the details.text field.
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 create a record that already existis in Roche Diabetes Care (RDC), a 422 HTTP error status code is returned together the following response:

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "code": "duplicate",
            "details": {
                "text": "Bj6.1Lq-hvb-28"
            },
            "diagnostics": "The resource already exists. Please retrieve the fhir-id from the field details.text and use it to request an update to the existing resource",
            "expression": [
                "Patient.identifier[0].value"
            ]
        }
    ]
}

Note

issue.details.text returns the patient FHIR ID that is already created.