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
- The administrative / HIS creates / update a patient.
- The middleware receives the patient creation / update message.
- The middleware transforms the message delivered by HIS into the FHIR message and send it to Partners FHIR API.
- 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
- The administrative / HIS creates / update a practitioner.
- The middleware receives the practitioner creation / update message.
- The middleware transforms the message delivered by HIS into the FHIR message and send it to Partners FHIR API.
- 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)
No | System | Scenario | Error code | Action Middleware | Action Roche |
---|---|---|---|---|---|
1 | Middleware | Required data cannot be sent to Roche | TBD | NA | |
2 | Middleware | Message cant be deliver to Roche API |
TBD | 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; |
||
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 | |
5 | Roche | Roche receives the request from middleware and have an unexpected internal error | exception Please check Data Validation section below; |
In an error scenario FHIR API will send the error details (using this resource).
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)
No | System | Scenario | Error code | Action Middleware | Action Roche |
---|---|---|---|---|---|
1 | Roche | Sending notification message to middleware: Uncontrolled Internal error |
TBD | NA | |
2 | Roche | Sending notification message to middleware: Message cant be deliver to MIddleware API |
TBD | NA | |
3 | Middleware | Processing notification message or file: Uncontrolled Internal error. |
TBD | If no no commit message is sent to Roche in Xh |
|
4 | Middleware | Processing notification message or file: Message cant be deliver to EMR API |
TBD | ||
5 | Middleware | Processing notification file |
TBD | 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;
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: ''