diff options
| author | Paul-Christian Volkmer | 2023-03-21 17:32:48 +0100 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-03-21 17:34:46 +0100 |
| commit | 28b834d922f21a320fd02274274298bf894ac6a9 (patch) | |
| tree | ffb8216c075205d35e472517ee1aaa5a511749fa /src/main/java/DNPM | |
| parent | 9534fec4eee2a3017dca585535853d0252305515 (diff) | |
Mapping für Formular "MR.MTB_Anmeldung" zu Therapieplan-Protokollauszug hinzugefügt
Diffstat (limited to 'src/main/java/DNPM')
4 files changed, 79 insertions, 14 deletions
diff --git a/src/main/java/DNPM/config/PluginConfiguration.java b/src/main/java/DNPM/config/PluginConfiguration.java index 7cb8475..88f065b 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() { - return new DefaultMtbService(); + public MtbService mtbService(final IOnkostarApi onkostarApi) { + return new DefaultMtbService(onkostarApi); } @Bean diff --git a/src/main/java/DNPM/services/mtb/DefaultMtbService.java b/src/main/java/DNPM/services/mtb/DefaultMtbService.java index 9926a82..abfbf59 100644 --- a/src/main/java/DNPM/services/mtb/DefaultMtbService.java +++ b/src/main/java/DNPM/services/mtb/DefaultMtbService.java @@ -1,5 +1,6 @@ package DNPM.services.mtb; +import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Procedure; import java.util.Comparator; @@ -14,12 +15,18 @@ import java.util.stream.Collectors; */ public class DefaultMtbService implements MtbService { + private final IOnkostarApi onkostarApi; + + public DefaultMtbService(final IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } + @Override public String getProtocol(List<Procedure> procedures) { return procedures.stream() .sorted(Comparator.comparing(Procedure::getStartDate)) .map(procedure -> { - var mapper = MtbService.procedureToProtocolMapper(procedure); + var mapper = procedureToProtocolMapper(procedure); return mapper.apply(procedure); }) .filter(Optional::isPresent) @@ -29,4 +36,18 @@ public class DefaultMtbService implements MtbService { } + @Override + public ProcedureToProtocolMapper procedureToProtocolMapper(Procedure procedure) { + switch (procedure.getFormName()) { + case "OS.Tumorkonferenz": + return new OsTumorkonferenzToProtocolMapper(); + case "OS.Tumorkonferenz.VarianteUKW": + return new OsTumorkonferenzVarianteUkwToProtocolMapper(); + case "MR.MTB_Anmeldung": + return new MrMtbAnmeldungToProtocolMapper(this.onkostarApi); + default: + return p -> Optional.empty(); + } + } + } diff --git a/src/main/java/DNPM/services/mtb/MrMtbAnmeldungToProtocolMapper.java b/src/main/java/DNPM/services/mtb/MrMtbAnmeldungToProtocolMapper.java new file mode 100644 index 0000000..eac1127 --- /dev/null +++ b/src/main/java/DNPM/services/mtb/MrMtbAnmeldungToProtocolMapper.java @@ -0,0 +1,54 @@ +package DNPM.services.mtb; + +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Procedure; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Optional; + +public class MrMtbAnmeldungToProtocolMapper implements ProcedureToProtocolMapper { + + private final IOnkostarApi onkostarApi; + + public MrMtbAnmeldungToProtocolMapper(final IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } + + @Override + public Optional<String> apply(Procedure procedure) { + assert (procedure.getFormName().equals("MR.MTB_Anmeldung")); + + var resultParts = new ArrayList<String>(); + + var fragestellung = procedure.getValue("Fragestellung"); + if (null != fragestellung && !fragestellung.getString().isBlank()) { + resultParts.add(String.format("Fragestellung:\n%s", fragestellung.getString())); + } + + var refEmpfehlung = procedure.getValue("Empfehlung"); + if (null != refEmpfehlung && refEmpfehlung.getInt() > 0) { + var empfehlungsProzedur = onkostarApi.getProcedure(refEmpfehlung.getInt()); + var refEinzelempfehlungen = onkostarApi.getSubprocedures(empfehlungsProzedur.getId()); + + if (null != refEinzelempfehlungen) { + refEinzelempfehlungen.stream() + .sorted(Comparator.comparingInt(proc -> proc.getValue("Prioritaet").getInt())) + .forEach(proc -> { + if (proc.getFormName().equals("MR.MTB_Einzelempfehlung")) { + var empfehlung = proc.getValue("Empfehlung"); + if (null != empfehlung && !empfehlung.getString().isBlank()) { + resultParts.add(String.format("Empfehlung:\n%s", empfehlung.getString())); + } + } + }); + } + } + + if (resultParts.isEmpty()) { + return Optional.empty(); + } + + return Optional.of(String.join("\n\n", resultParts)); + } +} diff --git a/src/main/java/DNPM/services/mtb/MtbService.java b/src/main/java/DNPM/services/mtb/MtbService.java index fcf55c1..19bbe38 100644 --- a/src/main/java/DNPM/services/mtb/MtbService.java +++ b/src/main/java/DNPM/services/mtb/MtbService.java @@ -3,19 +3,9 @@ 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(); - } - } + ProcedureToProtocolMapper procedureToProtocolMapper(Procedure procedure); } |
