Requires an idempotency key and explicit delegation to an active QUBS clinician. Preliminary content enters the Typed worklist; final content follows normal authorisation. Accepts text/plain or strictly validated basic text/html report bodies for radiology appointments in PENDING REPORTING or TYPED. Unsupported HTML returns 400. Attachments are optional.
Creates or updates the linked editable QUBS report. preliminary returns 201 after saving; final returns 202 after requesting normal authorisation and finalisation. Requires interpretingClinicianEmail and explicit partner delegation plus normal clinician permissions. Updates require reportKey and expectedReportRevision. Idempotency-Key is mandatory (maximum 128 characters): identical retries replay the original outcome; changed original content or format under the same key returns 409. An unresolved operation returns 202 with operationId, status pending and a reconciliation message; do not use a new key to repeat it. A failed final submission may already have saved content. No partner endpoint currently retrieves the latest revision or reconciles pending operations; stop automatic writes and contact QUBS support with domain, appointmentId and operationId/correlation ID before creating another operation. Do not guess revisions. Workflow failures can return application/json with operationId, detail and workflowError rather than Problem Details.
Returns 404 when the appointment is not found. New submissions require PENDING REPORTING or TYPED; an unavailable workflow state or revision conflict returns 409.
Idempotency key for safely retrying POST requests. Use a stable ASCII token (recommend a UUID) up to 128 characters. Reuse the same key with the same request payload to receive the original response; reuse with a different payload returns 409 Conflict. For timeouts or transient errors, retry with the same key and exponential backoff.
Required report body, interpreted only according to reportFormat. Plain text is not inferred as HTML. Accepted HTML is canonicalised and a readable plain-text version is derived. Attachments are optional. The size limit applies to the original submitted content. ReportText must be 2097152 bytes or less when UTF-8 encoded.
Case-insensitive: preliminary saves an editable draft in the Typed worklist; final requests normal QUBS authorisation and delivery on behalf of the specified clinician. A final submission is not an import of an already-authorised external document.
Optional: text/plain or text/html (case-insensitive). Defaults to text/plain when omitted. HTML must be a report-body fragment. Allowed tags: p, div, span, br, h1-h6, strong, b, em, i, u, ul, ol, li, table, thead, tbody, tfoot, tr, th, td, caption. Only colspan and rowspan attributes on td/th are permitted, with integer values 1-50. All other tags and attributes, CSS, images, links, scripts, comments, declarations and full HTML documents are rejected. Malformed HTML or content without readable text returns 400 before operation receipts, rendering or clinical writes. Errors identify the tag or attribute without echoing clinical text. QUBS templates control fonts, layout and signatures. In the editor, captions become editable paragraphs above their tables, preserving text and inline emphasis.
Optional source clinician provider number. Does not select the authorising clinician or grant signing permission; QUBS uses the resolved clinician account.
Required email of an active QUBS clinician in the requested tenant. The partner needs explicit clinician or domain-wide delegation, and the clinician must have normal QUBS permissions for the requested action. An email domain alone does not grant access.
Optional source timestamp (UTC). Does not override the QUBS authorisation timestamp.
Required when updating an existing draft. Treat this as an opaque value: copy the returned linked QUBS report key unchanged, without constructing or parsing it; a missing or mismatched key returns 409. Omit for first creation.
Required when updating an existing draft. Send its current report revision; stale or missing revisions return 409. First creation uses revision 0 when omitted. No partner endpoint currently returns the latest report revision. On conflict, stop automatic writes and contact QUBS support with domain, appointmentId and operationId/correlation ID. Do not guess revisions or use a new key to bypass the conflict; resume only after QUBS confirms the current state and revision.
- Mock serverhttps://partnerdocs.qubs.io/_mock/openapi/integrations/v1/{domain}/reporting/appointments/{appointmentId}/report
- Production APIhttps://partners.qubs.io/integrations/v1/{domain}/reporting/appointments/{appointmentId}/report
- Relative to the current hosthttps://partnerdocs.qubs.io/integrations/v1/{domain}/reporting/appointments/{appointmentId}/report
curl -i -X POST \
https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/reporting/appointments/200006/report \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cd4a859c7a1f4b44b765a8fe17bb44c1' \
-H 'X-Correlation-Id: 4b7f0a91b4f54f2a' \
-d '{
"reportText": "No acute abnormality detected.",
"reportStatus": "preliminary",
"reportFormat": "text/plain",
"interpretingClinicianName": "Dr Smith",
"interpretingClinicianProviderNumber": "1234567A",
"interpretingClinicianEmail": "dr.smith@example.com",
"reportedAtUtc": "2025-01-10T03:04:05Z"
}'Created
Identifier of the linked QUBS report. Updating an existing draft does not create an unrelated report record.
Requested submission status: preliminary or final. Use workflowStatus for the QUBS workflow state.
Source timestamp supplied in the request, when present.
Opaque linked QUBS report key. Copy unchanged for subsequent draft updates; do not construct or parse it.
Report revision after this operation. Subsequent updates require the latest revision.
QUBS workflow state returned by the save or authorisation action; delivery may still be in progress.
{ "reportGuid": "9001", "reportStatus": "preliminary", "reportKey": "PT|220000|9001|RT", "reportRevision": 1, "workflowStatus": "TYPED", "operationId": "submission-operation-id", "reportedAtUtc": "2025-01-10T03:04:05Z" }