|
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 |