diff options
Diffstat (limited to 'src')
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(); |
