/
O.S.Prog
/
DiScan
Обзор
Документация
Войти
/
O.S.Prog
/
DiScan
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
core/models.py
55 строк
2 KB
O.S.Prog
Initial commit: DiScan v1.1.0
18 июл 2026, 15:51
18 июл 2026, 15:51
238a6ec
Код
Авторство
О чём код?
# core/models.py """ Модели данных для DICOM-сканера """ from dataclasses import dataclass, field from typing import Optional, List, Set from pathlib import Path from datetime import datetime @dataclass class PatientInfo: """Информация о пациенте""" patient_id: str # ID папки пациента patient_name: str # ФИО пациента folder_path: Path # Путь к папке study_date: str # Дата исследования total_files: int = 0 # Общее количество DICOM файлов image_count: int = 0 # Количество снимков sample_file: Optional[Path] = None # Путь к первому DICOM файлу series_uids: Set[str] = field(default_factory=set) # UID серий study_uid: Optional[str] = None # UID исследования error: Optional[str] = None # Ошибка при обработке def to_dict(self) -> dict: """Преобразует в словарь для экспорта""" return { 'ФИО пациента': self.patient_name, 'ID пациента': self.patient_id, 'Дата исследования': self.study_date, 'Количество снимков': self.image_count, 'Всего файлов': self.total_files, 'Путь к папке': str(self.folder_path) } @property def display_name(self) -> str: """Имя для отображения в таблице""" if self.error: return f"⚠️ {self.patient_id} (Ошибка)" return f"{self.patient_name}" @dataclass class ScanResult: """Результат сканирования""" root_path: Path # Путь к сканируемой папке patients: List[PatientInfo] # Список пациентов scan_time: datetime # Время сканирования total_patients: int = 0 # Всего пациентов errors: List[str] = field(default_factory=list) # Ошибки def __post_init__(self): self.total_patients = len(self.patients)