1
0
mirror of https://github.com/pcvolkmer/mv64e-onkostar-data.git synced 2025-09-13 07:52:52 +00:00

feat: further data mappings for NGS reports

This commit is contained in:
2025-07-05 14:16:30 +02:00
parent 433dbbc188
commit 1c0558c29a
2 changed files with 67 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ package dev.pcvolkmer.onco.datamapper.mapper;
import dev.pcvolkmer.mv64e.mtb.*;
import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
import dev.pcvolkmer.onco.datamapper.ResultSet;
import dev.pcvolkmer.onco.datamapper.datacatalogues.*;
import dev.pcvolkmer.onco.datamapper.genes.GeneUtils;
@@ -67,7 +68,10 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
.patient(data.getPatientReference())
.issuedOn(data.getDate("datum"))
.specimen(Reference.builder().id(data.getString("einsendenummer")).type("Specimen").build())
.results(this.getNgsReportResults(id))
// TODO: OS.MolDiagSequenzierung kennt keine Unterscheidung zwischen 'genome-long-read' und 'genome-short-read'! -> OTHER
.type(getNgsReportCoding(data.getString("artdersequenzierung")))
.metadata(List.of(getNgsReportMetadata(data.getString("artdersequenzierung"))))
.results(this.getNgsReportResults(data))
;
return builder.build();
@@ -87,10 +91,24 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
.collect(Collectors.toList());
}
private NgsReportResults getNgsReportResults(int id) {
var subforms = this.untersuchungCatalogue.getAllByParentId(id);
private NgsReportResults getNgsReportResults(ResultSet resultSet) {
var subforms = this.untersuchungCatalogue.getAllByParentId(resultSet.getId());
var resultBuilder = NgsReportResults.builder();
// TODO: Aktuell nicht eingebunden, da Fehler, wenn nicht bioinformatisch gemäß: https://ibmi-ut.atlassian.net/wiki/spaces/DAM/pages/698777783/ Zeile 144!
// In Würzburg immer histologisch!
/*if (null != resultSet.getLong("tumorzellgehalt")) {
resultBuilder.tumorCellContent(
TumorCellContent.builder()
.id(resultSet.getId().toString())
.patient(resultSet.getPatientReference())
.specimen(Reference.builder().id(resultSet.getString("einsendenummer")).type("Specimen").build())
.value(resultSet.getLong("tumorzellgehalt"))
.build()
);
}*/
resultBuilder.simpleVariants(
subforms.stream()
// P => Einfache Variante
@@ -163,4 +181,45 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
return resultBuilder.build();
}
private NgsReportCoding getNgsReportCoding(final String artdersequenzierung) {
switch (artdersequenzierung) {
case "WES":
return NgsReportCoding.builder()
.code(NgsReportCodingCode.EXOME)
.display("Exome")
.system("http://bwhc.de/mtb/somatic-ngs-report/sequencing-type")
.build();
case "PanelKit":
return NgsReportCoding.builder()
.code(NgsReportCodingCode.PANEL)
.display("Panel")
.system("http://bwhc.de/mtb/somatic-ngs-report/sequencing-type")
.build();
default:
return NgsReportCoding.builder()
.code(NgsReportCodingCode.OTHER)
.display("Other")
.system("http://bwhc.de/mtb/somatic-ngs-report/sequencing-type")
.build();
}
}
private NgsReportMetadata getNgsReportMetadata(final String artdersequenzierung) {
var resultBuilder = NgsReportMetadata.builder();
switch(artdersequenzierung) {
// TODO: Replace with real data in properties file
default:
resultBuilder
.sequencer("")
.kitManufacturer("")
.pipeline("")
.kitType("")
.kitManufacturer("")
.referenceGenome("")
;
}
return resultBuilder.build();
}
}