Versions Compared

Key

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

Table of Contents

Rapid Data Entry (RDE)

Introduction

...

The RDE plugin is designed for clinical study based collections where the type of specimens and collection schedule is well defined. It is dependent on well-defined label formats for participants, visits and specimens, which can be preprinted either from OpenSpecimen or generated outside.

...

The typical workflow of clinical studies is: A participant visits a clinic where the primary specimens are collected (e.g. whole blood, tissue, urine, etc.) based on the event time point (e.g. day 0 - screening, day 30 - pre-op, etc.). These primary specimens are then sent to the lab for further processing like DNA, RNA, and/or aliquoting. 

RDE can be configured to mimic this workflow. Once RDE is configured, the 'Rapid Collection' button is visible on the CP's 'View Participants' list page of the CP.

Image RemovedImage Added

Steps to register the multiple participants in one go along with specimens

...

Expand

Step1Step 1: Register participants

Data fields required for this step is configurable. Multiple participants can be registered at once. Existing participants can be entered in this step to add specimens for follow-up visits.

Image RemovedImage Added

Step2Step 2: Select visit under which the specimens needs to be accessioned

The visit selected can be different per participant. If existing participants are entered in the first step, the matching participants are populated in this step.

Image RemovedImage Added

Step3Step 3: Enter details about primary samples collected

Based on the protocol definition, the primary samples to be collected is shown for each participant and visit. User You can select the ones that are collected and mark the ones that are missed.

Image Removed

Step4, Image Added

Step 4 (Option 1): Scan aliquots inbox in the box view, - this is useful if a box scanner is used and the order of scanning the aliquots is fixed.

Different box layouts can be defined per type, CP, etc. The order of scanning the aliquots is determined by the order of requirements defined in the CP. If some samples are not processed as per CP, those slots can be left empty. 

Image Removed

Step4, Option 2: Processing aliquots: Scan aliquots directly in actual container boxes. 

The system will show a list of available storage boxes. Users can select specific boxes and scan labels or barcodes. This will mark the aliquots as collected and store them in specific boxes. For this option to work, the CP should have pre-defined label formats and pre-print option checked so that the labels are auto-generated for pending aliquots.

Image Removed

Step5: Configurable to add additional details about the aliquots. Any fields like frozen time, spun time etc. can be entered for all aliquots in this page. 

This is an optional step and can be configured to show specific fields per aliquot.

Image Removed

...

Image Added

Example JSON

URLhttp://<host>:<port>/openspecimen/rest/ng/collection-protocols/{id}/workflows
MethodPUT
Requestapplication/json
Example json


Code Block
titleExample Code
collapsetrue
[{
		"name": "dictionary",
		"data": {
			"fields": [{
				"name": "cpr.ppid",
				"caption": "Registration ID",
				"type": "text",
				"optional": true,
				"showIf": {
					"op": "OR",
					"rules": [{
						"field": "cp.ppidFmt",
						"op": "not_exist"
					}, {
						"field": "cp.manualPpidEnabled",
						"op": "exists"
					}]
				}
			},{
        "name": "cpr.registrationDate",
        "caption": "Enrollment Date",
        "type": "date",
        "optional": false,
        "defaultValue": "current_date"
      },{
					"name": "cpr.participant.empi",
					"caption": "Master Patient ID",
					"type": "text",
					"optional": true,
					"showIf": {
						"rules": [{
						"field": "mpiFmt",
						"op": "not_exist"
					}]
				}
				},{
					"name": "cpr.participant.gender",
					"caption": "Gender",
					"type": "pvs",
					"attr": "gender",
					"optional": true,
					"options": [{
							"value": "Male",
							"conceptCode": "M"
						},
						{
							"value": "Female",
							"conceptCode": "F"
						}
					]
				},
				{
         "name": "cpr.participant.ethnicities",
          "caption": "Ethnicity",
          "type": "pvs",
          "attr": "ethnicity",
          "multiple": true,
          "optional": true
        },{
         "name": "cpr.participant.races",
          "caption": "Race",
          "type": "pvs",
          "attr": "race",
          "multiple": true,
          "optional": true
        },
        {
          "name": "cpr.participant.extensionDetail.attrsMap.NT2",
          "caption": "Age",
          "type": "text",
          "pattern": "/^[1-9][0-9]*$/",
          "optional": "true"
        },
				{
					"name": "visit.eventLabel",
					"caption": "Event Label",
					"type": "dropdown",
					"multiple": false,
					"defaultValue": "Week Two",
					"listSource": {
						"apiUrl": "collection-protocol-events",
						"displayProp": "eventLabel",
						"selectProp": "eventLabel",
						"queryParams": {
							"dynamic": {
								"cpId": "visit.cpId"
							},
							"static": {}
						}
					}
				},
				{
					"name": "visit.site",
					"caption": "Visit Site",
					"type": "dropdown",
					"multiple": false,
					"optional": false,
					"listSource": {
						"apiUrl": "sites",
						"displayProp": "name",
						"selectProp": "name",
						"queryParams": {
							"dynamic": {},
							"static": {
								"listAll": true
							}
						}
					}
				},
				{
					"name": "visit.visitDate",
					"caption": "Visit Date",
					"type": "datetime",
					"defaultValue": "current_date",
					"optional": false
				},
				{
					"name": "visit.clinicalDiagnoses",
					"caption": "Clinical Diagnoses",
					"type": "pvs",
					"attr": "clinical_diagnosis",
					"optional": true,
					"defaultValue": "Not Specified",
					"multiple": true
				},
				{
					"name": "visit.comments",
					"caption": "Comments",
					"type": "textarea",
					"optional": true
				},
				{
					"name": "specimen.lineage",
					"caption": "Lineage",
					"type": "radio",
					"optional": false,
					"defaultValue": "Derived",
					"options": [{
							"value": "New",
							"caption": "Primary"
						},
						{
							"value": "Derived",
							"caption": "Derivative"
						},
						{
							"value": "Aliquot",
							"caption": "Aliquots"
						}
					]
				},
				{
					"name": "specimen.label",
					"caption": "Sample ID",
					"type": "text",
					"optional": false,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.barcode",
					"caption": "Tube Barcode",
					"type": "text",
					"optional": true
				},
				{
					"name": "specimen.parentLabel",
					"caption": "Parent Sample ID",
					"type": "text",
					"optional": false,
					"url": "specimen({specimenId: specimen.parentId})",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'New'"
						}]
					},
					"modelOpts": {
						"updateOn": "blur"
					}
				},
				{
					"name": "specimen.createdOn",
					"caption": "Created On",
					"type": "datetime",
					"optional": false,
					"defaultValue": "current_date"
				},
				{
					"name": "specimen.type",
					"caption": "Type",
					"type": "specimen-type",
					"specimen": "specimen",
					"optional": false,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.initialQty",
					"caption": "Initial Quantity",
					"type": "specimen-quantity",
					"specimen": "specimen",
					"optional": false,
					"defaultValue": 10
				},
				{
					"name": "specimen.availableQty",
					"caption": "Available Quantity",
					"type": "specimen-quantity",
					"specimen": "specimen",
					"optional": false,
					"defaultValue": 10
				},
				{
					"name": "events.SpecimenFrozenEvent.time",
					"caption": "Frozen Time",
					"type": "date",
					"optional": false,
					"defaultValue": "current_date"
				},
				{
					"name": "events.SpecimenFrozenEvent.user",
					"caption": "Frozen By",
					"type": "user",
					"defaultValue": "current_user",
					"optional": false
				},
				{
					"name": "events.SpecimenFrozenEvent.frozenMethod",
					"caption": "Frozen Method",
					"type": "dropdown",
					"optional": false,
					"listSource": {
						"apiUrl": "forms/permissible-values",
						"selectProp": "value",
						"displayProp": "value",
						"queryParams": {
							"dynamic": {},
							"static": {
								"formName": "SpecimenFrozenEvent",
								"controlName": "frozenMethod"
							}
						}
					},
					"defaultValue": "Liquid Nitrogen"
				},
				{
					"name": "specimen.storageLocation",
					"caption": "Location",
					"type": "storage-position",
					"optional": true,
					"cpId": "specimen.cpId",
					"entity": "specimen",
					"url": "container-detail.locations({containerId: specimen.storageLocation.id})",
					"subFields": [{
							"name": "name",
							"caption": "Container Name"
						},
						{
							"name": "positionY",
							"caption": "Container Row"
						},
						{
							"name": "positionX",
							"caption": "Container Column"
						}
					]
				},
				{
					"name": "specimen.pathology",
					"caption": "Pathological Status",
					"type": "pvs",
					"attr": "pathology_status",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.biohazards",
					"caption": "Biohazards",
					"type": "pvs",
					"attr": "specimen-biohazard",
					"optional": true,
					"multiple": true,
					"defaultValue": "[\"A\", \"Z\"]",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.collectionEvent.user",
					"caption": "Collection User",
					"type": "user",
					"defaultValue": "current_user",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					},
					"subFields": [{
						"name": "emailAddress",
						"caption": "Collector Email Address"
					}]
				},
				{
					"name": "specimen.collectionEvent.container",
					"caption": "Collection Container",
					"type": "pvs",
					"attr": "collection-container",
					"optional": true,
					"defaultValue": "Not Specified",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},
				{
					"name": "specimen.collectionEvent.procedure",
					"caption": "Collection Procedure",
					"type": "pvs",
					"attr": "collection-procedure",
					"defaultValue": "Not Specified",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},{
				  "name": "specimen.receivedEvent.user",
				  "caption": "Processing User",
				  "type": "user",
				  "defaultValue": "current_user",
				  "showIf": {
				    "op": "AND",
				    "rules": [{
				      "field": "specimen.lineage",
				      "op": "==",
				      "value": "'New'"
				    }]
				  },
				  "subFields": [{
				    "name": "emailAddress",
				    "caption": "Processor Email Address"
				  }]
				},
				{
					"name": "specimen.receivedEvent.receivedQuality",
					"caption": "Processing Quality",
					"type": "pvs",
					"attr": "received-quality",
					"defaultValue": "Acceptable",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.lymphocyticPct",
					"caption": "Lymphocytic Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.necrosisPct",
					"caption": "Necrosis Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.totalCellularityPct",
					"caption": "Total Cellularity Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenCellReviewEvent.viableCellPct",
					"caption": "Viable Cell Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Cell'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenFluidEvent.cellCount",
					"caption": "Cell Count",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Fluid'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenMolecularReviewEvent.absorbanceAt260",
					"caption": "Absorbance at 260",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Molecular'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenMolecularReviewEvent.absorbanceAt280",
					"caption": "Absorbance at 280",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Molecular'"
						}]
					}
				}
			]
		}
	},
	{
		"name": "rde",
		"data": {
			"regFields": [{
				"name": "cpr.ppid",
				"baseField": "cpr.ppid"
			},{
					"name": "cpr.registrationDate",
					"baseField": "cpr.registrationDate"
				},
        {
					"name": "cpr.participant.empi",
					"baseField": "cpr.participant.empi"
				},
        {
					"name": "cpr.participant.gender",
					"baseField": "cpr.participant.gender"
				},
				{
					"name": "cpr.participant.ethnicities",
					"baseField": "cpr.participant.ethnicities"
				},
        {
					"name": "cpr.participant.races",
					"baseField": "cpr.participant.races"
				},{
					"name": "cpr.participant.extensionDetail.attrsMap.NT2",
					"baseField": "cpr.participant.extensionDetail.attrsMap.NT2"
				}
			],
			"visitFields": [
				[{
						"name": "visit.site",
						"baseField": "visit.site"
					},

					{
						"name": "visit.visitDate",
						"baseField": "visit.visitDate"
					}
				],
				[{
					"name": "visit.clinicalDiagnoses",
					"baseField": "visit.clinicalDiagnoses"
				},
				{
					"name": "visit.comments",
					"baseField": "visit.comments",
					"width": "100%"
				}]
			],
			"specimenFields": [
				
				{
					"title": "Serum Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Serum'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							"baseField": "specimen.barcode",
							"type": "span"
						},
						{
							"name": "specimen.parentLabel",
							"baseField": "specimen.parentLabel",
							"type": "span"
						},
						{
							"name": "specimen.createdOn",
							"baseField": "specimen.createdOn"
						},{
							"name": "specimen.storageLocation",
							"baseField": "specimen.storageLocation"
						}
					]
				},
				{
					"title": "Plasma Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Plasma'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							"baseField": "specimen.barcode",
							"type": "span"
						},
						{
							"name": "specimen.parentLabel",
							"baseField": "specimen.parentLabel",
							"type": "span"
						},
						{
							"name": "specimen.createdOn",
							"baseField": "specimen.createdOn"
						},{
							"name": "specimen.storageLocation",
							"baseField": "specimen.storageLocation"
						}
					]
				},
				{
					"title": "Urine Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Urine'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							"baseField": "specimen.barcode",
							"type": "span"
						},
						{
							"name": "specimen.parentLabel",
							"baseField": "specimen.parentLabel",
							"type": "span"
						},
						{
							"name": "specimen.createdOn",
							"baseField": "specimen.createdOn"
						},{
							"name": "specimen.storageLocation",
							"baseField": "specimen.storageLocation"
						}
					]
				}
			],
			"showPrintLabels": false,
			"missedReasonReq": false,
			"boxScanning": true,
			"boxLayouts": [
				{
					"rows": 8,
					"columns": 12,
					"newRowOnChange": ["ppid", "type"],
					"cellWidth": "200px",
					"criteria": {
						"op": "OR",
						"rules": [
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Plasma'"
							},
							{
								"field": "specimen.

...

type",
								"op": "==",
								"value": "'Serum'"
							}
						]
					}
				},{
					"rows": 8,
					"columns": 6,
					"newRowOnChange": ["ppid", "type"],
					"cellWidth": "200px",
					"criteria": {
						"op": "AND",
						"rules": [
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Urine'"
							}
						]
					}
				}
			],
			"emailNotifs": {}
		}
	},{
			"name": "participant-list-view",
			"data": {
					"columns": [
							{
									"expr": "Participant.ppid",
									"caption": "Participant Protocol ID",
									"metainfo": {
											"showLink": "true"
									}
							},
							{
									"expr": "Participant.empi",
									"caption": "Master Patient Index"
							},
							{
									"expr": "Participant.regDate",
									"caption": "Registration Date"
							}
					],
					"criteria": "Participant.id exists",
					"orderBy": [
							{
									"expr": "Participant.regDate",
									"direction": "desc"
							}
					],
					"filters": [
							{
									"expr": "Participant.ppid",
									"caption": "Participant Protocol ID",
									"searchType": "contains"
							},
							{
									"expr": "Participant.empi",
									"caption": "Master Patient Index",
									"searchType": "contains",
									"metainfo": {
											"phi": "true"
									}
							},
							{
									"expr": "Participant.regDate",
									"caption": "Registration Date"
							}
					]
			}
	}
]


Step 4 (Option 2): Processing aliquots: Scan aliquots directly in actual container boxes

The system will show a list of available storage boxes. You can select specific boxes and scan labels or barcodes. This will mark the aliquots as collected and store them in specific boxes.

Note

For this option to work, the CP should have pre-defined label formats and pre-print options checked so that the labels are auto-generated for pending aliquots.

Image Added

Example JSON

Example json


Code Block
titleExample Code
collapsetrue
[{
		"name": "dictionary",
		"data": {
			"fields": [{
				"name": "cpr.ppid",
				"caption": "Registration ID",
				"type": "text",
				"optional": true,
				"showIf": {
					"op": "OR",
					"rules": [{
						"field": "cp.ppidFmt",
						"op": "not_exist"
					}, {
						"field": "cp.manualPpidEnabled",
						"op": "exists"
					}]
				}
			},{
        "name": "cpr.registrationDate",
        "caption": "Enrollment Date",
        "type": "date",
        "optional": false,
        "defaultValue": "current_date"
      },{
					"name": "cpr.participant.empi",
					"caption": "Master Patient ID",
					"type": "text",
					"optional": true,
					"showIf": {
						"rules": [{
						"field": "mpiFmt",
						"op": "not_exist"
					}]
				}
				},{
					"name": "cpr.participant.gender",
					"caption": "Gender",
					"type": "pvs",
					"attr": "gender",
					"optional": true,
					"options": [{
							"value": "Male",
							"conceptCode": "M"
						},
						{
							"value": "Female",
							"conceptCode": "F"
						}
					]
				},
				{
         "name": "cpr.participant.ethnicities",
          "caption": "Ethnicity",
          "type": "pvs",
          "attr": "ethnicity",
          "multiple": true,
          "optional": true
        },{
         "name": "cpr.participant.races",
          "caption": "Race",
          "type": "pvs",
          "attr": "race",
          "multiple": true,
          "optional": true
        },
        {
          "name": "cpr.participant.extensionDetail.attrsMap.NT2",
          "caption": "Age",
          "type": "text",
          "pattern": "/^[1-9][0-9]*$/",
          "optional": "true"
        },
				{
					"name": "visit.eventLabel",
					"caption": "Event Label",
					"type": "dropdown",
					"multiple": false,
					"defaultValue": "Week Two",
					"listSource": {
						"apiUrl": "collection-protocol-events",
						"displayProp": "eventLabel",
						"selectProp": "eventLabel",
						"queryParams": {
							"dynamic": {
								"cpId": "visit.cpId"
							},
							"static": {}
						}
					}
				},
				{
					"name": "visit.site",
					"caption": "Visit Site",
					"type": "dropdown",
					"multiple": false,
					"optional": false,
					"listSource": {
						"apiUrl": "sites",
						"displayProp": "name",
						"selectProp": "name",
						"queryParams": {
							"dynamic": {},
							"static": {
								"listAll": true
							}
						}
					}
				},
				{
					"name": "visit.visitDate",
					"caption": "Visit Date",
					"type": "datetime",
					"defaultValue": "current_date",
					"optional": false
				},
				{
					"name": "visit.clinicalDiagnoses",
					"caption": "Clinical Diagnoses",
					"type": "pvs",
					"attr": "clinical_diagnosis",
					"optional": true,
					"defaultValue": "Not Specified",
					"multiple": true
				},
				{
					"name": "visit.comments",
					"caption": "Comments",
					"type": "textarea",
					"optional": true
				},
				{
					"name": "specimen.lineage",
					"caption": "Lineage",
					"type": "radio",
					"optional": false,
					"defaultValue": "Derived",
					"options": [{
							"value": "New",
							"caption": "Primary"
						},
						{
							"value": "Derived",
							"caption": "Derivative"
						},
						{
							"value": "Aliquot",
							"caption": "Aliquots"
						}
					]
				},
				{
					"name": "specimen.label",
					"caption": "Sample ID",
					"type": "text",
					"optional": false,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.barcode",
					"caption": "Tube Barcode",
					"type": "text",
					"optional": true
				},
				{
					"name": "specimen.parentLabel",
					"caption": "Parent Sample ID",
					"type": "text",
					"optional": false,
					"url": "specimen({specimenId: specimen.parentId})",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'New'"
						}]
					},
					"modelOpts": {
						"updateOn": "blur"
					}
				},
				{
					"name": "specimen.createdOn",
					"caption": "Created On",
					"type": "datetime",
					"optional": false,
					"defaultValue": "current_date"
				},
				{
					"name": "specimen.type",
					"caption": "Type",
					"type": "specimen-type",
					"specimen": "specimen",
					"optional": false,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.initialQty",
					"caption": "Initial Quantity",
					"type": "specimen-quantity",
					"specimen": "specimen",
					"optional": false,
					"defaultValue": 10
				},
				{
					"name": "specimen.availableQty",
					"caption": "Available Quantity",
					"type": "specimen-quantity",
					"specimen": "specimen",
					"optional": false,
					"defaultValue": 10
				},
				{
					"name": "events.SpecimenFrozenEvent.time",
					"caption": "Frozen Time",
					"type": "date",
					"optional": false,
					"defaultValue": "current_date"
				},
				{
					"name": "events.SpecimenFrozenEvent.user",
					"caption": "Frozen By",
					"type": "user",
					"defaultValue": "current_user",
					"optional": false
				},
				{
					"name": "events.SpecimenFrozenEvent.frozenMethod",
					"caption": "Frozen Method",
					"type": "dropdown",
					"optional": false,
					"listSource": {
						"apiUrl": "forms/permissible-values",
						"selectProp": "value",
						"displayProp": "value",
						"queryParams": {
							"dynamic": {},
							"static": {
								"formName": "SpecimenFrozenEvent",
								"controlName": "frozenMethod"
							}
						}
					},
					"defaultValue": "Liquid Nitrogen"
				},
				{
					"name": "specimen.storageLocation",
					"caption": "Location",
					"type": "storage-position",
					"optional": true,
					"cpId": "specimen.cpId",
					"entity": "specimen",
					"url": "container-detail.locations({containerId: specimen.storageLocation.id})",
					"subFields": [{
							"name": "name",
							"caption": "Container Name"
						},
						{
							"name": "positionY",
							"caption": "Container Row"
						},
						{
							"name": "positionX",
							"caption": "Container Column"
						}
					]
				},
				{
					"name": "specimen.pathology",
					"caption": "Pathological Status",
					"type": "pvs",
					"attr": "pathology_status",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.biohazards",
					"caption": "Biohazards",
					"type": "pvs",
					"attr": "specimen-biohazard",
					"optional": true,
					"multiple": true,
					"defaultValue": "[\"A\", \"Z\"]",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "!=",
							"value": "'Aliquot'"
						}]
					}
				},
				{
					"name": "specimen.collectionEvent.user",
					"caption": "Collection User",
					"type": "user",
					"defaultValue": "current_user",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					},
					"subFields": [{
						"name": "emailAddress",
						"caption": "Collector Email Address"
					}]
				},
				{
					"name": "specimen.collectionEvent.container",
					"caption": "Collection Container",
					"type": "pvs",
					"attr": "collection-container",
					"optional": true,
					"defaultValue": "Not Specified",
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},
				{
					"name": "specimen.collectionEvent.procedure",
					"caption": "Collection Procedure",
					"type": "pvs",
					"attr": "collection-procedure",
					"defaultValue": "Not Specified",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},{
				  "name": "specimen.receivedEvent.user",
				  "caption": "Processing User",
				  "type": "user",
				  "defaultValue": "current_user",
				  "showIf": {
				    "op": "AND",
				    "rules": [{
				      "field": "specimen.lineage",
				      "op": "==",
				      "value": "'New'"
				    }]
				  },
				  "subFields": [{
				    "name": "emailAddress",
				    "caption": "Processor Email Address"
				  }]
				},
				{
					"name": "specimen.receivedEvent.receivedQuality",
					"caption": "Processing Quality",
					"type": "pvs",
					"attr": "received-quality",
					"defaultValue": "Acceptable",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.lineage",
							"op": "==",
							"value": "'New'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.lymphocyticPct",
					"caption": "Lymphocytic Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.necrosisPct",
					"caption": "Necrosis Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenTissueReviewEvent.totalCellularityPct",
					"caption": "Total Cellularity Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Tissue'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenCellReviewEvent.viableCellPct",
					"caption": "Viable Cell Percentage",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Cell'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenFluidEvent.cellCount",
					"caption": "Cell Count",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Fluid'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenMolecularReviewEvent.absorbanceAt260",
					"caption": "Absorbance at 260",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Molecular'"
						}]
					}
				},
				{
					"name": "specimen.events.SpecimenMolecularReviewEvent.absorbanceAt280",
					"caption": "Absorbance at 280",
					"type": "text",
					"optional": true,
					"showIf": {
						"op": "AND",
						"rules": [{
							"field": "specimen.specimenClass",
							"op": "==",
							"value": "'Molecular'"
						}]
					}
				}
			]
		}
	},
	{
		"name": "rde",
		"data": {
			"regFields": [{
				"name": "cpr.ppid",
				"baseField": "cpr.ppid"
			},{
					"name": "cpr.registrationDate",
					"baseField": "cpr.registrationDate"
				},
        {
					"name": "cpr.participant.empi",
					"baseField": "cpr.participant.empi"
				},
        {
					"name": "cpr.participant.gender",
					"baseField": "cpr.participant.gender"
				},
				{
					"name": "cpr.participant.ethnicities",
					"baseField": "cpr.participant.ethnicities"
				},
        {
					"name": "cpr.participant.races",
					"baseField": "cpr.participant.races"
				},{
					"name": "cpr.participant.extensionDetail.attrsMap.NT2",
					"baseField": "cpr.participant.extensionDetail.attrsMap.NT2"
				}
			],
			"visitFields": [
				[{
						"name": "visit.site",
						"baseField": "visit.site"
					},

					{
						"name": "visit.visitDate",
						"baseField": "visit.visitDate"
					}
				],
				[{
					"name": "visit.clinicalDiagnoses",
					"baseField": "visit.clinicalDiagnoses"
				},
				{
					"name": "visit.comments",
					"baseField": "visit.comments",
					"width": "100%"
				}]
			],
			"specimenFields": [		
				{
					"title": "Serum Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Serum'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							"baseField": "specimen.barcode",
							"type": "span"
						},
						{
							"name": "specimen.parentLabel",
							"baseField": "specimen.parentLabel",
							"type": "span"
						},
						{
							"name": "specimen.createdOn",
							"baseField": "specimen.createdOn"
						},{
							"name": "specimen.storageLocation",
							"baseField": "specimen.storageLocation"
						}
					]
				},
				{
					"title": "Plasma Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Plasma'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							"baseField": "specimen.barcode",
							"type": "span"
						},
						{
							"name": "specimen.parentLabel",
							"baseField": "specimen.parentLabel",
							"type": "span"
						},
						{
							"name": "specimen.createdOn",
							"baseField": "specimen.createdOn"
						},{
							"name": "specimen.storageLocation",
							"baseField": "specimen.storageLocation"
						}
					]
				},
				{
					"title": "Urine Aliquots",
					"criteria": {
						"op": "AND",
						"rules": [{
								"field": "specimen.lineage",
								"op": "==",
								"value": "'Aliquot'"
							},
							{
								"field": "specimen.type",
								"op": "==",
								"value": "'Urine'"
							}
						]
					},
					"fields": [{
							"name": "specimen.label",
							"baseField": "specimen.label",
							"type": "span"
						},
						{
							"name": "specimen.barcode",
							

...

"

...

baseField": "

...

specimen.barcode",
							

...

"

...

type": "

...

span"

...

						},
						

...

{
			

...

				

...

"

...

name": 

...

"specimen.parentLabel",
							"

...

baseField": 

...

"specimen.parentLabel",
							"

...

type": 

...

"

...

span"

...


						

...

},
					

...

	{
							"

...

name": "

...

specimen.createdOn",
							"

...

baseField": 

...

"specimen.createdOn"
						

...

},{

...

							"

...

name": "specimen.

...

storageLocation",
							

...

"

...

baseField": "

...

specimen.storageLocation"

...


						}
		

...

			]
				}
			

...

],
			

...

"showPrintLabels": false,
			

...

"missedReasonReq": false,
			

...

"boxScanning": false,
			"emailNotifs": {},
            "spmnScanning" : { }
		}
	},
{
			"name": "participant-list-view",
			"data": {
					"columns": [
							{
									"expr": "Participant.ppid",
									"caption": "Participant Protocol ID",
									"metainfo": {
											"showLink": "true"
									}
							},
							{
									"expr": "Participant.empi",
									"caption": "Master Patient Index"
							},
							{
									"expr": "Participant.regDate",
									"caption": "Registration Date"
							}
					],
					"criteria": "Participant.id exists",
					"orderBy": [
							{
									"expr": "Participant.regDate",
									"direction": "desc"
							}
					],
					"filters": [
							{
									"expr": "Participant.ppid",
									"caption": "Participant Protocol ID",
									"searchType": "contains"
							},
							{
									"expr": "Participant.empi",
									"caption": "Master Patient Index",
									"searchType": "contains",
									"metainfo": {
											"phi": "true"
									}
							},
							{
									"expr": "Participant.regDate",
									"caption": "Registration Date"
							}
					]
			}
	}
]


Step 5: Configurable to add additional details about the aliquots- any fields like frozen time, spun time etc. can be entered for all aliquots on this page

This is an optional step and can be configured to show specific fields per aliquot.

Image Added


Add visit name on participant and visit registration in RDE

(v4.3)

Expand
titleClick here to expand....

Previously on the RDE visit screen, the only visit field was 'Event name'. The system used to autogenerate the visit names according to the default format or the one provided by the user. Now the visit name can be taken as user input and used as a part of the specimen labels.

Add the below-mentioned code block in the section 'regFields' of the JSON to add the visit name field on the 'Collect Visit Details' page. Refer to page Configuring RDE for details on JSON configuration.

Code Block
{
  "name": "visit.name",
  "caption": "Requisition ID",
  "type": "text",
  "regVisit": true
}

The 'Collect Visit Details' page would look like the screenshot mentioned below, where the field 'Requisition ID' is the visit name

Image RemovedImage Added

Enable standard tree-view/nth-step specimen collection within RDE (v7.1)

This feature allows the user you to:

  1. Show the tree-view/nth step collection page. 
  2. Collection of specimens for multiple patients one after another in a loop
  3. Data entry screens look similar to single entry mode
  4. Skip the RDE configuration: If "collectionWorkflow": "standard", it shows the standard collection page

...

Expand
titleScreenshots...

Screenshots:

  1. Add multiple patients with event timepoints  → Proceed to Collect Specimens.

Image RemovedImage Added

    2. Patient-1 (RDE-TST-001): Shows standard specimen collection page based on the above JSON configuration, and it skips the RDE layout.Image RemovedImage Added

3. Shows nth steps if present in the JSON workflow as below, 

Image RemovedImage Added

4. Once submitted, it navigates to the collection page for the second patient (RDE-TST-002)

Image RemovedImage Added


Configuration to use the existing visit (v7.1)

...

Use-cases: During RDE data entry, if the above flag(lookupVisit) is set to true, below are different usecases use cases of how it will work when a timepoint time point is selected and user proceeds you can proceed to collect specimens:

Sr No.Test CaseResults
1

Only one visit exist for the time point selected

Uses the same visit and show all the pending specimen to collect

2No visit existsCreate new visit
3More than one complete visit exists - with different visit datesChoose the latest visit for collection
4One complete and one pending visit existsUses the Pending visit
5One complete and one missed visit existsUses the complete visit to collect the pending specimens
6Only 1 missed visit existsCreate new visit


Code Block
titleExample JSON (visit-lookup)
collapsetrue
[ {
  "name" : "specimenCollection",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "showVisitDetails" : true,
    "showCollectionEvent" : false,
    "showReceivedEvent" : false,
    "defReceiveQuality" : "Acceptable",
    "fieldGroups" : [ {
      "title" : "Primary Specimen Details",
      "criteria" : {
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        } ]
      },
      "enableCofrc" : false,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.receivedEvent.receivedQuality",
        "baseField" : "specimen.receivedEvent.receivedQuality"
      }, {
        "name" : "specimen.biohazards",
        "baseField" : "specimen.biohazards"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD5",
        "baseField" : "specimen.extensionDetail.attrsMap.DD5"
      }, {
        "name" : "specimen.collectionEvent.procedure",
        "baseField" : "specimen.collectionEvent.procedure"
      }, {
        "name" : "specimen.collectionEvent.time",
        "baseField" : "specimen.collectionEvent.time"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD6",
        "baseField" : "specimen.extensionDetail.attrsMap.DD6"
      }, {
        "name" : "specimen.receivedEvent.time",
        "baseField" : "specimen.receivedEvent.time"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD8",
        "baseField" : "specimen.extensionDetail.attrsMap.DD8"
      }, {
        "name" : "specimen.createdBy",
        "baseField" : "specimen.createdBy",
        "caption" : "Processed By User"
      }, {
        "name" : "specimen.createdOn",
        "baseField" : "specimen.createdOn",
        "caption" : "Processed Time"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD9",
        "baseField" : "specimen.extensionDetail.attrsMap.DD9"
      } ]
    }, {
      "title" : "Derived: Processing details",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Derived'"
        } ]
      },
      "enableCofrc" : false,
      "hideTable" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.createdOn",
        "baseField" : "specimen.createdOn",
        "caption" : "Processed Time"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD9",
        "baseField" : "specimen.extensionDetail.attrsMap.DD9"
      }, {
        "name" : "specimen.createdBy",
        "baseField" : "specimen.createdBy",
        "caption" : "Processed By User"
      } ]
    }, {
      "title" : "Frozen Details: Blood Samples",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        }, {
          "field" : "specimen.type",
          "op" : ".search('CBMC|Cord Blood, Arterial|Cord Blood, venous|Granulocytes|PBMC|Plasma, Lith Hep|Plasma, spun once, EDTA Potassium|Serum|Whole Blood|Whole blood, Clot activated|Whole Blood, EDTA|Whole Blood, FACS|Whole Blood, Lith Hep|Whole Blood, NH Trace|Whole Blood, PAX|Whole Blood, RPMI') != ",
          "value" : "-1"
        } ]
      },
      "enableCofrc" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "events.SpecimenFrozenEvent.time",
        "baseField" : "specimen.events.SpecimenFrozenEvent.time"
      }, {
        "name" : "events.SpecimenFrozenEvent.user",
        "baseField" : "specimen.events.SpecimenFrozenEvent.user",
        "caption" : "Frozen By"
      }, {
        "name" : "events.SpecimenFrozenEvent.comments",
        "baseField" : "specimen.events.SpecimenFrozenEvent.comments"
      }, {
        "name" : "events.SpecimenFrozenEvent.frozenMethod",
        "baseField" : "specimen.events.SpecimenFrozenEvent.frozenMethod",
        "caption" : "Frozen Method",
        "defaultValue" : "Not Specified",
        "hideColumn" : true
      } ]
    }, {
      "title" : "Frozen Details: Other Samples",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        }, {
          "field" : "specimen.type",
          "op" : ".search('CBMC|Cord Blood, Arterial|Cord Blood, venous|Granulocytes|PBMC|Plasma, Lith Hep|Plasma, spun once, EDTA Potassium|Serum|Whole Blood|Whole blood, Clot activated|Whole Blood, EDTA|Whole Blood, FACS|Whole Blood, Lith Hep|Whole Blood, NH Trace|Whole Blood, PAX|Whole Blood, RPMI|Placenta, MR|Placenta, MM|Placenta, MRNA|Placenta|Placenta, MB|Placenta, PVC|Placenta, PV|Placenta, PVRNA|Placenta, PD|Placenta, membrane|Placenta, biopsy') == ",
          "value" : "-1"
        } ]
      },
      "enableCofrc" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "events.SpecimenFrozenEvent.time",
        "baseField" : "specimen.events.SpecimenFrozenEvent.time"
      }, {
        "name" : "events.SpecimenFrozenEvent.user",
        "baseField" : "specimen.events.SpecimenFrozenEvent.user",
        "caption" : "Frozen By"
      }, {
        "name" : "events.SpecimenFrozenEvent.comments",
        "baseField" : "specimen.events.SpecimenFrozenEvent.comments"
      }, {
        "name" : "events.SpecimenFrozenEvent.frozenMethod",
        "baseField" : "specimen.events.SpecimenFrozenEvent.frozenMethod",
        "caption" : "Frozen Method",
        "defaultValue" : "Not Specified",
        "hideColumn" : true
      } ]
    }, {
      "title" : "Viability for CBMC/PBMC",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        }, {
          "field" : "specimen.type",
          "op" : ".search('CBMC|PBMC') != ",
          "value" : "-1"
        } ]
      },
      "enableCofrc" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.NT4",
        "baseField" : "specimen.extensionDetail.attrsMap.NT4",
        "caption" : "Viability"
      } ]
    }, {
      "title" : "Aliquot: Processing details",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        } ]
      },
      "enableCofrc" : true,
      "hideTable" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.createdOn",
        "baseField" : "specimen.createdOn",
        "caption" : "Processed Time"
      }, {
        "name" : "specimen.createdBy",
        "baseField" : "specimen.createdBy",
        "caption" : "Processed By User"
      } ]
    } ]
  }
}, {
  "name" : "rde",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "lookupVisit" : "true",
    "collectionWorkflow" : "standard",
    "regFields" : [ {
      "name" : "cpr.ppid",
      "baseField" : "cpr.ppid",
      "caption" : "ORIGINS Pregnancy Number"
    }, {
      "name" : "cpr.participant.birthDate",
      "baseField" : "cpr.participant.birthDate",
      "caption" : "Date Of Birth",
      "width" : "40px"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD5",
      "baseField" : "cpr.participant.extensionDetail.attrsMap.DD5",
      "caption" : "Origins Study Status",
      "width" : "40px",
      "type" : "span"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD15",
      "baseField" : "cpr.participant.extensionDetail.attrsMap.DD15",
      "caption" : "Mother Consent Form Level",
      "width" : "40px",
      "type" : "span"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.MLB16",
      "baseField" : "cpr.participant.extensionDetail.attrsMap.MLB16",
      "caption" : "Is the mother part of Nested Study?",
      "width" : "40px",
      "type" : "span"
    } ],
    "visitFields" : [ [ {
      "name" : "visit.visitDate",
      "baseField" : "visit.visitDate"
    } ] ],
    "specimenFields" : [ {
      "title" : "Collection Event",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        } ]
      },
      "enableCofrc" : false,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.initialQty",
        "baseField" : "specimen.initialQty"
      }, {
        "name" : "specimen.collectionEvent.user",
        "baseField" : "specimen.collectionEvent.user"
      }, {
        "name" : "specimen.collectionEvent.time",
        "baseField" : "specimen.collectionEvent.time"
      } ]
    }, {
      "title" : "Maternal Urine Type",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Urine, random'"
        } ]
      },
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD2",
        "baseField" : "specimen.extensionDetail.attrsMap.DD2"
      } ]
    }, {
      "title" : "Maternal Breast Expression Type",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Breast Milk'"
        } ]
      },
      "enableCofrc" : false,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.extensionDetail.attrsMap.DD3",
        "baseField" : "specimen.extensionDetail.attrsMap.DD3"
      } ]
    }, {
      "title" : "Urine Aliquot Details",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        }, {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Urine, random'"
        } ]
      },
      "enableCofrc" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.initialQty",
        "baseField" : "specimen.initialQty"
      }, {
        "name" : "specimen.storageLocation",
        "baseField" : "specimen.storageLocation"
      }, {
        "name" : "events.SpecimenFrozenEvent.frozenMethod",
        "baseField" : "specimen.events.SpecimenFrozenEvent.frozenMethod",
        "hideColumn" : true
      }, {
        "name" : "events.SpecimenFrozenEvent.time",
        "baseField" : "specimen.events.SpecimenFrozenEvent.time"
      } ]
    }, {
      "title" : "Breast Milk Aliquot Details",
      "criteria" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        }, {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Breast Milk'"
        } ]
      },
      "enableCofrc" : true,
      "fields" : [ {
        "name" : "specimen.label",
        "baseField" : "specimen.label",
        "type" : "span"
      }, {
        "name" : "specimen.type",
        "baseField" : "specimen.type",
        "type" : "span"
      }, {
        "name" : "specimen.initialQty",
        "baseField" : "specimen.initialQty"
      }, {
        "name" : "specimen.storageLocation",
        "baseField" : "specimen.storageLocation"
      }, {
        "name" : "events.SpecimenFrozenEvent.frozenMethod",
        "baseField" : "specimen.events.SpecimenFrozenEvent.frozenMethod",
        "hideColumn" : true
      }, {
        "name" : "events.SpecimenFrozenEvent.time",
        "baseField" : "specimen.events.SpecimenFrozenEvent.time"
      } ]
    } ],
    "showPrintLabels" : false,
    "missedReasonReq" : false,
    "boxScanning" : true,
    "boxLayouts" : [ {
      "rows" : 8,
      "columns" : 12,
      "newRowOnChange" : [ "ppid" ],
      "cellWidth" : "200px",
      "criteria" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Serum'"
        } ]
      }
    }, {
      "rows" : 6,
      "columns" : 8,
      "newRowOnChange" : [ "ppid" ],
      "cellWidth" : "200px",
      "criteria" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Plasma, Lith Hep'"
        } ]
      }
    }, {
      "rows" : 8,
      "columns" : 8,
      "newRowOnChange" : [ "ppid" ],
      "cellWidth" : "200px",
      "criteria" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Breast Milk'"
        } ]
      }
    }, {
      "rows" : 10,
      "columns" : 10,
      "newRowOnChange" : [ "ppid" ],
      "cellWidth" : "200px",
      "criteria" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Urine, random'"
        } ]
      }
    } ],
    "emailNotifs" : { },
    "spmnScanning" : { }
  }
}, {
  "name" : "dictionary",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "fields" : [ {
      "name" : "cpr.ppid",
      "caption" : "ORIGINS Pregnancy Number",
      "type" : "text",
      "optional" : false,
      "showIf" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "cp.ppidFmt",
          "op" : "not_exist"
        }, {
          "field" : "cp.manualPpidEnabled",
          "op" : "exists"
        } ]
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.NT28",
      "caption" : "ORIGINS Unique ID",
      "type" : "text",
      "optional" : true
    }, {
      "name" : "cpr.participant.birthDate",
      "caption" : "Date of Birth",
      "type" : "date",
      "dateOnly" : true,
      "optional" : true
    }, {
      "name" : "cpr.registrationDate",
      "caption" : "Registration Date",
      "type" : "date",
      "dateOnly" : true,
      "optional" : true,
      "defaultValue" : "current_date"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DP3",
      "caption" : "Estimated Date of Delivery",
      "type" : "date",
      "optional" : true
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD20",
      "caption" : "Birthing Hospital",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD20"
          }
        }
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST29",
      "caption" : "Please specify other Hospital",
      "type" : "text",
      "optional" : true
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD13",
      "caption" : "Obstetrician",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD13"
          }
        }
      },
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "cpr.participant.extensionDetail.attrsMap.DD20",
          "op" : "==",
          "value" : "'JHC Private'"
        } ]
      }
    }, {
      "name" : "cpr.participant.deathDate",
      "caption" : "Deceased Date",
      "type" : "date",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "cpr.participant.vitalStatus",
          "op" : "==",
          "value" : "'Deceased'"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD5",
      "caption" : "ORIGINS Study Status",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD5"
          }
        }
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DP6",
      "caption" : "Date of withdrawal",
      "type" : "date",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "cpr.participant.extensionDetail.attrsMap.DD5",
          "op" : "==",
          "value" : "'Withdrawn'"
        } ]
      },
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.DP6"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD7",
      "caption" : "Level of Withdrawal",
      "type" : "dropdown",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "cpr.participant.extensionDetail.attrsMap.DD5",
          "op" : "==",
          "value" : "'Withdrawn'"
        } ]
      },
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD7"
          }
        }
      },
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.DD7"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DP8",
      "caption" : "Date Samples Destroyed",
      "type" : "date",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "cpr.participant.extensionDetail.attrsMap.DD5",
          "op" : "==",
          "value" : "'Withdrawn'"
        }, {
          "field" : "cpr.participant.extensionDetail.attrsMap.DD7",
          "op" : "==",
          "value" : "'No further follow-up with samples destroyed'"
        } ]
      },
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.DP8"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.RB9",
      "caption" : "Has the mother consented to DNA analysis?",
      "type" : "radio",
      "optional" : true,
      "options" : [ "Yes", "No" ]
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD11",
      "caption" : "Enrolment Gestation",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD11"
          }
        }
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.TA14",
      "caption" : "Comments",
      "type" : "textarea",
      "optional" : true
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.DD15",
      "caption" : "Mother Consent Form Level",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "DD15"
          }
        }
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.MLB16",
      "caption" : "Is the mother part of Nested Study?",
      "type" : "dropdown",
      "multiple" : true,
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "participantInfoForm",
            "controlName" : "MLB16"
          }
        }
      }
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST30",
      "caption" : "SYMBA ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST30"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST31",
      "caption" : "BENEFIT ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST31"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST32",
      "caption" : "TALK ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST32"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST33",
      "caption" : "ENGAGE ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST33"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST34",
      "caption" : "AERIAL ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST34"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST35",
      "caption" : "PREGGNUT ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST35"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST36",
      "caption" : "EARLYMOVES ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST36"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST37",
      "caption" : "SCREENS ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST37"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST38",
      "caption" : "SUNPREG ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST38"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST39",
      "caption" : "ACE ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST39"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST40",
      "caption" : "MMM ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST40"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST41",
      "caption" : "CUB ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST41"
    }, {
      "name" : "cpr.participant.extensionDetail.attrsMap.ST42",
      "caption" : "COCOON ID",
      "type" : "date",
      "optional" : true,
      "showInOverviewIf" : "!!cpr.participant.extensionDetail.attrsMap.ST42"
    }, {
      "name" : "visit.name",
      "caption" : "Visit Name",
      "type" : "text",
      "optional" : true,
      "showIf" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "cp.visitNameFmt",
          "op" : "not_exist"
        }, {
          "field" : "cp.manualVisitNameEnabled",
          "op" : "exists"
        } ]
      }
    }, {
      "name" : "visit.status",
      "caption" : "Status",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "options" : [ {
          "value" : "Pending"
        }, {
          "value" : "Missed Collection"
        }, {
          "value" : "Complete"
        } ],
        "displayProp" : "value",
        "selectProp" : "value"
      }
    }, {
      "name" : "visit.missedBy",
      "caption" : "Missed By",
      "type" : "user",
      "defaultValue" : "current_user",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "==",
          "value" : "'Missed Collection'"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "visit.missedReason",
      "caption" : "Missed Reason",
      "type" : "pvs",
      "attr" : "missed-visit-reason",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "==",
          "value" : "'Missed Collection'"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "visit.visitDate",
      "caption" : "Visit Date",
      "type" : "date",
      "defaultValue" : "current_date",
      "optional" : false
    }, {
      "name" : "visit.site",
      "caption" : "Site",
      "type" : "dropdown",
      "multiple" : false,
      "optional" : false,
      "listSource" : {
        "apiUrl" : "sites",
        "displayProp" : "name",
        "selectProp" : "name",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "listAll" : true
          }
        }
      },
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "!=",
          "value" : "'Missed Collection'"
        } ]
      }
    }, {
      "name" : "visit.clinicalDiagnoses",
      "caption" : "Clinical Diagnoses",
      "type" : "pvs",
      "attr" : "clinical_diagnosis",
      "optional" : true,
      "multiple" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "!=",
          "value" : "'Missed Collection'"
        } ]
      }
    }, {
      "name" : "visit.clinicalStatus",
      "caption" : "Clinical Status",
      "type" : "pvs",
      "attr" : "clinical-status",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "!=",
          "value" : "'Missed Collection'"
        } ]
      }
    }, {
      "name" : "visit.surgicalPathologyNumber",
      "caption" : "Surgical Pathology Number",
      "type" : "text",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "visit.status",
          "op" : "!=",
          "value" : "'Missed Collection'"
        } ]
      }
    }, {
      "name" : "visit.comments",
      "caption" : "Comments",
      "type" : "textarea",
      "optional" : true
    }, {
      "name" : "specimen.label",
      "caption" : "Label",
      "type" : "text",
      "optional" : true,
      "showIf" : {
        "op" : "OR",
        "rules" : [ {
          "field" : "specimen.labelFmt",
          "op" : "not_exist"
        }, {
          "field" : "cp.manualSpecLabelEnabled",
          "op" : "exists"
        } ]
      }
    }, {
      "name" : "specimen.barcode",
      "caption" : "Barcode",
      "type" : "text",
      "optional" : true
    }, {
      "name" : "specimen.lineage",
      "caption" : "Lineage",
      "type" : "radio",
      "optional" : false,
      "options" : [ {
        "value" : "New",
        "caption" : "New"
      }, {
        "value" : "Derived",
        "caption" : "Derived"
      }, {
        "value" : "Aliquot",
        "caption" : "Aliquot"
      } ]
    }, {
      "name" : "specimen.status",
      "caption" : "Collection Status",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "selectProp" : "value",
        "displayProp" : "value",
        "options" : [ {
          "value" : "Collected"
        }, {
          "value" : "Missed Collection"
        }, {
          "value" : "Pending"
        } ]
      }
    }, {
      "name" : "specimen.type",
      "caption" : "Type",
      "type" : "specimen-type",
      "specimen" : "specimen",
      "optional" : false,
      "defaultValue" : "Not Specified",
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "!=",
          "value" : "'Aliquot'"
        } ]
      }
    }, {
      "name" : "specimen.initialQty",
      "caption" : "Initial Quantity",
      "type" : "specimen-quantity",
      "specimen" : "specimen",
      "optional" : true
    }, {
      "name" : "specimen.availableQty",
      "caption" : "Available Quantity",
      "type" : "specimen-quantity",
      "showInOverviewIf" : "useShowIf",
      "specimen" : "specimen",
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'Aliquot'"
        } ]
      },
      "optional" : true
    }, {
      "name" : "specimen.concentration",
      "caption" : "Concentration",
      "type" : "specimen-quantity",
      "specimen" : "specimen",
      "measure" : "concentration",
      "pattern" : "/^([0-9]+|[0-9]*\\.?[0-9]+[e]?[+-]?[0-9]*)$/",
      "optional" : true
    }, {
      "name" : "specimen.parentLabel",
      "caption" : "Parent Specimen",
      "type" : "text",
      "optional" : false,
      "url" : "specimen({specimenId: specimen.parentId})",
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "!=",
          "value" : "'New'"
        } ]
      },
      "modelOpts" : {
        "updateOn" : "blur"
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.biohazards",
      "caption" : "Biohazards",
      "type" : "pvs",
      "multiple" : true,
      "attr" : "specimen-biohazard",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD5",
      "caption" : "Method of transport",
      "type" : "dropdown",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD5"
          }
        }
      }
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD6",
      "caption" : "Collection Details",
      "type" : "dropdown",
      "showInOverviewIf" : "!!specimen.extensionDetail.attrsMap.DD6",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD6"
          }
        }
      }
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD8",
      "caption" : "Received Details",
      "type" : "dropdown",
      "showInOverviewIf" : "!!specimen.extensionDetail.attrsMap.DD8",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD8"
          }
        }
      }
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD9",
      "caption" : "Processing Details",
      "type" : "dropdown",
      "showInOverviewIf" : "!!specimen.extensionDetail.attrsMap.DD9",
      "optional" : true,
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD9"
          }
        }
      }
    }, {
      "name" : "specimen.storageLocation",
      "caption" : "Location",
      "type" : "storage-position",
      "optional" : true,
      "cpId" : "specimen.cpId",
      "entity" : "specimen",
      "url" : "container-detail.locations({containerId: specimen.storageLocation.id})",
      "subFields" : [ {
        "name" : "name",
        "caption" : "Container Name"
      }, {
        "name" : "positionY",
        "caption" : "Container Row"
      }, {
        "name" : "positionX",
        "caption" : "Container Column"
      } ]
    }, {
      "name" : "specimen.createdOn",
      "caption" : "Created On",
      "type" : "datetime",
      "optional" : false,
      "copyValueFn" : "function(firstRowVal, currentVal) { if (!!currentVal) { return currentVal; } else { return ''; } }",
      "defaultValue" : "current_date",
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "!=",
          "value" : "'New'"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.createdBy",
      "caption" : "Created By",
      "type" : "user",
      "defaultValue" : "current_user",
      "optional" : true,
      "copyValueFn" : "function(firstRowVal, currentVal) { if (!!currentVal) { return currentVal; } else { return ''; } }",
      "listSource" : {
        "queryParams" : {
          "static" : {
            "excludeType" : "CONTACT"
          }
        }
      }
    }, {
      "name" : "specimen.freezeThawCycles",
      "caption" : "Freeze Thaw Cycles",
      "type" : "text",
      "optional" : true,
      "pattern" : "/^[0-9][0-9]*$/"
    }, {
      "name" : "specimen.incrParentFreezeThaw",
      "caption" : "Increment parent specimen's Freeze/Thaw cycles?",
      "type" : "radio",
      "optional" : true,
      "options" : [ {
        "caption" : "Yes",
        "value" : 1
      }, {
        "caption" : "No",
        "value" : 0
      } ],
      "showInOverviewIf" : "!!specimen.incrParentFreezeThaw"
    }, {
      "name" : "specimen.comments",
      "caption" : "Comments",
      "type" : "textarea",
      "optional" : true
    }, {
      "name" : "specimen.collectionEvent.time",
      "caption" : "Collection Date & Time",
      "type" : "datetime",
      "defaultValue" : "current_date",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.reqId",
          "op" : "not_exist"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.collectionEvent.user",
      "caption" : "Collector",
      "type" : "user",
      "defaultValue" : "current_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"
      } ]
    }, {
      "name" : "specimen.collectionEvent.container",
      "caption" : "Collection Container",
      "type" : "pvs",
      "attr" : "collection-container",
      "optional" : true,
      "defaultValue" : "Not Specified",
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.reqId",
          "op" : "not_exist"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.collectionEvent.procedure",
      "caption" : "Collection Procedure",
      "type" : "pvs",
      "attr" : "collection-procedure",
      "copyValueFn" : "function(firstRowVal, currentVal) { if (!!currentVal) { return currentVal; } else { return ''; } }",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.reqId",
          "op" : "not_exist"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.receivedEvent.user",
      "caption" : "Receiver",
      "type" : "user",
      "defaultValue" : "current_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"
      } ]
    }, {
      "name" : "specimen.receivedEvent.time",
      "caption" : "Received Date & Time",
      "type" : "datetime",
      "defaultValue" : "current_date",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.reqId",
          "op" : "not_exist"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.receivedEvent.receivedQuality",
      "caption" : "Received Quality",
      "type" : "pvs",
      "attr" : "received-quality",
      "defaultValue" : "Acceptable",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.lineage",
          "op" : "==",
          "value" : "'New'"
        }, {
          "field" : "specimen.reqId",
          "op" : "not_exist"
        } ]
      },
      "showInOverviewIf" : "useShowIf"
    }, {
      "name" : "specimen.externalIds",
      "type" : "collection",
      "fields" : [ {
        "name" : "name",
        "caption" : "External Name",
        "type" : "text",
        "optional" : true
      }, {
        "name" : "value",
        "caption" : "External Value",
        "type" : "text",
        "optional" : true
      } ]
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD2",
      "caption" : "Urine Type",
      "type" : "dropdown",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Urine'"
        } ]
      },
      "showInOverviewIf" : "useShowIf",
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD2"
          }
        }
      }
    }, {
      "name" : "specimen.extensionDetail.attrsMap.DD3",
      "caption" : "Breast Milk Expression Type",
      "type" : "dropdown",
      "optional" : true,
      "showIf" : {
        "op" : "AND",
        "rules" : [ {
          "field" : "specimen.type",
          "op" : "==",
          "value" : "'Breast Milk'"
        } ]
      },
      "showInOverviewIf" : "useShowIf",
      "listSource" : {
        "apiUrl" : "forms/permissible-values",
        "selectProp" : "value",
        "displayProp" : "value",
        "queryParams" : {
          "dynamic" : { },
          "static" : {
            "formName" : "maternalUrineAndBreastMilk",
            "controlName" : "DD3"
          }
        }
      }
    }, {
      "name" : "specimen.extensionDetail.attrsMap.NT4",
      "caption" : "Viability",
      "type" : "text",
      "optional" : true,
      "showInOverviewIf" : "!!specimen.extensionDetail.attrsMap.NT4",
      "pattern" : "/^[1-9][0-9]*$/"
    }, {
      "name" : "specimen.events.SpecimenFrozenEvent.time",
      "caption" : "Frozen Time",
      "type" : "datetime",
      "defaultValue" : "current_date"
    }, {
      "name" : "specimen.events.SpecimenFrozenEvent.user",
      "caption" : "Frozen By",
      "type" : "user",
      "defaultValue" : "current_user"
    }, {
      "name" : "specimen.events.SpecimenFrozenEvent.frozenMethod",
      "caption" : "Frozen Method",
      "type" : "pvs",
      "attr" : "frozen_method",
      "defaultValue" : "Not Specified"
    }, {
      "name" : "specimen.events.SpecimenFrozenEvent.comments",
      "caption" : "Frozen Comments",
      "type" : "textarea"
    } ],
    "onValueChange" : {
      "specimen.createdBy" : [ "function(opts) {", "  var user = opts.fns.get(opts.object, opts.field); ", "  opts.viewCtx.setToAllChildren(opts.object, opts.field, user, true); ", "}" ],
      "specimen.createdOn" : [ "function(opts) {", "  var user = opts.fns.get(opts.object, opts.field); ", "  opts.viewCtx.setToAllChildren(opts.object, opts.field, user, true); ", "}" ],
      "specimen.extensionDetail.attrsMap.DD9" : [ "function(opts) {", "  var user = opts.fns.get(opts.object, opts.field); ", "  opts.viewCtx.setToAllChildren(opts.object, opts.field, user, true); ", "}" ]
    }
  }
}, {
  "name" : "visitsTab",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "occurred" : [ {
      "field" : "visit.name",
      "baseField" : "visit.name",
      "width" : "150px"
    }, {
      "field" : "visit.visitDate",
      "baseField" : "visit.visitDate",
      "width" : "100px"
    } ],
    "anticipatedEvents" : [ {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('SYMBA') > -1 && cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('PREGGNUT') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Sym4Mnth", "Preg4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('SYMBA') > -1 && cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('BENEFIT') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Sym4Mnth", "Ben4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('PREGGNUT') > -1 && cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('BENEFIT') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Preg4Mnth", "Ben4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('SYMBA') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Sym4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('PREGGNUT') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Preg4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.MLB16.indexOf('BENEFIT') > -1",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y", "Ben4Mnth" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.DD15 == 'Full ORIGINS Project Participation'",
      "events" : [ "30WK", "20WK", "28WK", "36WK", "Birth", "2M", "4M", "6M", "1Y", "3Y", "5Y" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.DD15 == 'Routine Data Collection'",
      "events" : [ "30WK" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.DD15 == 'Release of Australian Govt Data only'",
      "events" : [ "None" ]
    }, {
      "rule" : "cpr.participant.extensionDetail.attrsMap.DD15 == null && cpr.participant.extensionDetail.attrsMap.MLB16== null",
      "events" : [ "None" ]
    } ]
  }
}, {
  "name" : "participant-list-view",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "columns" : [ {
      "expr" : "Participant.ppid",
      "caption" : "ORIGINS Pregnancy Number",
      "metainfo" : {
        "showLink" : "true"
      }
    }, {
      "expr" : "Participant.customFields.participantInfoForm.oRIGINSUniqueID",
      "caption" : "ORIGINS Unique ID"
    }, {
      "expr" : "Participant.regDate",
      "caption" : "Registration Date"
    }, {
      "expr" : "Participant.customFields.participantInfoForm.participantStudyStatus",
      "caption" : "Participant Study Status"
    }, {
      "expr" : "Participant.customFields.participantInfoForm.participantConsentFormLevel",
      "caption" : "Participant Consent Form Level"
    }, {
      "expr" : "concat(years_between(current_date(), Participant.dateOfBirth), \" yrs\")",
      "caption" : "Age"
    } ],
    "criteria" : "Participant.id exists",
    "orderBy" : [ {
      "expr" : "Participant.regDate",
      "direction" : "desc"
    } ],
    "filters" : [ {
      "expr" : "Participant.ppid",
      "caption" : "ORIGINS Pregnancy Number",
      "searchType" : "contains"
    }, {
      "expr" : "Participant.customFields.participantInfoForm.oRIGINSUniqueID",
      "caption" : "Unique ID"
    }, {
      "expr" : "Participant.customFields.participantInfoForm.participantStudyStatus",
      "caption" : "Participant Study Status"
    }, {
      "expr" : "Participant.customFields.participantInfoForm.participantConsentFormLevel",
      "caption" : "Participant Consent Form Level"
    }, {
      "expr" : "Participant.regDate",
      "caption" : "Registration Date"
    }, {
      "expr" : "years_between(current_date(), Participant.dateOfBirth)",
      "caption" : "Age",
      "temporal" : "true",
      "metainfo" : {
        "phi" : "true"
      }
    } ]
  }
}, {
  "name" : "specimenTree",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "defaultExpandDepth" : 0,
    "fields" : [ {
      "name" : "specimen",
      "caption" : "Description",
      "type" : "specimen-description",
      "width" : "30%"
    }, {
      "name" : "specimen.label",
      "baseField" : "specimen.label",
      "width" : "20%"
    }, {
      "name" : "specimen.storageLocation",
      "baseField" : "specimen.storageLocation",
      "width" : "20%"
    }, {
      "name" : "specimen.availableQty",
      "baseField" : "specimen.availableQty",
      "caption" : "Volume",
      "width" : "10%"
    } ]
  }
}, {
  "name" : "specimen-list-view",
  "view" : null,
  "ctrl" : null,
  "data" : {
    "columns" : [ {
      "expr" : "Specimen.label",
      "caption" : "Label",
      "metainfo" : {
        "showLink" : "true"
      }
    }, {
      "expr" : "Specimen.createdOn",
      "caption" : "Created On"
    }, {
      "expr" : "Specimen.type",
      "caption" : "Type"
    }, {
      "expr" : "Specimen.availableQty",
      "caption" : "Quantity",
      "metainfo" : {
        "showUnit" : "true",
        "measure" : "quantity"
      }
    }, {
      "expr" : "concat(Specimen.specimenPosition.containerName, concat_ws(\"\", concat(\" (\", Specimen.specimenPosition.formattedPos, \")\")))",
      "caption" : "Location"
    } ],
    "criteria" : "Specimen.collectionStatus = \"Collected\" and Specimen.activityStatus = \"Active\"",
    "orderBy" : [ {
      "expr" : "Specimen.createdOn",
      "direction" : "desc"
    } ],
    "filters" : [ {
      "expr" : "Specimen.label",
      "caption" : "Label",
      "searchType" : "contains"
    }, {
      "expr" : "Specimen.lineage",
      "caption" : "Lineage"
    }, {
      "expr" : "Specimen.createdOn",
      "caption" : "Created On"
    }, {
      "expr" : "Specimen.type",
      "caption" : "Type"
    }, {
      "expr" : "Specimen.availableQty",
      "caption" : "Quantity"
    } ]
  }
} ]

...

For creating planned specimens (as per requirements defined in collection protocol), the user has to you must include the 'Requirement Code' within the deposit screen. This will allow the system to map the specimen being created to the requirement in the CP.

Define the requirement code in the dictionary as below, which will be displayed as a dropdown of existing codes within that event of the CP:

...

The below example shows how the requirement code can be used within the deposit table of SDE. The fields defined in the requirement can be skipped here so that the value has defaulted from the requirement. For example, in the below example the specimen type is not included in the below example so that the system will take it from the corresponding requirement.


Screenshot:

Create container along with specimen

...

In the screen where specimens are collected, the user has the you have an option to create containers like boxes too. This is useful for a workflow where a lab receives a box of specimens, and they want to store the box as is in their freezers. This workflow reduces the step of creating the empty box first.

...