mirror of
https://github.com/pcvolkmer/onkostar-plugin-dnpm.git
synced 2025-07-02 01:02:55 +00:00
Issue #4: Backend-Service-Methode zum Abfragen von Studien hinzugefügt
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
package DNPM.analyzer;
|
||||
|
||||
import DNPM.services.FormService;
|
||||
import DNPM.services.Studie;
|
||||
import DNPM.services.StudienService;
|
||||
import de.itc.onkostar.api.Disease;
|
||||
import de.itc.onkostar.api.IOnkostarApi;
|
||||
import de.itc.onkostar.api.Item;
|
||||
@ -13,6 +15,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
@ -30,9 +34,12 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
|
||||
|
||||
private final FormService formService;
|
||||
|
||||
public TherapieplanAnalyzer(final IOnkostarApi onkostarApi, final FormService formService) {
|
||||
private final StudienService studienService;
|
||||
|
||||
public TherapieplanAnalyzer(final IOnkostarApi onkostarApi, final FormService formService, final StudienService studienService) {
|
||||
this.onkostarApi = onkostarApi;
|
||||
this.formService = formService;
|
||||
this.studienService = studienService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -93,6 +100,33 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
|
||||
updateMtbInSubforms(procedure);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Übergibt alle Studien, deren (Kurz-)Beschreibung oder NCT-Nummer den übergebenen Eingabewert <code>q</code> enthält
|
||||
*
|
||||
* <p>Wurde der Eingabewert nicht angegeben oder ist leer, werden alle Studien übergeben.
|
||||
*
|
||||
* <p>Beispiel zur Nutzung in einem Formularscript
|
||||
* <pre>
|
||||
* executePluginMethod(
|
||||
* 'TherapieplanAnalyzer',
|
||||
* 'getStudien',
|
||||
* { q: 'NCT-12' },
|
||||
* (response) => console.log(response),
|
||||
* false
|
||||
* );
|
||||
* </pre>
|
||||
* @param input Map mit Eingabewerten
|
||||
*/
|
||||
public List<Studie> getStudien(Map<String, Object> input) {
|
||||
var query = input.get("q");
|
||||
|
||||
if (null == query || query.toString().isBlank()) {
|
||||
return studienService.findAll();
|
||||
}
|
||||
return studienService.findByQuery(query.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
|
||||
* "Humangenetische Beratung" und "Reevaluation", wenn erforderlich.
|
||||
|
@ -6,6 +6,11 @@ import org.springframework.stereotype.Service;
|
||||
import javax.sql.DataSource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Standardimplementierung zum Ermitteln von Studien
|
||||
*
|
||||
* @since 0.0.2
|
||||
*/
|
||||
@Service
|
||||
public class DefaultStudienService implements StudienService {
|
||||
|
||||
@ -38,11 +43,11 @@ public class DefaultStudienService implements StudienService {
|
||||
+ "JOIN property_catalogue_version ON property_catalogue.id = property_catalogue_version.datacatalog_id "
|
||||
+ "JOIN property_catalogue_version_entry pcve ON property_catalogue_version.id = pcve.property_version_id "
|
||||
+ "LEFT JOIN studie ON pcve.id = studie.property_version_entry AND studie.aktiv "
|
||||
+ "WHERE property_catalogue.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ?);";
|
||||
+ "WHERE property_catalogue.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ? OR studie.studien_nummer LIKE ?);";
|
||||
|
||||
var like = String.format("%%%s%%", query);
|
||||
|
||||
return this.jdbcTemplate.query(sql, new Object[]{like, like}, (resultSet, i) -> new Studie(
|
||||
return this.jdbcTemplate.query(sql, new Object[]{like, like, like}, (resultSet, i) -> new Studie(
|
||||
resultSet.getString(1),
|
||||
resultSet.getString(2),
|
||||
resultSet.getString(3),
|
||||
|
@ -4,8 +4,19 @@ import java.util.List;
|
||||
|
||||
public interface StudienService {
|
||||
|
||||
/**
|
||||
* Übergibt eine Liste mit allen Studien
|
||||
*
|
||||
* @return Liste mit allen Studien
|
||||
*/
|
||||
List<Studie> findAll();
|
||||
|
||||
/**
|
||||
* Übergibt eine Liste mit Studien, deren (Kurz-)Beschreibung oder Studiennummer den übergebenen Wert enthalten
|
||||
*
|
||||
* @param query Wert der enthalten sein muss
|
||||
* @return Gefilterte Liste mit Studien
|
||||
*/
|
||||
List<Studie> findByQuery(String query);
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package DNPM.analyzer;
|
||||
|
||||
import DNPM.services.FormService;
|
||||
import DNPM.services.StudienService;
|
||||
import de.itc.onkostar.api.IOnkostarApi;
|
||||
import de.itc.onkostar.api.Item;
|
||||
import de.itc.onkostar.api.Procedure;
|
||||
@ -8,11 +9,15 @@ import de.itc.onkostar.api.constants.JaNeinUnbekannt;
|
||||
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.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@ -25,11 +30,14 @@ public class TherapieplanAnalyzerTest {
|
||||
@Mock
|
||||
private FormService formService;
|
||||
|
||||
@Mock
|
||||
private StudienService studienService;
|
||||
|
||||
private TherapieplanAnalyzer therapieplanAnalyzer;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
this.therapieplanAnalyzer = new TherapieplanAnalyzer(onkostarApi, formService);
|
||||
this.therapieplanAnalyzer = new TherapieplanAnalyzer(onkostarApi, formService, studienService);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -67,4 +75,30 @@ public class TherapieplanAnalyzerTest {
|
||||
verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
|
||||
}
|
||||
|
||||
@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<String, Object>();
|
||||
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");
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user