Circle V2 API Docs
    Preparing search index...

    Async note generation for the manual-text input path. The HTTP mutation marks the session as processing and enqueues this job; the worker runs the LLM call, persists the note (transitioning the session to complete), kicks off chart-review validations, and generates ICD/DSM code suggestions.

    The audio path achieves the same shape via AssemblyAI's webhook (processAssemblyAIWebhookService); this jobbable is the equivalent for paste-text input so both entry points stay non-blocking on the request.

    The job re-fetches the template + sections from the DB rather than receiving the full NoteTemplate in the queue payload, so stale snapshots never reach the LLM if the template is edited between enqueue and run.

    Hierarchy (View Summary)

    • Jobbable<GenerateTextNoteJobParams, void>
      • GenerateTextNoteJobbable
    Index

    Constructors

    Properties

    config: JobConfig = ...
    serviceName: "GenerateTextNoteJobbable"

    Stable, human-readable name for the service. Must be set explicitly on each subclass because this.constructor.name gets mangled by minification in production builds, which breaks tracing/observability span names.

    Accessors

    • get name(): string

      Returns string

    Methods

    • Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns string

    • Extract an entityId from params for job_executions tracking. Override in subclasses when applicable.

      Parameters

      • _params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns EntityId | undefined

    • Derive a deduplication key from the params. Return null to skip deduplication (every call enqueues).

      Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns string | null

    • Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns Promise<Safe<void>>

    • Enqueue this job for async processing via Vercel Queues. Checks for deduplication via job_executions before sending.

      Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }
      • Optionaloptions: PerformLaterOptions

      Returns Promise<SendResult>

    • Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns Promise<void>

    • Run the job with status tracking. Used by the queue handler. Errors propagate (not caught by safe()) so the RetryHandler can decide.

      Parameters

      • params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }
      • metadata: MessageMetadata

      Returns Promise<void>

    • Optional hook for subclasses to attach extra non-PII span attributes derived from params. The returned attributes appear on the service.${serviceName} span (and, for jobs, on job.enqueue.* and job.run.* spans too).

      Safe ID-like keys on params (e.g. patientId, templateIds, limit, cursor) are already auto-extracted via toSpanAttributes("service.input", params) — you don't need to enumerate them here. Use this hook for derived/computed attributes (counts, flags, computed names) or for fields you've explicitly verified safe but that aren't in the global allowlist. Hook output overrides auto-extracted attributes on key collision.

      Safe by default: returns {} when not overridden. Only declare keys you've confirmed are non-PII. Never include emails, names, dob, free-text, etc.

      Parameters

      • _params: {
            manualText: string;
            patientFirstName?: string | null;
            patientLastName?: string | null;
            sessionId: SessionId;
            templateId: TemplateId;
        }

      Returns Attributes

    • Optional hook for subclasses to attach extra non-PII span attributes derived from the successful service result. Only called when run resolves successfully; on error, the span is marked via markSpanError instead.

      Safe by default: returns {} when not overridden. Only declare keys you've confirmed are non-PII (e.g. counts, status flags, computed summaries). Never include emails, names, dob, free-text, etc.

      Parameters

      • _result: void

      Returns Attributes

    • Parameters

      • params: unknown

      Returns params is {
          manualText: string;
          patientFirstName?: string | null;
          patientLastName?: string | null;
          sessionId: SessionId;
          templateId: TemplateId;
      }