1
0
mirror of https://github.com/pcvolkmer/onkostar-plugin-dnpm.git synced 2025-07-03 01:32:55 +00:00

Issue #11: Backend-Service-Methode zum Abrufen des Protokollauszugs hinzugefügt

This commit is contained in:
2023-03-20 22:19:20 +01:00
parent 9809fd550f
commit aad777b5e3
3 changed files with 76 additions and 7 deletions

View File

@ -3,6 +3,7 @@ package DNPM.analyzer;
import DNPM.services.Studie; import DNPM.services.Studie;
import DNPM.services.StudienService; import DNPM.services.StudienService;
import DNPM.services.TherapieplanServiceFactory; import DNPM.services.TherapieplanServiceFactory;
import DNPM.services.mtb.MtbService;
import de.itc.onkostar.api.Disease; import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.Procedure; import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyseTriggerEvent; import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
@ -27,12 +28,16 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
private final TherapieplanServiceFactory therapieplanServiceFactory; private final TherapieplanServiceFactory therapieplanServiceFactory;
private final MtbService mtbService;
public TherapieplanAnalyzer( public TherapieplanAnalyzer(
final StudienService studienService, final StudienService studienService,
final TherapieplanServiceFactory therapieplanServiceFactory final TherapieplanServiceFactory therapieplanServiceFactory,
final MtbService mtbService
) { ) {
this.studienService = studienService; this.studienService = studienService;
this.therapieplanServiceFactory = therapieplanServiceFactory; this.therapieplanServiceFactory = therapieplanServiceFactory;
this.mtbService = mtbService;
} }
@Override @Override
@ -110,6 +115,7 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
* </pre> * </pre>
* *
* @param input Map mit Eingabewerten * @param input Map mit Eingabewerten
* @return Liste mit Studien
*/ */
public List<Studie> getStudien(Map<String, Object> input) { public List<Studie> getStudien(Map<String, Object> input) {
var query = input.get("q"); var query = input.get("q");
@ -120,4 +126,38 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
return studienService.findByQuery(query.toString()); 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)
);
}
} }

View File

@ -1,9 +1,9 @@
package DNPM.analyzer; package DNPM.analyzer;
import DNPM.services.MultipleMtbTherapieplanService; import DNPM.services.*;
import DNPM.services.StudienService; import DNPM.services.mtb.MtbService;
import DNPM.services.TherapieplanServiceFactory;
import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure; import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -13,6 +13,7 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
@ -24,22 +25,32 @@ public class TherapieplanAnalyzerTest {
@Mock @Mock
private IOnkostarApi onkostarApi; private IOnkostarApi onkostarApi;
@Mock
private FormService formService;
@Mock @Mock
private StudienService studienService; private StudienService studienService;
@Mock @Mock
private TherapieplanServiceFactory therapieplanServiceFactory; private TherapieplanServiceFactory therapieplanServiceFactory;
@Mock
private TherapieplanService therapieplanService;
@Mock
private MtbService mtbService;
private TherapieplanAnalyzer therapieplanAnalyzer; private TherapieplanAnalyzer therapieplanAnalyzer;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory); this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory, mtbService);
} }
@Test @Test
void shouldRunServiceMethodsOnAnalyzeCalled() { 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); this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
@ -72,4 +83,23 @@ public class TherapieplanAnalyzerTest {
assertThat(captor.getValue()).isEqualTo("NCT-123"); 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);
}
} }

View File

@ -33,7 +33,6 @@ public class TherapieplanServiceFactoryTest {
@Test @Test
void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() { void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() {
when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false); when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false);
var actual = this.therapieplanServiceFactory.currentUsableInstance();
var actual = this.therapieplanServiceFactory.currentUsableInstance(); var actual = this.therapieplanServiceFactory.currentUsableInstance();