claimflow-api / app /models /enums.py
Minifigures's picture
feat: ClaimFlow API demo backend
ceea9e1 verified
Raw
History Blame Contribute Delete
2.24 kB
from enum import StrEnum
from sqlalchemy import Enum as SAEnum
def db_enum(enum_cls: type[StrEnum], length: int = 32) -> SAEnum:
"""Store StrEnum *values* (not names) as short strings — portable across DBs."""
return SAEnum(
enum_cls,
native_enum=False,
length=length,
values_callable=lambda obj: [m.value for m in obj],
)
class Role(StrEnum):
CLAIMANT = "claimant"
IMAGING_SPECIALIST = "imaging_specialist"
MEDICAL_SPECIALIST = "medical_specialist"
INSURANCE_AGENT = "insurance_agent"
class ClaimState(StrEnum):
SUBMITTED = "SUBMITTED"
IMAGING_REVIEW = "IMAGING_REVIEW"
RETURNED_TO_CLAIMANT = "RETURNED_TO_CLAIMANT"
SPECIALIST_REVIEW = "SPECIALIST_REVIEW"
PENDING_FURTHER_TESTING = "PENDING_FURTHER_TESTING"
ADJUDICATION = "ADJUDICATION"
APPROVED = "APPROVED"
REJECTED = "REJECTED"
class ClaimAction(StrEnum):
SUBMIT = "submit"
IMAGING_COMPLETE = "imaging_complete"
FORWARD = "forward"
RETURN_TO_CLAIMANT = "return_to_claimant"
RESUBMIT = "resubmit"
SEND_TO_INSURER = "send_to_insurer"
REQUEST_FURTHER_TESTING = "request_further_testing"
APPROVE = "approve"
REJECT = "reject"
class DocumentKind(StrEnum):
IMAGING = "imaging"
MEDICAL_RECORD = "medical_record"
OTHER = "other"
class Modality(StrEnum):
XRAY = "xray"
CT = "ct"
MRI = "mri"
class ArtifactStatus(StrEnum):
PENDING = "pending"
RUNNING = "running"
COMPLETE = "complete"
FAILED = "failed"
class Recommendation(StrEnum):
SUPPORTS_CLAIM = "SUPPORTS_CLAIM"
INSUFFICIENT_EVIDENCE = "INSUFFICIENT_EVIDENCE"
REQUIRES_FURTHER_TESTING = "REQUIRES_FURTHER_TESTING"
class NotificationStatus(StrEnum):
LOGGED = "logged"
SENT = "sent"
FAILED = "failed"
class AuditEventType(StrEnum):
CLAIM_SUBMIT = "claim.submit"
DOCUMENT_UPLOAD = "document.upload"
WORKFLOW_TRANSITION = "workflow.transition"
DECISION_APPROVE = "decision.approve"
DECISION_REJECT = "decision.reject"
LLM_CALL = "llm_call"
RAG_RETRIEVAL = "rag_retrieval"
EMAIL_DRAFTED = "email.drafted"
EMAIL_SENT = "email.sent"
AUTH_LOGIN = "auth.login"
AUTH_FAILED = "auth.failed"