| Level | Attribute Type | Description | Example JSON |
---|
1 | Participant | Text Custom Field | The custom text field is to be displayed on the participant add, edit and overview pages. You need to specify the 'pattern' to if you want to restrict the text input on to follow certain condition. If links or URL are added to the text fields, they will be hyperlinked and clickable on the overview pages. | Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Country",
"type": "text",
"optional": true
} |
Example pattern to allow only capital letters. Code Block |
---|
"pattern" : "/^[A-Z]+$/" |
|
2 | Participant | Date Custom Field | 'DOB of Mother' is a field that stores date hence marked as 'date' in the property type. | Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "DOB of Mother",
"type": "date",
"dateOnly": true,
"optional": true
} |
|
3 | Participant | Note Custom Field (v9.0) | Adds a note field. You can add multiple note fields within JSON as: "name": "cpr.note1", "name": "cpr.note2", and so on. For visit: "name": "visit.note5" For specimen: "name": "specimen.note6" Info |
---|
This field will only be visible on the data entry screens. You can directly add the code in CP JSON. There is no need to create a custom form for adding notes.
|
| Code Block |
---|
{
"name": "cpr.note1",
"type": "note",
"note": "<div class=\"os-alert-container inline show\"><div class=\"alert alert-info\"><span style=\"color: #ff0000;\"><strong>Participant registration details</strong></span></li> </ul> </div></div>"
} |
|
4 | Participant | Number Custom Field with pattern | When you want to validate the pattern during data-entry, use 'type': “text”. Use case: The first digit of the age field should always be between 1 and 9. 
| Code Block |
---|
{
"name":"cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Age",
"type": "text",
"optional": true,
"pattern": "/^[1-9][0-9]*$/"
} |
|
5 | Participant | Number Custom Field (v11) | When you don’t want to validate the pattern during data-entry, we use 'type': “number” (supported in v11). | Code Block |
---|
{
"name":"cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Pincode",
"type": "number",
"optional": true
} |
|
6 | Participant | Number Custom Field (With decimal values) | You need to specify the 'pattern' to allow decimal values. | Code Block |
---|
{
"name":"cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Weight",
"type": "text",
"optional": true,
"pattern": "^-?\\d+(,\\d+)*(\\.\\d+(e\\d+)?)?$"
} |
Simple example: a) Max. 2 digits before decimal point. Max. 10 digits after decimal point Code Block |
---|
"pattern": "/^\d{1,2}(\.\d{1,10})?$/" |
b) Any number of digits before decimal point. Exact 2 digits after decimal point, if any Code Block |
---|
"pattern": "/^\d+(\.\d{2,2})?$/" |
c) Same as b) but allow negative fractions as well Code Block |
---|
"pattern": "/^-?\d+(\.\d{2,2})?$" |
Explanation: a) ^ (caret) - Indicates start of string/input b) $ - end of the string/input c) ? - any character, group or pattern before this is optional d) \d - any digit 0-9 e) + - one or more occurrences of the preceding character, group, or pattern f) {m, n} - specifies the preceding character, group, or pattern should match at least m times and at max n times. Detailed explanation: ^-?: minus sign should appear at the start of the string/input. The minus sign is optional. ^-?\d+: An optional minus sign can appear at the start of the string/input. Followed by that, at least one digit (0, 9) should occur in the input string. ^-?\d+(\.\d{2,5})?$: An optional minus sign can appear at the start of the input string. Followed by that, at least one digit. An optional dot and at least 2 digits, at max 5 digits after the dot can appear. After this, no more characters can appear in the string. |
7 | Participant | DropDown Custom Field | A dropdown field from the custom form 'JSONTParticipantExtention' named 'Select Any Option' is fetched here. | Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Select Any Option",
"type": "dropdown",
"optional": true,
"listSource": {
"apiUrl": "forms/permissible-values",
"selectProp": "value",
"displayProp": "value",
"queryParams": {
"dynamic": {},
"static": {
"formName": "JSONTParticipantExtention",
"controlName": "variableName"
}
}
}
}
|
|
8 | Participant | Text area Custom Field | The custom text area field is to be displayed on the participant overview page/create participant page. | Code Block |
---|
{
"name" : "cpr.participant.extensionDetail.attrsMap.variableName",
"caption" : "Address",
"type" : "textarea",
"optional" : true
} |
|
9 | Participant | Radio Button Custom Field | The field 'Is participant Allergic?' is mapped to a field, and the options are 'Yes'/'No'.
You can also specify a default value to be populated for the field using the property 'defaultValue'. Info |
---|
Note At present, the radio button works with only inline options. |
| Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Is participant Allergic?",
"type": "radio",
"optional": true,
"options": ["Yes","No"],
"defaultValue": "Yes"
} |
|
10 | Participant | Dropdown Multiselect Custom Field | Multiple select dropdown fields from the custom form 'JSONTParticipantExtention' named Diagnosis Subtype' are fetched here. Info |
---|
NoteIn the code, the value against 'multiple' needs to be set to 'true'. Multi-select dropdown fields do not support the "defaultValue" option.
|
| Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Diagnosis Subtype",
"type": "dropdown",
"multiple": true,
"optional": true,
"listSource": {
"apiUrl": "forms/permissible-values",
"selectProp": "value",
"displayProp": "value",
"queryParams": {
"dynamic": {},
"static": {
"formName": "JSONTParticipantExtention",
"controlName": "variableName"
}
}
}
} |
|
11 | Specimen | Text | The field specimen label will be displayed only if the specimen label format is not specified or manual input for the specimen label field is allowed. This is the 'showif' condition added in the example JSON. | Code Block |
---|
{
"name": "specimen.label",
"caption": "Specimen Label",
"type": "text",
"optional": true,
"showIf": {
"op": "OR",
"rules": [{
"field": "specimen.labelFmt",
"op": "not_exist"
}, {
"field": "cp.manualSpecLabelEnabled",
"op": "exists"
}
]
}
} |
|
12 | Specimen | Text | Additional Label | Code Block |
---|
{
"name" : "specimen.additionalLabel",
"caption" : "Additional Label",
"type" : "text",
"optional" : true,
"showIf" : {
"op" : "OR",
"rules" : [ {
"field" : "specimen.labelFmt",
"op" : "not_exist"
}, {
"field" : "cp.manualSpecLabelEnabled",
"op" : "exists"
} ]
}
} |
|
13 | Specimen | Number | When adding a numeric field user can specify the 'pattern', which will allow only specific numbers. | Code Block |
---|
{
"name": "specimen.freezeThawCycles",
"caption": "Freeze Thaw Cycles",
"type": "text",
"optional": true,
"pattern": "/^[1-9][0-9]*$/"
} |
|
14 | Participant | Dropdown (OS standard field) | To retrieve the standard values from the OpenSpecimen dropdown, you must specify the type as 'pvs'. | Code Block |
---|
{
"name": "cpr.participant.gender",
"caption": "Gender",
"type": "pvs",
"attr": "gender",
"optional": "true",
"defaultValue": "Female"
} |
|
15 | Specimen | Dropdown (custom field) | A dropdown field from the custom form 'SpecimenAdditionalFields' named 'Method' is fetched here.
| Code Block |
---|
{
"name": "specimen.extensionDetail.attrsMap.variableName",
"caption": "Method",
"type": "dropdown",
"optional": true,
"listSource": {
"apiUrl": "forms/permissible-values",
"selectProp": "value",
"displayProp": "value",
"queryParams": {
"dynamic": {},
"static": {
"formName": "SpecimenAdditionalFields",
"controlName": "variableName"
}
}
}
} |
|
16 | Participant | Dropdown (custom field) with the selection of multiple options. | A dropdown field from the custom form 'lCPHExtension' named 'Diagnosis Subtype' is fetched here. All the values will be populated from the control name 'variableName'. It supports the selection of multiple options from the dropdown. In the code, the value against 'multiple' needs to be set to 'true'. | Code Block |
---|
{
"name":"cpr.participant.extensionDetail.attrsMap.variableName",
"caption": "Diagnosis Subtype",
"type": "dropdown",
"optional": true,
"multiple": true,
"listSource": {
"apiUrl": "forms/permissible-values",
"selectProp": "value",
"displayProp": "value",
"queryParams": {
"dynamic": {},
"static":{
"formName": "lCPHExtension",
"controlName": "variableName"
}
}
}
} |
|
17 | Specimen | Radiobutton | The field 'Medical database' is mapped to a field with a control name as 'variableName', and the options are 'Yes' / 'No'. You can also specify a default value to be populated for the field using the property 'defaultValue'. | Code Block |
---|
{
"name": "specimen.extensionDetail.attrsMap.variableName",
"caption": "Medical database",
"type": "radio",
"optional": true,
"options": ["Yes","No"],
"defaultValue": "Yes"
} |
|
18 | Specimen | Checkbox | While adding a checkbox, you need to use the type 'radio' and specify the value by casting them into Yes/No. | Code Block |
---|
{
"name": "specimen.incrParentFreezeThaw",
"caption": "Increment parent specimen's Freeze/Thaw cycles?",
"type": "radio",
"optional": true,
"displayExpr" : "sspecimen.incrParentFreezeThaw == '1' ? 'Yes' : 'No' ",
"options": [
{
"caption": "Yes",
"value": 1
},
{
"caption": "No",
"value": 0
}
]
} |
|
19 | Participant | Date only field | To mark a field to store the only date, use the property 'dateOnly'.
| Code Block |
---|
{
"name": "cpr.participant.birthDate",
"caption": "Birth Date",
"type": "date",
"dateOnly": true,
"optional": true
} |
|
20 | Participant | Phone Number | Default Phone number field for participant level. | Code Block |
---|
{
"name" : "cpr.participant.phoneNumber",
"caption" : "Phone Number",
"type" : "text",
"optional" : true
}, |
|
21 | Participant | Received SMS(eConsent) | Received SMS checkbox, used for eConsent | Code Block |
---|
{
"name" : "cpr.participant.textOptIn",
"caption" : "Receive SMSes",
"showInOverviewIf" : "useShowIf",
"showIf" : {
"op" : "AND",
"rules" : [ {
"field" : "cpr.participant.phoneNumber",
"op" : "exists"
} ]
},
"type" : "toggle-checkbox",
"values" : {
"trueValue" : true,
"falseValue" : false
},
"displayExpr" : "cpr.participant.textOptIn == '1' ? 'Yes' : 'No' "
}, |
|
22 | Participant | Email | Email Address Field | Code Block |
---|
{
"name" : "cpr.participant.emailAddress",
"caption" : "Email Address",
"type" : "text",
"optional" : false,
"metainfo" : {
"phi" : "true"
}
},
|
|
23 | Participant | Received Email | Received Email checkbox, used for eConsent | Code Block |
---|
{
"name" : "cpr.participant.emailOptIn",
"caption" : "Receive Emails",
"showInOverviewIf" : "useShowIf",
"showIf" : {
"op" : "AND",
"rules" : [ {
"field" : "cpr.participant.emailAddress",
"op" : "exists"
} ]
},
"type" : "toggle-checkbox",
"values" : {
"trueValue" : true,
"falseValue" : false
},
"displayExpr" : "cpr.participant.emailOptIn == '1' ? 'Yes' : 'No' "
},
|
|
24 | Participant | Subform(OS standard field) | The MRN and site fields are displayed in a subform section. Add the property 'search' helps in retrieving values in larger dropdowns. If this is not added, then only the first 100 values will be populated. The 'listAll' property shows all the sites for users who have access to CP, irrespective of which site they have access to. If you don't add this property, you will only see those sites you have access to. Add a caption to the subform field in v11 onwards to display it on the add/edit/overview pages. Without the caption, only the '+Add' sign will be visible | Code Block |
---|
{
"name": "cpr.participant.pmis",
"caption": "MRNs",
"formatType": "mrnText",
"type": "collection",
"fields": [
{
"name": "siteName",
"caption": "Site",
"type": "dropdown",
"multiple": false,
"optional": false,
"listSource": {
"apiUrl": "sites",
"displayProp": "name",
"selectProp": "name",
"queryParams": {
"dynamic": {},
"static": {
"listAll": true
},
"search": "name"
}
}
},
{
"name": "mrn",
"caption": "MRN",
"type": "text",
"optional": "true"
}
]
} |
|
25 | Participant | Subform (custom field) | A subform with two attributes - dropdown and radio button- will be displayed on the participant overview page. The subform name is SF6 which can be found in the exported form XML file. The names of the fields under the subform are specified without extensions like DD7 or RB8, for example. While specifying the control name for the dropdown fields under the subform, you must include the subform name, such as SF6.DD7. The "type": "Collection" configuration is used explicitly for subform fields. If you remove the “type”: "collection" syntax and configure the field only as “type”: “pvs” the field will be displayed as a normal dropdown and not the subform field for multiple data entries. For any field type apart from the site, user, and storage container, you need to define the type as a collection to be configured as a subform field.
Add a caption to the subform field in v11 onwards to display it on the add/edit/overview pages. Without the caption, only the '+Add' sign will be visible | Code Block |
---|
{
"name": "cpr.participant.extensionDetail.attrsMap.subform_variableName",
"caption": "Field_name",
"type": "collection",
"fields": [
{
"name": "variableName",
"caption": "Drug name",
"type": "dropdown",
"optional": true,
"listSource": {
"apiUrl": "forms/permissible-values",
"selectProp": "value",
"displayProp": "value",
"queryParams": {
"dynamic": {},
"static": {
"formName": "sVHParticipantDetails",
"controlName": "subform_variableName.variableName"
}
}
}
},
{
"name": "variableName",
"caption": "Treated with drug",
"type": "dropdown",
"optional": true,
"listSource": {
"options": ["Yes","No"]
}
}
]
} |
|
26 | Specimen | Date & time field | 'Created On' is a field that stores date and time hence marked as 'datetime' in the property type. Since this field is available only for the child samples, a skip logic is added to edit this field only when the lineage is not 'New'. | Code Block |
---|
{
"name": "specimen.createdOn",
"caption": "Created On",
"type": "datetime",
"optional": false,
"defaultValue": "current_date",
"showInOverviewIf" : "useShowIf",
"showIf": {
"op": "AND",
"rules": [
{
"field": "specimen.lineage",
"op": "!=",
"value": "'New'"
}
]
}
} |
|
27 | Visit | Dropdown | Add the Visit Cohort field with the PV dropdown values. | Code Block |
---|
{
"name" : "visit.cohort",
"caption" : "Cohort",
"type" : "pvs",
"attr" : "cohort",
"optional" : true,
"showIf" : {
"op" : "AND",
"rules" : [ {
"field" : "visit.status",
"op" : "!=",
"value" : "'Missed Collection'"
} ]
}
} |
|
28 | Visit | Event | Add Event field in dictionary | Code Block |
---|
{
"name" : "visit.eventId",
"caption" : "Event Label",
"type" : "cpe-list",
"entity" : "visit",
"optional" : false,
"listSource" : {
"selectProp" : "id",
"queryParams" : {
"dynamic" : {
"cpId" : "visit.cpId"
}
}
},
"showIf" : {
"op" : "AND",
"rules" : [ {
"field" : "visit.id",
"op" : "not_exist"
} ]
},
"showInOverviewIf": "false"
} |
|
29 | Participant | Permissible Value Field | Site Dropdown: The example is stated for the participant-level site dropdown.
| Code Block |
---|
{
"name":"cpr.participant.extensionDetail.attrsMap.variableName",
"caption" : "Site",
"type" : "dropdown",
"multiple" : false,
"optional" : false,
"listSource" : {
"apiUrl" : "sites",
"displayProp" : "name",
"selectProp" : "name",
"queryParams" : {
"dynamic" : {
"operation" : "op"
},
"static": {
"listAll": true
},
"search" : "name"
}
}
} |
|
30 | Visit | Permissible Value Field | PV dropdown values can be used in the custom field using the control type as Permissible Value. While adding the fancy control for the PV dropdown, use the unique id of the dropdown in the tag "attr": "unique_id". This appears enclosed in brackets when the user clicks a particular dropdown (See dropdown manager wiki for more details) For setting the default value to a PV dropdown fancy control, use "defaultValue": "<value>". Replace <value> with the value to be set as default. | Code Block |
---|
{
"name" : "visit.extensionDetail.attrsMap.variableName",
"caption" : "State",
"type" : "pvs",
"attr" : "state",
"selectProp":"name", // to display the value of the dropdown
"defaultValue" : "Queensland",
"optional" : true
} |
|
31 | Specimen | Permissible Value Field | There are two types of fancy controls 'User' and 'Site'. While adding the fancy control for the user, add the property "selectProp": "id". From v6.0, the ability to exclude contact users from the user list by adding "excludeType": "CONTACT" in the code block. Note |
---|
Adding 'Storage Container' in JSON workflow is not supported. |
| Code Block |
---|
{
"name": "specimen.extensionDetail.attrsMap.variableName",
"caption": "Surgeon",
"type": "user",
"defaultValue": "current_user",
"selectProp": "id",
"listSource": {
"queryParams": {
"static": {
"excludeType": "CONTACT"
}
}
}
} |
|
32 | Visit | Multi-select checkbox | The field will be displayed as a multi-select dropdown. | Code Block |
---|
{
"name": "visit.extensionDetail.attrsMap.variableName",
"caption": "Do you accept to provide your samples for research?",
"type": "pvs",
"multiple": true,
"optional": true,
"options": ["I accept","I don't accept","Unknown","Not sure"]
} |
|
33 | Specimen | File upload | Using the File upload control, you can upload any file. | Code Block |
---|
{
"name" : "specimen.extensionDetail.attrsMap.variableName",
"caption" : "Image",
"type" : "file",
"optional" : true
} |
|
34 | Specimen | Hyperlink Field | Use hyperlink control for easy navigation from one page to another. e.g., Hyperlink the parent specimen labels for easy navigation to the specimen page. | Code Block |
---|
{
"name": "specimen.parent.label",
"caption": "Parent Specimen",
"type": "span",
"url": "specimen({specimenId: specimen.parent.id})"
} |
|
35 | Specimen | Collection Status Field | The value will be shown as read-only. To make the customized view look like the default view for showing distribution status, use this code in your workflow JSON. | Code Block |
---|
{
"name": "calcSpecimen.status",
"caption": "Collection Status",
"type": "span",
"displayExpr": "fns.ifNotNull(specimen.distributionStatus, specimen.distributionStatus, specimen.status)"
} |
|
36 | Specimen | Specimen Requirement Label | How to add the specimen requirement label in the JSON nth step? Info |
---|
Note Add the same code in the dictionary and the specimenCollection section. |
| Code Block |
---|
{
"name" : "specimen.reqLabel",
"baseField" : "specimen.reqLabel",
"type" : "span"
} |
|
37 | Specimen | Yes/No Checkbox | For Participant Level: Use the below code "name":"cpr.participant.extensionDetail.attrsMap.variableName" For Visit level: Use the below code "name" : "visit.extensionDetail.attrsMap.variableName" | Code Block |
---|
{
"name" : "specimen.extensionDetail.attrsMap.variableName",
"caption" : "Missed Collection",
"type" : "toggle-checkbox",
"values" : {
"trueValue" : true,
"falseValue" : false
},
"displayExpr" : "specimen.extensionDetail.attrsMap.variableName == '1' ? 'Yes' : 'No' "
} |
|
38 | Visit | Event Label | Adds Event Label field on the visit page. | Code Block |
---|
{
"field" : "visit.eventLabel",
"name" : "visit.eventLabel",
"caption" : "Event Label",
"type" : "text",
"optional" : false
} |
|
39 | Specimen | Parent Custom Field | Adds parent custom field on the create derivative/aliquots page. | Code Block |
---|
{
"name": "specimen.parent.extensionDetail.attrsMap.variableName",
"caption" : "Parent Part",
"type" : "span"
} |
|
40 | Specimen | Create aliquots | Add a create aliquots checkbox on the create the unplanned derivative page. | Code Block |
---|
{
"name": "specimen.createAliquots",
"caption": "Create Aliquots?",
"icon": "fa fa-share-alt",
"type": "toggle-checkbox",
"width": "30px"
} |
|
41 | Specimen | Parent Specimen Qty Unit (v8.2) | Add parent specimen quantity unit on the create derivative/aliquots page.
| Code Block |
---|
{
"name" : "specimen.parent.availableQty",
"caption" : "Parent Quantity",
"type" : "span",
"width" : "120px",
"formatType" : "specimen-quantity",
"specimen" : "specimen.parent",
"measure" : "quantity"
} |
|
42 | Specimen | Parent Specimen Conc Unit (v8.2) | Add parent specimen concentration unit on the create derivative/aliquots page. | Code Block |
---|
{
"name" : "specimen.parent.concentration",
"caption" : "Concentration",
"type" : "span",
"width" : "120px",
"formatType": "specimen-quantity",
"specimen": "specimen.parent",
"measure": "concentration"
} |
|
43 | General | Tooltip (v9.0) | Adds a tooltip to fields Info |
---|
This field will only be visible on the data entry screens. |
| Code Block |
---|
{
"name": "cpr.ppid",
"caption": "PPID",
"type": "text",
"tooltip": "Unique patient registration ID within the study"
} |
|
44 | Specimen | Received By | Adds received user field on the specimen page | Code Block |
---|
{
"name" : "specimen.receivedEvent.user",
"caption" : "Received By",
"optional" : false,
"type" : "user",
"showIf" : {
"op" : "AND",
"rules" : [ {
"field" : "specimen.lineage",
"op" : "==",
"value" : "'New'"
}, {
"field" : "specimen.reqId",
"op" : "not_exist"
} ]
},
"showInOverviewIf" : "useShowIf",
"subFields" : [ {
"name" : "emailAddress",
"caption" : "Collector Email Address"
} ]
} |
|
45 | General | Image (v9.0) | Adds an image. You can add multiple images within JSON as: "name": "cpr.note1", "name": "cpr.note2", and so on. For visit: "name": "visit.note5" For participant: "name": "cpr.note1" Note |
---|
The image must be hosted on public sites where there are no CAPTCHA checks This field will only be visible on the data entry screens. You can directly add the code in CP JSON. There is no need to create a custom form for adding notes.
|
| Code Block |
---|
{
"name" : "specimen.note7",
"type" : "note",
"note" : "<div class=\"os-alert-container inline show\"><div class=\"alert alert-info\"><img src=\"https://inkseps.com/wp-content/uploads/2018/05/halftone-dot-density2.png\" alt=\"RPE Pigmentation Grading Scale\" width=\"500\" height=\"200\"/></li></ul></div></div>"
} |
|
46 | Specimen | Close parent after child creation | Closes parent specimens after the creation of child specimens in the nth step. Note |
---|
Need to be added at the parent level in the nth step |
| Code Block |
---|
{
"name" : "specimen.closeAfterChildrenCreation",
"caption" : "Close Specimen",
"type" : "toggle-checkbox",
"values" : {
"trueValue" : "true",
"falseValue" : "false"
}
} |
|
47 | Specimen | Specimen custom event | A specimen, custom event of dropdown type. Similarly, for any other type of field to be configured at specimen event level, the above attributes can be used with extension as below "name":"specimen.events.form name.variable name" Note: This is an example to include the events fields in a dictionary. This will not show the fields on the overview page. After adding the event field in the dictionary, these fields can be used in the nth step to collect the events during specimen collection. | Code Block |
---|
{
"name" : "specimen.events.tissuePreanalyticalVariables.variableName",
"caption" : "Cold Ischemia Temperature",
"type" : "dropdown",
"optional" : true,
"defaultValue" : "2 to 10°C",
"listSource" : {
"apiUrl" : "forms/permissible-values",
"selectProp" : "value",
"displayProp" : "value",
"queryParams" : {
"dynamic" : { },
"static" : {
"formName" : "tissuePreanalyticalVariables",
"controlName" : "variableName"
}
}
}
} |
|
48 | Specimen | Subform with PVS field(custom field) | A subform with a PVs field will be displayed on the specimen overview page. Consider below example: The subform variable name is ‘histological_details’ which can be found in the exported form XML file. The name of the PVs field under the subform is specified without extensions like ‘histological_qualityy’ While adding the fancy control for the PV dropdown, use the unique id of the dropdown in the tag "attr": "histological_quality". This appears enclosed in brackets when the user clicks a particular dropdown (See dropdown manager wiki for more details) Add a caption to the subform field in v11 onwards to display it on the add/edit/overview pages. Without the caption, only the '+Add' sign will be visible | Code Block |
---|
| {
"name" : "specimen.extensionDetail.attrsMap.histological_details",
"caption": "Field_name",
"type" : "collection",
"fields" : [ {
"name" : "histological_qualityy",
"caption" : "Histological quality",
"type" : "pvs",
"attr" : "histological_quality",
"optional" : true
} ]
} |
|