添加后端API和前端项目的初始目录结构,包括应用层模块、工具模块和模型定义 配置前后端的.dockerignore文件以排除开发环境文件 添加前端样式文件,包括字体、Tailwind CSS和主题配置 初始化Python虚拟环境中的类型标记文件
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from datetime import datetime, timezone
|
|
from typing import Optional
|
|
|
|
from beanie import Document, PydanticObjectId
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class DataItem(BaseModel):
|
|
"""单个检查指标"""
|
|
name: str
|
|
value: str
|
|
unit: str = ""
|
|
reference_range: str = ""
|
|
status: str = "normal" # normal / high / low
|
|
category: str = "" # 血液检查 / 激素水平 / 尿常规 etc.
|
|
|
|
|
|
class Report(Document):
|
|
user_id: PydanticObjectId
|
|
report_type: str = "" # 血常规 / B超 / 尿常规 etc.
|
|
pregnancy_week: Optional[int] = None
|
|
report_date: Optional[str] = None # 报告日期 YYYY-MM-DD
|
|
|
|
# Images
|
|
image_urls: list[str] = Field(default_factory=list)
|
|
|
|
# OCR results
|
|
ocr_raw_text: Optional[str] = None
|
|
data_items: list[DataItem] = Field(default_factory=list)
|
|
|
|
# User additions
|
|
symptoms: Optional[list[str]] = None # 自觉症状
|
|
notes: Optional[str] = None # 备注
|
|
|
|
# Privacy fields (auto-masked)
|
|
patient_name: Optional[str] = None
|
|
patient_id_masked: Optional[str] = None
|
|
|
|
# Status
|
|
status: str = "pending" # pending / verified / analyzed
|
|
overall_status: str = "normal" # normal / attention / warning
|
|
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
|
|
class Settings:
|
|
name = "reports"
|
|
indexes = [
|
|
"user_id",
|
|
]
|