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 |
| IHC-Berichte | | |
| MSI-Befunde | | |
| NGS-Berichte | | Aktuell in Arbeit |
| MTB-Beschlüsse | ✅ | Stützende molekulare Alteration(en) für einfache Variante und CNV (2) |
| 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 (3) |
| Follow-Up Verlauf | | |
| Antrag Kostenübernahme | | |
| Antwort Kostenübernahme | | |
@@ -61,7 +61,9 @@ var jsonResult = Converter.toJsonString(
### Hinweise
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

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();
}
}