Ticket #1442: bioplate-events-1.txt

File bioplate-events-1.txt, 5.3 KB (added by Nicklas Nordborg, 14 years ago)

First version of a database schema for this ticket

Line 
1
2BioPlate events
3===============
4
5The attached diagram shows new and modified things in the Biomaterial LIMS.
6There are three new classes:
7
8 * BioPlateTypeData
9 * BioPlateEventData
10 * BioPlateEventDefinitionData
11
12In addition there is a new link from BioMaterialEventData to BioPlateEventData
13and the BioPlateData class has several new properties and links.
14
15
16BioPlateTypeData
17----------------
18
19This class is used to group bio plates into different types. A type can:
20
21 * be locked to a specific biomaterial type which means that it is not
22 possible to mix, for example, samples and extracts on bioplates that
23 uses the type.
24 * lock the wells on the bioplates that uses the type. This means that once
25 a biomaterial has been put in a well, it can't be moved to a different
26 plate/well, nor can it be replaced with another biomaterial
27
28The plate type is also used to "root" event definitions, which means that
29an event is only possible for bioplates of a specific plate type.
30
31The installation will (at least) create four generic plate types:
32
33 * Generic storage plate: mixing is allowed, wells are not locked
34 * Sample reaction plate: only samples, wells are locked
35 * Extract reaction plate: only extracts, wells are locked
36 * Labeled extract reaction plate: only labeled extracts, wells are locked
37
38Already existing bioplates will be assigned to the "Generic storage plate"
39type. Plate types are global resources, which means that they don't have an
40owner, and everyone has at least read permission to them. Create and edit
41permissions are only granted to administrators (or power users?).
42
43Q: I am thinking that it might be a good idea to define one plate type for
44each step in the lab procedures. Or at least those steps that are important to
45be registered in BASE. This way it will be easy to select the next event. For
46example, when I have a plate of type X the next event must be Y or Z. However,
47I assume that lab procedures vary a lot between labs and even between projects,
48so this is probably something that has to be setup by an admin. Maybe we should
49think of some kind of import/export functionality that can be used to setup
50plate types and event definitions.
51
52
53BioPlateEventDefinitionData
54---------------------------
55
56This class is used to define an event that is re-occurring in the lab. It is
57linked to a specific source plate type and, if the event generate new plates,
58also to a destination plate type. A default protocol, hardware (eg. some kind
59of robot), label and mapping can be selected. It is possible to lock this or
60allow it to be changed at the time of the event.
61
62An event definition can define three types of event (the same type that are
63currently possible for biomaterials):
64
65 * Creation event: An event that creates a new bio plate
66 * Hybridization event: An event that creates new hybridization(s)
67 * Other: An event that doesn't create anything. It is merely registered as
68 something that happened to some plate.
69
70Event definitions are personal resources. Eg. there is an owner and they need
71to be shared to the proper user/groups/projects before other user can use them.
72This makes it possible to define different workflows in different projects.
73Create permission is granted to power users (or users?).
74
75
76BioPlateEventData
77-----------------
78
79This is the registration of an actual event that has happened to a plate. The
80information is similar to what is registered in a BioMaterialEventData object
81(date/time, user, a comment, etc.) There is a link to the source plate. If the
82event is a creation event the destination plates are also registered. The new
83biomaterial that is created in the destination plates are linked back to the
84biomaterial in the source plates using individual BioMaterialEvent objects.
85The selected mapping is used to determine how the coordinates are related
86between the source and destination plates. Here we need a way to allow users to
87override the default mapping for a specific event. It is not yet fully
88investigated how to do this.
89
90The new biomaterial will have individual BioMaterialEvent:s attached to them
91which is more or less copies of the plate event. This is needed to maintain
92backwards compatibility. Editing of the individual event is disabled, but they
93are synchronized with the plate event and any changes made to the plate event
94are also copied to the individual events.
95
96Q: What about quantities? We never discussed it. Should this also be a property
97of the plate event and the same amount is applied to all biomaterials on the
98plate?
99
100Q: Pooling events are not possible with the current design. The plate mapping is
101re-used from the Array LIMS and a destination well can only have a single source
102well linked to it. Is this too limiting?
103
104Q: Permission-wise I am not sure how plate events should be handled. The
105permission system can either handle it is a standalone item, or as a child
106item. The most natural would be to handle events as a child item to some plate.
107The problem with this is that multiple plates may be created by the same event
108and there is no natural parent item. The drawback with a standalone permission
109system is that users must manage the permissions also for events and not just
110for the plates. A similar problem arises if we start to delete plates. Do we
111handle the events as child items and delete them also, or is the user required
112to delete the events as well? What should happen to the biomaterials on a plate
113that is deleted?
114