allOf and oneOf

This commit is contained in:
2026-07-12 01:19:03 +05:30
parent f1a7a556fd
commit 5da0a688a8
3 changed files with 196 additions and 9 deletions

View File

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