From 4841aae3e749cbe90d8c9c77f6c9b98554ada6bc Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 26 Jun 2025 00:35:35 +0200 Subject: [PATCH] feat: add JSON to medication mapping for Einzelempfehlung --- .../mapper/EinzelempfehlungWirkstoffDataMapper.java | 1 + .../onco/datamapper/mapper/JsonToMedicationMapper.java | 3 +++ .../datamapper/mapper/TherapieplanDataMapperTest.java | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/EinzelempfehlungWirkstoffDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/EinzelempfehlungWirkstoffDataMapper.java index c2cb602..df63342 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/EinzelempfehlungWirkstoffDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/EinzelempfehlungWirkstoffDataMapper.java @@ -40,6 +40,7 @@ public class EinzelempfehlungWirkstoffDataMapper extends AbstractSubformDataMapp resultSet.getInteger("evidenzlevel_propcat_version") ) ) + .medication(JsonToMedicationMapper.map(resultSet.getString("wirkstoffe_json"))) .build(); } diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/JsonToMedicationMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/JsonToMedicationMapper.java index 22965bb..9c38a35 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/JsonToMedicationMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/JsonToMedicationMapper.java @@ -23,6 +23,9 @@ public class JsonToMedicationMapper { } public static List map(String wirkstoffejson) { + if (wirkstoffejson == null) { + return List.of(); + } try { return new ObjectMapper().readValue(wirkstoffejson, new TypeReference>() { }).stream() diff --git a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/TherapieplanDataMapperTest.java b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/TherapieplanDataMapperTest.java index 7e62c37..e706b00 100644 --- a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/TherapieplanDataMapperTest.java +++ b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/TherapieplanDataMapperTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -44,7 +45,8 @@ class TherapieplanDataMapperTest { void shouldCreateCarePlan(@Mock ResultSet resultSet) { final var testData = Map.of( "id", "1", - "patient_id", "42" + "patient_id", "42", + "wirkstoffe_json", "[{\"code\":\"\",\"name\":\"PARP-Inhibierung\",\"system\":\"UNREGISTERED\"}]" ); doAnswer(invocationOnMock -> { @@ -56,11 +58,17 @@ class TherapieplanDataMapperTest { .when(therapieplanCatalogue) .getById(anyInt()); + doAnswer(invocationOnMock -> List.of(resultSet)) + .when(einzelempfehlungCatalogue) + .getAllByParentId(anyInt()); + var actual = this.dataMapper.getById(1); assertThat(actual).isInstanceOf(MtbCarePlan.class); assertThat(actual.getId()).isEqualTo("1"); assertThat(actual.getPatient()) .isEqualTo(Reference.builder().id("42").type("Patient").build()); + + assertThat(actual.getMedicationRecommendations()).hasSize(1); } }