What this is, and who it is for
A form is made of fields. The builder offers 20 field types in four categories: 16 that capture data, one section that groups other fields, one table, and four pieces of static content that capture nothing. This page says what each one is for, what it stores, what it offers on the properties panel and which checks it can carry. It is for the person drawing a form and for the person who will later read the data, because the stored value decides how a field is exported and compared.
Where to find it
In the field toolbox on the left of the builder, in seven groups, in this order: Selection, Text Input, Static Content, Numeric, Date & Time, Media, Structure. Drag a type onto the canvas, or click it to add it at the end. Which tabs the properties panel shows for the field you select depends on its type (Field properties).
What you can do
- Add a field of any type, rename its label, duplicate it (the copy is labelled "(Copy)" and its variable name gets a number:
WEIGHTbecomesWEIGHT_1, thenWEIGHT_2), move it by dragging (within the form or into a section) and remove it. - Change its type later from the Field type control at the top of the Basic tab, with the effect on captured data stated before anything changes (below).
- Search every field of the form with Ctrl+K.
Every option
Data fields
Each data field has a label, a variable name (unique on the form; typed in capitals with spaces turned into underscores), an optional description and help text, and takes its place in exports and formulas by the variable. A newly added field is named after its type and its position (TEXT_3). The keys the system stores for the types are text, textarea, email, phone, number, range, scale, date, date-time, time, radio, dropdown, multi-select, checkbox, toggle, file, section, table, heading, description, instruction and separator; they appear in exports and in the audit trail.
| Type | Palette group | What the person sees | What is stored | Tabs offered | Special to this type |
|---|---|---|---|---|---|
| Text | Text Input | One line | Text | Basic, Validation, Logic, Style, CDMS | Placeholder, default value, a unit label; checks: minimum and maximum length, pattern |
| Text Area | Text Input | Several lines | Text | Basic, Validation, Logic, Style, CDMS | Placeholder, default value; same checks as Text |
| Text Input | One line, email keyboard | Text | Basic, Validation, Logic, CDMS | Placeholder; the server checks the value is an address (something@domain.tld) | |
| Phone | Text Input | One line, telephone keyboard | Text | Basic, Validation, Logic, CDMS | Placeholder; the server checks digits and the usual punctuation, 6 to 20 characters |
| Number | Numeric | A number box | A number | Basic, Validation, Logic, CDMS | Minimum, maximum, decimal places, a normal range (or several), a unit, a formula, default value, placeholder |
| Range | Numeric | Two number boxes, From and To | Text from|to, for example 10|50 | Basic, Validation, Logic, CDMS | In the browser: From must not exceed To, the minimum applies to From and the maximum to To. The server applies only required to a Range (it cannot read from|to as a number), and the decimal-places and normal-range controls on the tab do nothing for it. No unit |
| Scale | Numeric | A row of numbered buttons from the minimum to the maximum; choosing the chosen one again clears it | A number | Basic, Validation, Logic, CDMS | The buttons run from the field's minimum to its maximum, 0 to 10 when neither is set; minimum, maximum, decimal places and a normal range are checked as for Number |
| Date | Date & Time | A calendar picker | YYYY-MM-DD | Basic, Validation, Logic, CDMS | Allow future dates, allow past dates, earliest and latest date; usable in date formulas |
| Date & Time | Date & Time | Date and time picker | Date and time text | Basic, Validation, Logic, CDMS | The same date checks; usable in date formulas |
| Time | Date & Time | A time box | HH:MM, 24-hour | Basic, Validation, Logic, CDMS | The server checks HH:MM, with seconds allowed |
| Radio | Selection | Buttons, one chosen | The chosen option's value | Basic, Validation, Logic, Style, CDMS | Options list; Other, specify; default value; layout vertical, horizontal or grid |
| Dropdown | Selection | A list, one chosen | The chosen option's value | Basic, Validation, Logic, Style, CDMS | Options list; Other, specify; default value; placeholder |
| Multi-Select | Selection | Tick boxes, several chosen | A list of values | Basic, Validation, Logic, Style, CDMS | Options list; Other, specify; minimum and maximum selections; layout |
| Checkbox | Selection | One tick box, with its label | True or false | Basic, Validation, Logic, Style, CDMS | Starts unticked; required means ticked; auto-populate; box left or right of the label |
| Toggle | Selection | Yes and No buttons, neither chosen at first | True, false or nothing | Basic, Validation, Logic, CDMS | Unanswered until chosen; required means answered (No satisfies it); auto-populate; no default value |
| File Upload | Media | A drop zone | The file's name | Basic, Validation, Logic, CDMS | Allowed file types, a size limit (25 MB suggested); no default value, no value assignment |
File Upload stores the file's name and nothing else. The file itself is not uploaded or kept by the form, and the size limit is shown on the control but not enforced; only the extension is checked against the allowed types. Use the document register for files, and a text field for a reference to one. This is also listed on Not built yet.
Choice fields. Each option has a label (what people read) and a value (what is stored and exported; they may differ, for example 1 for "Yes"). A new Radio, Dropdown or Multi-Select starts with Option A and Option B. Options are added, edited, deleted and reordered on the Basic tab. Other, specify adds a last option labelled Other whose stored value is fixed as OTHER, so it means the same thing in every export; when a person chooses it a free-text box Please specify appears and must be filled in, whether or not the field is required. The server refuses a value that is not one of the options (the not_an_option check).
- Label on the left, stored value on the right, one row per option; a row can be dragged to reorder or deleted.
- Adds a row.
- Other, specify adds the last option, labelled Other, whose stored value is always OTHER.
The panel for each type
Field properties describes the tabs one by one. The pictures here show how the panel changes from one type to the next. Every data field has the same Required switch at the top of its Validate tab (Always stops the form being marked complete. No severity.) and the same When a check fails block at the bottom, where each check the type carries is set to Query, Block or Warn; Query is the default (Validation, edit checks and their severities).
Email, Phone and Text Area
Email and Phone have no Style tab. Their Validate tab holds the text-length limits, a pattern preset and a regular expression, and one more check, Email format or Phone format, with its own severity. Text Area has the same limits and pattern but no format check, and its Basic tab offers a Default value.
- Smallest and largest number of characters.
- A pattern preset, or Custom to type a regular expression.
- The Email format check and what happens when it fails: Query (the default), Block or Warn.
- The Phone format check and its severity.
- A Text Area, unlike Email and Phone, can carry a default value.
Range and Scale
The Validate tab of both shows Min value, Max value, Decimal precision and the Normal range editor (one range for everyone, or different ranges by value) with the severity for a value outside it. For a Scale the limits and the normal range are checked as for a Number. For a Range only the browser applies the limits; the server applies Required and nothing else, and the decimal-precision and normal-range controls change nothing.
- Minimum and maximum: applied in the browser only.
- Decimal precision: does nothing for a Range.
- The normal range: does nothing for a Range.
- The buttons run from the minimum to the maximum.
- A normal range, checked on the server as for a Number.
Date, Date & Time and Time
A Date shows Allow future dates and Allow past dates, both on in a new field, and a Min date and a Max date. A Date & Time offers the same. A Time has no limits, only the Time format check and its severity.
- Two switches, both on in a new field.
- The earliest and the latest date that is accepted.
- The Time format check and its severity.
Radio, Dropdown, Multi-Select, Checkbox and Toggle
The Basic tab of a Radio, Dropdown or Multi-Select ends with the Options list and the Other, specify switch; Radio and Dropdown also offer a Default value picked from the options. Their Style tab sets the field width, the Options layout (Radio and Multi-Select) and the two emphasis switches, Highlighted and Bordered. Multi-Select adds Min selections and Max selections on its Validate tab, and Radio, Dropdown and Multi-Select carry the Answer is one of the options check. A Checkbox has a Checkbox position on its Style tab, and a Toggle has nothing to set on Validate beyond Required.
- A default value is picked from the options; No default clears it.
- Options layout: Vertical, Horizontal or Grid.
- How few and how many options may be ticked.
- The check that the answer is one of the options, with its severity.
- The box sits left or right of its label.
File Upload
The Validate tab lists the allowed file types and the largest file size in megabytes (25 in a new field). The types are checked; the size is shown and not enforced, and only the file's name is stored (above).
- Allowed extensions: checked.
- The size limit is shown, not enforced.
Section and table
| Type | What it is |
|---|---|
| Section | A titled group of other fields, with its own label, variable, description, columns (1 to 4) and visibility. See Sections, headings and layout |
| Table | A grid with typed columns and rows, fixed or added by the person. Starts with three columns (the first is the row identifier) and three rows. See Tables and repeating groups |
Static content
These four hold no data, have no variable and are never exported. They can be hidden by a visibility rule like any field.
| Type | What it shows |
|---|---|
| Heading | A line of heading text with optional smaller text below it |
| Description | A paragraph, with optional smaller text |
| Instruction | A highlighted call-out box for the person entering data |
| Separator | A horizontal line. It has no properties |
- The heading text.
- The smaller text under it.
- The text of the call-out.
- A Separator has nothing to set; its Logic tab holds only the visibility condition.
- An Instruction: a highlighted call-out for the person entering data.
Changing a field's type
Choose the new type from Field type on the Basic tab. Before anything changes, the builder asks the server whether the field has captured values (in UAT or Live) and tells you how each target type treats them:
| Tag | Meaning |
|---|---|
| Safe | Every captured value stays valid and readable (for example Text to Text Area, or Radio to Dropdown) |
| Review values | The values stay but some may no longer fit, so they are checked again (for example text to number, number to Scale, Date to Date & Time) |
| Needs options | The values are codes of a list; the new type needs its options before they can be read |
| Not compatible | The values cannot be read as the new type (anything to or from File Upload, a Range, or a choice to a date) |
| No data yet | The field holds nothing captured, so there is nothing to protect |
The dialog lists what is kept (label, variable name, position, description), what is removed (settings that belong to the old type only, such as a normal range when going from Number to Text) and what else in the form uses the field (formulas, conditions). Anything to a text type is safe; a value is kept as written.
- With no captured data, or only UAT test data that the new type can read, the change is made in place and can be undone.
- With UAT test data the new type cannot read, the type cannot be chosen; it is greyed out.
- With Live data the type cannot change in place, because it would make captured values unreadable: it is a breaking change that the server refuses at submit and at go-live. The builder offers instead to add a new field of the new type in the same place, with the same label and a related variable (
SYSBPbecomesSYSBP_TXT), and to deprecate the old one, with a reason, so it keeps its values. Formulas and rules that used the old field are flagged in the issues list until pointed at the new one.
- Applies the change.
What the system records
The design of the form (every field, its type and its settings) is saved as a revision of the version's draft and written to the audit trail (form.draft_saved); deprecating a field is study_form.field_deprecated with the reason. The values people enter are recorded as items with their field's variable, so the type and variable you choose are what the casebook, the audit trail and every export show.
What you cannot do, and why
- Give two fields the same variable name. The form cannot be made active (Preview and testing lists the check).
- Delete a field that came from a released version. It is deprecated instead.
- Change the type of a field that holds Live data in place.
- Store a file in a File Upload field.
- Put a formula on a type other than Number. Only Number offers a calculation (Formulas and calculations).
- Add a unit to Range, Scale, a date type or a choice. A unit is offered on Text and Number only.
Compliance Q&A
Yes. A value is stored in its own form (a number, a date as YYYY-MM-DD, a choice as its option value, a list for Multi-Select), not as the text shown on screen, and a later change adds a new row rather than overwriting the old.
Evidence: client modules/ecrf/form-builder/core/registry/field-registry.tsx (stored value of each type)server data-capture (items store the value and the field's variable)
No. The File Upload field records only the name of the file chosen. Source documents belong in the document register or the site's own records.
Evidence: client modules/ecrf/form-builder/runtime/fields/controls.tsx (FileControl returns the file name only)
Related
Field properties · Validation, edit checks and their severities · Tables and repeating groups · Design forms · Not built yet