diff --git a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
index 6f38bdb..dfe9d22 100644
--- a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
@@ -1,8 +1,10 @@
package DNPM.analyzer;
+import DNPM.dto.Studie;
import DNPM.dto.Variant;
import DNPM.security.PermissionType;
import DNPM.security.PersonPoolBasedPermissionEvaluator;
+import DNPM.services.StudienService;
import DNPM.services.molekulargenetik.MolekulargenetikFormService;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
@@ -32,14 +34,18 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
private final MolekulargenetikFormService molekulargenetikFormService;
+ private final StudienService studienService;
+
private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
public EinzelempfehlungAnalyzer(
final IOnkostarApi onkostarApi,
+ final StudienService studienService,
final MolekulargenetikFormService molekulargenetikFormService,
final PersonPoolBasedPermissionEvaluator permissionEvaluator
) {
this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
this.molekulargenetikFormService = molekulargenetikFormService;
this.permissionEvaluator = permissionEvaluator;
}
@@ -112,4 +118,32 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
}
}
+ /**
+ * Übergibt alle Studien, deren (Kurz-)Beschreibung oder NCT-Nummer den übergebenen Eingabewert q
enthält
+ *
+ *
Wurde der Eingabewert nicht angegeben oder ist leer, werden alle Studien übergeben.
+ *
+ *
Beispiel zur Nutzung in einem Formularscript
+ *
+ * executePluginMethod(
+ * 'TherapieplanAnalyzer',
+ * 'getStudien',
+ * { q: 'NCT-12' },
+ * (response) => console.log(response),
+ * false
+ * );
+ *
+ *
+ * @param input Map mit Eingabewerten
+ * @return Liste mit Studien
+ */
+ public List getStudien(Map input) {
+ var query = AnalyzerUtils.getRequiredValue(input, "q", String.class);
+
+ if (query.isEmpty() || query.get().isBlank()) {
+ return studienService.findAll();
+ }
+ return studienService.findByQuery(query.get());
+ }
+
}
diff --git a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
index aef635b..6561da4 100644
--- a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
@@ -1,9 +1,7 @@
package DNPM.analyzer;
-import DNPM.dto.Studie;
import DNPM.security.DelegatingDataBasedPermissionEvaluator;
import DNPM.security.PermissionType;
-import DNPM.services.StudienService;
import DNPM.services.mtb.MtbService;
import DNPM.services.therapieplan.TherapieplanServiceFactory;
import de.itc.onkostar.api.Disease;
@@ -15,7 +13,6 @@ import de.itc.onkostar.api.analysis.OnkostarPluginType;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -27,8 +24,6 @@ import java.util.Set;
@Component
public class TherapieplanAnalyzer implements IProcedureAnalyzer {
- private final StudienService studienService;
-
private final TherapieplanServiceFactory therapieplanServiceFactory;
private final MtbService mtbService;
@@ -36,12 +31,10 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
private final DelegatingDataBasedPermissionEvaluator permissionEvaluator;
public TherapieplanAnalyzer(
- final StudienService studienService,
final TherapieplanServiceFactory therapieplanServiceFactory,
final MtbService mtbService,
final DelegatingDataBasedPermissionEvaluator permissionEvaluator
) {
- this.studienService = studienService;
this.therapieplanServiceFactory = therapieplanServiceFactory;
this.mtbService = mtbService;
this.permissionEvaluator = permissionEvaluator;
@@ -104,35 +97,6 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
}
-
- /**
- * Übergibt alle Studien, deren (Kurz-)Beschreibung oder NCT-Nummer den übergebenen Eingabewert q
enthält
- *
- * Wurde der Eingabewert nicht angegeben oder ist leer, werden alle Studien übergeben.
- *
- *
Beispiel zur Nutzung in einem Formularscript
- *
- * executePluginMethod(
- * 'TherapieplanAnalyzer',
- * 'getStudien',
- * { q: 'NCT-12' },
- * (response) => console.log(response),
- * false
- * );
- *
- *
- * @param input Map mit Eingabewerten
- * @return Liste mit Studien
- */
- public List getStudien(Map input) {
- var query = AnalyzerUtils.getRequiredValue(input, "q", String.class);
-
- if (query.isEmpty() || query.get().isBlank()) {
- return studienService.findAll();
- }
- return studienService.findByQuery(query.get());
- }
-
/**
* Übergibt den Text der referenzierten MTBs für den Protokollauszug
*
diff --git a/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java b/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
index f72159d..8812442 100644
--- a/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
+++ b/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
@@ -2,17 +2,21 @@ package DNPM.analyzer;
import DNPM.security.PermissionType;
import DNPM.security.PersonPoolBasedPermissionEvaluator;
+import DNPM.services.StudienService;
import DNPM.services.molekulargenetik.MolekulargenetikFormService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
+import java.util.HashMap;
import java.util.Map;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@@ -21,6 +25,8 @@ class EinzelempfehlungAnalyzerTest {
private IOnkostarApi onkostarApi;
+ private StudienService studienService;
+
private MolekulargenetikFormService molekulargenetikFormService;
private PersonPoolBasedPermissionEvaluator permissionEvaluator;
@@ -30,13 +36,15 @@ class EinzelempfehlungAnalyzerTest {
@BeforeEach
void setup(
@Mock IOnkostarApi onkostarApi,
+ @Mock StudienService studienService,
@Mock MolekulargenetikFormService molekulargenetikFormService,
@Mock PersonPoolBasedPermissionEvaluator permissionEvaluator
) {
this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
this.molekulargenetikFormService = molekulargenetikFormService;
this.permissionEvaluator = permissionEvaluator;
- this.analyzer = new EinzelempfehlungAnalyzer(onkostarApi, molekulargenetikFormService, permissionEvaluator);
+ this.analyzer = new EinzelempfehlungAnalyzer(onkostarApi, studienService, molekulargenetikFormService, permissionEvaluator);
}
@Test
@@ -49,4 +57,30 @@ class EinzelempfehlungAnalyzerTest {
verify(molekulargenetikFormService, times(1)).getVariants(any(Procedure.class));
}
+ @Test
+ void shouldRequestAllStudienForEmptyQueryString() {
+ var input = Map.of("q", (Object) " ");
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findAll();
+ }
+
+ @Test
+ void shouldRequestAllStudienForEmptyInputMap() {
+ var input = new HashMap();
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findAll();
+ }
+
+ @Test
+ void shouldRequestFilteredStudien() {
+ var input = Map.of("q", (Object) "NCT-123");
+ this.analyzer.getStudien(input);
+
+ var captor = ArgumentCaptor.forClass(String.class);
+ verify(studienService, times(1)).findByQuery(captor.capture());
+ assertThat(captor.getValue()).isEqualTo("NCT-123");
+ }
+
}
diff --git a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
index ffd886b..cd5aee1 100644
--- a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
+++ b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
@@ -2,7 +2,7 @@ package DNPM.analyzer;
import DNPM.security.DelegatingDataBasedPermissionEvaluator;
import DNPM.security.PermissionType;
-import DNPM.services.*;
+import DNPM.services.FormService;
import DNPM.services.mtb.MtbService;
import DNPM.services.therapieplan.MultipleMtbTherapieplanService;
import DNPM.services.therapieplan.TherapieplanService;
@@ -17,7 +17,6 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,9 +32,6 @@ class TherapieplanAnalyzerTest {
@Mock
private FormService formService;
- @Mock
- private StudienService studienService;
-
@Mock
private TherapieplanServiceFactory therapieplanServiceFactory;
@@ -52,7 +48,7 @@ class TherapieplanAnalyzerTest {
@BeforeEach
void setUp() {
- this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory, mtbService, permissionEvaluator);
+ this.therapieplanAnalyzer = new TherapieplanAnalyzer(therapieplanServiceFactory, mtbService, permissionEvaluator);
}
@Test
@@ -65,32 +61,6 @@ class TherapieplanAnalyzerTest {
verify(this.therapieplanServiceFactory, times(1)).currentUsableInstance();
}
- @Test
- void shouldRequestAllStudienForEmptyQueryString() {
- var input = Map.of("q", (Object) " ");
- this.therapieplanAnalyzer.getStudien(input);
-
- verify(studienService, times(1)).findAll();
- }
-
- @Test
- void shouldRequestAllStudienForEmptyInputMap() {
- var input = new HashMap();
- this.therapieplanAnalyzer.getStudien(input);
-
- verify(studienService, times(1)).findAll();
- }
-
- @Test
- void shouldRequestFilteredStudien() {
- var input = Map.of("q", (Object) "NCT-123");
- this.therapieplanAnalyzer.getStudien(input);
-
- var captor = ArgumentCaptor.forClass(String.class);
- verify(studienService, times(1)).findByQuery(captor.capture());
- assertThat(captor.getValue()).isEqualTo("NCT-123");
- }
-
@Test
void shouldRequestProtokollauszug() {
doAnswer(invocationOnMock -> {