Skip to content

Commit e97afee

Browse files
authored
Merge pull request #274 from ao508/search-by-man
Enable querying by molecular accession number when in sample PHI mode
2 parents dc0e97e + 25f5ea3 commit e97afee

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

graphql-server/src/schemas/custom.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
QueryDashboardPatientsArgs,
1010
QueryDashboardRequestsArgs,
1111
QueryDashboardSamplesArgs,
12+
SeqDateAccessionBySampleId,
1213
TempoCohortRequestInput,
1314
} from "../generated/graphql";
1415
import { props } from "../utils/constants";
@@ -359,6 +360,34 @@ export async function buildCustomSchema(ogm: OGM) {
359360
PATIENT_DEMOGRAPHICS_CACHE_KEY
360361
) as PatientDemographicsCache;
361362

363+
// if phi enabled, query for possible mapped sample ids to add to search vals list while removing phi searchables from search vals list
364+
let dmpSampleSeqDateAccessions: Array<SeqDateAccessionBySampleId> = [];
365+
if (searchVals && canSearchPhiData({ phiEnabled, searchVals })) {
366+
dmpSampleSeqDateAccessions = await querySeqDatesByDmpSampleId(
367+
searchVals
368+
);
369+
let mappedSampleIds: string[] = [];
370+
let toRemove: string[] = [];
371+
dmpSampleSeqDateAccessions.forEach((v) => {
372+
if (
373+
v.DMP_SAMPLE_ID &&
374+
searchVals &&
375+
!searchVals.includes(v.DMP_SAMPLE_ID)
376+
) {
377+
mappedSampleIds.push(v.DMP_SAMPLE_ID);
378+
}
379+
if (
380+
v.MOLECULAR_ACCESSION_NUMBER &&
381+
searchVals &&
382+
searchVals.includes(v.MOLECULAR_ACCESSION_NUMBER)
383+
) {
384+
toRemove.push(v.MOLECULAR_ACCESSION_NUMBER);
385+
}
386+
});
387+
searchVals.push(...mappedSampleIds);
388+
searchVals = searchVals.filter((val) => !toRemove.includes(val));
389+
}
390+
362391
const addlOncotreeCodes = getAddlOtCodesMatchingCtOrCtdVals({
363392
searchVals,
364393
oncotreeCache,

graphql-server/src/schemas/queries/samples.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -690,10 +690,8 @@ function getPlatformByInstrumentModel(
690690
: null;
691691
}
692692

693-
export async function querySeqDatesByDmpSampleId(dmpSampleIds: string[]) {
694-
const dmpSampleIdsList = dmpSampleIds
695-
.map((dmpSampleId) => `'${dmpSampleId}'`)
696-
.join(",");
693+
export async function querySeqDatesByDmpSampleId(searchVals: string[]) {
694+
const searchValList = searchVals.map((value) => `'${value}'`).join(",");
697695
const query = `
698696
SELECT
699697
${props.databricks_seq_dates_by_sample_table}.DMP_SAMPLE_ID AS DMP_SAMPLE_ID,
@@ -704,7 +702,8 @@ export async function querySeqDatesByDmpSampleId(dmpSampleIds: string[]) {
704702
JOIN
705703
${props.databricks_phi_mol_accession_table} ON ${props.databricks_seq_dates_by_sample_table}.DMP_SAMPLE_ID = ${props.databricks_phi_mol_accession_table}.SAMPLE_ID
706704
WHERE
707-
${props.databricks_seq_dates_by_sample_table}.DMP_SAMPLE_ID IN (${dmpSampleIdsList})
705+
${props.databricks_seq_dates_by_sample_table}.DMP_SAMPLE_ID IN (${searchValList})
706+
OR ${props.databricks_phi_mol_accession_table}.PDRX_ACCESSION_NO IN (${searchValList})
708707
`;
709708
return await queryDatabricks<SeqDateAccessionBySampleId>(query);
710709
}

0 commit comments

Comments
 (0)