|
from pydantic import BaseModel, Field |
|
from typing import Literal, List, Union, Optional |
|
|
|
class Behavior(BaseModel): |
|
type: str |
|
description: Optional[str] = None |
|
|
|
|
|
class AbnormalBreathing(Behavior): |
|
type: Literal['abnormal breathing'] |
|
description: Optional[Literal["Problems breathing, breathing sounds"]] = None |
|
|
|
class CrashFalling(Behavior): |
|
type: Literal['crash, falling from the sky'] |
|
description: Optional[Literal["Suddenly falling from the sky"]] = None |
|
|
|
class Diarrhea(Behavior): |
|
type: Literal['diarrhea'] |
|
description: Optional[Literal["Observed diarrhea"]] = None |
|
|
|
class Lameness(Behavior): |
|
type: Literal['lameness'] |
|
description: Optional[Literal["Apparent limping or not able to walk properly"]] = None |
|
|
|
class Neurological(Behavior): |
|
type: Literal['neurological'] |
|
description: Optional[Literal["Circling, incoordination, tremors, convulsions, fast eye movements"]] = None |
|
|
|
class OtherAbnormalBehavior(Behavior): |
|
type: Literal['other abnormal behavior'] |
|
description: Optional[Literal["Other than weakness, other than neurologic"]] = None |
|
|
|
class UnableToFly(Behavior): |
|
type: Literal['unable to fly'] |
|
description: Optional[Literal["Animal alert and tries to fly but can not take off"]] = None |
|
|
|
class Vomiting(Behavior): |
|
type: Literal['vomiting'] |
|
description: Optional[Literal["Throwing up undigested food, regurgitating"]] = None |
|
|
|
class Weakness(Behavior): |
|
type: Literal['weakness'] |
|
description: Optional[Literal["Non responsive, does not fly away when approached, lethargy"]] = None |
|
|
|
class NoChanges(Behavior): |
|
type: Literal['no changes'] |
|
description: Optional[Literal["Animal is acting normally"]] = None |
|
|
|
|
|
BehaviorType = Union[ |
|
AbnormalBreathing, |
|
CrashFalling, |
|
Diarrhea, |
|
Lameness, |
|
Neurological, |
|
OtherAbnormalBehavior, |
|
UnableToFly, |
|
Vomiting, |
|
Weakness, |
|
NoChanges |
|
] |
|
|
|
|
|
class Behaviors(BaseModel): |
|
behaviors_radio: str |
|
behaviors_type: Optional[List[BehaviorType]] = None |
|
|