SwanseaUniversityMedical / concept-library

Concept Library
https://conceptlibrary.saildatabank.com
GNU General Public License v3.0
8 stars 2 forks source link

Filters & Single search behaviour - Front End #1160

Open JackScanlon opened 1 year ago

JackScanlon commented 1 year ago

[!] Note: Currently blocked by #1276

Issue

Currently, single search behaves in the following manner:

  1. Entity-search filters are only present on entity search pages - Note: This has since been removed in favour of a shortened detail page URL that removed the ability to resolve https://domain:80/phenotypes/\w+/
  2. Single search pages only filter by common fields between entities

Goal

Goal is to:

  1. Filters for each entity type, and their child entity templates, are nested and accessible via single search
  2. Entity search pages no longer exist, only the single search page exists - all URLs that allow users to view entities of a particular class and template should just link to single search with the appropriate filters applied

Requirements

Tasks

Frontend

Hannah-Davies commented 7 months ago

Merging #1463 requirements into this issue

Specification

Create a general purpose mechanism for hierarchical classification of Phenotypes Provide filtering mechanisms so that these numerous Phenotypes don’t obscure the more complex researcher-created Phenotypes Also use these classifications as a hierarchy to classify other content within the Library

Status

Blocked tasks Filtering mechanisms are supported by the current search implementation & template. However, they're inaccessible on the base search page (will be present on individual template search) - this is blocked by https://github.com/SwanseaUniversityMedical/concept-library/issues/1160 & https://github.com/SwanseaUniversityMedical/concept-library/issues/1276 Retrieval of data Partially blocked by https://github.com/SwanseaUniversityMedical/concept-library/issues/1408 as the hierarchical data is present on this site, and the goal would be to model this feature in such a way that it mimics this functionality

Notes

Classifications Clinical domain i.e. medical specialty Disease category, i.e. in the case of disease categories defined by coding system; e.g. ICD-10 sections & children Classification by anatomical structures / bodily systems Relationships between labels Note: Need to discuss whether we want to allow users to select labels for each of these groups, or if we want to derive the labels ourselves from the disease category - I expect we would want to do the former (see below for why)

Clinical domain, disease categories and their bodily systems are all closely related - we should define a mapping between the labels, e.g. in the case of Cardiology (sub-specialty of Electrophysiology) | Long QT Syndrome | Cardiovascular system (Heart)

However, there does exist one or more relationships for some disease categories, e.g. in the case of the aforementioned labels: this could be mapped to clinical genetics; or in the case of heart failure as a result of Cardiorenal Syndrome (Cardiology & Nephrology).

To do

Backend Implement filtering methods (Note: this is partially blocked by https://github.com/SwanseaUniversityMedical/concept-library/issues/1160 and https://github.com/SwanseaUniversityMedical/concept-library/issues/1276)