From a6ba6c54e2b60d7fccbd5fb3a4668ee3bc67e06a Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sat, 12 Jul 2025 20:29:26 +0200 Subject: [PATCH] feat: add model project consent to mv metadata --- .../datacatalogues/DataCatalogueFactory.java | 4 ++++ .../mapper/ConsentMvDataMapper.java | 19 +++++++++------- .../onco/datamapper/mapper/MtbDataMapper.java | 22 +++++++++++++++---- .../mapper/ConsentMvDataMapperTest.java | 3 ++- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/DataCatalogueFactory.java b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/DataCatalogueFactory.java index b2772ef..1a678ce 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/DataCatalogueFactory.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/DataCatalogueFactory.java @@ -99,6 +99,10 @@ public class DataCatalogueFactory { return RebiopsieCatalogue.create(jdbcTemplate); } else if (c == ReevaluationCatalogue.class) { return ReevaluationCatalogue.create(jdbcTemplate); + } else if (c == ConsentMvCatalogue.class) { + return ConsentMvCatalogue.create(jdbcTemplate); + } else if (c == ConsentMvVerlaufCatalogue.class) { + return ConsentMvVerlaufCatalogue.create(jdbcTemplate); } throw new DataCatalogueCreationException(clazz); }); diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapper.java index 3ae1758..f973514 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapper.java @@ -60,15 +60,18 @@ public class ConsentMvDataMapper implements DataMapper { */ @Override public ModelProjectConsent getById(int id) { - var data = catalogue.getById(id); + try { + var data = catalogue.getById(id); - var builder = ModelProjectConsent.builder(); - builder - .date(data.getDate("date")) - .version(getLatestVersion(id)) - .provisions(getProvisions(data)) - ; - return builder.build(); + var builder = ModelProjectConsent.builder(); + builder + .version(getLatestVersion(id)) + .provisions(getProvisions(data)) + ; + return builder.build(); + } catch (Exception e) { + return null; + } } private String getLatestVersion(int id) { diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/MtbDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/MtbDataMapper.java index 58d2666..40653f7 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/MtbDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/MtbDataMapper.java @@ -20,9 +20,7 @@ package dev.pcvolkmer.onco.datamapper.mapper; -import dev.pcvolkmer.mv64e.mtb.Mtb; -import dev.pcvolkmer.mv64e.mtb.Reference; -import dev.pcvolkmer.mv64e.mtb.TumorSpecimen; +import dev.pcvolkmer.mv64e.mtb.*; import dev.pcvolkmer.onco.datamapper.PropertyCatalogue; import dev.pcvolkmer.onco.datamapper.datacatalogues.*; import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException; @@ -139,6 +137,11 @@ public class MtbDataMapper implements DataMapper { propertyCatalogue ); + var consentMvDataMapper = new ConsentMvDataMapper( + catalogueFactory.catalogue(ConsentMvCatalogue.class), + catalogueFactory.catalogue(ConsentMvVerlaufCatalogue.class) + ); + var resultBuilder = Mtb.builder(); try { @@ -194,8 +197,19 @@ public class MtbDataMapper implements DataMapper { .ngsReports( kpaMolekulargenetikDataMapper.getAllByKpaId(kpaId) ) - ; + + // Consent - as far as present + var consentId = kpaCatalogue.getById(kpaId).getString("consentmv64e"); + if (null != consentId) { + resultBuilder.metadata( + MvhMetadata.builder() + .modelProjectConsent( + consentMvDataMapper.getById(kpaCatalogue.getById(kpaId).getInteger("consentmv64e")) + ) + .build() + ); + } } catch (DataAccessException e) { logger.error("Error while getting Mtb.", e); } diff --git a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapperTest.java b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapperTest.java index fa60650..cd22c69 100644 --- a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapperTest.java +++ b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/ConsentMvDataMapperTest.java @@ -104,7 +104,8 @@ class ConsentMvDataMapperTest { var actual = this.dataMapper.getById(1); assertThat(actual).isInstanceOf(ModelProjectConsent.class); - assertThat(actual.getDate()).isEqualTo(Date.from(Instant.parse("2025-07-12T00:00:00Z"))); + // Intentionally left blank/null + assertThat(actual.getDate()).isNull(); assertThat(actual.getVersion()).isEqualTo("02"); assertThat(actual.getProvisions()).hasSize(3); assertThat(actual.getProvisions()).containsAll(