from pydantic import BaseModel from typing import List, Optional from datetime import datetime class Condition(BaseModel): id: str code: str status: Optional[str] = "" onset_date: Optional[str] = None recorded_date: Optional[str] = None verification_status: Optional[str] = "" class Medication(BaseModel): id: str name: str status: str prescribed_date: Optional[str] = None requester: Optional[str] = "" dosage: Optional[str] = "" class Encounter(BaseModel): id: str type: str status: str period: dict service_provider: Optional[str] = "" class Note(BaseModel): date: str type: str text: str context: Optional[str] = "" author: Optional[str] = "System" class PatientCreate(BaseModel): full_name: str gender: str date_of_birth: str address: Optional[str] = "" city: Optional[str] = "" state: Optional[str] = "" postal_code: Optional[str] = "" country: Optional[str] = "US" marital_status: Optional[str] = "Never Married" language: Optional[str] = "en" conditions: Optional[List[Condition]] = [] medications: Optional[List[Medication]] = [] encounters: Optional[List[Encounter]] = [] notes: Optional[List[Note]] = []