diff --git a/src/main/java/DNPM/dto/Variant.java b/src/main/java/DNPM/dto/Variant.java index 36788f2..8ebe740 100644 --- a/src/main/java/DNPM/dto/Variant.java +++ b/src/main/java/DNPM/dto/Variant.java @@ -7,22 +7,46 @@ import java.util.Optional; public class Variant { private final Integer id; - private final String shortDescription; + private final String ergebnis; + + private final String gen; + + private final String exon; + + private final String pathogenitaetsklasse; private Variant( final int id, - final String shortDescription + final String ergebnis, + final String gen, + final String exon, + final String pathogenitaetsklasse ) { this.id = id; - this.shortDescription = shortDescription.trim(); + this.ergebnis = ergebnis; + this.gen = gen; + this.exon = exon; + this.pathogenitaetsklasse = pathogenitaetsklasse; } public Integer getId() { return id; } - public String getShortDescription() { - return shortDescription; + public String getErgebnis() { + return ergebnis; + } + + public String getGen() { + return gen; + } + + public String getExon() { + return exon; + } + + public String getPathogenitaetsklasse() { + return pathogenitaetsklasse; } public static Optional fromProcedure(Procedure procedure) { @@ -43,21 +67,30 @@ public class Variant { return Optional.of( new Variant( procedure.getId(), - String.format("Einfache Variante: %s, %s, %s", gene.getString(), exon.getString(), pathogenitaetsklasse.getString()) + "Einfache Variante", + gene.getString(), + exon.getString(), + pathogenitaetsklasse.getString() ) ); } else if (ergebnis.getString().equals("CNV")) { return Optional.of( new Variant( procedure.getId(), - String.format("Copy Number Variation: %s, %s, %s", gene.getString(), exon.getString(), pathogenitaetsklasse.getString()) + "Copy Number Variation", + gene.getString(), + exon.getString(), + pathogenitaetsklasse.getString() ) ); } else if (ergebnis.getString().equals("F")) { return Optional.of( new Variant( procedure.getId(), - String.format("Fusion: %s, %s, %s", gene.getString(), exon.getString(), pathogenitaetsklasse.getString()) + "Fusion", + gene.getString(), + exon.getString(), + pathogenitaetsklasse.getString() ) ); } else { diff --git a/src/test/java/DNPM/dto/VariantTest.java b/src/test/java/DNPM/dto/VariantTest.java new file mode 100644 index 0000000..4a29ba1 --- /dev/null +++ b/src/test/java/DNPM/dto/VariantTest.java @@ -0,0 +1,103 @@ +package DNPM.dto; + +import de.itc.onkostar.api.Item; +import de.itc.onkostar.api.Procedure; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class VariantTest { + + @Test + void testShouldMapVariantFromProcedureForSimpleVariant() { + var procedure = new Procedure(null); + procedure.setId(12345); + procedure.setFormName("OS.Molekulargenetische Untersuchung"); + + procedure.setValue("Ergebnis", new Item("Ergebnis", "P")); + procedure.setValue("Untersucht", new Item("Untersucht", "BRAF")); + procedure.setValue("ExonInt", new Item("ExonInt", 123)); + procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2")); + + var actual = Variant.fromProcedure(procedure); + + assertThat(actual).isPresent(); + assertThat(actual.get().getId()).isEqualTo(12345); + assertThat(actual.get().getErgebnis()).isEqualTo("Einfache Variante"); + assertThat(actual.get().getGen()).isEqualTo("BRAF"); + assertThat(actual.get().getExon()).isEqualTo("123"); + assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2"); + } + + @Test + void testShouldMapVariantFromProcedureForCopyNumberVariation() { + var procedure = new Procedure(null); + procedure.setId(12345); + procedure.setFormName("OS.Molekulargenetische Untersuchung"); + + procedure.setValue("Ergebnis", new Item("Ergebnis", "CNV")); + procedure.setValue("Untersucht", new Item("Untersucht", "BRAF")); + procedure.setValue("ExonInt", new Item("ExonInt", 123)); + procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2")); + + var actual = Variant.fromProcedure(procedure); + + assertThat(actual).isPresent(); + assertThat(actual.get().getId()).isEqualTo(12345); + assertThat(actual.get().getErgebnis()).isEqualTo("Copy Number Variation"); + assertThat(actual.get().getGen()).isEqualTo("BRAF"); + assertThat(actual.get().getExon()).isEqualTo("123"); + assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2"); + } + + @Test + void testShouldMapVariantFromProcedureForFusion() { + var procedure = new Procedure(null); + procedure.setId(12345); + procedure.setFormName("OS.Molekulargenetische Untersuchung"); + + procedure.setValue("Ergebnis", new Item("Ergebnis", "F")); + procedure.setValue("Untersucht", new Item("Untersucht", "BRAF")); + procedure.setValue("ExonInt", new Item("ExonInt", 123)); + procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2")); + + var actual = Variant.fromProcedure(procedure); + + assertThat(actual).isPresent(); + assertThat(actual.get().getId()).isEqualTo(12345); + assertThat(actual.get().getErgebnis()).isEqualTo("Fusion"); + assertThat(actual.get().getGen()).isEqualTo("BRAF"); + assertThat(actual.get().getExon()).isEqualTo("123"); + assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2"); + } + + @Test + void testShouldNotMapVariantFromProcedureForUnknownVariant() { + var procedure = new Procedure(null); + procedure.setId(12345); + procedure.setFormName("OS.Molekulargenetische Untersuchung"); + + procedure.setValue("Ergebnis", new Item("Ergebnis", "X")); + procedure.setValue("Untersucht", new Item("Untersucht", "BRAF")); + procedure.setValue("ExonInt", new Item("ExonInt", 123)); + procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2")); + + var actual = Variant.fromProcedure(procedure); + + assertThat(actual).isEmpty(); + } + + @Test + void testShouldNotMapVariantFromUnknownProcedureForm() { + var procedure = new Procedure(null); + procedure.setId(12345); + procedure.setFormName("ABC.Irgendwas"); + + procedure.setValue("Testfeld", new Item("Testfeld", "T")); + + var actual = Variant.fromProcedure(procedure); + + assertThat(actual).isEmpty(); + } + +}