- Created by Satish Lakhani, last modified by Ankita Chavan on Dec 01, 2021
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 67 Next »
Introduction
Below are the pages with lists like the view across the application. These list views can be configurable:
Participants
Specimens
Specimen cart
Reserved Specimens
Collection Protocol List
Order Specimen List
Container Specimen List
What can be configured?
Columns
Sorting order
Filters (on the right-hand side)
Conditional data display: Fixed criteria can be set to display only specific participants and specimens. For example, display only aliquots.
How to configure the system level list view?
A default view is shipped with the installation package and applies to all protocols. Super admins can change default system-level list view configuration by uploading a new configuration file through 'Settings->Biospecimen→SystemWorkflows'.
How to configure the CP level list view?
To configure the list view for specific CP, go to the CP overview → More → Import Workflows.
JSON Examples
Participant and Specimen List View
For participants and specimens, this configuration can be done at two levels:
System-wide - applies to all protocols
Protocol-level - overrides the system setting for that protocol
There is a separate section for each list view in the JSON, as shown below.
[ { "name": "common", "data": { "listView": "cp-specimens" } }, { "name":"participant-list-view", "data":{ "columns":[ { "expr":"Participant.ppid", "caption":"Participant Protocol ID", "metainfo":{ "showLink":"true" } }, { "expr":"concat(Participant.firstName, \" \", Participant.lastName)", "caption":"Name" }, { "expr":"Participant.regDate", "caption":"Registration Date" }, { "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":"Participant Protocol ID", "searchType":"contains" }, { "expr":"concat(Participant.firstName, \" \", Participant.lastName)", "caption":"Name", "metainfo":{ "phi":"true" } }, { "expr":"Participant.regDate", "caption":"Registration Date" }, { "expr":"years_between(current_date(), Participant.dateOfBirth)", "caption":"Age", "temporal":"true", "metainfo":{ "phi":"true" } } ] } }, { "name":"specimen-list-view", "data":{ "columns":[ { "expr":"Specimen.label", "caption":"Label", "metainfo":{ "showLink":"true" } }, { "expr":"Specimen.createdOn", "caption":"Created On" }, { "expr":"Specimen.type", "caption":"Type" }, { "expr":"Specimen.tissueSite", "caption":"Anatomic Site" }, { "expr":"Specimen.pathologicalStatus", "caption":"Pathology Status" }, { "expr":"Specimen.availableQty", "caption":"Quantity", "metainfo":{ "showUnit":"true", "measure":"quantity" } }, { "expr":"concat(Specimen.specimenPosition.containerName, \" (\", Specimen.specimenPosition.positionDimensionTwoString, \", \", Specimen.specimenPosition.positionDimensionOneString, \")\")", "caption":"Location" } ], "criteria":"Specimen.availableQty > 0 and Specimen.collectionStatus = \"Collected\"", "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.tissueSite", "caption":"Anatomic Site" }, { "expr":"Specimen.pathologicalStatus", "caption":"Pathology Status" }, { "expr":"Specimen.availableQty", "caption":"Quantity" } ] } } ]
Screenshots
Participants list view: This is a list of all registered participants of a protocol. | |
Specimen list view: This is a list of all specimens collected under a protocol. |
You can sort the list view based on specimen id, location, etc.
{ "name": "specimen-list-view", "data": { "columns": [ { "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.createdOn", "caption": "Created On" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "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.id", "direction": "asce" } ], "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.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "expr": "Specimen.availableQty", "caption": "Quantity" } ] } },
{ "name": "specimen-list-view", "data": { "columns": [ { "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.createdOn", "caption": "Created On" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "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": "concat(Specimen.specimenPosition.containerName, concat_ws(\"\", concat(\" (\", Specimen.specimenPosition.formattedPos, \")\")))", "direction": "asce" } ], "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.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "expr": "Specimen.availableQty", "caption": "Quantity" } ] } },
System Level Lists
These lists can be configured at the system level only via Settings → System Workflows:
Reserved Specimens
Cart
Collection Protocol
Order Specimen
Container Specimen
Reserved specimen list page
Configured under the 'reserved-specimens-list-view' section of the JSON
If there is no section for reserved specimens added, then the 'common-specimens-list-view' (if specified) else 'specimen-list-view' is used.
{ "name": "reserved-specimens-list-view", "view": null, "ctrl": null, "data": { "columns": [ { "expr": "Participant.empi", "caption": "MRN" }, { "expr": "concat_ws(\" \", Participant.firstName, Participant.lastName)", "caption": "Name" }, { "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Category" }, { "expr": "Specimen.creationEvent.createdBy", "caption": "Created By" }, { "expr": "concat(Specimen.specimenPosition.containerName, concat_ws(\"\", concat(\" (\", Specimen.specimenPosition.formattedPos, \")\")))", "caption": "Box Location" } ], "criteria": "Specimen.availableQty > 0 and Specimen.collectionStatus = \"Collected\"", "orderBy": [ { "expr": "Specimen.createdOn", "direction": "desc" } ], "filters": [ { "expr": "Specimen.label", "caption": "Label", "searchType": "contains" }, { "expr": "Specimen.lineage", "caption": "Lineage" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" } ] } }
Specimen cart page
Configured under the 'cart-specimens-list-view' section of the JSON
The configuration for cart specimens list view is picked from system workflow in the following order of preference: cart-specimens-list-view -> common-specimens-list-view -> specimen-list-view.
The configuration detail is the same as that for specimen-list-view specifying the columns to display in the table, filters, ordering, additional restrictions, etc.
{ "name": "cart-specimens-list-view", "data": { "columns": [ { "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.id", "caption": "Specimen ID" }, { "expr": "Specimen.createdOn", "caption": "Created On" }, { "expr": "Specimen.creationEvent.createdBy", "caption": "Created By" }, { "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 != \"Disabled\"", "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.tissueSite", "caption": "Anatomic Site" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "expr": "Specimen.availableQty", "caption": "Quantity" } ] } }
Order specimen list view page
Configured under the "order-specimens-list-view" section of the JSON
If the user is not configured any "order-specimens-list-view" in the system workflow, then OpenSpecimen uses the default configuration.
Added an option to hide the empty columns by specifying the property "hideEmptyColumns": true,
{ "name": "order-specimens-list-view", "data": { "columns": [ { "expr": "Specimen.specimenOrders.label", "caption": "Distribution Label" }, { "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.pathologicalStatus", "caption": "Pathology Status" }, { "expr": "Specimen.creationEvent.createdBy", "caption": "Created By" }, { "expr": "CollectionProtocol.shortTitle", "caption": "Collection Protocol" } ], "hideEmptyColumns": true, "criteria": "", "orderBy": [ { "expr": "Specimen.specimenOrders.itemId", "direction": "asc" } ], "filters": [ { "expr": "Specimen.label", "caption": "Label", "searchType": "contains" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "CollectionProtocol.shortTitle", "caption": "Collection Protocol" } ] } }
Order specimens add and edit page
Configured under "order-addedit-specimens" of the JSON
If the user has not configured any "order-addedit-specimens" in the system workflow, then OpenSpecimen uses the default configuration.
{ "name": "order-addedit-specimens", "data": { "columns": [ { "name": "specimen.label", "caption": "Label", "type": "text", "width": "140px" }, { "name": "specimen", "caption": "Description", "type": "specimen-description", "width": "140px" }, { "name": "specimen.cpShortTitle", "caption": "Collection Protocol", "type": "text", "width": "140px" }, { "name": "specimen.ppid", "caption": "Participant ID", "type": "text", "width": "120px" }, { "name": "specimen.collectionEvent.procedure", "caption": "Collection Procedure", "type": "text", "width": "140px" }, { "name": "specimen.storageLocation", "caption": "Location", "type": "storage-position", "width": "140px" }, { "name": "specimen.availableQty", "caption": "Available", "type": "specimen-quantity", "specimen": "specimen", "width": "100px" }, { "name": "specimen.createdBy", "caption": "Created By", "type": "user", "width": "100px" } ] } }
Collection protocol list page (Implemented from v6.3 onwards)
Configured under "cp-list-view" of the JSON
If the user is not configured any "cp-list-view" in the system workflow, then OpenSpecimen uses the default configuration.
{ "name": "cp-list-view", "data": { "columns": [ { "expr": "CollectionProtocol.shortTitle", "caption": "Title", "metainfo": { "showLink": "true" } }, { "expr": "CollectionProtocol.principalInvestigator.investigatorName", "caption": "Principal Investigator" }, { "expr": "CollectionProtocol.startDate", "caption": "Start Date" }, { "expr": "CollectionProtocol.endDate", "caption": "End Date" }, { "expr": "CollectionProtocol.customFields.cPCustomField.type", "caption": "CP Type" } ], "criteria": "CollectionProtocol.id exists", "orderBy": [ { "expr": "CollectionProtocol.shortTitle", "direction": "asc" } ], "filters": [ { "expr": "CollectionProtocol.shortTitle", "caption": "Title", "searchType": "contains" }, { "expr": "CollectionProtocol.Title", "caption": "Long Title", "searchType": "contains" }, { "expr": "CollectionProtocol.principalInvestigator.investigatorName", "caption": "Principal Investigator" }, { "expr": "CollectionProtocol.cpSites.siteName", "caption": "Repository" } ] } },
Container Specimen List
Configured under the "container-specimens-list-view" section of the JSON
If the user has not configured any "container-specimens-list-view" in the system workflow, then OpenSpecimen uses the default configuration.
{ "name": "container-specimens-list-view", "data": { "columns": [ { "expr": "Participant.ppid", "caption": "PPID", "metainfo": { "showLink": "true" } },{ "expr": "Specimen.label", "caption": "Label", "metainfo": { "showLink": "true" } },{ "expr": "Specimen.barcode", "caption": "Barcode" },{ "expr": "Specimen.lineage", "caption": "Lineage" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" },{ "expr": "CollectionProtocol.shortTitle", "caption": "Collection Protocol", "metainfo": { "showLink": "true" } }, { "expr": "Specimen.availableQty", "caption": "Quantity", "metainfo": { "showUnit": "true", "measure": "quantity" } }, { "expr": "concat(Specimen.specimenPosition.containerName, concat_ws(\"\", concat(\" (\", Specimen.specimenPosition.formattedPos, \")\")))", "caption": "Location" },{ "expr": "Specimen.createdOn", "caption": "Created On" } ], "criteria": "Specimen.collectionStatus = \"Collected\" and Specimen.activityStatus = \"Active\"", "orderBy": [ { "expr": "Specimen.createdOn", "direction": "desc" } ], "filters": [ { "expr": "Participant.ppid", "caption": "PPID", "searchType": "contains" },{ "expr": "Specimen.label", "caption": "Label", "searchType": "contains" },{ "expr": "Specimen.barcode", "caption": "Barcode" }, { "expr": "Specimen.lineage", "caption": "Lineage" }, { "expr": "Specimen.type", "caption": "Type" }, { "expr": "Specimen.tissueSite", "caption": "Anatomic Site" },{ "expr": "CollectionProtocol.shortTitle", "caption": "Collection Protocol" }, { "expr": "Specimen.availableQty", "caption": "Quantity" },{ "expr": "concat(Specimen.specimenPosition.containerName, concat_ws(\"\", concat(\" (\", Specimen.specimenPosition.formattedPos, \")\")))", "caption": "Location" },{ "expr": "Specimen.createdOn", "caption": "Created On" } ] } }
Screenshots
Reserved Specimens List: This is a list of reserved specimens of a distribution protocol. It is displayed as a separate tab within the distribution protocol. | |
Specimen Cart: This is a list of specimens added to a cart. This is accessible via 'Carts' from the menu. | |
Specimen Order Overview List: This is a list of specimens distributed under a specific order. This is displayed as a separate tab within an Order. | |
Specimen Order Add/Edit List: While performing a distribution, the specimens being distributed are displayed in this list. | |
Collection Protocol(CP) List View: This is a list of all protocols created in the system. This is accessible via the 'Collection Protocols' menu. | |
Container Specimen list view: This is a list of all specimens stored in the container. |
JSON Attributes and Uses
Attribute | Usage | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name | Name of the list configuration. | ||||||||||||||||||||||||||
data |
|
Expressions for other fields that can be added to the list view
List Page | Field Name | Expression |
---|---|---|
Participant List | MRN Site | { "expr": "Participant.medicalRecord.mrnSiteName", "caption": "Site" } |
Participant List | MRN | { "expr": "Participant.medicalRecord.medicalRecordNumber", "caption": "MRN" } |
Participant List | External Subject ID (Supported version V5.1 and onwards) | { "expr": "Participant.externalSubjectId", "caption": "External Subject ID" } |
Participant List | Date formatting("participant-list-view") (Supported version V5.2 and onwards) Refer wiki for 'Date Formats' | { "expr": "Participant.dateOfBirth", "caption": "Date Of Birth", "expr": "date_format(Participant.dateOfBirth, \"%month2%-%month_day%-%year4%\")" } |
Participant List | Consent Document Title | { "expr" : "Participant.econsents.docTitle", "caption" : "eConsent Doc Title" } |
Participant List | Consent Version | { "expr" : "Participant.econsents.docVersion", "caption" : "Version" } |
Participant List | Consent Statement | { "expr" : "Participant.econsents.stmtResponses.statement", "caption" : "Consent Statement" } |
Participant List | Consent Response | { "expr" : "Participant.econsents.stmtResponses.response", "caption" : "Response" } |
Participant List | Consent Custom Field | { "expr" : "Participant.customFields.additionalRegistration.preferredLanguage", "caption" : "Preferred Language" } |
Participant List | Consent Date | { "expr": "Participant.consentSignDate", "caption": "Date of Consent", "datatype": "date" } |
Participant List | Custom Form Fields (Participant level) Syntax: Participant.extensions.<formName>.<attributeName> <formName>: Replace it with the 'Form Name' of the custom form <attributeName>: Replace it with the 'Attribute Name' of the custom form field | { "expr": "Participant.customFields.smokingHistoryForm.dateOfSigning", "caption": "Signing Date of Smoking History Form", "datatype": "date" } |
Specimen List | Date formatting ("specimen-list-view") (Supported version V5.2 and onwards) Refer wiki for 'Date Formats' | { "expr": "Specimen.createdOn", "caption": "Created On", "expr": "date_format(Specimen.createdOn, \"%month3%-%month_day%-%year4%\")" } |
Specimen List | Add Custom field of any type dropdown, text, number, fancy control, etc
| Eg:1 Disease Status { "expr":"Specimen.customFields.wCMCSpecimenFields.diseaseStatus", "caption" : "Disease Status" } Eg:2 Technician(User Fancy Control) { "expr" : "Specimen.customFields.wCMCSpecimenFields.technician", "caption" : "Technician" }, |
Specimen List | Collection Date and Time | { "expr" : "Specimen.spmnCollRecvDetails.collTime", "caption" : "Collection Date" } |
Specimen List | Specimen Laterality | { "expr" : "Specimen.tissueSide", "caption" : "Laterality" } |
Specimen List | Visit Name | { "expr" : "SpecimenCollectionGroup.name", "caption" : "Visit Name" } |
Specimen List | Visit Custom Field Add visit custom fields to the specimen list view page:
| { "expr":"SpecimenCollectionGroup.customFields.visit_data_extension.sequence_number", "caption" : "Sequence Number" } |
CP List View | Custom Field: In 'expr', 'cPCustomFields' is a Form Name, 'type' is an attribute name. | { "expr": "CollectionProtocol.customFields.cPCustomField.type", "caption": "CP Type" } |
- No labels