diff options
Diffstat (limited to 'src/main/java')
6 files changed, 61 insertions, 67 deletions
diff --git a/src/main/java/DNPM/config/PluginConfiguration.java b/src/main/java/DNPM/config/PluginConfiguration.java index 3f27034..7cb8475 100644 --- a/src/main/java/DNPM/config/PluginConfiguration.java +++ b/src/main/java/DNPM/config/PluginConfiguration.java @@ -38,8 +38,8 @@ public class PluginConfiguration { } @Bean - public MtbService mtbService(final SettingsService settingsService) { - return new DefaultMtbService(settingsService); + public MtbService mtbService() { + return new DefaultMtbService(); } @Bean diff --git a/src/main/java/DNPM/services/mtb/DefaultMtbService.java b/src/main/java/DNPM/services/mtb/DefaultMtbService.java index bc9d540..9926a82 100644 --- a/src/main/java/DNPM/services/mtb/DefaultMtbService.java +++ b/src/main/java/DNPM/services/mtb/DefaultMtbService.java @@ -1,40 +1,32 @@ package DNPM.services.mtb; -import DNPM.services.SettingsService; import de.itc.onkostar.api.Procedure; +import java.util.Comparator; import java.util.List; - +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * Standardimplementierung des MtbService + * + * @since 0.0.2 + */ public class DefaultMtbService implements MtbService { - private final SettingsService settingsService; - - public DefaultMtbService(final SettingsService settingsService) { - this.settingsService = settingsService; - } - @Override public String getProtocol(List<Procedure> procedures) { - ProcedureToProtocolMapper mapper = null; - var sid = settingsService.getSID(); - - if (sid.isPresent()) { - switch (sid.get()) { - case "2011": - case "20119": - mapper = new OsTumorkonferenzVarianteUkwToProtocolMapper(); - default: - if (!settingsService.multipleMtbsInMtbEpisode()) { - mapper = new OsTumorkonferenzToProtocolMapper(); - } - } - } - - if (null == mapper) { - return ""; - } + return procedures.stream() + .sorted(Comparator.comparing(Procedure::getStartDate)) + .map(procedure -> { + var mapper = MtbService.procedureToProtocolMapper(procedure); + return mapper.apply(procedure); + }) + .filter(Optional::isPresent) + .map(Optional::get) + .distinct() + .collect(Collectors.joining("\n\n")); - return mapper.apply(procedures).orElse(""); } } diff --git a/src/main/java/DNPM/services/mtb/MtbService.java b/src/main/java/DNPM/services/mtb/MtbService.java index b854307..fcf55c1 100644 --- a/src/main/java/DNPM/services/mtb/MtbService.java +++ b/src/main/java/DNPM/services/mtb/MtbService.java @@ -3,7 +3,19 @@ package DNPM.services.mtb; import de.itc.onkostar.api.Procedure; import java.util.List; +import java.util.Optional; public interface MtbService { String getProtocol(List<Procedure> procedures); + + static ProcedureToProtocolMapper procedureToProtocolMapper(Procedure procedure) { + switch (procedure.getFormName()) { + case "OS.Tumorkonferenz": + return new OsTumorkonferenzToProtocolMapper(); + case "OS.Tumorkonferenz.VarianteUKW": + return new OsTumorkonferenzVarianteUkwToProtocolMapper(); + default: + return p -> Optional.empty(); + } + } } diff --git a/src/main/java/DNPM/services/mtb/OsTumorkonferenzToProtocolMapper.java b/src/main/java/DNPM/services/mtb/OsTumorkonferenzToProtocolMapper.java index 6379ecf..b3e99c7 100644 --- a/src/main/java/DNPM/services/mtb/OsTumorkonferenzToProtocolMapper.java +++ b/src/main/java/DNPM/services/mtb/OsTumorkonferenzToProtocolMapper.java @@ -2,16 +2,17 @@ package DNPM.services.mtb; import de.itc.onkostar.api.Procedure; -import java.util.List; import java.util.Optional; + +/** + * Mapper zum Ermitteln des Protokollauszugs für Formular "OS.Tumorkonferenz" + * + * @since 0.0.2 + */ public class OsTumorkonferenzToProtocolMapper implements ProcedureToProtocolMapper { @Override - public Optional<String> apply(List<Procedure> procedures) { - assert(procedures.size() == 1); - - var procedure = procedures.get(0); - + public Optional<String> apply(Procedure procedure) { assert(procedure.getFormName().equals("OS.Tumorkonferenz")); var fragestellung = procedure.getValue("Fragestellung"); diff --git a/src/main/java/DNPM/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java b/src/main/java/DNPM/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java index 78a94eb..c55e46b 100644 --- a/src/main/java/DNPM/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java +++ b/src/main/java/DNPM/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java @@ -2,41 +2,31 @@ package DNPM.services.mtb; import de.itc.onkostar.api.Procedure; -import java.util.Comparator; -import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; +/** + * Mapper zum Ermitteln des Protokollauszugs für Formular "OS.Tumorkonferenz.VarianteUKW" + * + * @since 0.0.2 + */ public class OsTumorkonferenzVarianteUkwToProtocolMapper implements ProcedureToProtocolMapper { @Override - public Optional<String> apply(List<Procedure> procedures) { - procedures.forEach(procedure -> { - assert (procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW")); - }); - - procedures.sort(Comparator.comparing(Procedure::getStartDate)); - - var result = procedures.stream().map(procedure -> { - var fragestellung = procedure.getValue("Fragestellung"); - var empfehlung = procedure.getValue("Empfehlung"); - - if ( - null != fragestellung && !fragestellung.getString().isBlank() - && null != empfehlung && !empfehlung.getString().isBlank() - ) { - return String.format("Fragestellung:\n%s\n\nEmpfehlung:\n%s", fragestellung.getString().trim(), empfehlung.getString().trim()); - } else if (null != fragestellung && !fragestellung.getString().isBlank()) { - return fragestellung.getString().trim(); - } else if (null != empfehlung && !empfehlung.getString().isBlank()) { - return empfehlung.getString().trim(); - } - return ""; - }).collect(Collectors.joining("\n\n")); - - if (!result.isBlank()) { - return Optional.of(result); + public Optional<String> apply(Procedure procedure) { + assert (procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW")); + + var fragestellung = procedure.getValue("Fragestellung"); + var empfehlung = procedure.getValue("Empfehlung"); + + if ( + null != fragestellung && !fragestellung.getString().isBlank() + && null != empfehlung && !empfehlung.getString().isBlank() + ) { + return Optional.of(String.format("Fragestellung:\n%s\n\nEmpfehlung:\n%s", fragestellung.getString().trim(), empfehlung.getString().trim())); + } else if (null != fragestellung && !fragestellung.getString().isBlank()) { + return Optional.of(fragestellung.getString().trim()); + } else if (null != empfehlung && !empfehlung.getString().isBlank()) { + return Optional.of(empfehlung.getString().trim()); } - return Optional.empty(); } } diff --git a/src/main/java/DNPM/services/mtb/ProcedureToProtocolMapper.java b/src/main/java/DNPM/services/mtb/ProcedureToProtocolMapper.java index 54c04d9..d4e0e4c 100644 --- a/src/main/java/DNPM/services/mtb/ProcedureToProtocolMapper.java +++ b/src/main/java/DNPM/services/mtb/ProcedureToProtocolMapper.java @@ -2,9 +2,8 @@ package DNPM.services.mtb; import de.itc.onkostar.api.Procedure; -import java.util.List; import java.util.Optional; import java.util.function.Function; @FunctionalInterface -public interface ProcedureToProtocolMapper extends Function<List<Procedure>, Optional<String>> {} +public interface ProcedureToProtocolMapper extends Function<Procedure, Optional<String>> {} |
