shared_libraries.models#

Pydantic models of ScanHub.

Copyright (C) 2023, BRAIN-LINK UG (haftungsbeschränkt). All Rights Reserved. SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-ScanHub-Commercial

Classes#

XYZ

Pydantic definition of coordinates.

Gender

Pydantic definition of genders.

DeviceStatus

Pydantic definition of a commands.

CalibrationType

Pydantic definition of calibration methods.

ItemStatus

Task status enum.

TaskType

Task type enum.

ResultType

Result type enum.

UserRole

User role enum.

DeviceCreationRequest

Device registration request pydantic model.

DeviceDetails

Device creation request pydantic model.

DeviceOut

Device pydantic output model.

BaseMRISequence

Base model for MRI sequence.

MRISequenceOut

Output model for MRI sequence.

BaseResult

Result model.

SetResult

Update result model.

ResultOut

Result output model.

BaseTask

Task base model.

TaskOut

Task output model.

AcquisitionParameter

Pydantic definition of acquisition parameters.

BaseAcquisitionTask

Represents a task for data acquisition in the system.

AcquisitionLimits

Pydantic definition of AcquisitionLimits.

AcquisitionTaskOut

Acquisition Task output model.

AcquisitionPayload

Acquisition Task payload model.

BaseProtocol

Protocol base model.

ProtocolOut

Protocol output model.

User

Authenticated user, as returned to callers after login.

PasswordUpdateRequest

Request payload to change a user's password.

BasePatient

Patient pydantic base model.

PatientOut

Patient pydantic output model.

MRDAcquisitionInfo

ISMRM raw data / (ISMR)MRD acquisition info.

MRDMetaResponse

ISMRM raw data / (ISMR)MRD meta data response.

Module Contents#

class shared_libraries.models.XYZ#

Bases: pydantic.BaseModel

Pydantic definition of coordinates.

x: float#
y: float#
z: float#
class shared_libraries.models.Gender#

Bases: str, enum.Enum

Pydantic definition of genders.

MALE = 'MALE'#
FEMALE = 'FEMALE'#
OTHER = 'OTHER'#
NOT_GIVEN = 'NOT_GIVEN'#
class shared_libraries.models.DeviceStatus#

Bases: str, enum.Enum

Pydantic definition of a commands.

ONLINE = 'ONLINE'#
OFFLINE = 'OFFLINE'#
BUSY = 'BUSY'#
ERROR = 'ERROR'#
class shared_libraries.models.CalibrationType#

Bases: str, enum.Enum

Pydantic definition of calibration methods.

FLIPANGLE = 'flip-angle'#
FREQUENCY = 'frequency'#
SHIMS = 'shims'#
class shared_libraries.models.ItemStatus#

Bases: str, enum.Enum

Task status enum.

NEW = 'NEW'#
UPDATED = 'UPDATED'#
STARTED = 'STARTED'#
INPROGRESS = 'INPROGRESS'#
ACQUIRED = 'ACQUIRED'#
FINISHED = 'FINISHED'#
ERROR = 'ERROR'#
FAILED = 'FAILED'#
CANCELLED = 'CANCELLED'#
class shared_libraries.models.TaskType#

Bases: str, enum.Enum

Task type enum.

ACQUISITION = 'ACQUISITION'#
class shared_libraries.models.ResultType#

Bases: str, enum.Enum

Result type enum.

DICOM = 'DICOM'#
MRD = 'MRD'#
NPY = 'NUMPY'#
CALIBRATION = 'CALIBRATION'#
NOT_SET = 'NOT_SET'#
class shared_libraries.models.UserRole#

Bases: enum.Enum

User role enum.

admin = 'admin'#
medical = 'medical'#
scientist = 'scientist'#
engineer = 'engineer'#
class shared_libraries.models.DeviceCreationRequest#

Bases: pydantic.BaseModel

Device registration request pydantic model.

(to be sent by user first adding the device to the platform).

model_config#
name: str#
description: str#
status: DeviceStatus | None = None#
class shared_libraries.models.DeviceDetails#

Bases: pydantic.BaseModel

Device creation request pydantic model.

model_config#
device_name: str | None = None#
serial_number: str | None = None#
manufacturer: str | None = None#
modality: str | None = None#
status: DeviceStatus | None = None#
site: str | None = None#
parameter: dict | None = None#
class shared_libraries.models.DeviceOut#

Bases: DeviceCreationRequest, DeviceDetails

Device pydantic output model.

id: uuid.UUID#
datetime_created: datetime.datetime#
datetime_updated: datetime.datetime | None = None#
class shared_libraries.models.BaseMRISequence#

Bases: pydantic.BaseModel

Base model for MRI sequence.

model_config#
name: str#
description: str#
sequence_type: str#
tags: list[str] = []#
class shared_libraries.models.MRISequenceOut#

Bases: BaseMRISequence

Output model for MRI sequence.

id: str#
created_at: datetime.datetime#
updated_at: datetime.datetime | None = None#
seq_file: Any#
seq_file_extension: str | None = None#
xml_file: Any | None = None#
xml_file_extension: str | None = None#
class shared_libraries.models.BaseResult#

Bases: pydantic.BaseModel

Result model.

model_config#
task_id: uuid.UUID#
class shared_libraries.models.SetResult#

Bases: pydantic.BaseModel

Update result model.

model_config#
type: ResultType#
directory: str#
files: list[str] = []#
meta: dict | None = None#
class shared_libraries.models.ResultOut#

Bases: BaseResult, SetResult

Result output model.

id: uuid.UUID#
datetime_created: datetime.datetime#
class shared_libraries.models.BaseTask#

Bases: pydantic.BaseModel

Task base model.

model_config#
protocol_id: uuid.UUID | None = None#
name: str#
description: str#
task_type: TaskType#
destination: str#
status: ItemStatus#
progress: int#
is_template: bool#
position: int = 0#
class shared_libraries.models.TaskOut#

Bases: BaseTask

Task output model.

id: uuid.UUID#
creator: str#
datetime_created: datetime.datetime#
datetime_updated: datetime.datetime | None = None#
results: list[ResultOut]#
class shared_libraries.models.AcquisitionParameter#

Bases: pydantic.BaseModel

Pydantic definition of acquisition parameters.

fov_scaling: XYZ#
fov_offset: XYZ#
fov_rotation: XYZ#
class shared_libraries.models.BaseAcquisitionTask#

Bases: BaseTask

Represents a task for data acquisition in the system.

task_type: Literal[TaskType]#
device_id: uuid.UUID | None = None#
calibration: list[CalibrationType] = []#
sequence_id: str | None = None#
acquisition_parameter: AcquisitionParameter | None = None#
class shared_libraries.models.AcquisitionLimits#

Bases: pydantic.BaseModel

Pydantic definition of AcquisitionLimits.

patient_height: int#
patient_weight: int#
patient_gender: Gender#
patient_age: int#
class shared_libraries.models.AcquisitionTaskOut#

Bases: TaskOut, BaseAcquisitionTask

Acquisition Task output model.

acquisition_limits: AcquisitionLimits | None = None#
class shared_libraries.models.AcquisitionPayload#

Bases: AcquisitionTaskOut

Acquisition Task payload model.

mrd_header: str | None = None#
sequence: MRISequenceOut#
access_token: str#
device_parameter: dict#
class shared_libraries.models.BaseProtocol#

Bases: pydantic.BaseModel

Protocol base model.

model_config#
patient_id: uuid.UUID | None = None#
name: str#
description: str#
indication: str | None = None#
comment: str | None = None#
status: ItemStatus#
is_template: bool#
class shared_libraries.models.ProtocolOut#

Bases: BaseProtocol

Protocol output model.

id: uuid.UUID#
creator: str#
datetime_created: datetime.datetime#
datetime_updated: datetime.datetime | None = None#
tasks: list[AcquisitionTaskOut]#
class shared_libraries.models.User#

Bases: pydantic.BaseModel

Authenticated user, as returned to callers after login.

username: str#
first_name: str#
last_name: str#
email: str | None = None#
role: UserRole#
access_token: str#
token_type: str#
last_activity_unixtime: int | None = None#
last_login_unixtime: int | None = None#
class shared_libraries.models.PasswordUpdateRequest#

Bases: pydantic.BaseModel

Request payload to change a user’s password.

password_of_requester: str#
username_to_change_password_for: str#
newpassword: str#
class shared_libraries.models.BasePatient#

Bases: pydantic.BaseModel

Patient pydantic base model.

model_config#
first_name: str#
last_name: str#
birth_date: datetime.date#
sex: Gender#
height: float#
weight: float#
issuer: str#
status: ItemStatus#
comment: str | None = None#
class shared_libraries.models.PatientOut#

Bases: BasePatient

Patient pydantic output model.

patient_id: uuid.UUID#
datetime_created: datetime.datetime#
datetime_updated: datetime.datetime | None = None#
class shared_libraries.models.MRDAcquisitionInfo#

Bases: pydantic.BaseModel

ISMRM raw data / (ISMR)MRD acquisition info.

acquisition_id: int#
num_samples: int#
num_coils: int#
dwell_time: float#
class shared_libraries.models.MRDMetaResponse#

Bases: pydantic.BaseModel

ISMRM raw data / (ISMR)MRD meta data response.

protocol_id: str#
task_id: str#
result_id: str#
dtype: str = 'fc32'#
acquisitions: list[MRDAcquisitionInfo] = []#