|
from pydantic import BaseModel, Field |
|
from typing import Literal, Union, Optional, List |
|
|
|
|
|
|
|
|
|
class AnimalCollectedEvent(BaseModel): |
|
type: Literal["animal collected"] |
|
collected: Literal["yes", "no"] |
|
|
|
|
|
class RecipientEvent(BaseModel): |
|
type: Literal["recipient"] |
|
recipient: Literal[ |
|
"veterinary", "care center", "local museum", "national museum", "other" |
|
] |
|
|
|
|
|
class RadiographyEvent(BaseModel): |
|
type: Literal["radiography"] |
|
radiography: Literal["yes", "no", "unknown"] |
|
|
|
|
|
class GivenAnswerEvent(BaseModel): |
|
type: Literal["given answer"] |
|
answer: Literal[ |
|
"nothing", |
|
"complaint against x", |
|
"complaint", |
|
"police call", |
|
"discussion with the speaker", |
|
"press release", |
|
"unknown", |
|
] |
|
|
|
|
|
class NameOfRecipientEvent(BaseModel): |
|
type: Literal["recipient name"] |
|
name: str |
|
|
|
|
|
class CollectionReferenceEvent(BaseModel): |
|
type: Literal["collection reference"] |
|
reference: str |
|
|
|
|
|
FollowUpEventType = Union[ |
|
AnimalCollectedEvent, |
|
RecipientEvent, |
|
RadiographyEvent, |
|
GivenAnswerEvent, |
|
NameOfRecipientEvent, |
|
CollectionReferenceEvent, |
|
] |
|
|
|
|
|
class FollowUpEvents(BaseModel): |
|
follow_up_events: Optional[List[FollowUpEventType]] = None |
|
|