diff --git a/build.gradle.kts b/build.gradle.kts index 7dd08fc..ed854f7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ version = "0.1.0-SNAPSHOT" var versions = mapOf( "mtb-dto" to "0.1.0-SNAPSHOT", + "slf4j" to "2.0.17", "junit" to "5.13.1", "assertj" to "3.27.3", "mockito" to "5.18.0" @@ -46,6 +47,7 @@ dependencies { prefer("4.3.8.RELEASE") } } + implementation("org.slf4j:slf4j-api:${versions["slf4j"]}") testImplementation(platform("org.junit:junit-bom:${versions["junit"]}")) testImplementation("org.junit.jupiter:junit-jupiter") diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapper.java index 2ec2599..f7c628d 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapper.java @@ -1,13 +1,11 @@ package dev.pcvolkmer.onco.datamapper; import dev.pcvolkmer.mv64e.mtb.Coding; -import dev.pcvolkmer.mv64e.mtb.Mtb; import dev.pcvolkmer.mv64e.mtb.MtbDiagnosis; -import dev.pcvolkmer.onco.datamapper.datacatalogues.Kpa; +import dev.pcvolkmer.onco.datamapper.datacatalogues.KpaCatalogue; import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; -import javax.sql.DataSource; import java.sql.SQLException; /** @@ -20,18 +18,18 @@ public class KpaDiagnosisDataMapper implements DataMapper { private final JdbcTemplate jdbcTemplate; - KpaDiagnosisDataMapper(final JdbcTemplate jdbcTemplate) { + private KpaDiagnosisDataMapper(final JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } /** * Create instance of the mapper class * - * @param dataSource The datasource to be used + * @param jdbcTemplate The Spring JdbcTemplate to be used * @return The initialized mapper */ - public static KpaDiagnosisDataMapper create(final DataSource dataSource) { - return new KpaDiagnosisDataMapper(new JdbcTemplate(dataSource)); + public static KpaDiagnosisDataMapper create(final JdbcTemplate jdbcTemplate) { + return new KpaDiagnosisDataMapper(jdbcTemplate); } /** @@ -42,7 +40,7 @@ public class KpaDiagnosisDataMapper implements DataMapper { */ @Override public MtbDiagnosis getById(int id) { - var kpa = Kpa.create(this.jdbcTemplate); + var kpa = KpaCatalogue.create(this.jdbcTemplate); var data = kpa.getById(id); var builder = MtbDiagnosis.builder(); diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/MtbDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/MtbDataMapper.java index e6dbb38..1c973e7 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/MtbDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/MtbDataMapper.java @@ -1,10 +1,14 @@ package dev.pcvolkmer.onco.datamapper; import dev.pcvolkmer.mv64e.mtb.Mtb; -import dev.pcvolkmer.onco.datamapper.datacatalogues.Kpa; +import dev.pcvolkmer.onco.datamapper.datacatalogues.KpaCatalogue; +import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import javax.sql.DataSource; +import java.util.List; /** * Mapper class to load and map Mtb files from database @@ -14,6 +18,8 @@ import javax.sql.DataSource; */ public class MtbDataMapper implements DataMapper { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private final JdbcTemplate jdbcTemplate; MtbDataMapper(final JdbcTemplate jdbcTemplate) { @@ -30,15 +36,35 @@ public class MtbDataMapper implements DataMapper { return new MtbDataMapper(new JdbcTemplate(dataSource)); } + /** + * Create instance of the mapper class + * + * @param jdbcTemplate The Spring JdbcTemplate to be used + * @return The initialized mapper + */ + public static MtbDataMapper create(final JdbcTemplate jdbcTemplate) { + return new MtbDataMapper(jdbcTemplate); + } + /** * Loads and maps a Mtb file using the root procedures database id * - * @param id The database id of the root procedure data set + * @param kpaId The database id of the root procedure data set * @return The loaded Mtb file */ @Override - public Mtb getById(int id) { - return Mtb.builder().build(); + public Mtb getById(int kpaId) { + var diagnosisDataMapper = KpaDiagnosisDataMapper.create(jdbcTemplate); + var resultBuilder = Mtb.builder(); + + try { + resultBuilder + .diagnoses(List.of(diagnosisDataMapper.getById(kpaId))); + } catch (DataAccessException e) { + logger.error("Error while getting Mtb.", e); + } + + return resultBuilder.build(); } /** @@ -48,7 +74,7 @@ public class MtbDataMapper implements DataMapper { * @return The loaded Mtb file */ public Mtb getByCaseId(String caseId) { - var kpa = Kpa.create(this.jdbcTemplate); + var kpa = KpaCatalogue.create(this.jdbcTemplate); return this.getById( kpa.getProcedureIdByCaseId(caseId) ); diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/Kpa.java b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/KpaCatalogue.java similarity index 92% rename from src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/Kpa.java rename to src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/KpaCatalogue.java index 0ec5c23..5f63948 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/Kpa.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/KpaCatalogue.java @@ -11,16 +11,16 @@ import java.sql.ResultSet; * @author Paul-Christian Volkmer * @since 0.1 */ -public class Kpa { +public class KpaCatalogue { private final JdbcTemplate jdbcTemplate; - private Kpa(JdbcTemplate jdbcTemplate) { + private KpaCatalogue(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } - public static Kpa create(JdbcTemplate jdbcTemplate) { - return new Kpa(jdbcTemplate); + public static KpaCatalogue create(JdbcTemplate jdbcTemplate) { + return new KpaCatalogue(jdbcTemplate); } /** diff --git a/src/test/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapperTest.java b/src/test/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapperTest.java index 07c97bb..f55bbab 100644 --- a/src/test/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapperTest.java +++ b/src/test/java/dev/pcvolkmer/onco/datamapper/KpaDiagnosisDataMapperTest.java @@ -13,6 +13,7 @@ import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.*; @@ -28,7 +29,7 @@ class KpaDiagnosisDataMapperTest { @BeforeEach void setUp(@Mock JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; - this.dataMapper = new KpaDiagnosisDataMapper(jdbcTemplate); + this.dataMapper = KpaDiagnosisDataMapper.create(jdbcTemplate); } @Test @@ -37,17 +38,10 @@ class KpaDiagnosisDataMapperTest { } @Test - void shouldUseKpaProcedureId(@Mock ResultSet resultSet) throws SQLException { + void shouldCreateDiagnosis(@Mock ResultSet resultSet) throws SQLException { doAnswer(invocationOnMock -> { var columnName = invocationOnMock.getArgument(0, String.class); - switch (columnName) { - case "id": - return "1"; - case "icd10": - return "F79.9"; - default: - return null; - } + return testData().get(columnName); }).when(resultSet).getString(anyString()); doAnswer(invocationOnMock -> List.of(resultSet)) @@ -60,4 +54,11 @@ class KpaDiagnosisDataMapperTest { assertThat(actual.getCode().getCode()).isEqualTo("F79.9"); } + private static Map testData() { + return Map.of( + "id", "1", + "icd10", "F79.9" + ); + } + }