Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents

Introduction

Customs forms can be hidden/shown based on the basis of rules defined in the JSON. This is useful to display specific various forms for specific use cases.

Info

Configure this section outside the dictionary section.

For exampleExample use cases:

  1. Display “Tissue Review Event” only for tissue specimens.

  2. Display “Breast Pathology Annotation form” only if the anatomic site is “Breast”.

  3. Display “Screening form” only for “Screening” visit visits.

  4. Display “Consent forms” only for the “Consent Collector” role

Below is the JSON code template:

...

  1. .

Template of Code

Code Block
languagejson
[
  /* Other workflows */ 
  {
    "name": "formDataEntryRules",
    "data": {
      "participant": [
         /* Rules for participant form data entry */
        /* Records available for use in rule conditions are user, cpr, and cp */
        ],

        "visit": [
        /* Rules for visits form data entry */
        /* Records available for use in rule conditions are user, cp, cpr, and visit */
      ],
       "specimen": [
        /* Rules for specimens form data entry */
        /* Records available for use in rule conditions are user, cp, cpr, visit, and specimen */
      ],

      "specimenEvent": [
        /* Rules for specimens form data entry */
        /* Records available for use in rule conditions are user, cp, cpr, visit, and specimen */
      ]
    }
  },
  
  /* Other workflows */
]

Rule Configuration

Suppose the case is 'Pregnancy tests form not applicable to male participants'. The rule for this case is:

...

Attributes

Attributes

Description

when

Add conditions as to when the form should be displayed.

forms

Name of form that needs to be displayed.

Example: ‘Pregnancy tests form’ does not apply to male participants

Code Block
languagejson
[
  {
    "name": "formDataEntryRules",
    "data": {
      "participant" : 
        [ 
  		   {
    		  "when" : "cpr.participant.gender != 'Male'",
     	       "forms" : [ "pregnancyTestForm" ]
   		   } 
        ]
      }
  }
]

Here, 

"When": Conditions

"forms": List of forms going to be displayed.

...


]

Examples

Level

Case and Description

Example JSON

1. Participant

Shows forms based on

the basis of code

CP’s field at the participant level.

In JSON Code, "XYZ Form" is a form name.

Code Block
languagejson
 "participant" :  [ 
{
    "when" : "cp.shortTitle == 'Testing rule CP'",
    "forms" : ["XYZForm"]
 }
]

2. Participant

Shows forms based on the

basis of the

participant's core fields at the participant level.

Code Block
languagejson
"participant" :  [ 
{
      "when" : "cpr.participant.gender == 'Male'",
      "forms" : [ "smokingHistoryForm" ]
 }, 
 {
      "when" : "cpr.participant.gender == 'Female'",
      "forms" : [ "pregnancyTestForm" ]
 },
 {
      "when" : "cpr.participant.vitalStatus == 'Alive'",
      "forms" : [ "participantFamilyHistory" ]
 }
]

3. Participant

Shows forms based on

the basis of

the participant's custom fields at the participant level.

Add multiple conditions with the help of 'AND(&&)' and 'OR (||)' operators.


Code Block
languagejson
"participant" :  [ 
{
    "when" : "cpr.participant.extensionDetail.attrsMap.DD2 == 'Married'",
    "forms" : [ "partnerSDetails" ]
}, {
    "when" : "cpr.participant.extensionDetail.attrsMap.DD2 == 'Married' && cpr.participant.gender == 'Female'",
    "forms" : [ "partnerSDetails" ]
}
]

4. Participant

Shows forms based on

the basis of

user role at the participant level.

Code Block
languagejson
"participant" : [
{

  "when": "user.hasRole('Coordinator')",

  
"forms": ["participantRuleForm"]
}
]

5. Participant

Show forms based on

the basis of

value exist or not in another field.

Code Block
languagejson
"participant" : [
      {
        "when": "cpr.participant.gender != null",
        "forms": ["XYZForm"]
      },
      {
        "when": "cpr.participant.gender == null",
        "forms": ["ABCForm"]
      }
]

6. Visit

Shows forms based on

the basis of

CP’s field at the visit level.

Code Block
languagejson
"visit" :  [ 
    {
       "when" : "cp.shortTitle == 'Testing rule CP'",
       "forms" : ["XYZForm"]
    }
]

7. Visit

Shows forms based on

the basis of

participant's and visit's core fields at the visit level.

Code Block
languagejson
"visit" :  [ 
    {
      "when": "visit.status == 'Complete'",
      "forms": ["visitFormRule"]
    },
    {
       "when": "cpr.participant.gender == 'Male'",
       "forms": ["visitInfoCollectedByCoordinator"]
    }
]

8. Visit

Shows forms based on the

basis of the

visit's custom fields at the visit level.

Code Block
languagejson
"visit" :  [ 
      {
        "when": "visit.extensionDetail.attrsMap.CB8 == 'Yes'",
        "forms": ["visitInfoCollectedByCoordinator"]
      }
]

9. Visit

Shows forms based on

the basis of

user role at the visit level.

Code Block
languagejson
"visit" :  [ 
    {
        "when" : "user.hasRole('Coordinator'),
        "forms" : [ "visitInfoCollectedByCoordinator" ]
    }
]

10. Specimen

Shows forms based on

the basis of

participant’s, visit's, and specimen's core fields at the specimen level.

Add multiple conditions with the help of 'AND(&&)' and 'OR (||)' operators


Code Block
languagejson
"specimen" :  [ 
  {
        "when": "specimen.type == 'Whole Blood'",
        "forms": ["fluidInfoForm"]
  },
  {
        "when": "specimen.type == 'DNA' || specimen.type == 'RNA'",
        "forms": ["support_6200", "cPOneSpecimenForm"]
  },
  {
        "when": "cpr.participant.gender == 'Female'",
        "forms": ["specimenAdditionalRule"]
  },
  {
        "when": "visit.clinicalStatus == 'Follow-up'",
        "forms": ["fluidInfoForm"]
  },
  {
        "when": "specimen.lineage == 'New'",
        "forms": ["techSpecimenForm"]
  },
  {
        "when": "cpr.participant.gender == 'Female' && visit.clinicalStatus == 'Follow-up' && specimen.lineage == 'New'",
        "forms": ["specimenAdditionalRule","fluidInfoForm","techSpecimenForm"]
  }
]

11. Specimen

Shows forms based on

the basis of

the specimen's custom fields at the specimen level.

Code Block
languagejson
"specimen" :  [ 
   {
        "when": ""specimen.extensionDetail.attrsMap.DD4 == 'A' ",
        "forms": ["fluidInfoForm"]
    }
]

12. Specimen

Shows forms

on the basis of

based on user role at the specimen level.

Code Block
languagejson
  "specimen" :  [ 
   {
        "when": "user.hasRole('Technician') && specimen.lineage == 'New'",
        "forms": ["techSpecimenForm"]
   }
]

13. Specimen

Shows forms based on

the basis of

a range of availability field.

Code Block
languagejson
"specimen" :  [ 
    {
        "when": "specimen.availableQty > 5",
        "forms": ["specimenAdditionalRule"]
    }
]

14. Specimen Event

Case:

If CP collects the tissue samples from the participants, then that CP has the 'Tissue Review Event' form under the specimen.

Code Block
languagejson
"specimenEvent": [
    {
        "when": "specimen.specimenClass == 'Tissue'",
        "forms": ["SpecimenTissueReviewEvent"]
    }
]

15. Specimen Event

Shows forms based on

the basis of

participant's, visit's, and specimen's core fields at the specimen event level.

Add multiple conditions with the help of 'AND(&&)' and 'OR (||)' operators

Code Block
languagejson
"specimenEvent": [
    {
        "when": "cpr.participant.gender == 'Female' && visit.clinicalStatus == 'Follow-up' && specimen.specimenClass == 'Tissue'",
        "forms": ["SpecimenTissueReviewEvent"]
    }
]

16. No Forms

Does

It does not show any forms at the derivative level

Code Block
languagejson
"specimen" : [
    {
      "when" : "specimen.lineage == 'Derived'",
      "forms" : [ "" ]
    } 
]

17. Visit

Show form based on event

labelcode

label

Code Block
languagejson
{
    "name": "formDataEntryRules",
    "data": {


    

"visit": [
	{
      "when": "visit.status == 'Complete' && visit.eventLabel == 'BASELINE'",
      "forms": ["rde_visit_testing"]
    }, 

{
      "when": "visit.status == 'Complete'",
      "forms": [""]
    }
  

]


 }

}

,

18. Consent

Case:

Consent forms should be displayed to those who have access to the consent form. For example, ‘Consent Collector’.

Code Block
languagejson
"participant" :  [ 
    {
        "when": "user.hasRole('Consent Collector')",
        "forms": ["consentForm"]
    } 
]

Example JSON

View file
nameST_PyJ_DT_workflows.json