summaryrefslogtreecommitdiff
path: root/src/main/java/DNPM/services/mtb
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/DNPM/services/mtb')
-rw-r--r--src/main/java/DNPM/services/mtb/DefaultMtbService.java23
-rw-r--r--src/main/java/DNPM/services/mtb/MrMtbAnmeldungToProtocolMapper.java54
-rw-r--r--src/main/java/DNPM/services/mtb/MtbService.java12
3 files changed, 77 insertions, 12 deletions
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);
}