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

@@ -50,8 +50,8 @@ var jsonResult = Converter.toJsonString(
| Histologie-Berichte | ⌛ | Aktuell in Arbeit | | Histologie-Berichte | ⌛ | Aktuell in Arbeit |
| IHC-Berichte | | | | IHC-Berichte | | |
| MSI-Befunde | | | | MSI-Befunde | | |
| NGS-Berichte | | Aktuell in Arbeit | | NGS-Berichte | | Best effort: Formular OS.Molekulargenetik erfüllt nicht alle Anforderungen (2) |
| MTB-Beschlüsse | ✅ | Stützende molekulare Alteration(en) für einfache Variante und CNV (2) | | MTB-Beschlüsse | ✅ | Stützende molekulare Alteration(en) für einfache Variante und CNV (3) |
| Follow-Up Verlauf | | | | Follow-Up Verlauf | | |
| Antrag Kostenübernahme | | | | Antrag Kostenübernahme | | |
| Antwort Kostenübernahme | | | | Antwort Kostenübernahme | | |
@@ -61,7 +61,9 @@ var jsonResult = Converter.toJsonString(
### Hinweise ### Hinweise
1. Nicht alle möglichen Ausprägungen in `OS.Molekulargenetik` vorhanden. 1. Nicht alle möglichen Ausprägungen in `OS.Molekulargenetik` vorhanden.
2. Implementierung des Mappings von HGNC-Symbol (Gen-Name) zu HGNC-ID über enthaltene Gen-Liste. 2. Aktuell nicht alle Angaben effektiv im Formular `OS.Molekulargenetik` wie gefordert angebbar.
Hinweis: Tumorzellgehalt-Methode problematisch, wenn auch im NGS-Bericht histologisch festgestellt.
3. Implementierung des Mappings von HGNC-Symbol (Gen-Name) zu HGNC-ID über enthaltene Gen-Liste.
## Enthaltene Liste mit Genen ## Enthaltene Liste mit Genen

View File

@@ -22,6 +22,7 @@ package dev.pcvolkmer.onco.datamapper.mapper;
import dev.pcvolkmer.mv64e.mtb.*; import dev.pcvolkmer.mv64e.mtb.*;
import dev.pcvolkmer.onco.datamapper.PropertyCatalogue; import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
import dev.pcvolkmer.onco.datamapper.ResultSet;
import dev.pcvolkmer.onco.datamapper.datacatalogues.*; import dev.pcvolkmer.onco.datamapper.datacatalogues.*;
import dev.pcvolkmer.onco.datamapper.genes.GeneUtils; import dev.pcvolkmer.onco.datamapper.genes.GeneUtils;
@@ -67,7 +68,10 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
.patient(data.getPatientReference()) .patient(data.getPatientReference())
.issuedOn(data.getDate("datum")) .issuedOn(data.getDate("datum"))
.specimen(Reference.builder().id(data.getString("einsendenummer")).type("Specimen").build()) .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(); return builder.build();
@@ -87,10 +91,24 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
private NgsReportResults getNgsReportResults(int id) { private NgsReportResults getNgsReportResults(ResultSet resultSet) {
var subforms = this.untersuchungCatalogue.getAllByParentId(id); var subforms = this.untersuchungCatalogue.getAllByParentId(resultSet.getId());
var resultBuilder = NgsReportResults.builder(); 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( resultBuilder.simpleVariants(
subforms.stream() subforms.stream()
// P => Einfache Variante // P => Einfache Variante
@@ -163,4 +181,45 @@ public class KpaMolekulargenetikDataMapper implements DataMapper<SomaticNgsRepor
return resultBuilder.build(); 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();
}
} }