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.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)
);
}
}

View File

@ -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;
@ -24,22 +25,32 @@ public class TherapieplanAnalyzerTest {
@Mock
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);
}
}

View File

@ -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();