app.db.postgres#

Database file for the MRI sequence manager service.

Attributes#

Classes#

Base

Declarative base class.

Protocol

Protocol ORM model.

Task

Abstract task ORM model.

AcquisitionTask

Acquisition task ORM model.

Result

Abstract result ORM model.

Functions#

init_db(→ None)

Initialize the database.

Module Contents#

class app.db.postgres.Base#

Bases: sqlalchemy.orm.DeclarativeBase

Declarative base class.

update(data: pydantic.BaseModel) None#

Update a protocol entry.

app.db.postgres.postgres_user_filepath = '/run/secrets/scanhub_database_postgres_user'#
app.db.postgres.postgres_password_filepath = '/run/secrets/scanhub_database_postgres_password'#
app.db.postgres.postgres_db_name_filepath = '/run/secrets/scanhub_database_postgres_db_name'#
app.db.postgres.postgres_user#
app.db.postgres.init_db() None#

Initialize the database.

class app.db.postgres.Protocol#

Bases: Base

Protocol ORM model.

__tablename__ = 'protocol'#
__table_args__#
id: sqlalchemy.orm.Mapped[uuid.UUID]#
creator: sqlalchemy.orm.Mapped[str]#
datetime_created: sqlalchemy.orm.Mapped[datetime.datetime]#
datetime_updated: sqlalchemy.orm.Mapped[datetime.datetime]#
tasks: sqlalchemy.orm.Mapped[list[Task]]#
patient_id: sqlalchemy.orm.Mapped[uuid.UUID]#
name: sqlalchemy.orm.Mapped[str]#
description: sqlalchemy.orm.Mapped[str]#
indication: sqlalchemy.orm.Mapped[str]#
patient_height_cm: sqlalchemy.orm.Mapped[int]#
patient_weight_kg: sqlalchemy.orm.Mapped[int]#
comment: sqlalchemy.orm.Mapped[str]#
status: sqlalchemy.orm.Mapped[scanhub_libraries.models.ItemStatus]#
is_template: sqlalchemy.orm.Mapped[bool]#
class app.db.postgres.Task#

Bases: Base

Abstract task ORM model.

__tablename__ = 'task'#
__table_args__#
id: sqlalchemy.orm.Mapped[uuid.UUID]#
creator: sqlalchemy.orm.Mapped[str]#
datetime_created: sqlalchemy.orm.Mapped[datetime.datetime]#
datetime_updated: sqlalchemy.orm.Mapped[datetime.datetime]#
protocol_id: sqlalchemy.orm.Mapped[uuid.UUID]#
name: sqlalchemy.orm.Mapped[str]#
description: sqlalchemy.orm.Mapped[str]#
task_type: sqlalchemy.orm.Mapped[scanhub_libraries.models.TaskType]#
destination: sqlalchemy.orm.Mapped[str]#
status: sqlalchemy.orm.Mapped[scanhub_libraries.models.ItemStatus]#
progress: sqlalchemy.orm.Mapped[int]#
is_template: sqlalchemy.orm.Mapped[bool]#
position: sqlalchemy.orm.Mapped[int]#
results: sqlalchemy.orm.Mapped[list[Result]]#
__mapper_args__#
class app.db.postgres.AcquisitionTask#

Bases: Task

Acquisition task ORM model.

__tablename__ = 'acquisition_task'#
__mapper_args__#
id: sqlalchemy.orm.Mapped[uuid.UUID]#
sequence_id: sqlalchemy.orm.Mapped[str]#
calibration: sqlalchemy.orm.Mapped[list[scanhub_libraries.models.CalibrationType]]#
device_id: sqlalchemy.orm.Mapped[uuid.UUID]#
acquisition_parameter: sqlalchemy.orm.Mapped[scanhub_libraries.models.AcquisitionParameter]#
acquisition_limits: sqlalchemy.orm.Mapped[scanhub_libraries.models.AcquisitionLimits]#
class app.db.postgres.Result#

Bases: Base

Abstract result ORM model.

__tablename__ = 'result'#
__table_args__#
id: sqlalchemy.orm.Mapped[uuid.UUID]#
datetime_created: sqlalchemy.orm.Mapped[datetime.datetime]#
task_id: sqlalchemy.orm.Mapped[uuid.UUID]#
type: sqlalchemy.orm.Mapped[scanhub_libraries.models.ResultType]#
directory: sqlalchemy.orm.Mapped[str]#
files: sqlalchemy.orm.Mapped[list[str]]#
meta: sqlalchemy.orm.Mapped[dict]#
app.db.postgres.MappedBase#
app.db.postgres.Device#