Skip to content

Server | Database

Mitchell Mastromonaco edited this page Apr 15, 2020 · 4 revisions

Type ORM is an Object-Relationnal Mapping. Its role is to handle the communications from and to the PostgreSQL database.

List of Entities

Annotation

An annotation is the persistent data where an image is being annotated with ist different biomarkers. Thus, it contains all the pertinent info for studying a retinian image.

It can be associated with any number of tasks in order to be further annotated (OneToMany) and it can have any number of widgets for further information gathering (OneToMany).

It also has a number of submission events since each time an annotation is completed or worked upon, a submission event is created (OneToOne).

Image

An image is the retinian image as well as its thumbnail, its preprocessed image (a better quality version of the original image), and the image which is going to be annotated for further study. All image file paths are stored within the object's metadata attribute.

It can be associated with any number of annotations (OneToMany).

Task

A task is a workload assigne to a specific user (ManyToOne) so that they may annotate an image. It can also be assigned to a group of users (OneToMany) through task priorities. In which case, one of those users must choose to work on that task before it can be annotated.

To this extent, a task is an entity which is volatile. A number of tasks are created and deleted for each annotation (ManyToOne).

For data persistence, it is better to store information within the annotation rather than in the task.

A task may also have a task type (ManyToOne) where more generic info about the task can be stored.

Task Priority

A task priority is used in order to create bundles of tasks.

Any task can be assigned a task priority. In which case, a user-task pair is created with a relative priority value. These values are then shunted into an algorithm in order to create bundles which will be displayed to the user.

Later, when a user has selected a bundle, the task priority will be deleted and all tasks within the bundle will be assigned to the user.

Task Type

A task type is where generic info about a task is stored such as a title for the group of tasks and a description. It is mainly used to sort tasks.

User

A user is the person that is using the application.

Widget

A widget is extra information in an annotation in the form of a field appearing in the editor view. It can be one of multiple types, however, for the time being only multiLine and singleLine are fully implemented. Furthermore, this is only a base class. The perceived way of extending widgets was to create children classes for this one.

Clone this wiki locally