Skip to content

QUBS Integrations API (v1)

Partner-facing API providing read-only access to selected QUBS configuration and scheduling data for integration purposes.

Authentication is via a bearer JWT in the Authorization header. Authorization is domain-scoped; all requests include a {domain} path parameter.

Errors are returned as RFC7807 Problem Details (application/problem+json).

Download OpenAPI description
Languages
Servers
Mock server
https://partnerdocs.qubs.io/_mock/openapi
Relative to the current host
https://partnerdocs.qubs.io

Site Settings

Partner-facing endpoints for listing sites and retrieving site configuration within a domain.

Operations

Exam Codes

Partner-facing endpoints for retrieving exam code configuration for a site within a domain.

Operations

Staff Skills

Partner-facing endpoints for retrieving the staff skill grid and related metadata for a site within a domain.

Operations

Appointments

Partner-facing endpoints for retrieving appointments within a domain.

Operations

Attachments

Partner-facing endpoints for retrieving appointment attachments and generating short-lived presigned URLs.

Operations

Comments

Partner-facing endpoints for retrieving appointment and patient comments/alerts associated with an appointment.

Operations

Patients

Partner-facing endpoints for retrieving patients within a domain.

Operations

Reporting

Partner-facing endpoints for retrieving appointments that are pending reporting.

Operations

List pending reporting appointments

Request

Returns the tele reporting appointment view for appointments in the PENDING REPORTING status. Supports cursor-based pagination via pageSize and nextToken.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
Query
pageSizeinteger or string(int32)^-?(?:0|[1-9]\d*)$

Maximum number of items to return in a page. Defaults to 100 when omitted.

Example: pageSize=100
nextTokenstring

Opaque, URL-safe continuation token returned as NextToken in a previous paged response. Omit for the first page.

Example: nextToken=DDB_NEXT_TOKEN
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/pending?pageSize=100&nextToken=DDB_NEXT_TOKEN' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Page of appointments that are pending reporting for the requested domain.

Bodyapplication/json
itemsArray of objects(PendingReportingAppointmentResponse)required

Tele reporting appointments in the current page.

items[].​domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
items[].​appointmentIdstringrequired

Appointment identifier.

Example: "123"
items[].​statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
items[].​scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
items[].​appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
items[].​startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
items[].​endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
items[].​patientIdstring

Patient identifier when available.

Example: "123"
items[].​patientNamestring

Patient display name.

Example: "Example Name"
items[].​firstNamestring

Patient first name.

Example: "Example Name"
items[].​lastNamestring

Patient last name.

Example: "Example Name"
items[].​dateOfBirthstring

Patient date of birth string as stored in QUBS.

Example: "Example dateOfBirth"
items[].​genderstring

Patient gender/sex string as stored in QUBS.

Example: "Example gender"
items[].​modalitystring

Exam modality string as stored in QUBS.

Example: "Example modality"
items[].​studyDescriptionstring

Study description as stored in QUBS.

Example: "Example description"
items[].​clinicalInfostring

Clinical information text as stored in QUBS.

Example: "Example clinicalInfo"
items[].​doctorNamestring

Referring doctor display name.

Example: "Example Name"
items[].​clinicNamestring

Referring clinic name when available.

Example: "Example Name"
items[].​prioritystring

Appointment/reporting priority string as stored in QUBS.

Example: "Example priority"
items[].​reportNeededBynull or string(date-time)

Optional deadline timestamp for reporting when available.

Example: "2020-01-01T00:00:00Z"
items[].​studyInstanceUidstring

PACS study instance UID when available.

Example: "123"
items[].​radiologistUsernull or UserSummaryResponse (object)

Radiologist user assigned to the appointment when available.

One of:

Radiologist user assigned to the appointment when available.

null
items[].​serviceItemsArray of objects(PendingReportingServiceItemResponse)

Service items attached to the appointment.

nextTokennull or string

Opaque continuation token to fetch the next page, when more results are available.

Example: "Example nextToken"
Response
application/json
{ "items": [ { … } ], "nextToken": "Example nextToken" }

List attachments for a pending reporting appointment

Request

Returns appointment attachments (e.g. referrals, worksheets) for the specified appointment when it is in the PENDING REPORTING status.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
Query
urlTtlSecondsinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional presigned URL lifetime (in seconds). Values outside supported bounds are clamped.

Example: urlTtlSeconds=900
dispositionstring

Optional content disposition for the presigned URL (inline for display, attachment for download). Defaults to inline.

Enum"inline""attachment"
Example: disposition=inline
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/A123456/attachments?urlTtlSeconds=900&disposition=inline' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of attachments for the requested pending reporting appointment.

Bodyapplication/jsonArray [
guidstringrequired

Attachment GUID.

Example: "123"
categorystring

Attachment category (e.g. Referral, Worksheet).

Example: "Example category"
fileNamestring

Suggested filename for display/download.

Example: "Example Name"
addedDateTimenull or string(date-time)

When the attachment was added.

Example: "2020-01-01T00:00:00Z"
addedBynull or UserSummaryResponse (object)

Who added the attachment when available.

One of:

Who added the attachment when available.

null
lastModifiedDateTimenull or string(date-time)

When the attachment was last modified.

Example: "2020-01-01T00:00:00Z"
urlnull or string

Short-lived presigned URL for retrieving the attachment content when available.

Example: "https://example.com"
urlExpiresAtUtcnull or string(date-time)

UTC expiry timestamp for the presigned URL when available.

Example: "2020-01-01T00:00:00Z"
]
Response
application/json
[ { "guid": "123", "category": "Example category", "fileName": "Example Name", "addedDateTime": "2020-01-01T00:00:00Z", "addedBy": {}, "lastModifiedDateTime": "2020-01-01T00:00:00Z", "url": "https://example.com", "urlExpiresAtUtc": "2020-01-01T00:00:00Z" } ]

Get a single attachment for a pending reporting appointment

Request

Returns a single appointment attachment for the specified appointment when it is in the PENDING REPORTING status.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
attachmentGuidstringrequired

Attachment GUID for the requested appointment.

Example: 989dd0c7-13bb-4bba-b7a0-53a28bdf5155
Query
urlTtlSecondsinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional presigned URL lifetime (in seconds). Values outside supported bounds are clamped.

Example: urlTtlSeconds=900
dispositionstring

Optional content disposition for the presigned URL (inline for display, attachment for download). Defaults to inline.

Enum"inline""attachment"
Example: disposition=inline
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/A123456/attachments/989dd0c7-13bb-4bba-b7a0-53a28bdf5155?urlTtlSeconds=900&disposition=inline' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Attachment metadata for the requested pending reporting appointment attachment.

Bodyapplication/json
guidstringrequired

Attachment GUID.

Example: "123"
categorystring

Attachment category (e.g. Referral, Worksheet).

Example: "Example category"
fileNamestring

Suggested filename for display/download.

Example: "Example Name"
addedDateTimenull or string(date-time)

When the attachment was added.

Example: "2020-01-01T00:00:00Z"
addedBynull or UserSummaryResponse (object)

Who added the attachment when available.

One of:

Who added the attachment when available.

null
lastModifiedDateTimenull or string(date-time)

When the attachment was last modified.

Example: "2020-01-01T00:00:00Z"
urlnull or string

Short-lived presigned URL for retrieving the attachment content when available.

Example: "https://example.com"
urlExpiresAtUtcnull or string(date-time)

UTC expiry timestamp for the presigned URL when available.

Example: "2020-01-01T00:00:00Z"
Response
application/json
{ "guid": "123", "category": "Example category", "fileName": "Example Name", "addedDateTime": "2020-01-01T00:00:00Z", "addedBy": {}, "lastModifiedDateTime": "2020-01-01T00:00:00Z", "url": "https://example.com", "urlExpiresAtUtc": "2020-01-01T00:00:00Z" }

List comments for a pending reporting appointment

Request

Returns appointment comments/alerts plus patient comments/alerts for the specified appointment when it is in the PENDING REPORTING status.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
curl -i -X GET \
  https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/A123456/comments \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of appointment and patient comments/alerts for the requested pending reporting appointment.

Bodyapplication/jsonArray [
guidstringrequired

Comment GUID.

Example: "123"
commentTypestringrequired

Comment type. One of: AC (Appointment Comment), AA (Appointment Alert), PC (Patient Comment), PA (Patient Alert).

Example: "Example commentType"
appointmentIdstring

Appointment identifier for appointment comments; empty for patient-level comments.

Example: "123"
patientIdstring

Patient identifier associated with the comment when available.

Example: "123"
commentTextstring

Comment text.

Example: "Example commentText"
commentDateTimenull or string(date-time)

When the comment was created when available.

Example: "2020-01-01T00:00:00Z"
isAlertboolean

Whether this comment should be treated as an alert.

Example: true
commentBynull or UserSummaryResponse (object)

Who created the comment when available.

One of:

Who created the comment when available.

null
lastModifiedDateTimenull or string(date-time)

When the comment was last modified.

Example: "2020-01-01T00:00:00Z"
]
Response
application/json
[ { "guid": "123", "commentType": "Example commentType", "appointmentId": "123", "patientId": "123", "commentText": "Example commentText", "commentDateTime": "2020-01-01T00:00:00Z", "isAlert": true, "commentBy": {}, "lastModifiedDateTime": "2020-01-01T00:00:00Z" } ]

Get a single comment for a pending reporting appointment

Request

Returns a single appointment comment/alert or patient comment/alert (for the appointment's patient) when the appointment is in the PENDING REPORTING status.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
commentGuidstringrequired

Comment GUID for the requested appointment/patient comment.

Example: ed6ef45a-4e3d-41b2-8049-7aec53bb9ab1
curl -i -X GET \
  https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/A123456/comments/ed6ef45a-4e3d-41b2-8049-7aec53bb9ab1 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Comment metadata for the requested pending reporting appointment comment (appointment or patient).

Bodyapplication/json
guidstringrequired

Comment GUID.

Example: "123"
commentTypestringrequired

Comment type. One of: AC (Appointment Comment), AA (Appointment Alert), PC (Patient Comment), PA (Patient Alert).

Example: "Example commentType"
appointmentIdstring

Appointment identifier for appointment comments; empty for patient-level comments.

Example: "123"
patientIdstring

Patient identifier associated with the comment when available.

Example: "123"
commentTextstring

Comment text.

Example: "Example commentText"
commentDateTimenull or string(date-time)

When the comment was created when available.

Example: "2020-01-01T00:00:00Z"
isAlertboolean

Whether this comment should be treated as an alert.

Example: true
commentBynull or UserSummaryResponse (object)

Who created the comment when available.

One of:

Who created the comment when available.

null
lastModifiedDateTimenull or string(date-time)

When the comment was last modified.

Example: "2020-01-01T00:00:00Z"
Response
application/json
{ "guid": "123", "commentType": "Example commentType", "appointmentId": "123", "patientId": "123", "commentText": "Example commentText", "commentDateTime": "2020-01-01T00:00:00Z", "isAlert": true, "commentBy": {}, "lastModifiedDateTime": "2020-01-01T00:00:00Z" }