Skip to content

Commit 2ba237b

Browse files
committed
Feat: Add Editable Fields For Tumour Summary
- DEVSU-2201 - Add editable tumour summary fields (role, mutation burden mut/mb, sv count, sv percentile) in both Genomic and Rapid reports - Flag some errors (code as TODO)
1 parent 09e54cd commit 2ba237b

File tree

4 files changed

+111
-6
lines changed

4 files changed

+111
-6
lines changed

app/components/TumourSummaryEdit/index.scss

+4
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@
66
&__text-field {
77
margin: 12px 0;
88
}
9+
10+
&__drop-down {
11+
margin: 12px 0;
12+
}
913
}

app/components/TumourSummaryEdit/index.tsx

+69-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
Button,
1111
Chip,
1212
Autocomplete,
13+
Select,
14+
MenuItem,
1315
} from '@mui/material';
1416
import cloneDeep from 'lodash/cloneDeep';
1517
import api, { ApiCallSet } from '@/services/api';
@@ -74,6 +76,7 @@ const TumourSummaryEdit = ({
7476
useEffect(() => {
7577
if (mutationBurden) {
7678
setNewMutationBurdenData({
79+
role: mutationBurden.role,
7780
totalMutationsPerMb: mutationBurden.totalMutationsPerMb,
7881
qualitySvCount: mutationBurden.qualitySvCount,
7982
qualitySvPercentile: mutationBurden.qualitySvPercentile,
@@ -329,6 +332,22 @@ const TumourSummaryEdit = ({
329332
if (newMutationBurdenData) {
330333
return (
331334
<>
335+
<TextField
336+
className="tumour-dialog__drop-down"
337+
label="Mutation Analysis Role"
338+
value={newMutationBurdenData.role}
339+
name="role"
340+
onChange={handleMutationBurdenChange}
341+
variant="outlined"
342+
select
343+
fullWidth
344+
>
345+
<MenuItem value={null}>-Select Role-</MenuItem>
346+
<MenuItem value={'primary'}>Primary</MenuItem>
347+
<MenuItem value={'secondary'}>Secondary</MenuItem>
348+
<MenuItem value={'tertiary'}>Tertiary</MenuItem>
349+
<MenuItem value={'quarternary'}>Quarternary</MenuItem>
350+
</TextField>
332351
<TextField
333352
className="tumour-dialog__text-field"
334353
label="Mutation Burden (Mut/Mb)"
@@ -362,7 +381,56 @@ const TumourSummaryEdit = ({
362381
</>
363382
);
364383
}
365-
return null;
384+
return (
385+
<>
386+
<TextField
387+
className="tumour-dialog__drop-down"
388+
label="Mutation Analysis Role"
389+
value={null}
390+
name="role"
391+
onChange={handleMutationBurdenChange}
392+
variant="outlined"
393+
select
394+
fullWidth
395+
>
396+
<MenuItem value={null}>-Select Role-</MenuItem>
397+
<MenuItem value={'primary'}>Primary</MenuItem>
398+
<MenuItem value={'secondary'}>Secondary</MenuItem>
399+
<MenuItem value={'tertiary'}>Tertiary</MenuItem>
400+
<MenuItem value={'quarternary'}>Quarternary</MenuItem>
401+
</TextField>
402+
<TextField
403+
className="tumour-dialog__text-field"
404+
label="Mutation Burden (Mut/Mb)"
405+
value={null}
406+
name="totalMutationsPerMb"
407+
onChange={handleMutationBurdenChange}
408+
variant="outlined"
409+
fullWidth
410+
type="number"
411+
/>
412+
<TextField
413+
className="tumour-dialog__text-field"
414+
label="SV Burden (POG average)"
415+
value={null}
416+
name="qualitySvCount"
417+
onChange={handleMutationBurdenChange}
418+
variant="outlined"
419+
fullWidth
420+
type="number"
421+
/>
422+
<TextField
423+
className="tumour-dialog__text-field"
424+
label="SV Burden (Percentile)"
425+
value={null}
426+
name="qualitySvPercentile"
427+
onChange={handleMutationBurdenChange}
428+
variant="outlined"
429+
fullWidth
430+
type="number"
431+
/>
432+
</>
433+
);
366434
}, [newMutationBurdenData, handleMutationBurdenChange]);
367435

368436
const tmburMutBurSection = useMemo(() => {

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

+37-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,20 @@ 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+
console.log(burdenResp[0]);
197+
} else {
198+
setPrimaryBurden(burdenResp[0]);
199+
console.log(burdenResp[0]);
200+
}
201+
} catch (e) {
202+
// mutation burden does not exist in records before this implementation, and no backfill will be done on the backend, silent fail this
203+
console.error('mutation-burden call error', e?.message);
204+
}
205+
191206
if (signaturesResp.status === 'fulfilled') {
192207
setSignatures(signaturesResp.value);
193208
} else if (!isPrint) {
@@ -294,6 +309,14 @@ const RapidSummary = ({
294309
} else {
295310
msiStatus = null;
296311
}
312+
313+
let svBurden: null | string;
314+
if (primaryBurden && primaryBurden.qualitySvCount !== null) {
315+
svBurden = `${primaryBurden.qualitySvCount} ${primaryBurden.qualitySvPercentile ? `(${primaryBurden.qualitySvPercentile}%)` : ''}`;
316+
} else {
317+
svBurden = null;
318+
}
319+
297320
setTumourSummary([
298321
{
299322
term: 'Pathology Tumour Content',
@@ -329,6 +352,10 @@ const RapidSummary = ({
329352
? `${tCellCd8.score} ${tCellCd8.percentile ? `(${tCellCd8.percentile}%)` : ''}`
330353
: null,
331354
},
355+
{
356+
term: 'SV Burden (POG Average)',
357+
value: svBurden,
358+
},
332359
{
333360
term: 'Genome TMB (mut/mb)',
334361
value: tmburMutBur
@@ -340,9 +367,10 @@ const RapidSummary = ({
340367
value: msiStatus,
341368
},
342369
]);
343-
}, [microbial, tmburMutBur, report.m1m2Score, report.sampleInfo, report.tumourContent, tCellCd8?.percentile, tCellCd8?.score, report.captiv8Score]);
370+
}, [microbial, primaryBurden, tmburMutBur, report.m1m2Score, report.sampleInfo, report.tumourContent, tCellCd8?.percentile, tCellCd8?.score, report.captiv8Score]);
344371

345372
const handlePatientEditClose = useCallback((
373+
// TODO: Argument not being used, leading to OnClose flag on line 744 having too few arguments
346374
isSaved: boolean,
347375
newPatientData: PatientInformationType,
348376
newReportData: ReportType,
@@ -417,12 +445,12 @@ const RapidSummary = ({
417445
isSaved,
418446
newMicrobialData,
419447
newReportData,
420-
_mutBurData,
448+
newMutationBurdenData: MutationBurdenType,
421449
newTmBurMutBurData,
422450
) => {
423451
setShowTumourSummaryEdit(false);
424452

425-
if (!isSaved || (!newMicrobialData && !newReportData && !newTmBurMutBurData)) {
453+
if (!isSaved || (!newMicrobialData && !newReportData && !newMutationBurdenData && !newTmBurMutBurData)) {
426454
return;
427455
}
428456

@@ -434,6 +462,10 @@ const RapidSummary = ({
434462
setReport(newReportData);
435463
}
436464

465+
if (newMutationBurdenData) {
466+
setPrimaryBurden(newMutationBurdenData);
467+
}
468+
437469
if (newTmBurMutBurData) {
438470
setTmburMutBur(newTmBurMutBurData);
439471
}
@@ -454,7 +486,7 @@ const RapidSummary = ({
454486
<TumourSummaryEdit
455487
microbial={microbial}
456488
report={report}
457-
mutationBurden={null}
489+
mutationBurden={primaryBurden}
458490
tmburMutBur={tmburMutBur}
459491
isOpen={showTumourSummaryEdit}
460492
onClose={handleTumourSummaryEditClose}

0 commit comments

Comments
 (0)