Collection Protocol
In OpenSpecimen, it is possible to add custom fields at the CP level. This feature was introduced to facilitate capturing additional information at the study level. Only one custom form can be attached at the CP custom field level. So this form must have fields required for all the CPs.
Using skip logic in the custom forms, one can show/ hide these fields based on the site selected in the CP site dropdown or the site code.
Use Case: Show a custom field based on the site or site code selected in the CP site dropdown.
Show field ‘Arkansas Repository ID’ only when the site 'Arkansas Repository' is added to the CP sites
<showWhen><![CDATA[$extendedObj.cpSites.siteName = "Arkansas Repository"]]></showWhen>
When the site ‘Arkansas Repository' is not selected:
When the site ‘Arkansas Repository' is added to the list:
The field display can also be configured based on the site code, like below:
<showWhen><![CDATA[$extendedObj.cpSites.code = "AR"]]></showWhen>
The field will be displayed only when the user enters the site code as 'AR':
Orders
Since the order level custom fields are not a standalone form and are used in conjunction with the order fields, you need to use a different syntax.
Use case: The field ‘Courier Name' should only be displayed if the value for ‘Distributed Offsite’ field is 'Yes’
<showWhen><![CDATA[order.extensionDetail.attrsMap.distributed_offsite == "Yes"]]></showWhen>
If 'No' is selected, the field is not displayed:
If ‘Yes' is selected, the 'Courier Name’ field is displayed: