company_idstring uuid required
created_by_user_idstring nullable
type'assessment' | 'treatment' | 'reassessment' | 'reassessment_and_treatment' required
status'pending' | 'submitted' | 'information_needed' | 'decided' | 'cancelled' required
Lifecycle state of a prior authorization.
decision'approved' | 'partially_approved' | 'denied' | 'no_authorization_required'
Payor outcome on a decided authorization.
appeal_status'requested' | 'appealing' | 'appeal_approved' | 'appeal_denied' | 'not_appealing'
Appeal lifecycle. Applies only when decision is denied or partially_approved.
NULL is meaningful: it means no appeal decision has been made yet — the
caller hasn't yet asked for one. Setting any value below is an explicit
commitment that someone is (or isn't) pursuing the appeal:
requested — operator/patient asked for an appeal; team hasn't started.
appealing — team is actively working the appeal.
appeal_approved — terminal, won.
appeal_denied — terminal, lost.
not_appealing — terminal, operator decided not to pursue.
appeal_notesstring nullable
Rationale captured when an appeal was requested. Null when no appeal has been requested.
appeal_numberstring nullable
Appeal case/reference number issued by the payor. Null until the payor assigns one.
patient_idstring uuid required
Patient this authorization belongs to; use it to open the patient record. Demographics submitted on this PA are the frozen patient_* fields below.
patient_first_namestring required
Patient first name as submitted on this authorization. Frozen at create time — not updated when the patient record changes.
patient_last_namestring required
Patient last name as submitted on this authorization. Frozen at create time.
patient_date_of_birthstring date required
Patient date of birth (YYYY-MM-DD) as submitted on this authorization. Frozen at create time.
payor_member_idstring nullable
Member id as submitted on this authorization. Frozen at create time.
payor_insurance_idstring uuid nullable
Insurance partner id (from the insurances catalog) as submitted on this authorization. Frozen at create time.
payor_insurance_display_namestring nullable
Plan display name for this PA's payor, frozen at create time. Null ⇒ display the insurance's canonical name.
requesting_provider_idstring uuid nullable
Credentialing-record id of the requesting provider. Always present unless the provider record was later removed (FK is ON DELETE SET NULL).
servicing_provider_idstring uuid nullable
Credentialing-record id of the servicing provider. Null when the servicing provider is the same as the requesting provider or unset.
servicing_location_idstring uuid nullable
Company-location id where services are rendered. Null when unset.
organization_idstring uuid nullable
Business entity (organization) this authorization belongs to. Null when unset.
file_countinteger nullable
Number of attached files. Always present (a cheap aggregate); independent of expand.
submitted_atstring date-time nullable
decided_atstring date-time nullable
appeal_submitted_atstring date-time nullable
When the appeal was submitted to the payor; set when the appeal first becomes active. Null when no appeal has been submitted.
last_followed_up_atstring date-time nullable
Last time staff followed up with the payor on this authorization's status. Null until the first follow-up.
scheduled_submission_datestring date nullable
Date this authorization should be submitted to the payor. When set in the future, the request is held out of the active review queue until that date. Null when no scheduled date is set.
completedboolean
True when the clinic has marked this authorization done (it leaves the default list). Derived from completed_at.
completed_atstring date-time nullable
When the authorization was marked done. Null while outstanding.
completed_by_user_idstring nullable
Id of the user who marked it done. Null while outstanding.
cancellation_reason'duplicate_already_submitted' | 'no_longer_needed' | 'submitted_directly_to_payor' | 'patient_no_longer_active' | 'entered_in_error' | 'other'
Why a prior authorization was cancelled — captured on every transition
into cancelled. other is the escape hatch (the free-text detail then
lives in cancellation_note).
Keep the members in sync with the Prisma enum
PriorAuthorizationCancellationReason
(apps/frontend/prisma/schema/enums.prisma) and the frontend label map
PRIOR_AUTH_CANCELLATION_REASON_LABELS. verify-enum-sync only compares
UPPERCASE Python members, so — like PriorAuthorizationStatusEnum — this
lowercase enum is NOT covered by that check; sync it by hand.
cancellation_notestring nullable
Free-text detail captured with the cancellation reason. Null when none was provided.
cancelled_atstring date-time nullable
When the authorization was cancelled. Null unless the authorization is cancelled.
created_atstring date-time required
updated_atstring date-time required