We have a very complex form describing a genetically modified lab animal. One animal can have multiple mutations.
A genetically engineered mutation occurs when a researcher inserts a foreign gene into the animal's DNA. The gene then starts producing new proteins (for example, it can start producing antibodies against some pathogen). But the gene only does so in organs and cells where it is activated. Different genes get activated in a different way:
- Organ specific: The new gene is expressed in all celltypes of a given organ (e.g. the liver)
- Cell specific: The new gene is expressed in all cells of a given type (e.g. fibroblasts, which are cells found in skin, meninges, bones and other organs).
- Organ-and-cell-combination specific: The new gene is expressed in different celltypes in different organs. For example, it can be expressed in the fibroblasts of the bones, but not in the fibroblasts of the skin.
Our application has to allow researchers to describe where the gene is expressed in an animal. Our interface is currently something like:
In reality, the part above the "expressed in" is much busier, and the whole thing is a part of a more complicated form.
I am unhappy with the design, because it does not support any of the cases mentioned above especially well:
if a gene is expressed in all cells of a specific organ, the researcher would have to type lots of cell types for each organ (or will enter something nonsensical like "all" - we accept the creation of new cell types by users)
if a gene is expressed in all organs which have a given celltype, the user will have to select multiple organs, and type in the same cell type for each
if a gene is expressed in some organ-and-cell combinations, the researcher still has to enter all needed organs, and to repeat the cells for each organ combination.
There is a constraint here. Our system does not know which celltypes are available in which organ. It does not even have a list of all possible organs. Both types of data are impossible to be created within our project scope, so we have to rely on user-entered data. So, while I would love to offer the user who has just selected Skin to have a checkbox "all celltypes in skin", I can't do that.
Do you have any idea how this can be managed, despite the constraint? I would welcome any suggestions which - reduce user effort - reduce visual clutter - reduce the chance of the user entering something which is not an organ or cell, but is descriptive in the context of this one model. For example, I saw a user enter "ubiquitous" in the organ field, to communicate the fact that the gene is expressed in all organs of the animal.