Database Tables


About this Document



ArrayBlocks

A block with tissue from two or more "normal" blocks.  This "special" block is in the format of any array, where each coordinate may be from a different block.

ArrayBlocks Table
Column Name Type Description Example Value
ArrayBlockID
num
the primary key
65
ArrayName *
text
the name of this arrayblock; generally a short description of why it was created.
Human Prostate Array
Source
text the person for whom the array is being created
De Marzo
NumberOfRows
num the number of rows in this ArrayBlock. 
20
NumberOfColumns
num the number of columns in this ArrayBlock. 
20
IsFinal
bool
true if the ArrayBlock can not be modified in the ArrayBuilder application anymore.
No
Creator
text The technician who created the ArrayBlock
C. Southerland
Purpose
text The reason the ArrayBlock was created
Staining normal human tissue
CreateDate
date
The date construction began on the ArrayBlock
07-01-2008
FinalDate
date The date the ArrayBlock was completed
07-02-2008
Status
text The current status on construction of this arrayblock
cancelled
NumberOfSpots
num How many spots/images are on the Arrayblock; Generally 400
400
CoreSize
float
The size of each of the ArrayCores on this ArrayBlock. (in millimeters).  Usually 0.6, 1.0, or 1.5
0.6

ArrayCores

An ArrayCore is a "cylinder" that is placed into an ArrayBlock at a defined x and y position on the ArrayBlock. This "cylinder" is actually a piece of tissue from a regular block (not an arrayBlock).  The tissueDiagnosisID tells us which regular block this piece of tissue belongs to before it was placed in an ArrayBlocks.  This table in a sense in a link between the tissue in regular blocks and the tissue in ArrayBlocks.

ArrayCores Table
Column Name Type Description Example Value
ArrayCoreID
num
the primary key
7877
ArrayBlockID *
num
the ID of the ArrayBlock in which this core has been placed
2
X *
num The x location of this cylinder (x starts at 1 and moves from left to right across the array)
1
Y *
num The y location of this cylinder (y starts at 1 and moves from top to bottom across the array)
20
TissueDiagnosisID
num The tissueDiagnosisID, which tells us the regular block from where this tissue was obtained
54
Control
text
This field may be used instead of a tissueDiagnosisID to tell us from where the tissue originated.  Sometimes a researcher just wants to put in control tissue, and not specify the details of the tissue.  If this is done, the tissueDiagnosisID field gets a default value, and a brief description of the control tissue (such as "bladder") is entered into this column
bladder
OutsideArrayCoreID
text
If an outside research institution uses its own system for labelling ArrayCores, this column may be used.  Note: This column currently is not used in TMAJ
h-404


ArrayImages

A jpeg image of one coordinate on an arraySlide.  These are also called spots. In a 20 x 20 arraySlide, there would be 400 spots.

ArrayImages Table
Column Name Type Description Example Value
ArrayImageID
num
the primary key
543312
ArrayCoreID*
num
the ArrayCore (cylinder) of this ArrayImage. (contains X & Y position.)
3431
ScanID *
num
the Scan of this ArrayImage (links to ArraySlide, which contains Z position.)
811
DirectoryPath text the directory under the main images directory where this image is stored.  All ArrayImages with the same scanID have the same value for the DirectoryPath, although this is not a requirement.
TMA_0017_CUT_020_SCAN_01_HE_0_BLISS
Filename text
the filename of the image.
0_0_12_14_0_0_42321.jpg
IsBad
bool
true if the image is blurred or mostly blank space, and a waste of time for the user to even view.  (Bad images are skipped over the Images-Manager program to save time.)
No
WebSlideURL
text
the URL a user may see additional information on the image provided by the BLISS machine. (not an actively used feature)



ArraySlides

A "cut" from an ArrayBlock.  The first cut is z = 1, the second is z = 2, and so on.  A slide is 2 dimensional and can be put under a microscope and viewed, whereas a 3 dimension block could not be. 

ArraySlides Table
Column Name Type Description Example Value
ArraySlideID
num
The primary key
1015
ArrayBlockID *
num The ArrayBlock from which this ArraySlide was cut.
17
Z *
num The cut number of this ArraySlide.  The first cut is 1, the second is 2, and so-on. 25
Stain
text Either the antibody name this ArraySlide was been stained with (example: KI67), or H-and-E.  The ArraySlide is always stained prior to scanning, otherwise the tissue would be clear. H&E
StainingUserID
enum
The technician who stained this ArraySlide
{John Smith}
ContactUserID
enum The person to contact to obtain this ArraySlide
{John Smith}
ExperimentNumber
text
The experiment number this ArraySlide is in.
JH9999
Location
text Where this ArraySlide is currently located DeMarzo Office

Blocks

Normal, (non-array) ordinary, blocks.  These are obtained by taking tissue from a specimen and putting it into paraffin. Later, tissue from these "normal" blocks are extracted and put into an ArrayBlock. 

Blocks Table
Column Name Type
Description Example Value
BlockID
num
The primary key
122
SpecimenID *
num The specimen from which this block was cut.  One specimen generally yields many blocks
715
BlockDesignation *
text
The letter written on the block.
A
Part *
text
The part number of the specimen from which this block came.
2
Fixation
enum
How the block was fixed
{Formalin}
Area_mm2
text
The surface area of the block
111.0
OutsideBlockNumber
text
The block identifier, if the block is from a different institution
T3432
ContactUserID
enum
The person to contact to obtain this block.
{John Smith}
Not_Infile_Location
text
The location of the block if it has been given to somebody else. (not in our lab)
XYZ Lab
HasHandE
bool
true if this block has an H&E slide
Yes
IsDivided
bool
true if this block has been cut into 2 or more parts
Yes
BlockStatusID
enum
Choice between Good,Intermediate, Poor, or Cut-Through.  (The block is cut many times to make slides).
{Cut-Through}
CollectionDate
date
The date the block was taken from Surgical Pathology
05-01-2008

DataUpdates

A table whose sole purpose is for logging changes to data (except deletions).  All the data in this table could be deleted, and the only information that would be lost is the logs.  This table has been known to get quite large.
DataUpdates Table
Column Name Type Description Example Value
ID
num
the primary key
343
TableNumber
num Every database table is assigned a number that is hard-coded in the source code.  See LogTable.java
3
PrimaryKeyID
num the primary key of the record that was changed in the table.  The tableNumber field and this field uniquely identify one record in TMAJ.
655
FieldName
text
The name of the column that was changed.  The tableNumber, primaryKeyID, and this field uniquely identify one cell in TMAJ.
SurgPathNumber
UserID
num The ID of the user who performed this change
4
NewValue
text
The new value the user assigned to the value
S93-98585
ChangeTime
date
The time the user made the change.
2008-04-01 15:30:00


Enumerations

Enumerations is essentially a "master lookup table".  Lookup tables are defined as a table with 2 columns: an ID and a name.  For example, Organs might be a lookup table where organID#1 is prostate, organID#2 is bladder, organID#3 is skin, etc.  This table represents multiple lookup tables.  The GroupName represents the collection.  In our example, the GroupName would be called Organs.  If we had 10 organs, there would be 10 rows each with the GroupName being the organ, and the ItemName being the name of the organ. 

Enumerations Table
Column Name Type Description Example Value
EnumID
num
the primary key
3
GroupName*
text
The group to which the item belongs.  A group has one or more items in it.  For example, a groupName called Organs might have items like: prostate, bladder, skin, etc.
Examples of GroupNames in TMAJ: BlockFixations, BlockUsageDiagnoses, MarginsPositive, Organs, ProtocolCategory, ProtocolTypes, SpecimenFixations, AnimalTypes, BlockStatus, Diseases, MicroscopeUsers,
Organs
ItemName*
text
A choice in the group.  If the groupName were Organs, a choice might be prostate. 
Prostate

Hospitals

Represents hospitals from which a patient or specimen may originate.  All patients and specimens are assigned a hospital. 

Hospitals Table
Column Name Type Description Example Value
HospitalID
num
the primary key
1
HospitalName*
text
The name of the hospital
Johns Hopkins

KeyValues

KeyValues is a way to store a "config file" in a database.  Each line in the config file which has a key value pair is one record in this table.  The advantage of keeping a config file in the database is that it will be backed up, and that it is easy to change.  This table tends to be very small, as there are only a few config values placed in this table.

KeyValues Table
Column Name Type Description Example Value
ID
num
the primary key
3
KeyName*
num
the name of the key, such as SPECIMEN_NUMBER, ARRAY_COLORS_TISSUE_TYPES, ARRAY_COLORS_ORGAN_TYPES, or MASTER_PASSWORD_HASH
MASTER_PASSWORD_HASH
KeyValue
num
The value of the key.  For example for MASTER_PASSWORD_HASH, this would be the actual hash
/foa+gU3veyr4nGEn30ZnIv204Y=


MachineScores

A score for an ArrayImage that has been made by a machine such as the ACIS.  For example, the machine may tell how much brown there was in the image. This table is only used if the user wants MachineScored analysis in addition to user-scored analysis. 

MachineScores Table
Column Name Type Description Example Value
MachineScoreID
num
the primary key
7623
MachineSessionID *
num
the MachineSessionID of the score. A MachineSessionID yields many MachineScores.
22
ArrayImageID *
num
the ArrayImage the MachineScored.  An ArrayImage usually only has 1 MachineScore, but it may have more depending on how many MachineSessions are created.
12345
BrownArea
num (An ACIS Field).  The ACIS tells how much brown is in the image.  Note: If it were the BLISS scoring, this is left null
205
BlueArea
num
(An ACIS Field).  The ACIS tells how much blue is in the image.  Note: If it were the BLISS scoring, this is left null. 14513
AverageBrownIntensity
num (An ACIS Field). <check scanning machine docs for description> Note: If it were the BLISS scoring, this is left null. 240
Percentage
num (An ACIS Field).  The number of brown pixels related to the number of brown and blue pixels in a region.  In other words, basically (brown pixels/brown + blue pixels). Note: If it were the BLISS scoring, this is left null. 5.99
Intensity
num (An ACIS Field).  The Average brown intensity of all pixels within a region scored. Note: If it were the BLISS scoring, this is left null. 220
Region Area
num (An ACIS Field). <check scanning machine docs for description> Note: If it were the BLISS scoring, this is left null. 0
IHC_Area
num
(A BLISS Field).  <check scanning machine docs for description>  Note: If it were the ACIS scoring, this is left null 134.5
Avg_IHC_OD
num
(A BLISS Field).  <check scanning machine docs for description>  Note: If it were the ACIS scoring, this is left null 12.4
TotalArea
num (A JCorn field)  The total area of the image.  Note: JCorn is an image analysis program made available by JHU. 1000000
MaskArea
num (A JCorn field) The total area of the mask
50000
IntensityMinimum
num (A JCorn field) The minimum intensity of the pixels in the mask
0
IntensityMaximum num (A JCorn field)The maximum intensity of the pixels in the mask 255
* not all fields are shown.   Check the ACIS and BLISS documentation should you need the exact description of what the field represents.  For programming purposes, their meanings are irrelevant other than the data type they store.


MachineSessions

A machine scoring all the images for a scan.   A machine may score a scan several times, and get different scores each time for each spot.  This is because the machine may be set at different thresholds.

MachineSessions Table
Column Name Type Description Example Value
MachineSessionID
num
the primary key
62
ScanID *
num
The ArraySlide-Scan.  When a scan is done, one or more MachineSessions may optionally be done with it.
12
ShortDescription*
num
a 20 character description that differentiates this MachineSession from other sessions assuming there is more than 1 session per scan.  The majority of Scans however have at most one MachineSessionID. 
threshold_50
MachineID
enum The machine doing the scoring.  This field may be unnecessary as it's also recorded in the Scans table, which is linked by ScanID.
{BLISS}
CreationDate
date
the date this machineScoring of a Scan was performed
2008-07-01
UserID
text
The user who initianed the MachineScoring
2
Notes
text
Any notes in addition to the ShortDescription the user wishes to record.
circled regions only

Papers

A collection of sessions in TMAJ (used for a published paper).  Sometimes a user will publish a paper in a medical journal, and some of the data for that paper will be in TMAJ.  The user then adds a new paper, and assigns all appropriate sessions to that paper (see PapersSessions table).

Papers Table
Column Name Type Description Example Value
PaperID
num
the primary key
22
ShortTitle
text
a abbreviated form for the title
COX-2 Overexpression in PIA
Title
text the full title of the paper
Cyclooxygenase-2 Is Up-Regulated in Proliferative Inflammatory Atrophy of the Prostate, but not in Prostate Carcinoma
UserID
text the ID of the user who scored the images on TMAJ
{Angelo De Marzo}
PDFLink
text a link to the paper
http://demarzolab.pathology.jhmi.edu/Reprints/Zha_Cox_2_Can_Res.pdf
PubMedLink
text a link to the paper on pub med
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11751373
Abstract
blob the full text of the abstract
...
Authors
text all of the authors on the paper.
Shan Zha, Wesley R. Gage, Jurga Sauvageot, Elizabeth A. Saria, Mathew J. Putzi, Charles M. Ewing, Dennis A. Faith, William G. Nelson, Angelo M. De Marzo, and William B. Isaacs
JNLPLink
text
the url that a person can click that will automatically take them to the sessions for the paper in TMAJ.
http://www.tmaj.com/tma/paper_starter_1.jnlp

Patients

Represents a patient.  All specimens originate from a patient.  The use of this table is optional.  Virtually all information in this table is HIPPA protected, and thus this table is often left blank.  (If this table is blank, all specimens simply are assigned a default number (like 1) for a patientID.  We simply put one dummy record in the patients table, and assign that patientID to every specimen.)

Patients Table
Column Name Type Description Example Value
PatientID
num
the primary key
433
PatientNumber* num
the unique number the hospital (in the field below) assigned to the patient
04-038931
HospitalID* text the hospital that assigned the patient number
1
NameFirst
text the first name of the patient
John
NameLast
text the last name of the patient Smith
BirthDate
date the birth date of the patient
01-15-1910
Race
text the race of the patient W
Sex
text the sex of the patient
M
OutsidePatientNumber num
Sometimes patients have more than one history number.  This is a location for the 2nd history number.
P495-9391
OutsideHospital text
The hospital that assigned the second history number
2

PapersSessions

A Many-To-Many table that allows us to determine what sessions a paper contains.  A paper contains only published sessions.  Papers represent published papers (say in a medical journal).  Published sessions may be assigned to a paper, so that when a user goes looking for information from a published paper, it is easy to find. 

PapersSessions Table
Column Name Type Description Example Value
ID
num
the primary key
7877
PaperID*
num
the PaperID of a paper
2
SessionID*
num
the sessionID of a published sessions
505

Projects

A project is a collection of arraySlides. ArraySlides are organized into projects for security purposes (and for organizational purposes).
Projects Table
Column Name Type Description Example Value
ProjectID
num
the primary key
4
ProjectName *
text the name of the project;
Diagnosis Consensus
ProjectDescription
text a brief description of the project
used for various pathologists to classify atrophy lesions
Source
text
the person responsible for the project
De Marzo
IsLookupDisabled
bool true if sessions created in the project should not be able to see the original diagnoses in TissueDiagnosis. This means that in the Images app the image-info button will be disabled;  Also, when the user shows the Data Table for the session, original diagnoses will not be displayed.  Use this option to prevent users being biased by the original diagnosis. 
No
AreTissueTypesRestricted
bool
true if the sessions created in the project may only choose TissueTypes chosen in the original diagnosis.  So lets say there are 30 tissue types.  Of these probably only 5 were used when the original ArrayBlock was designed in ArrayBuilder.  This will ensure that only those 5 tissueTypes are shown in the drop-down box in the ArrayImage Frame.  This option may help new users by restricting the options they can pick.
No

ProjectsArraySlides

A Many-To-Many table that allows us to determine what ArraySlides a project contains.
ProjectsArraySlides Table
Column Name Type Description Example Value
ID
num
the primary key
7877
ProjectID*
num
the ProjectID of a Project
2
ArraySlideID*
num
the ArraySlideID of an ArraySlide that is in the Project
505

Protocols

A form that is sent to the Internal Review Board (IRB) at a hospital asking for permission to do a scientific experiment that involves either humans or animals.  This table isn't linked to any other table in TMAJ, and using it is optional.  It is for record-keeping only. 

Protocols Table
Column Name Type Description Example Value
ProtocolID
num
the primary key
25
ProtocolName
text
a short description of the protocol title
Approval to review pathology slides
PrincipalInvestigator
text the lead person conducting the experiment (PI)
De Marzo
IRB_ProtocolNumber
text the protocolNumber the Internal Review Board (IRB) assigns
98-05-12-15e
IRB_Contact1
text the first point of contact at the IRB
{Jane Smith}

RecentSessions

Represents a user opening a session at a particular time.  We use this table so we can pull a convenient list for users showing them the last 5 sessions they have accessed.

RecentSessions Table
Column Name Type Description Example Value
ID
num
the primary key
251
UserID *
text
the userID of the user opening the session
51
SessionID *
text the sessionID of the session the user is opening
25
LastAccessDate
text the time the user is opening the session
2008-05-15


Scans

Represents a machine scanning 1 arraySlide.  An arraySlide may be scanned multiple times by a machine.  For example, 2 scans may have different resolutions, or different options for reading colors.  Sometimes the end-user will want to keep both scans, even though they are of the same array-slide.

Scans Table
Column Name Type Description Example Value
ScanID
num
The primary key
515
ArraySlideID *
num The ArraySlide that was scanned
1015
ScanNumber *
num
The time that the ArraySlide was scanned.  The first time is 1, the second is 2, etc.  Most only have 1.
1
ScanningMachineID
enum
The machine that did the scanning of the ArraySlide
{BLISS}
Notes
text
If an ArraySlide is scanned more than once, this column should describe why 2 scans were necessary.
high resolution

ScoredImages

Represents a user scoring an arrayImage.
ScoredImages Table
Column Name Type Description Example Value
ScoredImageID
num
the primary key
76343
SessionID*
num
the session the user created to score images
25
ArrayImageID*
num
the ArrayImage the user is scoring
255723
TissueTypeID
num the new TissueTypeID the user assigns.  This controls which dynamic fields will come up.
2
Notes
text
Any notes the user puts in the notes field.
2 areas of cancer

Shapes

Represents a shape a user draws on an image.
Shapes Table
Column Name Type Description Example Value
ShapeID
num
the primary key
48193
ScoredImageID
num
the scoredImage the user onto which the user is drawing this shape
76343
Type
char
the first letter of the type of shape the user is drawing : line, circle,  oval, text, etc.
O
x
num The start x coordinate. (applicable for lines, circles, text, squares, and others.)
0
y
num The start y coordinate.(applicable for lines, circles, text, squares, and others.) 0
x2
num The end x coordinate (applicable for a line)
100
y2
num The end y coordinate (applicable for a line) 50
TextDisplay
text
Only applicable for the text shape. This is the text .
"Cancer Region"
Width
num the width of the shape, if applicable.  It would be applicable in a rectangle.
100
Height
num the width of the shape, if applicable.  It would be applicable in a rectangle. 200
PointsList
text
Only applicable for the free-text shape.  A string represents many x and y coordinates.
421,119;395,204;371,242;

Sessions

Represents a user scoring an entire scan (of an ArraySlide.)
Sessions Table
Column Name Type Description Example Value
SessionID
num
the primary key
25
UserID *
num
the user who is the owner of this session
2
ProjectID*
num
the project this session was created under
3
ScanID *
num the scanID whose ArrayImages the user is scoring in this session
54
SessionNumber *
num starting at 1, this is incremented every time a user creates a new session with the same ProjectID/ScanID
1
IsPublished
bool
Same as IsFinal, and also means every other user of TMAJ can see this session
No
IsFinal
bool
true if the scoredImages of this session can no longer be modified
No
ScoringStrategyID
num
If set, the user may score all ScoredImageFields with this set ScoringStrategyID, when this session is scored.
2
CreationDate
date
the date when this session was created
2009-01-30
Notes
text
any additional notes the user wants to record about this session
rescored feb10


Slides

Represents an ordinary (non-array), slide.  Slides are 2-dimension (glass) and can be placed under a microscope.  This is an optional table in TMAJ, and is not required in normal TMAJ workflow.. Not all fields are shown.

Slides Table
Column Name Type Description Example Value
SlideID
num
the primary key
45645
BlockID*
num
the block from where the slide was cut
122
CutDate
date
the date the block was cut and this slide was made
2008-05-20
CutNumber
num The first cut of the block is 1, the second is 2, and so on.
20
Stain
text
What the slide was stained with
h & e
Location
text
Where the slide is
room 505, c331

Specimens

Represents all the tissue that comes out of a patient during a surgery.  For example, a prostate.

Specimens Table
Column Name
Type
Description
Example Value
SpecimenID
num
The primary key. Automatically assigned by database.
12511
SurgPathNumber *
text
A unique number a hospital assigns to a specimen. 
S01-99515
HospitalID *
enum
The hospital that assigned the SurgPathNumber. 
{Johns Hopkins}
SpecimenTypeID
enum
The type, which will control which organ-specific fields are displayed for this specimen
{Radical Prostatectomy}
PatientID
num
Refers to the Patients table.  One patient may have one or more specimens.  If the patients table is not used, this may be given a default value (like 1). 
5424
Age
num
The age of the patient at the time the specimen was taken
75
AnimalExperimentID
num
Used when the specimen is from an animal.  This gives the associated experiment.
2
OutsideSurgPathNumber
text
A specimen may come to the local hospital from another hospital
T4541
OutsideResearchNumber
text
A Research Number that an outside institution assigns
R91-995011
SpecimenList
num
A  list of any other specimens that came out of the patient during surgery
S01-99516^S01-99517
AccessionDate
date
The date the specimen was received by Surgical Pathology
06-12-2008
DateSpecimenTaken
date
The date of surgery
06-12-2008
Pathologists
num
The pathologists who diagnosed the specimen
John Smith
Physicians
text
The physicians associated with this specimen
Jane Doe
Notes
text
Additional notes on the specimen that do not fit into the normal columns
Specimen transferred
TumorBankNumber
text
The bank number where the specimen is stored
0585
FixationID
enum
The chemical or process that was used to ensure that the specimen does not decay.
{Ethanol }
MarginsPositive
enum
Is there cancer present in the patient's body along where the specimen was cut out.  (e.g. did the surgeon not get all the cancer out?)
{No}
GrossDescription
text
a long description of giving the details of the specimen

Diagnosis
text
a long description giving the diagnosis of the specimen


SpecimenTypes

Represents the different types a specimen record may be. The type chosen will determine which dynamic fields are selected.

SpecimenTypes Table
Column Name Type Description Example Value
SpecimenTypeID
num
the primary key
2
SpecimenTypeName*
text
the name of SpecimenType.  Sometimes this is simply an Organ. Example: Kidney.  Other institutions divide SpecimenTypes up by the surgery that was used to extract the organ. Example: Radical Prostatetomy
Radical Prostatetomy

TissueDiagnosis

Also called a sub-block, this represents a circle on a block and includes a diagnosis of that area.  This is the most specific area in the hiearchy that goes from patient to specimen to blocks to tissue-diagnosis.

TissueDiagnosis Table
Column Name Type Description Example Value
TissueDiagnosisID
num
the primary key
1055
TissueTypeID
enum
The type, which will control which organ-specific fields are displayed for this tissue diagnosis
{Bladder}
BlockID *
num
The block .  A block may have several tissueDiagnoses. 
212
LesionLetter *
text
Each tissue diagnosis on a block gets a unique letter--A,B,C,etc.
A
OutsideTDNumber
text
The unique identifier of this tissue diagnosis at an outside institution
R4041
MicroscopistID
enum
the person who circled this tissue diagnosiis and assigned a diagnosis
{John Smith}
Area_mm2
float
The area of this tissue diagnosis.  Since tissue diagnoses aren't perfect circles, this can be harder to calculate
4.0
RegionSize
float
The length of the longest line that can be drawn inside this tissue diagnosis
1.0


Users

Represents people, and includes everyone who logs onto TMAJ. 

Users Table
Column Name Type Description Example Value
UserID
num
the primary key for this table
51
UserName *
text
the name a user logs in with
jsmith
NameLast
text
the user's last name
Smith
NameFirst
text
the user's first name
John
Institution
text
the place where the user works
JHH
Password text a hash of the user's password; this column is not displayed in the JTable. 
EVdCtPT724ZIVrNZXQE/PkL2ZFC=
Department
text
the department in where the user works
Pathology
Phone
text
the user's work or cell phone number
410-555-0812
Email
text
the user's email (not used)
jsmith@tmaj.com
AccessImportApp
bool
true if the user may access the Import application
No
AccessImagesApp
bool
true if the user may access the Images application
Yes
SpecimensApp
enum
see SpecimensApp field {4-open}
ArrayBuilderApp
enum
see ArrayBuilderApp field
{2-read_only}
AdminApp
enum
see AdminApp field
{2-group admin}
AccessSamplesApp
bool true if the user may access the Samples application
No
ArrayManagerApp
bool
true if the user may access the ArrayManager App
No
AccessPatientData
bool
true if the user can see the patients tab in the Specimens application. (note that you must also set a value in the client.config file as well to be able to see this tab)
No

UsersArrayBlocks

A many-to-many table that links Users to ArrayBlocks, and allows us to determine which arrayBlocks each user may access.

UsersArrayBlocks Table
Column Name Type Description Example Value
ID
num
the primary key
2454
UserID *
num
any userID from the Users table
1
ArrayBlockID*
num
the arrayBlockID of an ArrayBlock to which UserID has access
3

UsersProjects

A many-to-many table that links Users to Projects, and allows us to determine which projects each user may access.

UsersProjects Table
Column Name Type Description Example Value
ID
num
the primary key
5015
UserID *
num
any userID from the Users table
12
ProjectID *
num
the projectID of a project to which UserID has access
3

UsersSessions

Represents a permission that a user has to another user's session.  This allows users to give other users access to their sessions.
Remember, a user automatically owns the session they create. (Note the UserID field in the sessions table.)

UsersSessions Table
Column Name Type Description Example Value
ID
num
the primary key
875445
SessionID *
num
the session
25
UserID *
num
the userID of the user being given permission. (Not the User who actually owns the session.)
55
Permission
char
either r or w.  r if the user can read the session; w if the user scan write it
r

UsersSpecimens

A many-to-many table that links Users to Specimens, and allows us to determine which specimens each user may access.

UsersSpecimens Table
Column Name Type Description Example Value
ID
num
the primary key
43112
UserID *
num
any userID from the Users table
544
SpecimenID*
num
a specimen to which the user has access.  The user may be given permission to all specimens, such that this table is irrelevant.
3

UsersUsers

A many-to-many table that links group-admin users to other users.  This table determines which users a group-admin can control.

UsersUsers Table
Column Name Type Description Example Value
ID
num
the primary key
412
AdminUserID *
num
a user that is a group admin.  A group admin is someone who might administer the data for one lab (and the users table has users from multiple labs.)
5
UserID*
num
a user to whom the group admin may assign access privileges.
89


ArrayBuilderApp Field  [Users table]


ArrayBuilderApp field options
Access Level
Description
3-Standard
Allows users to change the design of any ArrayBlocks to which they have access, unless the ArrayBlock is declared final.  This is the most typical permission level for ArrayBuilder.  Anyone who is designing ArrayBlocks should be given this access level.
2-Read-Only
This allows users only to view the design of their assigned ArrayBlocks.  They may not make any changes to the ArrayBlocks.  To this user, it would appear that every ArrayBlock they are assigned is final.
1-None
Does not allow the user to open the ArrayBlock application.  A "User does not have permission to access the application" error will be given if they try to log in to ArrayBuilder.

AdminApp Field  [Users table]


AdminApp field options
Access Level
Description
3-Admin
Has full access to all data that TMAJ makes available. They can create new users and assign them permissions.
2-Group-Admin
Like an administrator, but this user has only been given admin access to a subset of users, projects, array-blocks, and specimens.  For example, group admins could assign a user (in their group) to an arrayblock that they have been assigned.  But they couldn't do anything to a user that wasn't in their group.  Nor could they give access to a resource (a project, arrayblock, or specimen) that they themselves do not have access.  Group admins have access to any projects or arrayblocks that they have been assigned or that they themselves have created.  Group admins have access to any specimens that they have been assigned OR that they or anyone else in their group have created.
1-None
This is the level assigned to most users.  They have no administrator privileges, and must be assigned projects, arrayblocks, and specimens by an an admin or group-admin.


SpecimensApp Field  [Users table]


SpecimensApp field options
Access Level
Access
Application?
Make Modifications?
View All Specimens?
Description
1-None



The user will not be able to access the Specimens application.  They will get an error saying  "User does not have permission to access application" when they try to log in.
2-Read Only
X


Users can view (but not change) any specimens to which they have been assigned. 
3-Standard
X X

Users can add new specimens and make changes to them.  This is the most typical level assigned to users.  Note than whenever a user enters a new specimen, they are automatically assigned access to it. 
4-Open
X
X

The same as "Standard", except for one thing.  The question is what happens when a user tries to enter a new specimen that is already in TMAJ, but to which they do not have access.  In Standard access, the user will be told to contact a TMAJ administrator to [[give them access to the specimen]].  In Open access, the user will automaticaly be given access to the requested specimen. This access level is basically the same as Standard, and should be given to users whom you suspect have specimens that are already entered into TMAJ by someone else. 

Note: Users can also quickly enter specimens, blocks, and tissue-diagnosis's in the [[lookup panel]] in the ArrayBuilder application.  If a user is not assigned at least Open Access here, and they try to enter a specimen to which they do not have permission, they will get an error.
5-All
X
X
X
Users may view and change all specimens, blocks, and tissueDiagnosis's in TMAJ.



© Copyright 2009 | All Rights Reserved | The Johns Hopkins University