diff options
Diffstat (limited to 'src/main/java/dev/dnpm/services/mtb/MrMtbAnmeldungToProtocolMapper.java')
| -rw-r--r-- | src/main/java/dev/dnpm/services/mtb/MrMtbAnmeldungToProtocolMapper.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/java/dev/dnpm/services/mtb/MrMtbAnmeldungToProtocolMapper.java b/src/main/java/dev/dnpm/services/mtb/MrMtbAnmeldungToProtocolMapper.java new file mode 100644 index 0000000..d705606 --- /dev/null +++ b/src/main/java/dev/dnpm/services/mtb/MrMtbAnmeldungToProtocolMapper.java @@ -0,0 +1,63 @@ +package dev.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; + } + + /** + * Wandelt eine Prozedur mit Formularnamen "MR.MTB_Anmeldung" in ein {@link Optional} mit einer + * Zeichenkette oder im Fehlerfall in ein leeres Optional um. + * + * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll. + * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur. + */ + @Override + public Optional<String> apply(Procedure procedure) { + if ((!procedure.getFormName().equals("MR.MTB_Anmeldung"))) { + throw new AssertionError("Procedure is not of form type '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)); + } +} |
