Got feedback or spotted a mistake?

Leave a comment at the end of this page or email contact@krishagni.com

List View Configuration

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

List view pages do not support the Custom Form fields. Eg: Forms attached at Registration Form Level, Specimen Form level etc.

What can be configured?

  1. Columns

  2. Sorting order

  3. Filters (on the right-hand side)

  4. 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 the default system-level list view configuration by uploading a new configuration file through 'Settings->Biospecimen→System Workflows'.

How to configure the CP level list view?

To configure the list view for a 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:

  1. System-wide - applies to all protocols

  2. 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

  1. Configured under the 'reserved-specimens-list-view' section of the JSON

  2. If there is no section for reserved specimens added, then the 'common-specimens-list-view' (if specified) else 'specimen-list-view' is used.

Specimen cart page

  1. Configured under the 'cart-specimens-list-view' section of the JSON

  2. 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.

  3. 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.

Order specimen list view page

  1. Configured under the "order-specimens-list-view" section of the JSON

  2. If the user is not configured any "order-specimens-list-view" in the system workflow, then OpenSpecimen uses the default configuration.

  3. Added an option to hide the empty columns by specifying the property "hideEmptyColumns": true,

Order specimens add and edit page

  1. Configured under "order-addedit-specimens" of the JSON

  2. If the user has not configured any "order-addedit-specimens" in the system workflow, then OpenSpecimen uses the default configuration.

Collection protocol list page (Implemented from v6.3 onwards) 

  1. Configured under "cp-list-view" of the JSON

  2. If the user is not configured any "cp-list-view" in the system workflow, then OpenSpecimen uses the default configuration.

Container Specimen List

  1. Configured under the "container-specimens-list-view" section of the JSON

  2. If the user has not configured any "container-specimens-list-view" in the system workflow, then OpenSpecimen uses the default configuration.

Screenshots

JSON Attributes and Uses

Expressions for other fields that can be added to the list view

 

Got feedback or spotted a mistake?

Leave a comment at the end of this page or email contact@krishagni.com