Appearance
8. Project Attributes
8.1. What are Project Attributes?
Project attributes store project-level information, for example Diagnostic Status. Information for individual samples in the project uses Sample Attributes, discussed in Section 9. Recording information as structured attributes — rather than as free text or in external spreadsheets — is what lets Mosaic compare, filter, and chart that information across many projects. Project attributes come in two types:
Private attributes are only available in the project they were created in. They will not be accessible to collections the project is in.
Public attributes are typically created in the Public Attributes project or a template project and can then be imported into any other project. Public attributes are visible in collections and so are useful for comparing values across projects. When a template is applied to a project (which automatically happens when a project is created inside a collection with an associated template), all public attributes in the template are imported into the newly created project.
8.2. Where Should Project Attributes Be Created?
Private attributes only exist in the project they were created in, so must be created in the project where they are to be used. Generally, project attributes need to be shared across projects and so need to be public. It is recommended that all public attributes be created in a Public Attributes project (this project exists to house attributes that are likely to be useful to all projects in Mosaic), or in a template project. For example, if we have a Cardiology collection that houses projects for patients with cardiac phenotypes, we would likely create a template project that is associated with this collection. In this case, we might create a Cardiac Phenotype project attribute in this template. All projects in this collection would then have this attribute available.
Warning! Creating attributes ad hoc inside individual case projects leads to many slightly different attributes that mean the same thing, which cannot be compared or charted together. For example, DOB and Date of Birth attributes created in different projects. Decide where an attribute belongs before creating it: if more than one project will ever need it, create it as a public attribute in a shared location, not in a case project.
8.3. Create a Project Attribute
To create a project attribute, select Project Attributes from the left menu of the project the attribute should be created in. From the Actions menu, select Create Project Attribute. This will bring up a form with a number of fields that require populating:
Name & Description
Attribute Name: you must provide a name for the attribute. Being concise but descriptive is recommended.
Attribute Description: you can optionally provide a description of this attribute.
Options
Editable Attribute: by default this is checked, which means that people will be able to edit values associated with this attribute. If deselected, users will not be able to edit this attribute's values.
Public Attribute: if checked, the attribute will be public and so can be imported into other projects. If not selected, the attribute will be private and only available in the current project.
Longitudinal Attribute: by default, attributes take a single value. If this is checked, the attribute will be longitudinal, which means that it can take multiple values, each of which will have a time stamp. For example, if the attribute is for tracking a patient's height over time, we would use a longitudinal attribute (see Section 8.7).
Data Type & Predefined Values
Data Type: you will need to choose a data type, e.g. whether this is a text, number, or time attribute (see Section 8.6 for more on choosing a type).
Predefined values: these are used with text attributes to provide users with a set of values to choose from. For example, if the attribute being created is Diagnostic Status, there could be some standard values that should be selected from, e.g. Undiagnosed, Tentative, Diagnosed.
With predefined values set, when users edit a project attribute in a project, these values are always available to be selected from:
Value(s)
A value can be set for the attribute when created. If this is a public attribute, it will have a value in each project it appears in, and so it is typical to leave this blank.
8.4. Pin a Project Attribute to Project Home
A pinned project attribute will appear as a badge at the top of the project homepage. To pin a project attribute, go to the Project Attributes tab on the project homepage and find the attribute to pin in the table. At the left of the attribute row, select the pin icon.
When selected, there are two options: Pin value to dashboard and Pin name:value to dashboard. If the value is self-explanatory, only the value needs to be pinned, but including the attribute name can add clarity to the resulting pinned badge.
Project attributes can also be pinned by default using templates.
8.5. Import Project Attributes
When a template is applied to a project, all public attributes in the template will be imported into the target project, but additional project attributes can be imported on an ad hoc basis. From the Project Attributes tab on the project homepage, select the Actions button and click Import Public Project Attributes. The table of all available attributes will have a blue checkmark at the far right of a row if the attribute is already in the project. Otherwise, click on + Add to Project to import the attribute.
8.6. Data Types
Choosing the right data type makes an attribute easier to enter consistently and more useful for filtering and charting:
- Text — for categorical or descriptive information. Pair text attributes with predefined values wherever the answer should come from a fixed set (for example, Diagnostic Status), so that everyone records the value the same way and the attribute can be charted cleanly.
- Number — for quantitative values (for example, a measurement or a count). Numeric attributes can be summarized in charts and are well suited to quality-control metrics.
- Time — for dates and times (for example, a referral or blood-draw date).
Tip: A free-text attribute is flexible but hard to compare — ten people could describe the same status ten different ways. Whenever the set of valid answers is known in advance, use a text attribute with predefined values.
8.7. Longitudinal Attributes
Most attributes hold a single current value. A longitudinal attribute instead holds a series of values, each stamped with a time, which is the right choice for anything that changes and whose history matters. A patient's height or weight, a recurring lab measurement, or a changing diagnostic status are all natural longitudinal attributes: rather than overwriting the previous value, each new entry is added with its own time, preserving the full record. Decide whether an attribute should be longitudinal when you create it, based on whether you will want to see how the value has changed over time.
8.8. Editing Attribute Values
A project attribute's value is edited from the Project Attributes page (or directly from a pinned badge on the dashboard, where available), provided the attribute is marked editable and you have permission to change it. For text attributes with predefined values, editing presents the predefined options to choose from. Marking an attribute as non-editable when you create it is a way to protect values that should not be changed by hand — for example, values populated automatically.
8.9. How Attributes Power the Rest of Mosaic
Attributes are not just record-keeping; they feed several of Mosaic's most useful features:
- Scopes of work mark certain attributes as required when a project is created, and create tasks if they are not filled in. See Creating Projects and Collections.
- Templates can supply default values for attributes so new cases start partly filled in. See Templates.
- Collections aggregate public attribute values across every constituent project, so you can review them side by side without a spreadsheet. See Collections.
- Analytics charts attribute values at the project or collection level, which is the basis of cohort-wide quality control and reporting. See Analytics and Charts.
This is why it is worth investing in well-designed, public, predefined-value attributes: a good attribute, created once in the right place, becomes a required field, a chart, and a cohort-wide column everywhere it is used.
