From 6b95539982f8e49a610e847086878c39b21279c6 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sat, 21 Jun 2025 14:10:22 +0200 Subject: [PATCH] refactor: extract common used methods --- .../AbstractKpaTherapieverlaufDataMapper.java | 142 ++++++++++++++++++ .../mapper/KpaProzedurDataMapper.java | 82 +--------- .../mapper/KpaTherapielinieDataMapper.java | 117 +-------------- 3 files changed, 147 insertions(+), 194 deletions(-) create mode 100644 src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java new file mode 100644 index 0000000..4a99f4c --- /dev/null +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java @@ -0,0 +1,142 @@ +package dev.pcvolkmer.onco.datamapper.mapper; + +import dev.pcvolkmer.mv64e.mtb.*; + +import java.io.IOException; +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * Abstract Mapper class for similar 'dk_dnpm_therapielinie' and 'dk_dnpm_uf_procedure' + * + * @author Paul-Christian Volkmer + * @since 0.1 + */ +public abstract class AbstractKpaTherapieverlaufDataMapper implements SubformDataMapper { + + protected MtbTherapyIntentCoding getMtbTherapyIntentCoding(String value) { + if (value == null || !Arrays.stream(MtbTherapyIntentCodingCode.values()).map(MtbTherapyIntentCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = MtbTherapyIntentCoding.builder(); + + switch (value) { + case "X": + resultBuilder.code(MtbTherapyIntentCodingCode.X); + break; + case "K": + resultBuilder.code(MtbTherapyIntentCodingCode.K); + break; + case "P": + resultBuilder.code(MtbTherapyIntentCodingCode.P); + break; + case "S": + resultBuilder.code(MtbTherapyIntentCodingCode.S); + break; + } + + return resultBuilder.build(); + } + + protected TherapyStatusCoding getTherapyStatusCoding(String value) { + if (value == null || !Arrays.stream(TherapyStatusCodingCode.values()).map(TherapyStatusCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = TherapyStatusCoding.builder(); + + switch (value) { + case "not-done": + resultBuilder.code(TherapyStatusCodingCode.NOT_DONE); + break; + case "on-going": + resultBuilder.code(TherapyStatusCodingCode.ON_GOING); + break; + case "stopped": + resultBuilder.code(TherapyStatusCodingCode.STOPPED); + break; + case "completed": + resultBuilder.code(TherapyStatusCodingCode.COMPLETED); + break; + } + + return resultBuilder.build(); + } + + protected MtbTherapyStatusReasonCoding getMtbTherapyStatusReasonCoding(String value) { + if (value == null || !Arrays.stream(MtbTherapyStatusReasonCodingCode.values()).map(MtbTherapyStatusReasonCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = MtbTherapyStatusReasonCoding.builder(); + try { + resultBuilder.code(MtbTherapyStatusReasonCodingCode.forValue(value)); + } catch (IOException e) { + return null; + } + + return resultBuilder.build(); + } + + protected MtbSystemicTherapyRecommendationFulfillmentStatusCoding getMtbSystemicTherapyRecommendationFulfillmentStatusCoding(String value) { + if (value == null || !Arrays.stream(MtbSystemicTherapyRecommendationFulfillmentStatusCodingCode.values()).map(MtbSystemicTherapyRecommendationFulfillmentStatusCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = MtbSystemicTherapyRecommendationFulfillmentStatusCoding.builder(); + try { + resultBuilder.code(MtbSystemicTherapyRecommendationFulfillmentStatusCodingCode.forValue(value)); + } catch (IOException e) { + return null; + } + + return resultBuilder.build(); + } + + protected MtbSystemicTherapyCategoryCoding getMtbSystemicTherapyCategoryCoding(String value) { + if (value == null || !Arrays.stream(MtbSystemicTherapyCategoryCodingCode.values()).map(MtbSystemicTherapyCategoryCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = MtbSystemicTherapyCategoryCoding.builder(); + try { + resultBuilder.code(MtbSystemicTherapyCategoryCodingCode.forValue(value)); + } catch (IOException e) { + return null; + } + + return resultBuilder.build(); + } + + protected MtbSystemicTherapyDosageDensityCoding getMtbSystemicTherapyDosageDensityCoding(String value) { + if (value == null || !Arrays.stream(MtbSystemicTherapyDosageDensityCodingCode.values()).map(MtbSystemicTherapyDosageDensityCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = MtbSystemicTherapyDosageDensityCoding.builder(); + try { + resultBuilder.code(MtbSystemicTherapyDosageDensityCodingCode.forValue(value)); + } catch (IOException e) { + return null; + } + + return resultBuilder.build(); + } + + protected OncoProcedureCoding getOncoProcedureCoding(String value) { + if (value == null || ! Arrays.stream(OncoProcedureCodingCode.values()).map(OncoProcedureCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + return null; + } + + var resultBuilder = OncoProcedureCoding.builder(); + try { + resultBuilder.code(OncoProcedureCodingCode.forValue(value)); + } catch (IOException e) { + throw new IllegalStateException("No valid code found"); + } + + return resultBuilder.build(); + } + +} diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java index 21ef335..a97e63e 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java @@ -15,7 +15,7 @@ import java.util.stream.Collectors; * @author Paul-Christian Volkmer * @since 0.1 */ -public class KpaProzedurDataMapper implements SubformDataMapper { +public class KpaProzedurDataMapper extends AbstractKpaTherapieverlaufDataMapper { private final ProzedurCatalogue catalogue; @@ -66,84 +66,4 @@ public class KpaProzedurDataMapper implements SubformDataMapper { return builder.build(); } - private MtbTherapyIntentCoding getMtbTherapyIntentCoding(String value) { - if (value == null || ! Arrays.stream(MtbTherapyIntentCodingCode.values()).map(MtbTherapyIntentCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { - return null; - } - - var resultBuilder = MtbTherapyIntentCoding.builder(); - - switch (value) { - case "X": - resultBuilder.code(MtbTherapyIntentCodingCode.X); - break; - case "K": - resultBuilder.code(MtbTherapyIntentCodingCode.K); - break; - case "P": - resultBuilder.code(MtbTherapyIntentCodingCode.P); - break; - case "S": - resultBuilder.code(MtbTherapyIntentCodingCode.S); - break; - } - - return resultBuilder.build(); - } - - private TherapyStatusCoding getTherapyStatusCoding(String value) { - if (value == null || ! Arrays.stream(TherapyStatusCodingCode.values()).map(TherapyStatusCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { - return null; - } - - var resultBuilder = TherapyStatusCoding.builder(); - - switch (value) { - case "not-done": - resultBuilder.code(TherapyStatusCodingCode.NOT_DONE); - break; - case "on-going": - resultBuilder.code(TherapyStatusCodingCode.ON_GOING); - break; - case "stopped": - resultBuilder.code(TherapyStatusCodingCode.STOPPED); - break; - case "completed": - resultBuilder.code(TherapyStatusCodingCode.COMPLETED); - break; - } - - return resultBuilder.build(); - } - - private MtbTherapyStatusReasonCoding getMtbTherapyStatusReasonCoding(String value) { - if (value == null || ! Arrays.stream(MtbTherapyStatusReasonCodingCode.values()).map(MtbTherapyStatusReasonCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { - return null; - } - - var resultBuilder = MtbTherapyStatusReasonCoding.builder(); - try { - resultBuilder.code(MtbTherapyStatusReasonCodingCode.forValue(value)); - } catch (IOException e) { - return null; - } - - return resultBuilder.build(); - } - - private OncoProcedureCoding getOncoProcedureCoding(String value) { - if (value == null || ! Arrays.stream(OncoProcedureCodingCode.values()).map(OncoProcedureCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { - return null; - } - - var resultBuilder = OncoProcedureCoding.builder(); - try { - resultBuilder.code(OncoProcedureCodingCode.forValue(value)); - } catch (IOException e) { - throw new IllegalStateException("No valid code found"); - } - - return resultBuilder.build(); - } - } diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java index 5d3dc1e..aacc699 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java @@ -1,11 +1,11 @@ package dev.pcvolkmer.onco.datamapper.mapper; -import dev.pcvolkmer.mv64e.mtb.*; +import dev.pcvolkmer.mv64e.mtb.MtbSystemicTherapy; +import dev.pcvolkmer.mv64e.mtb.PeriodDate; +import dev.pcvolkmer.mv64e.mtb.Reference; import dev.pcvolkmer.onco.datamapper.ResultSet; import dev.pcvolkmer.onco.datamapper.datacatalogues.TherapielinieCatalogue; -import java.io.IOException; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -15,7 +15,7 @@ import java.util.stream.Collectors; * @author Paul-Christian Volkmer * @since 0.1 */ -public class KpaTherapielinieDataMapper implements SubformDataMapper { +public class KpaTherapielinieDataMapper extends AbstractKpaTherapieverlaufDataMapper { private final TherapielinieCatalogue catalogue; @@ -72,114 +72,5 @@ public class KpaTherapielinieDataMapper implements SubformDataMapper