Skip to content

Commit a4d2681

Browse files
Merge pull request #415 from bcgsc/feat/DEVSU-2201-SV-burden-editable
Feat/devsu 2201 sv burden editable
2 parents 3e735dd + d8f71c8 commit a4d2681

File tree

3 files changed

+75
-19
lines changed

3 files changed

+75
-19
lines changed

app/components/TumourSummaryEdit/index.tsx

+39-14
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ const TumourSummaryEdit = ({
7474
useEffect(() => {
7575
if (mutationBurden) {
7676
setNewMutationBurdenData({
77+
role: mutationBurden.role,
7778
totalMutationsPerMb: mutationBurden.totalMutationsPerMb,
79+
qualitySvCount: mutationBurden.qualitySvCount,
80+
qualitySvPercentile: mutationBurden.qualitySvPercentile,
7881
});
7982
}
8083
}, [mutationBurden]);
@@ -339,25 +342,47 @@ const TumourSummaryEdit = ({
339342
return null;
340343
}, [handleClicked, handleDelete, handleKeyDown, newMicrobialData]);
341344

342-
const mutBurDataSection = (
343-
<TextField
344-
className="tumour-dialog__text-field"
345-
label="Mutation Burden (Mut/Mb)"
346-
value={newMutationBurdenData?.totalMutationsPerMb ?? 0}
347-
name="totalMutationsPerMb"
348-
onChange={handleMutationBurdenChange}
349-
variant="outlined"
350-
fullWidth
351-
type="number"
352-
/>
353-
);
345+
const mutBurDataSection = useMemo(() => (
346+
<>
347+
<TextField
348+
className="tumour-dialog__text-field"
349+
label="Mutation Burden (Mut/Mb)"
350+
value={newMutationBurdenData?.totalMutationsPerMb ?? null}
351+
name="totalMutationsPerMb"
352+
onChange={handleMutationBurdenChange}
353+
variant="outlined"
354+
fullWidth
355+
type="number"
356+
/>
357+
<TextField
358+
className="tumour-dialog__text-field"
359+
label="SV Burden (POG average)"
360+
value={newMutationBurdenData?.qualitySvCount ?? null}
361+
name="qualitySvCount"
362+
onChange={handleMutationBurdenChange}
363+
variant="outlined"
364+
fullWidth
365+
type="number"
366+
/>
367+
<TextField
368+
className="tumour-dialog__text-field"
369+
label="SV Burden (Percentile)"
370+
value={newMutationBurdenData?.qualitySvPercentile ?? null}
371+
name="qualitySvPercentile"
372+
onChange={handleMutationBurdenChange}
373+
variant="outlined"
374+
fullWidth
375+
type="number"
376+
/>
377+
</>
378+
), [newMutationBurdenData, handleMutationBurdenChange]);
354379

355380
const tmburMutBurSection = useMemo(() => {
356381
<>
357382
<TextField
358383
className="tumour-dialog__text-field"
359384
label="genomeSnvTmb"
360-
value={newTmburMutData?.genomeSnvTmb ?? 0}
385+
value={newTmburMutData?.genomeSnvTmb ?? null}
361386
name="genomeSnvTmb"
362387
onChange={handleTmburChange}
363388
variant="outlined"
@@ -367,7 +392,7 @@ const TumourSummaryEdit = ({
367392
<TextField
368393
className="tumour-dialog__text-field"
369394
label="genomeIndelTmb"
370-
value={newTmburMutData?.genomeIndelTmb ?? 0}
395+
value={newTmburMutData?.genomeIndelTmb ?? null}
371396
name="genomeIndelTmb"
372397
onChange={handleTmburChange}
373398
variant="outlined"

app/views/ReportView/components/GenomicSummary/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ const GenomicSummary = ({
197197
setVariants(sorted);
198198
setVariantCounts(counts);
199199
if (loadedDispatch) {
200+
// TODO
200201
loadedDispatch({ type: 'summary' });
201202
}
202203
} catch (err) {

app/views/ReportView/components/RapidSummary/index.tsx

+35-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import './index.scss';
2828
import TumourSummaryEdit from '@/components/TumourSummaryEdit';
2929
import DescriptionList from '@/components/DescriptionList';
3030
import {
31-
KbMatchType, TumourSummaryType, ImmuneType, MicrobialType, TmburType,
31+
KbMatchType, TumourSummaryType, ImmuneType, MutationBurdenType, MicrobialType, TmburType,
3232
} from '@/common';
3333
import useConfirmDialog from '@/hooks/useConfirmDialog';
3434
import { Box } from '@mui/system';
@@ -147,6 +147,7 @@ const RapidSummary = ({
147147
value: string | null;
148148
}[] | null>();
149149
const [tumourSummary, setTumourSummary] = useState<TumourSummaryType[]>();
150+
const [primaryBurden, setPrimaryBurden] = useState<MutationBurdenType>();
150151
const [tmburMutBur, setTmburMutBur] = useState<TmburType>();
151152
const [tCellCd8, setTCellCd8] = useState<ImmuneType>();
152153
const [microbial, setMicrobial] = useState<MicrobialType[]>();
@@ -188,6 +189,18 @@ const RapidSummary = ({
188189
PromiseSettledResult<MicrobialType[]>,
189190
];
190191

192+
try {
193+
const burdenResp = await api.get(`/reports/${report.ident}/mutation-burden`).request();
194+
if (burdenResp[0].qualitySvCount == null) {
195+
setPrimaryBurden(null);
196+
} else {
197+
setPrimaryBurden(burdenResp[0]);
198+
}
199+
} catch (e) {
200+
// mutation burden does not exist in records before this implementation, and no backfill will be done on the backend, silent fail this
201+
console.error('mutation-burden call error', e?.message);
202+
}
203+
191204
if (signaturesResp.status === 'fulfilled') {
192205
setSignatures(signaturesResp.value);
193206
} else if (!isPrint) {
@@ -294,6 +307,14 @@ const RapidSummary = ({
294307
} else {
295308
msiStatus = null;
296309
}
310+
311+
let svBurden: null | string;
312+
if (primaryBurden && primaryBurden.qualitySvCount !== null) {
313+
svBurden = `${primaryBurden.qualitySvCount} ${primaryBurden.qualitySvPercentile ? `(${primaryBurden.qualitySvPercentile}%)` : ''}`;
314+
} else {
315+
svBurden = null;
316+
}
317+
297318
setTumourSummary([
298319
{
299320
term: 'Pathology Tumour Content',
@@ -329,6 +350,10 @@ const RapidSummary = ({
329350
? `${tCellCd8.score} ${tCellCd8.percentile ? `(${tCellCd8.percentile}%)` : ''}`
330351
: null,
331352
},
353+
{
354+
term: 'SV Burden (POG Average)',
355+
value: svBurden,
356+
},
332357
{
333358
term: 'Genome TMB (mut/mb)',
334359
value: tmburMutBur
@@ -340,9 +365,10 @@ const RapidSummary = ({
340365
value: msiStatus,
341366
},
342367
]);
343-
}, [microbial, tmburMutBur, report.m1m2Score, report.sampleInfo, report.tumourContent, tCellCd8?.percentile, tCellCd8?.score, report.captiv8Score]);
368+
}, [microbial, primaryBurden, tmburMutBur, report.m1m2Score, report.sampleInfo, report.tumourContent, tCellCd8?.percentile, tCellCd8?.score, report.captiv8Score]);
344369

345370
const handlePatientEditClose = useCallback((
371+
// TODO: Argument not being used, leading to OnClose flag on line 744 having too few arguments
346372
isSaved: boolean,
347373
newPatientData: PatientInformationType,
348374
newReportData: ReportType,
@@ -417,12 +443,12 @@ const RapidSummary = ({
417443
isSaved,
418444
newMicrobialData,
419445
newReportData,
420-
_mutBurData,
446+
newMutationBurdenData: MutationBurdenType,
421447
newTmBurMutBurData,
422448
) => {
423449
setShowTumourSummaryEdit(false);
424450

425-
if (!isSaved || (!newMicrobialData && !newReportData && !newTmBurMutBurData)) {
451+
if (!isSaved || (!newMicrobialData && !newReportData && !newMutationBurdenData && !newTmBurMutBurData)) {
426452
return;
427453
}
428454

@@ -434,6 +460,10 @@ const RapidSummary = ({
434460
setReport(newReportData);
435461
}
436462

463+
if (newMutationBurdenData) {
464+
setPrimaryBurden(newMutationBurdenData);
465+
}
466+
437467
if (newTmBurMutBurData) {
438468
setTmburMutBur(newTmBurMutBurData);
439469
}
@@ -454,7 +484,7 @@ const RapidSummary = ({
454484
<TumourSummaryEdit
455485
microbial={microbial}
456486
report={report}
457-
mutationBurden={null}
487+
mutationBurden={primaryBurden}
458488
tmburMutBur={tmburMutBur}
459489
isOpen={showTumourSummaryEdit}
460490
onClose={handleTumourSummaryEditClose}

0 commit comments

Comments
 (0)