summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-03-20 22:19:20 +0100
committerPaul-Christian Volkmer2023-03-20 22:36:13 +0100
commitaad777b5e36238ef437210bd9ad3ea51c3274a45 (patch)
tree271dc83ad9f4f4e72250b396662db92f3e37bfbe
parent9809fd550f5ddd394081529318db6a5001b54bac (diff)
Issue #11: Backend-Service-Methode zum Abrufen des Protokollauszugs hinzugefügt
-rw-r--r--src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java42
-rw-r--r--src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java40
-rw-r--r--src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java1
3 files changed, 76 insertions, 7 deletions
diff --git a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
index cf3b633..bdda750 100644
--- a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
@@ -3,6 +3,7 @@ package DNPM.analyzer;
import DNPM.services.Studie;
import DNPM.services.StudienService;
import DNPM.services.TherapieplanServiceFactory;
+import DNPM.services.mtb.MtbService;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
@@ -27,12 +28,16 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
private final TherapieplanServiceFactory therapieplanServiceFactory;
+ private final MtbService mtbService;
+
public TherapieplanAnalyzer(
final StudienService studienService,
- final TherapieplanServiceFactory therapieplanServiceFactory
+ final TherapieplanServiceFactory therapieplanServiceFactory,
+ final MtbService mtbService
) {
this.studienService = studienService;
this.therapieplanServiceFactory = therapieplanServiceFactory;
+ this.mtbService = mtbService;
}
@Override
@@ -110,6 +115,7 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
* </pre>
*
* @param input Map mit Eingabewerten
+ * @return Liste mit Studien
*/
public List<Studie> getStudien(Map<String, Object> input) {
var query = input.get("q");
@@ -120,4 +126,38 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
return studienService.findByQuery(query.toString());
}
+ /**
+ * Übergibt den Text der referenzierten MTBs für den Protokollauszug
+ *
+ * <p>Wurde der Eingabewert <code>id</code> nicht übergeben, wird ein leerer String zurück gegeben.
+ *
+ * <p>Beispiel zur Nutzung in einem Formularscript
+ * <pre>
+ * executePluginMethod(
+ * 'TherapieplanAnalyzer',
+ * 'getProtokollauszug',
+ * { id: 12345 },
+ * (response) => console.log(response),
+ * false
+ * );
+ * </pre>
+ *
+ * @param input Map mit Eingabewerten
+ * @return Zeichenkette mit Protokollauszug
+ */
+ public String getProtokollauszug(Map<String, Object> input) {
+ var id = input.get("id");
+
+ if (null == id || 0 == Integer.parseInt(id.toString())) {
+ return "";
+ }
+
+ var procedureId = Integer.parseInt(id.toString());
+ return mtbService.getProtocol(
+ therapieplanServiceFactory
+ .currentUsableInstance()
+ .findReferencedMtbs(procedureId)
+ );
+ }
+
}
diff --git a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
index 5c39212..fe3d824 100644
--- a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
+++ b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
@@ -1,9 +1,9 @@
package DNPM.analyzer;
-import DNPM.services.MultipleMtbTherapieplanService;
-import DNPM.services.StudienService;
-import DNPM.services.TherapieplanServiceFactory;
+import DNPM.services.*;
+import DNPM.services.mtb.MtbService;
import de.itc.onkostar.api.IOnkostarApi;
+import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -13,6 +13,7 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
@@ -25,21 +26,31 @@ public class TherapieplanAnalyzerTest {
private IOnkostarApi onkostarApi;
@Mock
+ private FormService formService;
+
+ @Mock
private StudienService studienService;
@Mock
private TherapieplanServiceFactory therapieplanServiceFactory;
+ @Mock
+ private TherapieplanService therapieplanService;
+
+ @Mock
+ private MtbService mtbService;
+
private TherapieplanAnalyzer therapieplanAnalyzer;
@BeforeEach
void setUp() {
- this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory);
+ this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory, mtbService);
}
@Test
void shouldRunServiceMethodsOnAnalyzeCalled() {
- when(this.therapieplanServiceFactory.currentUsableInstance()).thenReturn(new MultipleMtbTherapieplanService());
+ when(this.therapieplanServiceFactory.currentUsableInstance())
+ .thenReturn(new MultipleMtbTherapieplanService(onkostarApi, formService));
this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
@@ -72,4 +83,23 @@ public class TherapieplanAnalyzerTest {
assertThat(captor.getValue()).isEqualTo("NCT-123");
}
+ @Test
+ void shouldRequestProtokollauszug() {
+ doAnswer(invocationOnMock -> {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setValue("referstemtb", new Item("referstemtb", 2345));
+ return List.of(procedure);
+ }).when(this.therapieplanService).findReferencedMtbs(anyInt());
+
+ when(this.therapieplanServiceFactory.currentUsableInstance())
+ .thenReturn(therapieplanService);
+
+ var input = Map.of("id", (Object) 1234);
+ this.therapieplanAnalyzer.getProtokollauszug(input);
+
+ var captor = ArgumentCaptor.forClass(List.class);
+ verify(mtbService, times(1)).getProtocol(captor.capture());
+ assertThat(captor.getValue()).hasSize(1);
+ }
+
}
diff --git a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java
index 2f0022d..ea9ff42 100644
--- a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java
+++ b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java
@@ -33,7 +33,6 @@ public class TherapieplanServiceFactoryTest {
@Test
void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() {
when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false);
- var actual = this.therapieplanServiceFactory.currentUsableInstance();
var actual = this.therapieplanServiceFactory.currentUsableInstance();