mirror of
https://github.com/pcvolkmer/onkostar-plugin-dnpm.git
synced 2025-07-02 01:02:55 +00:00
Issue #37: Methoden um nur aktive Studien zu erhalten
This commit is contained in:
@ -128,7 +128,7 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
|
||||
* executePluginMethod(
|
||||
* 'TherapieplanAnalyzer',
|
||||
* 'getStudien',
|
||||
* { q: 'NCT-12' },
|
||||
* { q: 'NCT-12', inactive: true },
|
||||
* (response) => console.log(response),
|
||||
* false
|
||||
* );
|
||||
@ -139,11 +139,18 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
|
||||
*/
|
||||
public List<Studie> getStudien(Map<String, Object> input) {
|
||||
var query = AnalyzerUtils.getRequiredValue(input, "q", String.class);
|
||||
var inactive = AnalyzerUtils.getRequiredValue(input, "inactive", Boolean.class).orElse(false);
|
||||
|
||||
if (query.isEmpty() || query.get().isBlank()) {
|
||||
return studienService.findAll();
|
||||
if (inactive) {
|
||||
return studienService.findAll();
|
||||
}
|
||||
return studienService.findActive();
|
||||
}
|
||||
return studienService.findByQuery(query.get());
|
||||
if (inactive) {
|
||||
return studienService.findByQuery(query.get());
|
||||
}
|
||||
return studienService.findActiveByQuery(query.get());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -32,13 +32,16 @@ public class Studie {
|
||||
private final String description;
|
||||
private final int version;
|
||||
|
||||
public Studie(final String kategorieName, final int version, final String code, final String studiennummer, final String shortDesc, final String description) {
|
||||
private final boolean active;
|
||||
|
||||
public Studie(final String kategorieName, final int version, final String code, final String studiennummer, final String shortDesc, final String description, final boolean active) {
|
||||
this.kategorieName = kategorieName;
|
||||
this.version = version;
|
||||
this.code = code;
|
||||
this.studiennummer = studiennummer;
|
||||
this.shortDesc = shortDesc;
|
||||
this.description = description;
|
||||
this.active = active;
|
||||
}
|
||||
|
||||
public String getKategorieName() {
|
||||
@ -65,6 +68,10 @@ public class Studie {
|
||||
return description;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
if (this.hasNctNumber()) {
|
||||
return Type.NCT;
|
||||
|
@ -5,6 +5,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Standardimplementierung zum Ermitteln von Studien
|
||||
@ -21,7 +22,7 @@ public class DefaultStudienService implements StudienService {
|
||||
|
||||
@Override
|
||||
public List<Studie> findAll() {
|
||||
var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description FROM studie "
|
||||
var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
|
||||
+ "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
|
||||
+ "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
|
||||
+ "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
|
||||
@ -36,13 +37,14 @@ public class DefaultStudienService implements StudienService {
|
||||
resultSet.getString("code"),
|
||||
resultSet.getString("studien_nummer"),
|
||||
resultSet.getString("shortdesc"),
|
||||
resultSet.getString("description")
|
||||
resultSet.getString("description"),
|
||||
resultSet.getBoolean("aktiv")
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Studie> findByQuery(String query) {
|
||||
var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description FROM studie "
|
||||
var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
|
||||
+ "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
|
||||
+ "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
|
||||
+ "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
|
||||
@ -59,7 +61,18 @@ public class DefaultStudienService implements StudienService {
|
||||
resultSet.getString("code"),
|
||||
resultSet.getString("studien_nummer"),
|
||||
resultSet.getString("shortdesc"),
|
||||
resultSet.getString("description")
|
||||
resultSet.getString("description"),
|
||||
resultSet.getBoolean("aktiv")
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Studie> findActive() {
|
||||
return findAll().stream().filter(Studie::isActive).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Studie> findActiveByQuery(String query) {
|
||||
return findByQuery(query).stream().filter(Studie::isActive).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@ -21,4 +21,19 @@ public interface StudienService {
|
||||
*/
|
||||
List<Studie> findByQuery(String query);
|
||||
|
||||
/**
|
||||
* Übergibt eine Liste mit aktiven Studien
|
||||
*
|
||||
* @return Liste mit aktiven Studien
|
||||
*/
|
||||
List<Studie> findActive();
|
||||
|
||||
/**
|
||||
* Übergibt eine Liste mit aktiven Studien, deren (Kurz-)Beschreibung oder Studiennummer den übergebenen Wert enthalten
|
||||
*
|
||||
* @param query Wert der enthalten sein muss
|
||||
* @return Gefilterte Liste mit aktiven Studien
|
||||
*/
|
||||
List<Studie> findActiveByQuery(String query);
|
||||
|
||||
}
|
||||
|
@ -62,24 +62,42 @@ class EinzelempfehlungAnalyzerTest {
|
||||
var input = Map.of("q", (Object) " ");
|
||||
this.analyzer.getStudien(input);
|
||||
|
||||
verify(studienService, times(1)).findAll();
|
||||
verify(studienService, times(1)).findActive();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequestAllStudienForEmptyInputMap() {
|
||||
void shouldRequestActiveStudienForEmptyInputMap() {
|
||||
var input = new HashMap<String, Object>();
|
||||
this.analyzer.getStudien(input);
|
||||
|
||||
verify(studienService, times(1)).findAll();
|
||||
verify(studienService, times(1)).findActive();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequestFilteredStudien() {
|
||||
void shouldRequestFilteredActiveStudien() {
|
||||
var input = Map.of("q", (Object) "NCT-123");
|
||||
this.analyzer.getStudien(input);
|
||||
|
||||
var captor = ArgumentCaptor.forClass(String.class);
|
||||
verify(studienService, times(1)).findByQuery(captor.capture());
|
||||
verify(studienService, times(1)).findActiveByQuery(captor.capture());
|
||||
assertThat(captor.getValue()).isEqualTo("NCT-123");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequestActiveStudien() {
|
||||
var input = Map.of("q", (Object) "");
|
||||
this.analyzer.getStudien(input);
|
||||
|
||||
verify(studienService, times(1)).findActive();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequestAllFilteredtudien() {
|
||||
var input = Map.of("q", (Object) "NCT-123");
|
||||
this.analyzer.getStudien(input);
|
||||
|
||||
var captor = ArgumentCaptor.forClass(String.class);
|
||||
verify(studienService, times(1)).findActiveByQuery(captor.capture());
|
||||
assertThat(captor.getValue()).isEqualTo("NCT-123");
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,8 @@ class StudieTest {
|
||||
null,
|
||||
"Nct-12345678",
|
||||
"Teststudie 1",
|
||||
"Teststudie 1"
|
||||
"Teststudie 1",
|
||||
true
|
||||
);
|
||||
|
||||
assertThat(studie.getType()).isEqualTo(Studie.Type.NCT);
|
||||
@ -29,7 +30,8 @@ class StudieTest {
|
||||
null,
|
||||
"2023-012345-12",
|
||||
"Teststudie 1",
|
||||
"Teststudie 1"
|
||||
"Teststudie 1",
|
||||
true
|
||||
);
|
||||
|
||||
assertThat(studie.getType()).isEqualTo(Studie.Type.EUDRA_CT);
|
||||
@ -43,7 +45,8 @@ class StudieTest {
|
||||
"teststudie1",
|
||||
null,
|
||||
"Teststudie 1",
|
||||
"Teststudie 1"
|
||||
"Teststudie 1",
|
||||
true
|
||||
);
|
||||
|
||||
assertThat(studie.getType()).isEqualTo(Studie.Type.UNKNOWN);
|
||||
|
Reference in New Issue
Block a user