Partners FHIR API


DESCRIPTION


Roche Diabetes Care exposes an API using HL7 FHIR (Fast Healthcare Interoperability Resources) STU3 in order to allow EMRs, PHRs and other systems to communicate with Roche ecosystem.

FHIR is a standard for exchanging healthcare data electronically and takes a modern, web-based approach to API design. For more information about how to use FHIR, please visit the HL7 FHIR STU3 Documentation.


API INFORMATION


Title: Partners FHIR API

Version: v1

Protocols: HTTPS

URI Live: https://api-services-eu.rochedcplatform.com/partners/fhir/stu3/api/

URI Demo: https://api-services-demo.rochedcplatform-sandbox.com/partners/fhir/stu3/api/

Swagger file: Here

Visual API Specification: https://api-services-demo.rochedcplatform-sandbox.com/partners/fhir/stu3/console/ (It is needed to add the client certificate in the browser for DEMO environment)


AUTHENTICATION


Partners FHIR API is secured with mutual TLS for identifying both parties and for securing communication between systems.

API Authentication for more information


AVAILABLE SERVICES


Patient services (Create and Update Patient)

Practitioner services (Create and Update Practitioner)


Patient services


Patient Services allow Health Information Systems (HIS) to create and update patients in Roche ecosystem. In order to create / update a Patient it is required to send a Bundle Resource composed by Patient and Condition Resource.

Data Flow


EMR-patient-create


  1. The administrative / HIS creates / update a patient.
  2. The middleware receives the patient creation / update message.
  3. The middleware transforms the message delivered by HIS into the FHIR message and send it to Partners FHIR API.
  4. Roche creates / updates the patient in Diabetes Care Platform and sends a response to the EMR middleware.

Assigning authority

The possible identifier systems that we accept to identify the assigning authority that is generating the patients ID are:

Assigning authority Identifier system
Meteda urn:oid:1.3.6.1.4.1.56221.2.2
CIP urn:oid:2.16.724.4.41

For more details please check Patient create / update chapter:

Practitioner


Practitioner Services allow Health Information Systems (HIS) to create and update practitioners in Roche ecosystem.


Data Flow


EMR-patient-create


  1. The administrative / HIS creates / update a practitioner.
  2. The middleware receives the practitioner creation / update message.
  3. The middleware transforms the message delivered by HIS into the FHIR message and send it to Partners FHIR API.
  4. Roche creates / updates the practitioner in Diabetes Care Platform and sends a response to the EMR middleware.

Assigning authority

The possible identifier systems that we accept to identify the assigning authority that is generating the practitioners ID are:

Assigning authority Identifier system
Meteda urn:oid:1.3.6.1.4.1.56221.2.2
DNI urn:oid:2.16.724.4.305

For more details please check Practitioner create / update chapter:

Error handling

Inbound interfaces (RESTful API)

  • Patient creation;
  • Patient update;
  • Practitioner creation;
    No System Scenario Error code Action Middleware Action Roche
    1 Middleware Required data cannot be sent to Roche TBD
  • Message id / error detail is stored in DLQ
  • Raise an alert to Support team
  • NA
    2 Middleware Message cant be deliver to Roche API
  • Network issues
  • Roche service is down
  • TBD
  • Perform retries
  • If the retries doesn't fix the issue then: perform action from step 1
  • NA
    3 Roche Roche receives the request from middleware and have an Internal timeout (Calling RDCP, enriching the message, etc.) timeout

    Please check Data Validation section below;
  • Perform retries
  • If the retries doesn't fix the issue then: perform action from step 1
  • Log error making the detail available in Kibana to the Support team
  • Raise an alert to Support team
  • 4 Roche Roche receives the request from middleware and have a validation error invalid;
    structure;
    required;
    too-long;

    Please check Data Validation section below;
    perform action from step 1
  • Log error making the detail available in Kibana to the Support team
  • 5 Roche Roche receives the request from middleware and have an unexpected internal error exception

    Please check Data Validation section below;
  • Perform retries
  • If the retries doesn't fix the issue then: perform action from step 1
  • Log error making the detail available in Kibana to the Support team
  • Raise an alert to Support team
  • In an error scenario FHIR API will send the error details (using this resource).

    • Please find here FHIR error codes value set.
    • Please find here FHIR API Operation Response details;

    Data Validation

    No Validation Error code validation message
    1 Content invalid against the specification or a profile. invalid
    Command 'json' could not render: Project was not found for example-operation-outcome-Invalid.
    2 A structural issue in the content such as wrong namespace, or unable to parse the content completely, or invalid json syntax. structure
    Command 'json' could not render: Project was not found for example-operation-outcome-structure.
    3 A required element is missing. required
    Command 'json' could not render: Project was not found for example-operation-outcome-required.
    4 An unexpected internal error has occurred. exception
    Command 'json' could not render: Project was not found for example-operation-outcome-exception.
    5 Provided content is too long (typically, this is a denial of service protection type of error). too-long
    Command 'json' could not render: Project was not found for example-operation-outcome-too-long.
    6 An internal timeout has occurred. timeout
    Command 'json' could not render: Project was not found for example-operation-outcome-timeout.

    Outbound interfaces (asynchronous)

  • BG values synchronisation;
  • Clinical report;
    No System Scenario Error code Action Middleware Action Roche
    1 Roche Sending notification message to middleware:
    Uncontrolled Internal error
    TBD NA
  • Message payload / attributes and error detail are stored in DLQ
  • Raise an alert to Support team
  • 2 Roche Sending notification message to middleware:
    Message cant be deliver to MIddleware API
  • Network issues
  • MIddleware notification service is down
  • TBD NA
  • Perform retries
  • If the retries doesn't fix the issue then: perform action from step 1
  • 3 Middleware Processing notification message or file:
    Uncontrolled Internal error.
    TBD
  • Message id / error detail is stored in DLQ
  • Raise an alert to Support team
  • If no no commit message is sent to Roche in Xh
  • Notification message is stored in Roche DQL with the error details.
  • Raise an alert to Support team
  • 4 Middleware Processing notification message or file:
    Message cant be deliver to EMR API
  • Network issues;
  • Roche service is down.
  • TBD
  • Perform retries
  • If the retries doesn't fix the issue then: perform action from step 3
  • If middleware retries doesn't fix the issue then: no commit message is sent and Roche perform action from step 3
  • 5 Middleware Processing notification file
  • File is invalid
  • TBD
  • Message id / error detail is stored in DLQ
  • File is discarded;
  • Raise an alert to Support team
  • Same as step 3.
    File bundle may need to be re-generated (reprocess Data Integration interface).

    Logging

    All events relevant details are logged and information is available in Kibana, allowing Support team to track any issue for each transaction;

  • Correlation id for transaction tracking in Kibana should be message id;
  • EMR middleware will store this correlation id as well;
  • Postman collection

    WIP
    

    Swagger - OAS 3.0

    openapi: 3.0.0
    info:
      title: Partners FHIR Resources HL7 - Generic API
      contact: {}
      version: '1.0'
    servers:
      - url: 'https://{host}/partners/fhir/stu3/api'
        variables:
          host:
            default: api-services-demo.rochedcplatform-sandbox.com
            description: Environment where the service is implemented
    paths:
      /validatebundle:
        post:
          tags:
            - validatebundle
          summary: Bundle Validator
          description: Send a bundle to validate.
          operationId: BundleValidator
          parameters:
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          requestBody:
            description: ''
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/Validatebundlerequest'
                example:
                  resourceType: Bundle
                  id: 99b4cdb5-1f5d-4cff-8199-84e7b56ee679
                  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:
                        id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
                        resourceType: Patient
                        meta:
                          profile:
                            - 'http://roche.com/fhir/rdc/StructureDefinition/patient-v2'
                        identifier:
                          - system: 'urn:oid:2.16.724.4.41'
                            value: AAAA1234567890
                        active: 'true'
                        name:
                          - family: Pérez Fuster
                            given:
                              - Manolo
                        telecom:
                          - system: phone
                            use: home
                            value: '123456789'
                        gender: male
                        birthDate: '1975-06-16'
                    - resource:
                        resourceType: Condition
                        id: abdca832-a616-454b-b5c7-f1ed1fb4ght
                        meta:
                          profile:
                            - 'http://roche.com/fhir/rdc/StructureDefinition/condition'
                        clinicalStatus: active
                        code:
                          coding:
                            - system: 'http://snomed.info/sct'
                              code: '46635009'
                              display: Diabetes mellitus type 1
                        subject:
                          reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
            required: true
          responses:
            '200':
              description: Result of the validation of the sent Bundle.
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Validatebundleresponse'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Validatebundleresponse405'
            '500':
              description: Error in the validation process.
              headers: {}
              content: {}
          deprecated: false
      '/{resource}':
        post:
          tags:
            - resource
          summary: Create Patient / Practitioner
          operationId: CreatePatient/Practitioner
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          requestBody:
            description: ''
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/request'
                example:
                  resourceType: Bundle
                  id: 99b4cdb5-1f5d-4cff-8199-84e7b56ee679
                  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:
                        id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
                        resourceType: Patient
                        meta:
                          profile:
                            - 'http://roche.com/fhir/rdc/StructureDefinition/patient-v2'
                        identifier:
                          - system: 'urn:oid:2.16.724.4.41'
                            value: AAAA1234567890
                        active: 'true'
                        name:
                          - family: Pérez Fuster
                            given:
                              - Manolo
                        telecom:
                          - system: phone
                            use: home
                            value: '123456789'
                        gender: male
                        birthDate: '1975-06-16'
                    - resource:
                        resourceType: Condition
                        id: abdca832-a616-454b-b5c7-f1ed1fb4ght
                        meta:
                          profile:
                            - 'http://roche.com/fhir/rdc/StructureDefinition/condition'
                        clinicalStatus: active
                        code:
                          coding:
                            - system: 'http://snomed.info/sct'
                              code: '46635009'
                              display: Diabetes mellitus type 1
                        subject:
                          reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
            required: true
          responses:
            '200':
              description: Patient / Practitioner created.
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response'
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        get:
          tags:
            - resource
          summary: Not Implemented
          operationId: NotImplemented
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        put:
          tags:
            - resource
          summary: Not Implemented1
          operationId: NotImplemented1
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        delete:
          tags:
            - resource
          summary: Not Implemented2
          operationId: NotImplemented2
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
      '/{resource}/{id}':
        put:
          tags:
            - resource
          summary: Update Patient / Practitioner
          operationId: UpdatePatient/Practitioner
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: id
              in: path
              description: ID
              required: true
              style: simple
              schema:
                type: string
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          requestBody:
            description: ''
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/request1'
                example:
                  id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
                  resourceType: Practitioner
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/practitioner-v2'
                  identifier:
                    - system: 'urn:oid:2.16.724.4.305'
                      value: 99999999A
                  active: 'true'
                  name:
                    - family: Pérez Fuster
                      given:
                        - Manolo
                  telecom:
                    - system: email
                      value: bla@bla.com
                    - system: phone
                      value: 555-12345
                  gender: male
                  birthDate: '1975-06-16'
            required: true
          responses:
            '200':
              description: Patient / Practitioner updated.
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        get:
          tags:
            - resource
          summary: Not Implemented
          operationId: GetNotImplemented
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: id
              in: path
              description: ID
              required: true
              style: simple
              schema:
                type: string
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        post:
          tags:
            - resource
          summary: Not Implemented1
          operationId: PostNotImplemented1
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: id
              in: path
              description: ID
              required: true
              style: simple
              schema:
                type: string
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
        delete:
          tags:
            - resource
          summary: Not Implemented2
          operationId: DeleteNotImplemented2
          parameters:
            - name: resource
              in: path
              description: ''
              required: true
              style: simple
              schema:
                $ref: '#/components/schemas/resource2'
            - name: id
              in: path
              description: ID
              required: true
              style: simple
              schema:
                type: string
            - name: org_id
              in: header
              description: Organization ID
              required: true
              style: simple
              schema:
                type: string
            - name: x-origin-request-id
              in: header
              description: Request ID
              style: simple
              schema:
                type: string
          responses:
            '200':
              description: OK
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '400':
              description: Bad Request
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '403':
              description: 'Not Authorized, organization id not valid'
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response403'
                text/turtle:
                  schema:
                    type: object
            '404':
              description: Resource Not Found or Practitioner/Patient Not Found
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '405':
              description: Method Not Allowed
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
            '409':
              description: Conflict / User already exists
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response400'
            '500':
              description: Internal Server Error
              headers: {}
              content:
                application/json:
                  schema:
                    type: string
            '501':
              description: Not implemented
              headers: {}
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/response405'
          deprecated: false
    components:
      schemas:
        Validatebundlerequest:
          title: Validatebundlerequest
          required:
            - resourceType
            - id
            - type
            - entry
          type: object
          properties:
            resourceType:
              type: string
            id:
              type: string
            type:
              type: string
            entry:
              type: array
              items:
                $ref: '#/components/schemas/Entry'
              description: ''
          example:
            resourceType: Bundle
            id: 99b4cdb5-1f5d-4cff-8199-84e7b56ee679
            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:
                  id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
                  resourceType: Patient
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/patient-v2'
                  identifier:
                    - system: 'urn:oid:2.16.724.4.41'
                      value: AAAA1234567890
                  active: 'true'
                  name:
                    - family: Pérez Fuster
                      given:
                        - Manolo
                  telecom:
                    - system: phone
                      use: home
                      value: '123456789'
                  gender: male
                  birthDate: '1975-06-16'
              - resource:
                  resourceType: Condition
                  id: abdca832-a616-454b-b5c7-f1ed1fb4ght
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/condition'
                  clinicalStatus: active
                  code:
                    coding:
                      - system: 'http://snomed.info/sct'
                        code: '46635009'
                        display: Diabetes mellitus type 1
                  subject:
                    reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
        Entry:
          title: Entry
          required:
            - resource
          type: object
          properties:
            resource:
              $ref: '#/components/schemas/Resource'
          example:
            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:
          title: Resource
          required:
            - resourceType
            - id
            - meta
          type: object
          properties:
            resourceType:
              type: string
            id:
              type: string
            event:
              $ref: '#/components/schemas/Event'
            source:
              $ref: '#/components/schemas/Source'
            timestamp:
              type: string
            meta:
              $ref: '#/components/schemas/Meta'
            identifier:
              type: array
              items:
                $ref: '#/components/schemas/Identifier'
              description: ''
            active:
              type: string
            name:
              type: array
              items:
                $ref: '#/components/schemas/Name'
              description: ''
            telecom:
              type: array
              items:
                $ref: '#/components/schemas/Telecom'
              description: ''
            gender:
              type: string
            birthDate:
              type: string
            clinicalStatus:
              type: string
            code:
              $ref: '#/components/schemas/Code'
            subject:
              $ref: '#/components/schemas/Subject'
          example:
            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'
        Event:
          title: Event
          required:
            - code
            - system
            - display
          type: object
          properties:
            code:
              type: string
            system:
              type: string
            display:
              type: string
          example:
            code: new-bundle
            system: 'http://roche.com/fhir/rdc/message-type'
            display: New bundle generated
        Source:
          title: Source
          required:
            - endpoint
            - software
            - version
          type: object
          properties:
            endpoint:
              type: string
            software:
              type: string
            version:
              type: string
          example:
            endpoint: <Organization OID>
            software: EMR middleware
            version: 1.0.0
        Meta:
          title: Meta
          required:
            - profile
          type: object
          properties:
            profile:
              type: array
              items:
                type: string
              description: ''
          example:
            profile:
              - 'http://roche.com/fhir/rdc/StructureDefinition/message-header'
        Identifier:
          title: Identifier
          required:
            - system
            - value
          type: object
          properties:
            system:
              type: string
            value:
              type: string
          example:
            system: 'urn:oid:2.16.724.4.41'
            value: AAAA1234567890
        Name:
          title: Name
          required:
            - family
            - given
          type: object
          properties:
            family:
              type: string
            given:
              type: array
              items:
                type: string
              description: ''
          example:
            family: Pérez Fuster
            given:
              - Manolo
        Telecom:
          title: Telecom
          required:
            - system
            - use
            - value
          type: object
          properties:
            system:
              type: string
            use:
              type: string
            value:
              type: string
          example:
            system: phone
            use: home
            value: '123456789'
        Code:
          title: Code
          required:
            - coding
          type: object
          properties:
            coding:
              type: array
              items:
                $ref: '#/components/schemas/Coding'
              description: ''
          example:
            coding:
              - system: 'http://snomed.info/sct'
                code: '46635009'
                display: Diabetes mellitus type 1
        Coding:
          title: Coding
          required:
            - system
            - code
            - display
          type: object
          properties:
            system:
              type: string
            code:
              type: string
            display:
              type: string
          example:
            system: 'http://snomed.info/sct'
            code: '46635009'
            display: Diabetes mellitus type 1
        Subject:
          title: Subject
          required:
            - reference
          type: object
          properties:
            reference:
              type: string
          example:
            reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
        Validatebundleresponse:
          title: Validatebundleresponse
          required:
            - resourceType
            - type
            - entry
          type: object
          properties:
            resourceType:
              type: string
            type:
              type: string
            entry:
              type: array
              items:
                $ref: '#/components/schemas/Entry1'
              description: ''
          example:
            resourceType: Bundle
            type: document
            entry:
              - resource:
                  resourceType: OperationOutcome
                  issue:
                    - severity: error
                      code: invalid
                      diagnostics: Bundle.id must not be empty
        Entry1:
          title: Entry1
          required:
            - resource
          type: object
          properties:
            resource:
              $ref: '#/components/schemas/Resource1'
          example:
            resource:
              resourceType: OperationOutcome
              issue:
                - severity: error
                  code: invalid
                  diagnostics: Bundle.id must not be empty
        Resource1:
          title: Resource1
          required:
            - resourceType
            - issue
          type: object
          properties:
            resourceType:
              type: string
            issue:
              type: array
              items:
                $ref: '#/components/schemas/Issue'
              description: ''
          example:
            resourceType: OperationOutcome
            issue:
              - severity: error
                code: invalid
                diagnostics: Bundle.id must not be empty
        Issue:
          title: Issue
          required:
            - severity
            - code
            - diagnostics
          type: object
          properties:
            severity:
              type: string
            code:
              type: string
            diagnostics:
              type: string
          example:
            severity: error
            code: invalid
            diagnostics: Bundle.id must not be empty
        Validatebundleresponse405:
          title: Validatebundleresponse405
          required:
            - message
          type: object
          properties:
            message:
              type: string
          example:
            message: Method not allowed
        resource2:
          title: resource2
          enum:
            - Practitioner
            - Bundle
          type: string
        Content-Type:
          title: Content-Type
          enum:
            - application/json
            - application/fhir+json
          type: string
        request:
          title: request
          required:
            - resourceType
            - id
            - type
            - entry
          type: object
          properties:
            resourceType:
              type: string
            id:
              type: string
            type:
              type: string
            entry:
              type: array
              items:
                $ref: '#/components/schemas/Entry'
              description: ''
          example:
            resourceType: Bundle
            id: 99b4cdb5-1f5d-4cff-8199-84e7b56ee679
            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:
                  id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
                  resourceType: Patient
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/patient-v2'
                  identifier:
                    - system: 'urn:oid:2.16.724.4.41'
                      value: AAAA1234567890
                  active: 'true'
                  name:
                    - family: Pérez Fuster
                      given:
                        - Manolo
                  telecom:
                    - system: phone
                      use: home
                      value: '123456789'
                  gender: male
                  birthDate: '1975-06-16'
              - resource:
                  resourceType: Condition
                  id: abdca832-a616-454b-b5c7-f1ed1fb4ght
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/condition'
                  clinicalStatus: active
                  code:
                    coding:
                      - system: 'http://snomed.info/sct'
                        code: '46635009'
                        display: Diabetes mellitus type 1
                  subject:
                    reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
        response:
          title: response
          required:
            - resourceType
            - id
            - type
            - entry
          type: object
          properties:
            resourceType:
              type: string
            id:
              type: string
            type:
              type: string
            entry:
              type: array
              items:
                $ref: '#/components/schemas/Entry3'
              description: ''
          example:
            resourceType: Bundle
            id: AAAA1234567890
            type: message
            entry:
              - resource:
                  resourceType: MessageHeader
                  id: 88a37162-3d7c-41c3-89ab-6e25fd68ba00
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/message-header'
                  event:
                    system: 'http://roche.com/fhir/rdc/message-type'
                    code: new-bundle
                    display: New bundle generated
                  timestamp: '2020-03-27T12:21:39.471Z'
                  source:
                    name: <Hospital-ID>
                    software: IDI_middleware
                    version: 1.0.0
                    endpoint: <UUID for the middleware installation>
              - resource:
                  resourceType: Patient
                  id: AAAA1234567890
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/patient-v2'
                  identifier:
                    - system: 'urn:oid:2.16.724.4.41'
                      value: AAAA1234567890
                  active: true
                  name:
                    - family: Pérez Fuster
                      given:
                        - Manolo
                  telecom:
                    - system: phone
                      value: '123456789'
                      use: home
                  gender: male
                  birthDate: '1975-06-16'
              - resource:
                  resourceType: Condition
                  id: abdca832-a616-454b-b5c7-f1ed1fb4ght
                  meta:
                    profile:
                      - 'http://roche.com/fhir/rdc/StructureDefinition/condition'
                  clinicalStatus: active
                  code:
                    coding:
                      - system: 'http://snomed.info/sct'
                        code: '46635009'
                        display: Diabetes mellitus type 1
                  subject:
                    reference: Patient/abdca832-a616-454b-b5c7-f1ed1fb45d4e
        Entry3:
          title: Entry3
          required:
            - resource
          type: object
          properties:
            resource:
              $ref: '#/components/schemas/Resource4'
          example:
            resource:
              resourceType: MessageHeader
              id: 88a37162-3d7c-41c3-89ab-6e25fd68ba00
              meta:
                profile:
                  - 'http://roche.com/fhir/rdc/StructureDefinition/message-header'
              event:
                system: 'http://roche.com/fhir/rdc/message-type'
                code: new-bundle
                display: New bundle generated
              timestamp: '2020-03-27T12:21:39.471Z'
              source:
                name: <Hospital-ID>
                software: IDI_middleware
                version: 1.0.0
                endpoint: <UUID for the middleware installation>
        Resource4:
          title: Resource4
          required:
            - resourceType
            - id
            - meta
          type: object
          properties:
            resourceType:
              type: string
            id:
              type: string
            meta:
              $ref: '#/components/schemas/Meta'
            event:
              $ref: '#/components/schemas/Event'
            timestamp:
              type: string
            source:
              $ref: '#/components/schemas/Source2'
            identifier:
              type: array
              items:
                $ref: '#/components/schemas/Identifier'
              description: ''
            active:
              type: boolean
            name:
              type: array
              items:
                $ref: '#/components/schemas/Name'
              description: ''
            telecom:
              type: array
              items:
                $ref: '#/components/schemas/Telecom'
              description: ''
            gender:
              type: string
            birthDate:
              type: string
            clinicalStatus:
              type: string
            code:
              $ref: '#/components/schemas/Code'
            subject:
              $ref: '#/components/schemas/Subject'
          example:
            resourceType: MessageHeader
            id: 88a37162-3d7c-41c3-89ab-6e25fd68ba00
            meta:
              profile:
                - 'http://roche.com/fhir/rdc/StructureDefinition/message-header'
            event:
              system: 'http://roche.com/fhir/rdc/message-type'
              code: new-bundle
              display: New bundle generated
            timestamp: '2020-03-27T12:21:39.471Z'
            source:
              name: <Hospital-ID>
              software: IDI_middleware
              version: 1.0.0
              endpoint: <UUID for the middleware installation>
        Source2:
          title: Source2
          required:
            - name
            - software
            - version
            - endpoint
          type: object
          properties:
            name:
              type: string
            software:
              type: string
            version:
              type: string
            endpoint:
              type: string
          example:
            name: <Hospital-ID>
            software: IDI_middleware
            version: 1.0.0
            endpoint: <UUID for the middleware installation>
        response400:
          title: response400
          required:
            - resourceType
            - issue
          type: object
          properties:
            resourceType:
              type: string
            issue:
              type: array
              items:
                $ref: '#/components/schemas/Issue'
              description: ''
          example:
            resourceType: OperationOutcome
            issue:
              - severity: error
                code: invalid
                diagnostics: 'Incorrect resource type found, expected "Bundle" but found "Practitioner"'
        response403:
          title: response403
          required:
            - status
            - detail
          type: object
          properties:
            status:
              type: string
            detail:
              type: string
          example:
            status: error
            detail: 'Validation policy error: Certificate validation failed.'
        response405:
          title: response405
          required:
            - message
          type: object
          properties:
            message:
              type: string
          example:
            message: Method not allowed
        request1:
          title: request1
          required:
            - id
            - resourceType
            - meta
            - identifier
            - active
            - name
            - telecom
            - gender
            - birthDate
          type: object
          properties:
            id:
              type: string
            resourceType:
              type: string
            meta:
              $ref: '#/components/schemas/Meta'
            identifier:
              type: array
              items:
                $ref: '#/components/schemas/Identifier'
              description: ''
            active:
              type: string
            name:
              type: array
              items:
                $ref: '#/components/schemas/Name'
              description: ''
            telecom:
              type: array
              items:
                $ref: '#/components/schemas/Telecom3'
              description: ''
            gender:
              type: string
            birthDate:
              type: string
          example:
            id: abdca832-a616-454b-b5c7-f1ed1fb45d4e
            resourceType: Practitioner
            meta:
              profile:
                - 'http://roche.com/fhir/rdc/StructureDefinition/practitioner-v2'
            identifier:
              - system: 'urn:oid:2.16.724.4.305'
                value: 99999999A
            active: 'true'
            name:
              - family: Pérez Fuster
                given:
                  - Manolo
            telecom:
              - system: email
                value: bla@bla.com
              - system: phone
                value: 555-12345
            gender: male
            birthDate: '1975-06-16'
        Telecom3:
          title: Telecom3
          required:
            - system
            - value
          type: object
          properties:
            system:
              type: string
            value:
              type: string
          example:
            system: email
            value: bla@bla.com
      securitySchemes:
        client_id:
          type: apiKey
          description: Public identifier for apps generated by API Manager
          name: client_id
          in: header
        client_secret:
          type: apiKey
          description: Client related secret known only to the application and the authorization server
          name: client_secret
          in: header
    security:
      - client_id: []
        client_secret: []
    tags:
      - name: validatebundle
        description: ''
      - name: resource
        description: ''