@@ -10,6 +10,8 @@ const PARAM_TABLE_MAP = {
1010 structuralVariant : 'reports_structural_variants' ,
1111 smallMutation : 'reports_small_mutations' ,
1212 therapeuticTarget : 'reports_therapeutic_targets' ,
13+ mutationSignature : 'reports_mutation_signature' ,
14+ msiStatus : 'reports_msi' ,
1315} ;
1416
1517const PARAM_COLUMN_MAP = {
@@ -21,6 +23,8 @@ const PARAM_COLUMN_MAP = {
2123 structuralVariant : 'display_name' ,
2224 smallMutation : 'display_name' ,
2325 therapeuticTarget : 'therapy' ,
26+ mutationSignature : 'signature' ,
27+ msiStatus : 'score' ,
2428} ;
2529
2630const PARAM_MODEL_MAP = {
@@ -32,6 +36,8 @@ const PARAM_MODEL_MAP = {
3236 structuralVariant : 'structuralVariants' ,
3337 smallMutation : 'smallMutations' ,
3438 therapeuticTarget : 'therapeuticTarget' ,
39+ mutationSignature : 'mutationSignature' ,
40+ msiStatus : 'msi' ,
3541} ;
3642
3743const PARAM_ATTRIBUTE_MAP = {
@@ -43,6 +49,8 @@ const PARAM_ATTRIBUTE_MAP = {
4349 structuralVariant : [ 'displayName' ] ,
4450 smallMutation : [ 'displayName' ] ,
4551 therapeuticTarget : [ 'therapy' , 'context' ] ,
52+ mutationSignature : [ 'signature' , 'selected' ] ,
53+ msiStatus : [ 'score' ] ,
4654} ;
4755
4856const fuzzySearchQuery = ( searchParams ) => {
@@ -79,6 +87,31 @@ const fuzzySearchQuery = (searchParams) => {
7987 ${ fuzzyQuery ? 'INTERSECT' : '' }
8088 ${ fuzzyQuery ?? '' } ` ;
8189 fuzzyQuery = newFuzzyQuery ;
90+ } else if ( tableName === 'reports_mutation_signature' ) {
91+ const newFuzzyQuery = `SELECT "report_id"
92+ FROM (SELECT report_id, word_similarity('${ paramKeyword } ', "${ columnName } "), ${ tableName } .deleted_at AS dlt
93+ FROM ${ tableName }
94+ WHERE selected=true) AS subquery
95+ WHERE word_similarity >= ${ matchingThreshold } AND dlt IS NULL
96+ ${ fuzzyQuery ? 'INTERSECT' : '' }
97+ ${ fuzzyQuery ?? '' } ` ;
98+ fuzzyQuery = newFuzzyQuery ;
99+ } else if ( tableName === 'reports_msi' ) {
100+ let newFuzzyQuery ;
101+ if ( paramKeyword . toLowerCase ( ) === 'msi' ) {
102+ newFuzzyQuery = `SELECT "report_id"
103+ FROM ${ tableName }
104+ WHERE ${ columnName } >= 20 AND deleted_at IS NULL
105+ ${ fuzzyQuery ? 'INTERSECT' : '' }
106+ ${ fuzzyQuery ?? '' } ` ;
107+ } else if ( paramKeyword . toLowerCase ( ) === 'mss' ) {
108+ newFuzzyQuery = `SELECT "report_id"
109+ FROM ${ tableName }
110+ WHERE ${ columnName } < 20 AND deleted_at IS NULL
111+ ${ fuzzyQuery ? 'INTERSECT' : '' }
112+ ${ fuzzyQuery ?? '' } ` ;
113+ }
114+ fuzzyQuery = newFuzzyQuery ;
82115 } else {
83116 const newFuzzyQuery = `SELECT "report_id"
84117 FROM (SELECT report_id, word_similarity('${ paramKeyword } ', "${ columnName } "), ${ tableName } .deleted_at AS dlt
@@ -121,12 +154,21 @@ const fuzzySearchInclude = (searchParams, db, searchCategory) => {
121154 const tableName = PARAM_TABLE_MAP [ paramCategory ] ;
122155 const columnName = PARAM_COLUMN_MAP [ paramCategory ] ;
123156 // Construct fuzzy search query
124- const newFuzzyQuery = `SELECT "${ columnName } "
125- FROM (SELECT "${ columnName } ", word_similarity('${ paramKeyword } ', "${ columnName } ")
126- FROM ${ tableName } ) AS subquery
127- WHERE word_similarity >= ${ matchingThreshold }
128- ${ fuzzyQuery ? 'UNION' : '' }
129- ${ fuzzyQuery ?? '' } ` ;
157+ let newFuzzyQuery ;
158+ if ( tableName === 'reports_msi' ) {
159+ newFuzzyQuery = `SELECT "${ columnName } "
160+ FROM ${ tableName }
161+ ${ fuzzyQuery ? 'UNION' : '' }
162+ ${ fuzzyQuery ?? '' } ` ;
163+ } else {
164+ newFuzzyQuery = `SELECT "${ columnName } "
165+ FROM (SELECT "${ columnName } ", word_similarity('${ paramKeyword } ', "${ columnName } ")
166+ FROM ${ tableName } ) AS subquery
167+ WHERE word_similarity >= ${ matchingThreshold }
168+ ${ fuzzyQuery ? 'UNION' : '' }
169+ ${ fuzzyQuery ?? '' } ` ;
170+ }
171+
130172 fuzzyQuery = newFuzzyQuery ;
131173 }
132174 } ) ;
0 commit comments