allOf and oneOf
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from datetime import date, datetime
|
||||
from pydantic import BaseModel
|
||||
from typing import Annotated, Literal
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Metadata(BaseModel):
|
||||
@@ -38,11 +39,50 @@ class Vet(VetBase):
|
||||
id: int
|
||||
|
||||
|
||||
class ProcedureNotes(BaseModel):
|
||||
class ProcedureNoteBase(BaseModel):
|
||||
summary: str | None = None
|
||||
details: str | None = None
|
||||
|
||||
|
||||
class BasicNote(ProcedureNoteBase):
|
||||
noteType: Literal["basic"] = "basic"
|
||||
|
||||
|
||||
class HeartRateNote(ProcedureNoteBase):
|
||||
noteType: Literal["heart_rate"] = "heart_rate"
|
||||
bpm: int
|
||||
|
||||
|
||||
class DentalNote(ProcedureNoteBase):
|
||||
noteType: Literal["dental"] = "dental"
|
||||
procedureType: Literal["scaling", "polishing"]
|
||||
teeth: str | None = None
|
||||
|
||||
|
||||
class VaccineNote(ProcedureNoteBase):
|
||||
noteType: Literal["vaccine"] = "vaccine"
|
||||
medicine: Literal["Rabies", "DHPP", "Tricat", "Deworming"]
|
||||
leg: Literal["front_left", "front_right", "hind_left", "hind_right"]
|
||||
|
||||
|
||||
class PreOpNote(ProcedureNoteBase):
|
||||
noteType: Literal["preop"] = "preop"
|
||||
heartRate: int
|
||||
temperature: float
|
||||
|
||||
|
||||
class SurgeryNote(ProcedureNoteBase):
|
||||
noteType: Literal["surgery"] = "surgery"
|
||||
surgeryType: Literal["neuter", "spay"]
|
||||
complications: str | None = None
|
||||
|
||||
|
||||
ProcedureNotes = Annotated[
|
||||
BasicNote | HeartRateNote | DentalNote | VaccineNote | PreOpNote | SurgeryNote,
|
||||
Field(discriminator="noteType"),
|
||||
]
|
||||
|
||||
|
||||
class Procedure(BaseModel):
|
||||
name: str | None = None
|
||||
description: str | None = None
|
||||
|
||||
Reference in New Issue
Block a user