Barcode
Label
Description
Install Date
Remarks
Print Flag
Dimensions
Positions
Searching
Purchase Guidelines
Collection Objects are physically located in containers, and the concept of Containers reflects that reality. Not only are collection objects located in containers, but containers are located within larger containers and this relationship is reflected in a recursive, parent-child relationship. Thus, every container has one parent container, except for “Container Zero” (the Parentless Void). For example, a tissue sample is typically in a cryovial, within a position in a freezer box, within a position in a freezer rack, within a freezer in a room…seven containers.
With each container uniquely labeled with a barcode, tracking objects becomes is done by scanning a new parent-container ID into the record of a child container. In the example above, the approximately 1,300 samples in a freezer rack can be tracked from one freezer to another by the scanning barcode on the freezer rack and its new parent ID (the barcode on the freezer).
Container Type: Vials, jars, boxes, shelves, and rooms are all Container Types. Vocabulary is controlled, and should be limited to unambiguous, and mutually exclusive kinds of containers.
The Container Type "Position" is locked by programmed logic within its Parent Container. Examples of Positions include entities which cannont be physically moved from their Parent Container such as slots within freezer racks, slots for vials within freezer boxes, and positions for racks within freezers. In order create a Position, a Parent Container must be assigned.
NUMBER not null
Parent Container:
This is the value that identifies the container into which another (child) Container has been placed. The value is not displayed in applications because Parent Containers are generally displayed by their Labels and entered into forms by their Barcode.
VARCHAR(50) null
Barcode: Within the database, a barcode is a string of characters unique to a container. Most barcode values are meaningless “dumb numbers” that serve simply to associate a physical container with the information about the container.
On labels, these characters are represented in one of several possible machine-readable fonts. Code Three of Nine (usually called Code 39), Code 128, and the two-dimensional DataMatrix codes are being used at this time. Most modern one-dimensional scanners will automatically recognize most one-dimensional codes, and most two-dimensional scanners will recognize both one-dimensional and two-dimensional codes.
Many barcode labels are preprinted, purchased in lots, and made in particular sizes with particular adhesives, etc., for fairly specific applications. Others are printed in-house. Code 39 labels can be generated by installing a barcode font on a computer and printing to a laser printer. Code 39 can be downloaded for free. Asterisks are the stop and start codons for Code 39, so an expression such as *1234* will be read as 1234 by a barcode scanner.
In order to assure that barcode values are unique within an institution, barcodes are entered into the database as containers of the type label. This is done at the time labels are ordered so that the range of values is reserved. This practice also allows us to limit the values accepted by the database to known barcode values.
VARCHAR(255) not null
Label is the descriptive value that is displayed in most of our object-tracking applications. It should usually represent something that appears on the container. In many cases, this will be the value of the barcode which is displayed in human-readable fonts on most barcode labels.
Many legacy containers are not easily barcoded, especially if they are numerous and stored at low temperatures. Therefore, Label should certainly be the value that appears in physical searches for un-barcoded containers.
Some object-tracking applications simplify the container hierarchy by reporting only the positions (Containers of the type Position) for a Collection Object. Thus, in order to find a tissue sample in the freezers, you do not need to know the label of the freezer box or the freezer rack. You need know only the positions of the box and rack. For these applications, the Labels of positions might usefully indicate the parent container of the position. For example, the Label of position 6-B in Freezer 6 is "Frzr6 6-B," not just "6-B."
VARCHAR(255) null
Description is a useful expansion of Label. “Room 363″ is useful as a label, but something like "The processing room in the south wing of the Biology Annex" may be expeditious.
DATETIME not null
Install Date This is the date on which the Parent Container was last changed, i.e., the date on which the Container was placed in its parent. Often, this is defaulted to the system date.
VARCHAR(255) null
Remarks
is the place to record notes and about the container or its contents. Remarks are especially useful in explaining the nature and treatment of legacy containers (i.e., containers without barcode labels).
NUMBER(1) null
Print Flag is a temporary flag that can be set for the purpose of printing container labels.
Container . height
Container . length
NUMBER null
Width, Height, Length are dimensions of a container in centimeters. Decimal fractions can be used. Because movement of objects involves two barcode scans that relate a child container to a parent container, there is a risk of accidentally reversing these two values. These dimensions are used in logic that prevents scanning a container into a parent that is smaller than itself.
Some common container dimensions:
| Container | Width | Height | Length |
|---|---|---|---|
| 13-slot freezer rack | 14 | 73 | 14 |
| slot in freezer rack | 13.5 | 5.5 | 13.5 |
| regular (2 inch) freezer box | 13 | 5 | 13 |
| 2-dram shell vial | 2 | 5.6 | 2 |
INTEGER null
Number of Positions: Some containers have immovable subcontainers of the Container Type Position. For example, many freezer boxes designed to contain cryovials have either 81 (9 X 9 rows) or 100 (10 X 10 rows) subdivisions, or fixed positions, for cryovials. Recording the number of positions in a container allows us to make forms specific to tasks such as scanning cryovials into a 100-position freezer box versus an 81-position freezer box.
VARCHAR(20) not null
Institution is an abbreviation that indicates which institution’s container this is. There are two possible values at this writing: UAM and MSB. All barcode values within an institution are intended to be unique. Among institutions, barcode values are not unique.
Top
Searching
The Containers and Parts search form is written in AJAX/DHTML – it does not behave like traditional web forms.
- The form is never submitted. If you click a control and nothing happens in a reasonable time, file a bug report.
- Clicking controls repeatedly may “clog up the pipe” to the database. Don’t do it.
- A reasonable browser is required. As always, we recommend Firefox.
- You must have JavaScript enabled and allow pop-ups from arctos.database.museum
Note that there are two forms. Container and Part searches are distinct.
General usage guidelines:
- Create a tree by searching for something in the form. Search for containers by clicking the button from parts, and vice-versa. This switch is DHTML – the form will not reload.
- Drag/Drop is disabled. You can’t do it in this application. Feel free to try.
- Doubleclick a “node” to find children of a container.
- Check (or uncheck) a node to get a popup with details about the container and links to other applications.
- Most links open in the right frame. Some open in a new page.
Top
Guidelines for barcode-containing labels:
- Barcodes should be clearly replicated in a human-readable format. The value read by a scanner should be readable by a human as well. Note that XYZ123, 123, ZYX 123, and ZYX0123 are all very different values.
- Avoid padding with leading zeroes. These may be handled differently by different applications. In order to keep the character strings all the same length, start the series at a high value. For example, instead of beginning a series at 000001, begin at 100001. Thus, the character string will always be six characters long, and the printed labels will format consistently.
- Avoid non-printing characters. Humans, and sometimes machines, can’t always tell if that hole represents a space, tab, linefeed, of any of the dozens of other possibilities.
- Use big numbers if possible. XYZ1234567890 is less likely to cause unanticipated problems than XYZ1 is.
- Don’t try to be too clever. You’ll learn to hate “L090207″ (or was it L927? Maybe L0902007?). Dumb numbers with a locally-meaningful prefix, such as UAM or UAMMAMM, will be much more sustainable.
- Check the Barcode Series Spreadsheet very early in the ordering process. Avoid anything that even remotely looks like it could be, or ever could become, a conflict. Duplicate barcodes will not be accepted.
- Talk to the Arctos folks before doing anything else. Really. It’s free, and we’re here to help. Ordering unusable barcodes is not free, and we’ll make fun of you for doing that.
- Enter the series of barcodes into Arctos and update the Barcode Series Spreadsheet before placing an order or printing your barcodes.