> ## Documentation Index
> Fetch the complete documentation index at: https://developer.suki.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Patient Summary Empty or Not Ready

> Poll CKG ingestion and summary generation until COMPLETED before retrieving summaries

Patient Summary generation is async. Empty or incomplete summaries usually mean you retrieved too early, CKG ingestion never reached **`COMPLETED`**, or generation ended in **`FAILED`** or **`ABORTED`**. Generate can also fail when the encounter start date is not today, even if ingestion already succeeded.

You need a Suki Token (`sdp_suki_token`) for upload, generate, status, and retrieve. A Partner Token alone is not enough.

## Common causes

* Retrieving the summary before generation status is **`COMPLETED`**.
* Triggering generation before CKG ingestion status is **`COMPLETED`**.
* Generating against an encounter whose start date is not today. Generation can fail with code `5` (`failed to generate patient summary for fhir encounter`) even when ingestion is **`COMPLETED`** and the FHIR IDs match.
* Keeping the poll loop running after **`FAILED`** or **`ABORTED`**.
* Treating a **403** `permission_denied` as empty content.

## Fix

<Steps>
  <Step title="Finish CKG Ingestion First">
    Upload FHIR data, then poll [ingestion status](/patient-summary-api-reference/ckg-data-ingestion/ingestion-status) until **`COMPLETED`**. Stop on **`FAILED`** or **`ARCHIVED`**.
  </Step>

  <Step title="Use Today's Encounter">
    Confirm the encounter start date in your FHIR data is for the current day. Older test encounters can fail generate even when ingestion succeeded and the IDs are correct. Update the date, re-ingest if needed, then generate again.
  </Step>

  <Step title="Generate, Then Poll Job Status">
    Call generate, then poll encounter or job status until **`COMPLETED`**. Status values include `READY`, `RUNNING`, `COMPLETED`, `FAILED`, and `ABORTED`. Stop on **`FAILED`** or **`ABORTED`**.
  </Step>

  <Step title="Retrieve Only After COMPLETED">
    Call full or pre-visit summary endpoints only when generation status is **`COMPLETED`**. Use `patient_summary_id` from generation, or the `fhir_encounter_id` and `fhir_practitioner_id` pair you used.
  </Step>

  <Step title="If You Get 403">
    Fix organization access. See [403 permission\_denied, insufficient\_scope, or sbac\_denied](/documentation/troubleshooting/permission-denied-403).
  </Step>
</Steps>

<Note>
  Order from the [Patient Summary quickstart](/patient-summary-api-reference/quickstart): upload and poll ingestion, Login when needed, generate, poll generation status, then retrieve.
</Note>

## Next steps

<Icon icon="file-lines" iconType="solid" /> **[Patient Summary quickstart](/patient-summary-api-reference/quickstart)** - Upload, generate, poll, and retrieve

<Icon icon="file-lines" iconType="solid" /> **[Summary jobs](/patient-summary-api-reference/summary-jobs)** - When to stop polling

<Icon icon="file-lines" iconType="solid" /> **[Patient Summary error messages](/patient-summary-api-reference/error-messages-patient-summary)** - Authorization and request error ids

<Icon icon="file-lines" iconType="solid" /> **[403 permission\_denied, insufficient\_scope, or sbac\_denied](/documentation/troubleshooting/permission-denied-403)** - Organization and scope failures

<Icon icon="file-lines" iconType="solid" /> **[Suki Token expired during a long session](/documentation/troubleshooting/suki-token-expired)** - Refresh the 1 hour Suki Token during long poll loops


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.