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