ReadonlyconfigReadonlyserviceStable, 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.
ProtectedloggerThe session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
Extract an entityId from params for job_executions tracking. Override in subclasses when applicable.
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
Derive a deduplication key from the params. Return null to skip deduplication (every call enqueues).
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
Enqueue this job for async processing via Vercel Queues. Checks for deduplication via job_executions before sending.
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
Optionaloptions: PerformLaterOptionsThe session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
Run the job with status tracking. Used by the queue handler. Errors propagate (not caught by safe()) so the RetryHandler can decide.
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
ProtectedspanOptional 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.
The session whose linked validation rules triggered this run. Audit
responses are stamped with it and the session's audit_status lifecycle
is driven from here.
OptionalsessionNoteContext?: stringThe HTML-cleaned session note. Optional: when absent/empty the
SessionNoteAuditRunner returns a deterministic canned fail, which
still resolves the session badge.
ProtectedspanOptional 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.
Session-note "trigger validation rules": runs the v1-faithful
SessionNoteAuditRunnerscoped to the triggering session note, and owns the sessionaudit_statuslifecycle (in_progress is set by the trigger service before enqueue; this job writes the terminal pass / fail / needs_review / error).