summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-03-20 22:16:08 +0100
committerPaul-Christian Volkmer2023-03-20 22:29:32 +0100
commite9c25818d2966e175ef29f2d6663fd5292318bd8 (patch)
tree087576816bc9748de945dcda4f500332f664f24c /src/main/java
parent887221d5aec7fbe32a86b705b33aa4b5d2fa7062 (diff)
Issue #11: Methode zum Auffinden referenzierter MTBs hinzugefügt
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/DNPM/config/PluginConfiguration.java7
-rw-r--r--src/main/java/DNPM/services/DefaultTherapieplanService.java35
-rw-r--r--src/main/java/DNPM/services/MultipleMtbTherapieplanService.java63
-rw-r--r--src/main/java/DNPM/services/SettingsService.java2
-rw-r--r--src/main/java/DNPM/services/TherapieplanService.java18
-rw-r--r--src/main/java/DNPM/services/TherapieplanServiceFactory.java2
6 files changed, 125 insertions, 2 deletions
diff --git a/src/main/java/DNPM/config/PluginConfiguration.java b/src/main/java/DNPM/config/PluginConfiguration.java
index 825c57c..3f27034 100644
--- a/src/main/java/DNPM/config/PluginConfiguration.java
+++ b/src/main/java/DNPM/config/PluginConfiguration.java
@@ -2,6 +2,8 @@ package DNPM.config;
import DNPM.database.SettingsRepository;
import DNPM.services.*;
+import DNPM.services.mtb.DefaultMtbService;
+import DNPM.services.mtb.MtbService;
import de.itc.onkostar.api.IOnkostarApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -36,6 +38,11 @@ public class PluginConfiguration {
}
@Bean
+ public MtbService mtbService(final SettingsService settingsService) {
+ return new DefaultMtbService(settingsService);
+ }
+
+ @Bean
public TherapieplanServiceFactory therapieplanServiceFactory(
final IOnkostarApi onkostarApi,
final SettingsService settingsService,
diff --git a/src/main/java/DNPM/services/DefaultTherapieplanService.java b/src/main/java/DNPM/services/DefaultTherapieplanService.java
index f705ce8..eee2041 100644
--- a/src/main/java/DNPM/services/DefaultTherapieplanService.java
+++ b/src/main/java/DNPM/services/DefaultTherapieplanService.java
@@ -6,6 +6,7 @@ import de.itc.onkostar.api.Procedure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
import java.util.Objects;
import static DNPM.services.FormService.hasValue;
@@ -36,6 +37,40 @@ public class DefaultTherapieplanService implements TherapieplanService {
this.updateMtbInSubforms(procedure);
}
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ if (!hasValue(procedure, "referstemtb")) {
+ return List.of();
+ }
+
+ var mtbProcedure = this.onkostarApi.getProcedure(procedure.getValue("referstemtb").getInt());
+ if (null == mtbProcedure) {
+ return List.of();
+ }
+ return List.of(mtbProcedure);
+ }
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
+ }
+ return findReferencedMtbs(procedure);
+ }
+
private void updateMtbInSections(Procedure procedure) {
if (!isYes(procedure, "humangenberatung") && !isYes(procedure, "reevaluation")) {
return;
diff --git a/src/main/java/DNPM/services/MultipleMtbTherapieplanService.java b/src/main/java/DNPM/services/MultipleMtbTherapieplanService.java
index d4eb297..faded4b 100644
--- a/src/main/java/DNPM/services/MultipleMtbTherapieplanService.java
+++ b/src/main/java/DNPM/services/MultipleMtbTherapieplanService.java
@@ -1,12 +1,75 @@
package DNPM.services;
+import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static DNPM.services.FormService.hasValue;
+import static DNPM.services.FormService.isYes;
+
public class MultipleMtbTherapieplanService implements TherapieplanService {
+ private final IOnkostarApi onkostarApi;
+
+ private final FormService formService;
+
+ public MultipleMtbTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.formService = formService;
+ }
+
@Override
public void updateRequiredMtbEntries(Procedure procedure) {
// No action required
}
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ var procedureIds = new ArrayList<Integer>();
+
+ var mtbReference = procedure.getValue("referstemtb").getInt();
+ procedureIds.add(mtbReference);
+
+ if (isYes(procedure, "humangenberatung") && hasValue(procedure, "reftkhumangenber")) {
+ procedureIds.add(procedure.getValue("reftkhumangenber").getInt());
+ }
+
+ if (isYes(procedure, "reevaluation") && hasValue(procedure, "reftkreevaluation")) {
+ procedureIds.add(procedure.getValue("reftkreevaluation").getInt());
+ }
+
+ formService.getSubFormProcedureIds(procedure.getId()).stream()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .forEach(subform -> {
+ if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
+ procedureIds.add(subform.getValue("mtb").getInt());
+ }
+
+ if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
+ procedureIds.add(subform.getValue("reftumorkonferenz").getInt());
+ }
+ });
+
+ return procedureIds.stream()
+ .distinct()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
+ }
+ return findReferencedMtbs(procedure);
+ }
}
diff --git a/src/main/java/DNPM/services/SettingsService.java b/src/main/java/DNPM/services/SettingsService.java
index b07a2f3..7459d4e 100644
--- a/src/main/java/DNPM/services/SettingsService.java
+++ b/src/main/java/DNPM/services/SettingsService.java
@@ -41,7 +41,7 @@ public class SettingsService {
* @return Übergibt <code>true</code>, wenn <code>mehrere_mtb_in_mtbepisode</code> auf "Ja" gesetzt ist.
*/
public boolean multipleMtbsInMtbEpisode() {
- var setting = getSetting("SID");
+ var setting = getSetting("mehrere_mtb_in_mtbepisode");
return setting.isPresent() && setting.get().equals("true");
}
}
diff --git a/src/main/java/DNPM/services/TherapieplanService.java b/src/main/java/DNPM/services/TherapieplanService.java
index e47d75e..7a725fc 100644
--- a/src/main/java/DNPM/services/TherapieplanService.java
+++ b/src/main/java/DNPM/services/TherapieplanService.java
@@ -2,6 +2,8 @@ package DNPM.services;
import de.itc.onkostar.api.Procedure;
+import java.util.List;
+
public interface TherapieplanService {
/**
@@ -12,4 +14,20 @@ public interface TherapieplanService {
*/
void updateRequiredMtbEntries(Procedure procedure);
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(Procedure procedure);
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(int procedureId);
+
}
diff --git a/src/main/java/DNPM/services/TherapieplanServiceFactory.java b/src/main/java/DNPM/services/TherapieplanServiceFactory.java
index 0b64410..3e05fb4 100644
--- a/src/main/java/DNPM/services/TherapieplanServiceFactory.java
+++ b/src/main/java/DNPM/services/TherapieplanServiceFactory.java
@@ -22,7 +22,7 @@ public class TherapieplanServiceFactory {
public TherapieplanService currentUsableInstance() {
if (settingsService.multipleMtbsInMtbEpisode()) {
- return new MultipleMtbTherapieplanService();
+ return new MultipleMtbTherapieplanService(onkostarApi, formService);
}
return new DefaultTherapieplanService(onkostarApi, formService);