149 lines
3.4 KiB
Python
149 lines
3.4 KiB
Python
from datetime import datetime
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class PatientCreate(BaseModel):
|
|
first_name: str
|
|
last_name: str
|
|
birth_date: str | None = None
|
|
phone: str | None = None
|
|
email: str | None = None
|
|
procedure: str | None = None
|
|
status: str | None = "actif"
|
|
consent_signed: str | None = "non"
|
|
notes: str | None = None
|
|
|
|
|
|
class PatientUpdate(BaseModel):
|
|
first_name: str | None = None
|
|
last_name: str | None = None
|
|
birth_date: str | None = None
|
|
phone: str | None = None
|
|
email: str | None = None
|
|
procedure: str | None = None
|
|
status: str | None = None
|
|
consent_signed: str | None = None
|
|
notes: str | None = None
|
|
|
|
|
|
class PatientOut(BaseModel):
|
|
id: int
|
|
first_name: str
|
|
last_name: str
|
|
birth_date: str | None
|
|
phone: str | None = None
|
|
email: str | None = None
|
|
procedure: str | None = None
|
|
status: str | None = None
|
|
consent_signed: str | None = None
|
|
notes: str | None
|
|
immich_album_id: str | None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class PhotoOut(BaseModel):
|
|
id: int
|
|
patient_id: int
|
|
immich_asset_id: str
|
|
immich_album_id: str
|
|
kind: str
|
|
filename: str
|
|
notes: str | None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
|
|
|
|
class PhotoUpdate(BaseModel):
|
|
kind: str | None = None
|
|
notes: str | None = None
|
|
|
|
class ImmichPersonOut(BaseModel):
|
|
id: str
|
|
name: str | None = None
|
|
thumbnail_url: str
|
|
is_hidden: bool | None = None
|
|
|
|
|
|
class ImmichAssetOut(BaseModel):
|
|
id: str
|
|
filename: str | None = None
|
|
thumbnail_url: str
|
|
file_url: str
|
|
taken_at: str | None = None
|
|
type: str | None = None
|
|
|
|
|
|
class ConsultationCreate(BaseModel):
|
|
consultation_date: str | None = None
|
|
procedure: str | None = None
|
|
reason: str | None = None
|
|
plan: str | None = None
|
|
follow_up: str | None = None
|
|
status: str | None = "prévu"
|
|
notes: str | None = None
|
|
|
|
|
|
class ConsultationUpdate(BaseModel):
|
|
consultation_date: str | None = None
|
|
procedure: str | None = None
|
|
reason: str | None = None
|
|
plan: str | None = None
|
|
follow_up: str | None = None
|
|
status: str | None = None
|
|
notes: str | None = None
|
|
|
|
|
|
class ConsultationOut(BaseModel):
|
|
id: int
|
|
patient_id: int
|
|
consultation_date: str | None = None
|
|
procedure: str | None = None
|
|
reason: str | None = None
|
|
plan: str | None = None
|
|
follow_up: str | None = None
|
|
status: str | None = None
|
|
notes: str | None = None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
class DocumentCreate(BaseModel):
|
|
consultation_id: int | None = None
|
|
document_type: str | None = "consentement_photo"
|
|
title: str
|
|
status: str | None = "brouillon"
|
|
content: str | None = None
|
|
signed_by: str | None = None
|
|
signed_at: str | None = None
|
|
|
|
|
|
class DocumentUpdate(BaseModel):
|
|
consultation_id: int | None = None
|
|
document_type: str | None = None
|
|
title: str | None = None
|
|
status: str | None = None
|
|
content: str | None = None
|
|
signed_by: str | None = None
|
|
signed_at: str | None = None
|
|
|
|
|
|
class DocumentOut(BaseModel):
|
|
id: int
|
|
patient_id: int
|
|
consultation_id: int | None = None
|
|
document_type: str
|
|
title: str
|
|
status: str
|
|
content: str | None = None
|
|
signed_by: str | None = None
|
|
signed_at: str | None = None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|