summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2026-09-03 14:35:10 +0200
committerGitHub2026-09-03 14:35:10 +0200
commitfb91356b7777dfa5b6088bcc3a48b43924c1c0fd (patch)
treea3d384390e388395953865a286f15292aaa04a86
parent59daf77a63bd17bb14248cf9881046dd6b331e2a (diff)
build: apply Spotless plugin (#293)
-rw-r--r--build.gradle11
-rw-r--r--src/main/java/de/itc/db/dnpm/Setting.java46
-rw-r--r--src/main/java/dev/dnpm/oshelper/VerweisVon.java77
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/Analyzer.java9
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/AnalyzerUtils.java247
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/AtcCodesHelper.java110
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/BackendService.java30
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/ConsentManager.java82
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/DNPMHelper.java436
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzer.java195
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzer.java149
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/IPluginPart.java19
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/Merkmalskatalog.java134
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzer.java281
-rw-r--r--src/main/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzer.java84
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/AgentCode.java8
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/AtcCode.java143
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/CodeSystem.java6
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/UnregisteredCode.java86
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/services/AgentCodeService.java126
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java119
-rw-r--r--src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java79
-rw-r--r--src/main/java/dev/dnpm/oshelper/config/PluginConfiguration.java99
-rw-r--r--src/main/java/dev/dnpm/oshelper/database/ReadOnlyRepository.java12
-rw-r--r--src/main/java/dev/dnpm/oshelper/database/SettingsRepository.java7
-rw-r--r--src/main/java/dev/dnpm/oshelper/dto/EcogStatusWithDate.java67
-rw-r--r--src/main/java/dev/dnpm/oshelper/dto/Studie.java119
-rw-r--r--src/main/java/dev/dnpm/oshelper/dto/Variant.java186
-rw-r--r--src/main/java/dev/dnpm/oshelper/exceptions/FileParsingException.java7
-rw-r--r--src/main/java/dev/dnpm/oshelper/exceptions/FormException.java7
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/AbstractDelegatedPermissionEvaluator.java18
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluator.java91
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluator.java94
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/FormBasedSecurityAspects.java64
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/FormSecured.java3
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/FormSecuredResult.java3
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/IllegalSecuredObjectAccessException.java13
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/PermissionType.java4
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluator.java127
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspects.java108
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/PersonPoolSecured.java3
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/PersonPoolSecuredResult.java3
-rw-r--r--src/main/java/dev/dnpm/oshelper/security/SecurityService.java76
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java45
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java94
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/FormService.java79
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/SettingsService.java72
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/StudienService.java62
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java32
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java29
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java37
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java207
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java95
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java22
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java65
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java88
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java56
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java54
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java1
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java100
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java2
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java148
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java125
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java4
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java32
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java53
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java331
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java97
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java72
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java30
-rw-r--r--src/test/java/de/itc/utils/DateFormats.java11
-rw-r--r--src/test/java/de/itc/utils/MapUtilities.java18
-rw-r--r--src/test/java/dev/dnpm/oshelper/ConsentManagerTest.java68
-rw-r--r--src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java386
-rw-r--r--src/test/java/dev/dnpm/oshelper/MerkmalskatalogTest.java78
-rw-r--r--src/test/java/dev/dnpm/oshelper/analyzer/AnalyzerUtilsTest.java231
-rw-r--r--src/test/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzerTest.java174
-rw-r--r--src/test/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzerTest.java95
-rw-r--r--src/test/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzerTest.java302
-rw-r--r--src/test/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzerTest.java38
-rw-r--r--src/test/java/dev/dnpm/oshelper/atc/AgentCodeServiceTest.java90
-rw-r--r--src/test/java/dev/dnpm/oshelper/atc/AtcCodeTest.java37
-rw-r--r--src/test/java/dev/dnpm/oshelper/atc/CsvAgentCodeServiceTest.java19
-rw-r--r--src/test/java/dev/dnpm/oshelper/config/PluginConfigurationTest.java48
-rw-r--r--src/test/java/dev/dnpm/oshelper/dto/VariantTest.java187
-rw-r--r--src/test/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluatorTest.java225
-rw-r--r--src/test/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluatorTest.java219
-rw-r--r--src/test/java/dev/dnpm/oshelper/security/FormBasedSecurityAspectsTest.java212
-rw-r--r--src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java323
-rw-r--r--src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspectsTest.java279
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/SettingsServiceTest.java79
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/StudieTest.java60
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactoryTest.java56
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/consent/MrConsentManagerServiceTest.java64
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerServiceTest.java185
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekluargenetikFormServiceTest.java63
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapperTest.java223
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapperTest.java50
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapperTest.java50
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieServiceTest.java186
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieServiceTest.java240
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapperTest.java98
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanServiceTest.java316
-rw-r--r--src/test/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactoryTest.java42
104 files changed, 5287 insertions, 5085 deletions
diff --git a/build.gradle b/build.gradle
index 44ddfdd..147a182 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,8 @@
plugins {
id 'java'
id 'jacoco'
+ id("com.gradleup.shadow") version "8.3.8"
+ id("com.diffplug.spotless") version "7.2.1"
}
group = 'DNPMHelper'
@@ -66,6 +68,7 @@ processResources {
test {
useJUnitPlatform()
+ dependsOn(tasks.spotlessCheck)
}
jacoco {
@@ -80,3 +83,11 @@ jacocoTestReport {
html.required = true
}
}
+
+spotless {
+ java {
+ importOrder()
+ removeUnusedImports()
+ googleJavaFormat()
+ }
+} \ No newline at end of file
diff --git a/src/main/java/de/itc/db/dnpm/Setting.java b/src/main/java/de/itc/db/dnpm/Setting.java
index c6c6bc6..fb3b32c 100644
--- a/src/main/java/de/itc/db/dnpm/Setting.java
+++ b/src/main/java/de/itc/db/dnpm/Setting.java
@@ -19,44 +19,42 @@
package de.itc.db.dnpm;
-import org.hibernate.annotations.Immutable;
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
+import org.hibernate.annotations.Immutable;
@Entity
@Immutable
@Table(name = "einstellung")
public class Setting {
- @Id
- private Long id;
+ @Id private Long id;
- private String name;
+ private String name;
- @Column(name = "wert")
- private String value;
+ @Column(name = "wert")
+ private String value;
- protected Setting() {
- // No content
- }
+ protected Setting() {
+ // No content
+ }
- public Setting(Long id, String name, String value) {
- this.id = id;
- this.name = name;
- this.value = value;
- }
+ public Setting(Long id, String name, String value) {
+ this.id = id;
+ this.name = name;
+ this.value = value;
+ }
- public Long getId() {
- return id;
- }
+ public Long getId() {
+ return id;
+ }
- public String getName() {
- return name;
- }
+ public String getName() {
+ return name;
+ }
- public String getValue() {
- return value;
- }
+ public String getValue() {
+ return value;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/VerweisVon.java b/src/main/java/dev/dnpm/oshelper/VerweisVon.java
index fa99a16..4e71471 100644
--- a/src/main/java/dev/dnpm/oshelper/VerweisVon.java
+++ b/src/main/java/dev/dnpm/oshelper/VerweisVon.java
@@ -30,25 +30,50 @@ public class VerweisVon {
private String formname;
private Date datum;
- public VerweisVon() {
- }
+ public VerweisVon() {}
@SuppressWarnings("unused")
- public int getProcedure_id() { return this.procedure_id; }
- public int getData_form_id() { return this.data_form_id; }
- public String getData_catalogue_name() { return this.data_catalogue; }
- public String getData_catalogue_entry_name() { return this.data_catalogue_entry; }
- public String getFormname() { return this.formname; }
- public Date getDate() { return this.datum; }
+ public int getProcedure_id() {
+ return this.procedure_id;
+ }
+
+ public int getData_form_id() {
+ return this.data_form_id;
+ }
+
+ public String getData_catalogue_name() {
+ return this.data_catalogue;
+ }
+
+ public String getData_catalogue_entry_name() {
+ return this.data_catalogue_entry;
+ }
+
+ public String getFormname() {
+ return this.formname;
+ }
+
+ public Date getDate() {
+ return this.datum;
+ }
+
public String getTable() {
return "dk_" + this.data_catalogue.toLowerCase().replaceAll("[^a-zA-Z0-9]", "_");
}
+
public String getField() {
return this.data_catalogue_entry.toLowerCase();
}
+
public String getSQL() {
- return "SELECT " + this.getField() + " AS value FROM " + this.getTable() + " WHERE id = " + this.getProcedure_id();
+ return "SELECT "
+ + this.getField()
+ + " AS value FROM "
+ + this.getTable()
+ + " WHERE id = "
+ + this.getProcedure_id();
}
+
private String getDatumAsString() {
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy");
String Datum = null;
@@ -57,17 +82,37 @@ public class VerweisVon {
}
return Datum;
}
+
public String getVerbundenesFormular() {
String FName = "Formular " + this.getFormname();
- if (this.getDatumAsString() != null ) { FName += " vom " + this.getDatumAsString(); }
+ if (this.getDatumAsString() != null) {
+ FName += " vom " + this.getDatumAsString();
+ }
return FName;
}
@SuppressWarnings("unused")
- public void setProcedure_id(int procedure_id) {this.procedure_id = procedure_id; }
- public void setData_form_id(int data_form_id) {this.data_form_id = data_form_id; }
- public void setData_catalogue_name(String data_catalogue_name) {this.data_catalogue = data_catalogue_name; }
- public void setData_catalogue_entry_name(String data_catalogue_entry) {this.data_catalogue_entry = data_catalogue_entry; }
- public void setDate(Date datum) { this.datum = datum; }
- public void setFormname(String formname) { this.formname = formname; }
+ public void setProcedure_id(int procedure_id) {
+ this.procedure_id = procedure_id;
+ }
+
+ public void setData_form_id(int data_form_id) {
+ this.data_form_id = data_form_id;
+ }
+
+ public void setData_catalogue_name(String data_catalogue_name) {
+ this.data_catalogue = data_catalogue_name;
+ }
+
+ public void setData_catalogue_entry_name(String data_catalogue_entry) {
+ this.data_catalogue_entry = data_catalogue_entry;
+ }
+
+ public void setDate(Date datum) {
+ this.datum = datum;
+ }
+
+ public void setFormname(String formname) {
+ this.formname = formname;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/Analyzer.java b/src/main/java/dev/dnpm/oshelper/analyzer/Analyzer.java
index 2704047..e028e1e 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/Analyzer.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/Analyzer.java
@@ -23,9 +23,8 @@ import de.itc.onkostar.api.analysis.OnkostarPluginType;
public abstract class Analyzer implements IPluginPart {
- @Override
- public final OnkostarPluginType getType() {
- return OnkostarPluginType.ANALYZER;
- }
-
+ @Override
+ public final OnkostarPluginType getType() {
+ return OnkostarPluginType.ANALYZER;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/AnalyzerUtils.java b/src/main/java/dev/dnpm/oshelper/analyzer/AnalyzerUtils.java
index 489be33..c414fd6 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/AnalyzerUtils.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/AnalyzerUtils.java
@@ -29,136 +29,143 @@ import java.util.Optional;
*/
public class AnalyzerUtils {
- private AnalyzerUtils() {}
-
- /**
- * Prüft, ob in InputMap einen Eintrag mit key <code>key</code> und Typ <code>type</code>
- * gefunden wurde.
- *
- * @param input InputMap
- * @param key Key des Werts
- * @param type Typ des Werts
- * @return <code>true</code>>, wenn ein Wert von dem Typ gefunden wurde
- */
- public static boolean requiredValuePresent(final Map<String, Object> input, final String key, final Class<?> type) {
- var value = input.get(key);
-
- if (null == value) {
- return false;
- }
-
- return type.isInstance(value);
+ private AnalyzerUtils() {}
+
+ /**
+ * Prüft, ob in InputMap einen Eintrag mit key <code>key</code> und Typ <code>type</code> gefunden
+ * wurde.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param type Typ des Werts
+ * @return <code>true</code>>, wenn ein Wert von dem Typ gefunden wurde
+ */
+ public static boolean requiredValuePresent(
+ final Map<String, Object> input, final String key, final Class<?> type) {
+ var value = input.get(key);
+
+ if (null == value) {
+ return false;
}
- /**
- * Übergibt ein Optional mit Wert, wenn in InputMap ein Eintrag mit key <code>key</code> und Typ <code>type</code>
- * gefunden wurde. Anderenfalls ein leeres Optional
- *
- * <p><b>Beispiel</b>
- * <pre>
- * var id = AnalyzerUtils.getRequiredValue(input, "id", Integer.class);
- * if (id.isEmpty()) {
- * logger.error("Keine ID angegeben!");
- * return false;
- * }
- *
- * var idNummer = id.get();
- * ...
- * </pre>
- *
- * @param input InputMap
- * @param key Key des Werts
- * @param type Typ des Werts
- * @return Optional mit entsprechendem Wert oder leeres Optional
- */
- public static <T> Optional<T> getRequiredValue(final Map<String, Object> input, final String key, final Class<T> type) {
- if (! requiredValuePresent(input, key, type)) {
- return Optional.empty();
- }
-
- @SuppressWarnings("unchecked")
- var result = Optional.of((T)input.get(key));
-
- return result;
+ return type.isInstance(value);
+ }
+
+ /**
+ * Übergibt ein Optional mit Wert, wenn in InputMap ein Eintrag mit key <code>key</code> und Typ
+ * <code>type</code> gefunden wurde. Anderenfalls ein leeres Optional
+ *
+ * <p><b>Beispiel</b>
+ *
+ * <pre>
+ * var id = AnalyzerUtils.getRequiredValue(input, "id", Integer.class);
+ * if (id.isEmpty()) {
+ * logger.error("Keine ID angegeben!");
+ * return false;
+ * }
+ *
+ * var idNummer = id.get();
+ * ...
+ * </pre>
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param type Typ des Werts
+ * @return Optional mit entsprechendem Wert oder leeres Optional
+ */
+ public static <T> Optional<T> getRequiredValue(
+ final Map<String, Object> input, final String key, final Class<T> type) {
+ if (!requiredValuePresent(input, key, type)) {
+ return Optional.empty();
}
- /**
- * Prüft, ob ein Wert in der InputMap als Zeichenkette dem angegebenen RegExp entspricht
- *
- * @param input InputMap
- * @param key Key des Werts
- * @param regexp Der zu prüfende reguläre Ausdruck
- * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
- */
- public static boolean requiredValueMatches(final Map<String, Object> input, final String key, final String regexp) {
- var value = input.get(key);
-
- if (null == value) {
- return false;
- }
-
- return value.toString().matches(regexp);
+ @SuppressWarnings("unchecked")
+ var result = Optional.of((T) input.get(key));
+
+ return result;
+ }
+
+ /**
+ * Prüft, ob ein Wert in der InputMap als Zeichenkette dem angegebenen RegExp entspricht
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param regexp Der zu prüfende reguläre Ausdruck
+ * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
+ */
+ public static boolean requiredValueMatches(
+ final Map<String, Object> input, final String key, final String regexp) {
+ var value = input.get(key);
+
+ if (null == value) {
+ return false;
}
- /**
- * Übergibt ein Optional mit dem Wert als Zeichenkette, wenn er dem angegebenen RegExp entspricht.
- * Hierzu wird die Methode <code>toString()</code> auf den Wert angewendet.
- *
- * @param input InputMap
- * @param key Key des Werts
- * @param regexp Der zu prüfende reguläre Ausdruck
- * @return Optional mit entsprechendem Wert als Zeichenkette oder leeres Optional
- */
- public static Optional<String> getRequiredValueMatching(final Map<String, Object> input, final String key, final String regexp) {
- if (! requiredValueMatches(input, key, regexp)) {
- return Optional.empty();
- }
-
- return Optional.of(input.get(key).toString());
+ return value.toString().matches(regexp);
+ }
+
+ /**
+ * Übergibt ein Optional mit dem Wert als Zeichenkette, wenn er dem angegebenen RegExp entspricht.
+ * Hierzu wird die Methode <code>toString()</code> auf den Wert angewendet.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param regexp Der zu prüfende reguläre Ausdruck
+ * @return Optional mit entsprechendem Wert als Zeichenkette oder leeres Optional
+ */
+ public static Optional<String> getRequiredValueMatching(
+ final Map<String, Object> input, final String key, final String regexp) {
+ if (!requiredValueMatches(input, key, regexp)) {
+ return Optional.empty();
}
- /**
- * Prüft, ob ein Wert in der InputMap eine ID ist und damit eine Zahl größer Null ist.
- *
- * @param input InputMap
- * @param key Key des Werts
- * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
- */
- public static boolean requiredValueIsId(final Map<String, Object> input, final String key) {
- return requiredValuePresent(input, key, Integer.class) && Integer.parseInt(input.get(key).toString()) > 0;
+ return Optional.of(input.get(key).toString());
+ }
+
+ /**
+ * Prüft, ob ein Wert in der InputMap eine ID ist und damit eine Zahl größer Null ist.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
+ */
+ public static boolean requiredValueIsId(final Map<String, Object> input, final String key) {
+ return requiredValuePresent(input, key, Integer.class)
+ && Integer.parseInt(input.get(key).toString()) > 0;
+ }
+
+ /**
+ * Übergibt ein Optional, wenn der Wert eine ID ist und damit eine Zahl größer Null ist.
+ *
+ * <p><b>Beispiel</b>
+ *
+ * <pre>
+ * var id = AnalyzerUtils.getRequiredId(input, "id");
+ * if (id.isEmpty()) {
+ * logger.error("Keine gültige ID angegeben!");
+ * return false;
+ * }
+ *
+ * // Ist hier immer größer als Null
+ * var idNummer = id.get();
+ * ...
+ * </pre>
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @return Optional mit entsprechendem Wert oder leeres Optional
+ */
+ public static Optional<Integer> getRequiredId(final Map<String, Object> input, final String key) {
+ if (!requiredValuePresent(input, key, Integer.class)) {
+ return Optional.empty();
}
- /**
- * Übergibt ein Optional, wenn der Wert eine ID ist und damit eine Zahl größer Null ist.
- * <p><b>Beispiel</b>
- * <pre>
- * var id = AnalyzerUtils.getRequiredId(input, "id");
- * if (id.isEmpty()) {
- * logger.error("Keine gültige ID angegeben!");
- * return false;
- * }
- *
- * // Ist hier immer größer als Null
- * var idNummer = id.get();
- * ...
- * </pre>
- *
- * @param input InputMap
- * @param key Key des Werts
- * @return Optional mit entsprechendem Wert oder leeres Optional
- */
- public static Optional<Integer> getRequiredId(final Map<String, Object> input, final String key) {
- if (! requiredValuePresent(input, key, Integer.class)) {
- return Optional.empty();
- }
-
- var id = (int)input.get(key);
-
- if (id > 0) {
- return Optional.of(id);
- }
-
- return Optional.empty();
+ var id = (int) input.get(key);
+
+ if (id > 0) {
+ return Optional.of(id);
}
+ return Optional.empty();
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/AtcCodesHelper.java b/src/main/java/dev/dnpm/oshelper/analyzer/AtcCodesHelper.java
index 4ac4b79..0d2a378 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/AtcCodesHelper.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/AtcCodesHelper.java
@@ -24,76 +24,74 @@ import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
import dev.dnpm.oshelper.atc.AgentCode;
import dev.dnpm.oshelper.atc.services.AgentCodeService;
-import org.springframework.stereotype.Component;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import org.springframework.stereotype.Component;
@Component
public class AtcCodesHelper extends BackendService {
- private final List<AgentCodeService> agentCodeServices;
+ private final List<AgentCodeService> agentCodeServices;
- public AtcCodesHelper(List<AgentCodeService> agentCodeServices) {
- this.agentCodeServices = agentCodeServices;
- }
+ public AtcCodesHelper(List<AgentCodeService> agentCodeServices) {
+ this.agentCodeServices = agentCodeServices;
+ }
- /**
- * @deprecated
- */
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
- }
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
- return false;
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return false;
+ }
- @Override
- public boolean isSynchronous() {
- return false;
- }
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- /**
- * Return list with ATC codes and agents.
- * Usage in script:
- *
- * <pre>
- * executePluginMethod(
- * 'AtcCodesHelper',
- * 'query',
- * { q: '', size: 10 },
- * function (result) {console.log(result);},
- * false
- * );
- * </pre>
- *
- * @param input The data Map
- * @return The result list filtered by input
- */
- public List<AgentCode> query(final Map<String, Object> input) {
- String query = "";
- if (null != input.get("q")) {
- query = input.get("q").toString();
- }
+ /**
+ * Return list with ATC codes and agents. Usage in script:
+ *
+ * <pre>
+ * executePluginMethod(
+ * 'AtcCodesHelper',
+ * 'query',
+ * { q: '', size: 10 },
+ * function (result) {console.log(result);},
+ * false
+ * );
+ * </pre>
+ *
+ * @param input The data Map
+ * @return The result list filtered by input
+ */
+ public List<AgentCode> query(final Map<String, Object> input) {
+ String query = "";
+ if (null != input.get("q")) {
+ query = input.get("q").toString();
+ }
- int size = Integer.parseInt(input.get("size").toString());
- if (size == 0) {
- size = 10;
- }
- var result = new ArrayList<AgentCode>();
- for (var agentCodeService : this.agentCodeServices) {
- result.addAll(agentCodeService.findAgentCodes(query, size));
- }
- return result.stream().distinct().sorted().collect(Collectors.toList());
+ int size = Integer.parseInt(input.get("size").toString());
+ if (size == 0) {
+ size = 10;
+ }
+ var result = new ArrayList<AgentCode>();
+ for (var agentCodeService : this.agentCodeServices) {
+ result.addAll(agentCodeService.findAgentCodes(query, size));
}
+ return result.stream().distinct().sorted().collect(Collectors.toList());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/BackendService.java b/src/main/java/dev/dnpm/oshelper/analyzer/BackendService.java
index 8ec61f8..e249291 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/BackendService.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/BackendService.java
@@ -25,20 +25,20 @@ import de.itc.onkostar.api.analysis.OnkostarPluginType;
public abstract class BackendService implements IPluginPart {
- @Override
- public final OnkostarPluginType getType() {
- return OnkostarPluginType.BACKEND_SERVICE;
- }
-
- /**
- * Ein Backend-Service verwendet die Methode nicht, daher wird hier eine final Stub-Implementierung
- * verwendet, die ein Überschreiben verhindert.
- * @param procedure
- * @param disease
- */
- @Override
- public final void analyze(Procedure procedure, Disease disease) {
- // No op
- }
+ @Override
+ public final OnkostarPluginType getType() {
+ return OnkostarPluginType.BACKEND_SERVICE;
+ }
+ /**
+ * Ein Backend-Service verwendet die Methode nicht, daher wird hier eine final
+ * Stub-Implementierung verwendet, die ein Überschreiben verhindert.
+ *
+ * @param procedure
+ * @param disease
+ */
+ @Override
+ public final void analyze(Procedure procedure, Disease disease) {
+ // No op
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/ConsentManager.java b/src/main/java/dev/dnpm/oshelper/analyzer/ConsentManager.java
index e13327b..924e726 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/ConsentManager.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/ConsentManager.java
@@ -19,64 +19,64 @@
package dev.dnpm.oshelper.analyzer;
-import dev.dnpm.oshelper.services.consent.ConsentManagerServiceFactory;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import dev.dnpm.oshelper.services.consent.ConsentManagerServiceFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConsentManager extends Analyzer {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final ConsentManagerServiceFactory consentManagerServiceFactory;
+ private final ConsentManagerServiceFactory consentManagerServiceFactory;
- public ConsentManager(
- final IOnkostarApi onkostarApi,
- final ConsentManagerServiceFactory consentManagerServiceFactory
- ) {
- this.onkostarApi = onkostarApi;
- this.consentManagerServiceFactory = consentManagerServiceFactory;
- }
+ public ConsentManager(
+ final IOnkostarApi onkostarApi,
+ final ConsentManagerServiceFactory consentManagerServiceFactory) {
+ this.onkostarApi = onkostarApi;
+ this.consentManagerServiceFactory = consentManagerServiceFactory;
+ }
- @Override
- public String getDescription() {
- return "Aktualisiert Consent Daten in verknüpften Formularen";
- }
+ @Override
+ public String getDescription() {
+ return "Aktualisiert Consent Daten in verknüpften Formularen";
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- @Override
- public boolean isRelevantForAnalyzer(Procedure prozedur, Disease erkrankung) {
- return prozedur.getFormName().equals(onkostarApi.getGlobalSetting("consentform"));
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure prozedur, Disease erkrankung) {
+ return prozedur.getFormName().equals(onkostarApi.getGlobalSetting("consentform"));
+ }
- @Override
- public boolean isRelevantForDeletedProcedure() {
- // TODO is relevant for deleted procedure = true
- return false;
- }
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ // TODO is relevant for deleted procedure = true
+ return false;
+ }
- @Override
- public boolean isSynchronous() {
- return true;
- }
+ @Override
+ public boolean isSynchronous() {
+ return true;
+ }
- @Override
- public void analyze(Procedure prozedur, Disease erkrankung) {
- var consentManagerService = consentManagerServiceFactory.currentUsableInstance();
- if (! consentManagerService.canApply(prozedur)) {
- logger.error("Fehler im ConsentManagement: Kann Prozedur mit Formularnamen '{}' nicht anwenden", prozedur.getFormName());
- return;
- }
- consentManagerService.applyConsent(prozedur);
+ @Override
+ public void analyze(Procedure prozedur, Disease erkrankung) {
+ var consentManagerService = consentManagerServiceFactory.currentUsableInstance();
+ if (!consentManagerService.canApply(prozedur)) {
+ logger.error(
+ "Fehler im ConsentManagement: Kann Prozedur mit Formularnamen '{}' nicht anwenden",
+ prozedur.getFormName());
+ return;
}
-
+ consentManagerService.applyConsent(prozedur);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/DNPMHelper.java b/src/main/java/dev/dnpm/oshelper/analyzer/DNPMHelper.java
index 2559e3d..f779154 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/DNPMHelper.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/DNPMHelper.java
@@ -19,18 +19,22 @@
package dev.dnpm.oshelper.analyzer;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.VerweisVon;
-import dev.dnpm.oshelper.security.DelegatingDataBasedPermissionEvaluator;
-import dev.dnpm.oshelper.security.IllegalSecuredObjectAccessException;
-import dev.dnpm.oshelper.security.PermissionType;
-import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import dev.dnpm.oshelper.VerweisVon;
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.security.DelegatingDataBasedPermissionEvaluator;
+import dev.dnpm.oshelper.security.IllegalSecuredObjectAccessException;
+import dev.dnpm.oshelper.security.PermissionType;
+import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -40,240 +44,252 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
public class DNPMHelper extends BackendService {
- private static final Logger logger = LoggerFactory.getLogger(DNPMHelper.class);
+ private static final Logger logger = LoggerFactory.getLogger(DNPMHelper.class);
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final SystemtherapieService systemtherapieService;
+ private final SystemtherapieService systemtherapieService;
- private final DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
+ private final DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
- public DNPMHelper(
- final IOnkostarApi onkostarApi,
- final SystemtherapieService systemtherapieService,
- final DelegatingDataBasedPermissionEvaluator permissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.systemtherapieService = systemtherapieService;
- this.delegatingDataBasedPermissionEvaluator = permissionEvaluator;
- }
+ public DNPMHelper(
+ final IOnkostarApi onkostarApi,
+ final SystemtherapieService systemtherapieService,
+ final DelegatingDataBasedPermissionEvaluator permissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.systemtherapieService = systemtherapieService;
+ this.delegatingDataBasedPermissionEvaluator = permissionEvaluator;
+ }
- @Override
- public String getDescription() {
- return "Methoden für DNPM-Formulare";
- }
+ @Override
+ public String getDescription() {
+ return "Methoden für DNPM-Formulare";
+ }
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
- }
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
- @Override
- public boolean isSynchronous() {
- return true;
- }
+ @Override
+ public boolean isSynchronous() {
+ return true;
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- @Override
- public boolean isRelevantForAnalyzer(Procedure entry, Disease currentDisease) {
- // Plugin enthält nur Methoden für Formulare und soll nicht ausgeführt werden
- return false;
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure entry, Disease currentDisease) {
+ // Plugin enthält nur Methoden für Formulare und soll nicht ausgeführt werden
+ return false;
+ }
- @SuppressWarnings("unchecked")
- public List<Map<String, String>> getVerweise(final Map<String, Object> input) {
- var procedureId = AnalyzerUtils.getRequiredId(input, "ProcedureId");
- var patientId = AnalyzerUtils.getRequiredId(input, "PatientId");
+ @SuppressWarnings("unchecked")
+ public List<Map<String, String>> getVerweise(final Map<String, Object> input) {
+ var procedureId = AnalyzerUtils.getRequiredId(input, "ProcedureId");
+ var patientId = AnalyzerUtils.getRequiredId(input, "PatientId");
- if (procedureId.isEmpty() || patientId.isEmpty()) {
- return null;
- }
-
- var verbundeneFormulare = new ArrayList<Map<String, String>>();
-
- try {
- SessionFactory sessionFactory = onkostarApi.getSessionFactory();
- Session session = sessionFactory.getCurrentSession();
-
- String sql = "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum " +
- "FROM prozedur " +
- "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id " +
- "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id " +
- "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id " +
- "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id " +
- "WHERE patient_id = " + patientId.get() + " " +
- "AND geloescht = 0 " +
- "AND data_catalogue_entry.type = 'formReference' " +
- "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
-
- SQLQuery query = session.createSQLQuery(sql)
- .addScalar("procedure_id", StandardBasicTypes.INTEGER)
- .addScalar("data_form_id", StandardBasicTypes.INTEGER)
- .addScalar("data_catalogue", StandardBasicTypes.STRING)
- .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
- .addScalar("formname", StandardBasicTypes.STRING)
- .addScalar("datum", StandardBasicTypes.DATE);
-
- query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
- List<VerweisVon> result = query.list();
- try {
- int value = 0;
- for (VerweisVon verweisVon : result) {
- sql = verweisVon.getSQL();
- query = session.createSQLQuery(sql)
- .addScalar("value", StandardBasicTypes.INTEGER);
- if (query.uniqueResult() != null) {
- value = (Integer) query.uniqueResult();
- }
- if (value == procedureId.get()) {
- verbundeneFormulare.add(Map.of("formular", verweisVon.getVerbundenesFormular()));
- value = 0;
- }
- }
- } catch (Exception e) {
- logger.warn("Fehler beim Hinzufügen eines Formularverweises", e);
- }
- } catch (Exception e) {
- logger.error("Fehler beim Ermitteln der Formularverweise", e);
- return null;
- }
- return verbundeneFormulare;
+ if (procedureId.isEmpty() || patientId.isEmpty()) {
+ return null;
}
- public List<Map<String, String>> getSystemischeTherapienFromDiagnose(final Map<String, Object> input) {
- var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId");
- if (diagnoseId.isEmpty()) {
- logger.error("Kein Parameter 'DiagnoseId' angegeben, gebe 'null' zurück");
- return null;
+ var verbundeneFormulare = new ArrayList<Map<String, String>>();
+
+ try {
+ SessionFactory sessionFactory = onkostarApi.getSessionFactory();
+ Session session = sessionFactory.getCurrentSession();
+
+ String sql =
+ "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum "
+ + "FROM prozedur "
+ + "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id "
+ + "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id "
+ + "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id "
+ + "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id "
+ + "WHERE patient_id = "
+ + patientId.get()
+ + " "
+ + "AND geloescht = 0 "
+ + "AND data_catalogue_entry.type = 'formReference' "
+ + "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
+
+ SQLQuery query =
+ session
+ .createSQLQuery(sql)
+ .addScalar("procedure_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_form_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_catalogue", StandardBasicTypes.STRING)
+ .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
+ .addScalar("formname", StandardBasicTypes.STRING)
+ .addScalar("datum", StandardBasicTypes.DATE);
+
+ query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
+ List<VerweisVon> result = query.list();
+ try {
+ int value = 0;
+ for (VerweisVon verweisVon : result) {
+ sql = verweisVon.getSQL();
+ query = session.createSQLQuery(sql).addScalar("value", StandardBasicTypes.INTEGER);
+ if (query.uniqueResult() != null) {
+ value = (Integer) query.uniqueResult();
+ }
+ if (value == procedureId.get()) {
+ verbundeneFormulare.add(Map.of("formular", verweisVon.getVerbundenesFormular()));
+ value = 0;
+ }
}
-
- return systemtherapieService.getSystemischeTherapienFromDiagnose(diagnoseId.get());
+ } catch (Exception e) {
+ logger.warn("Fehler beim Hinzufügen eines Formularverweises", e);
+ }
+ } catch (Exception e) {
+ logger.error("Fehler beim Ermitteln der Formularverweise", e);
+ return null;
+ }
+ return verbundeneFormulare;
+ }
+
+ public List<Map<String, String>> getSystemischeTherapienFromDiagnose(
+ final Map<String, Object> input) {
+ var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId");
+ if (diagnoseId.isEmpty()) {
+ logger.error("Kein Parameter 'DiagnoseId' angegeben, gebe 'null' zurück");
+ return null;
}
- public String getProzedurenFromDiagnose(final Map<String, Object> input) {
- // Prozedur, Feldname, Wert
- var dataForm = AnalyzerUtils.getRequiredValue(input, "dataForm", String.class);
- var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId");
- var patientId = AnalyzerUtils.getRequiredId(input, "PatientId");
+ return systemtherapieService.getSystemischeTherapienFromDiagnose(diagnoseId.get());
+ }
- if (dataForm.isEmpty() || diagnoseId.isEmpty() || patientId.isEmpty()) {
- return "";
- }
+ public String getProzedurenFromDiagnose(final Map<String, Object> input) {
+ // Prozedur, Feldname, Wert
+ var dataForm = AnalyzerUtils.getRequiredValue(input, "dataForm", String.class);
+ var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId");
+ var patientId = AnalyzerUtils.getRequiredId(input, "PatientId");
- var formulare = new ArrayList<Map<String, Object>>();
- List<Procedure> prozeduren = onkostarApi.getProceduresByPatientId(patientId.get());
- for (Procedure Prozedur : prozeduren) {
- // Formular gehört zur aktuellen Diagnose und hat den angegebenen Namen
- if (Prozedur.getDiseaseIds().contains(diagnoseId.get()) && Prozedur.getFormName().contains(dataForm.get())) {
- // alle Werte auslesen
- // System.out.println(WerteListe.getKey() + ": " + WerteListe.getValue());
- formulare.add(Map.of(
- "Formular", Prozedur.getFormName(),
- "Felder", new HashMap<>(Prozedur.getAllValues())
- ));
- }
- }
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- return objectMapper.writeValueAsString(formulare);
- } catch (JsonProcessingException e) {
- logger.error("Kann Formulare nicht in JSON mappen", e);
- }
- return "";
+ if (dataForm.isEmpty() || diagnoseId.isEmpty() || patientId.isEmpty()) {
+ return "";
}
- public Object getEmpfehlung(final Map<String, Object> input) {
- var procedureID = AnalyzerUtils.getRequiredId(input, "ProcedureID");
-
- if (procedureID.isEmpty()) {
- logger.error("Kein Parameter 'ProcedureID' angegeben, gebe 'null' zurück");
- return null;
- }
-
- try {
- SessionFactory sessionFactory = onkostarApi.getSessionFactory();
- Session session = sessionFactory.getCurrentSession();
- var sql = "SELECT prozedur.id, genname, geneid, geneidlink, empfehlung, beginndatum FROM prozedur "
- + "LEFT JOIN dk_mtb_einzelempfehlung em ON em.id = prozedur.id "
- + "JOIN data_form df ON prozedur.data_form_id = df.id AND df.name = 'MR.MTB_Einzelempfehlung' "
- + "WHERE prozedur.hauptprozedur_id = " + procedureID.get() + " AND prozedur.geloescht = 0 "
- + "ORDER BY beginndatum";
-
- SQLQuery query = session.createSQLQuery(sql)
- .addScalar("id", StandardBasicTypes.STRING)
- .addScalar("genname", StandardBasicTypes.STRING)
- .addScalar("geneid", StandardBasicTypes.STRING)
- .addScalar("geneidlink", StandardBasicTypes.STRING)
- .addScalar("empfehlung", StandardBasicTypes.STRING)
- .addScalar("beginndatum", StandardBasicTypes.STRING);
-
- @SuppressWarnings("unchecked")
- List<String[]> rows = query.list();
- return rows;
- } catch (Exception e) {
- logger.error("Fehler bei Abfrage von Empfehlungen", e);
- return null;
- }
+ var formulare = new ArrayList<Map<String, Object>>();
+ List<Procedure> prozeduren = onkostarApi.getProceduresByPatientId(patientId.get());
+ for (Procedure Prozedur : prozeduren) {
+ // Formular gehört zur aktuellen Diagnose und hat den angegebenen Namen
+ if (Prozedur.getDiseaseIds().contains(diagnoseId.get())
+ && Prozedur.getFormName().contains(dataForm.get())) {
+ // alle Werte auslesen
+ // System.out.println(WerteListe.getKey() + ": " + WerteListe.getValue());
+ formulare.add(
+ Map.of(
+ "Formular",
+ Prozedur.getFormName(),
+ "Felder",
+ new HashMap<>(Prozedur.getAllValues())));
+ }
+ }
+ try {
+ ObjectMapper objectMapper = new ObjectMapper();
+ return objectMapper.writeValueAsString(formulare);
+ } catch (JsonProcessingException e) {
+ logger.error("Kann Formulare nicht in JSON mappen", e);
}
+ return "";
+ }
- public Object updateEmpfehlungPrio(final Map<String, Object> input) {
- // Auslesen und Prüfen der Parameter aus 'input'
- var rid = AnalyzerUtils.getRequiredId(input, "rid");
- if (rid.isEmpty()) {
- logger.error("Kein Parameter 'rid' angegeben, gebe 'false' zurück");
- return false;
- }
+ public Object getEmpfehlung(final Map<String, Object> input) {
+ var procedureID = AnalyzerUtils.getRequiredId(input, "ProcedureID");
- var strDate = AnalyzerUtils.getRequiredValueMatching(input, "bd", "[\\d]{4}-[\\d]{2}-[\\d]{2}");
- if (strDate.isEmpty()) {
- logger.error("Kein oder ungültiger Parameter 'bd' angegeben, gebe 'false' zurück");
- return false;
- }
+ if (procedureID.isEmpty()) {
+ logger.error("Kein Parameter 'ProcedureID' angegeben, gebe 'null' zurück");
+ return null;
+ }
- //String strD = strDate.toString();
- //String CompareDate = strD.substring(1, 11);
- //DateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
-
- try {
- String sql = "UPDATE prozedur SET beginndatum = '" + strDate.get() + "' WHERE id = '" + rid.get() + "' ";
- SQLQuery result = onkostarApi.getSessionFactory().getCurrentSession().createSQLQuery(sql);
- result.executeUpdate();
- return true;
- } catch (Exception e) {
- return "Achtung: Ein Fehler ist aufgetreten, Änderung konnte nicht gespeichert werden!";
- //return null;
- }
+ try {
+ SessionFactory sessionFactory = onkostarApi.getSessionFactory();
+ Session session = sessionFactory.getCurrentSession();
+ var sql =
+ "SELECT prozedur.id, genname, geneid, geneidlink, empfehlung, beginndatum FROM prozedur "
+ + "LEFT JOIN dk_mtb_einzelempfehlung em ON em.id = prozedur.id "
+ + "JOIN data_form df ON prozedur.data_form_id = df.id AND df.name = 'MR.MTB_Einzelempfehlung' "
+ + "WHERE prozedur.hauptprozedur_id = "
+ + procedureID.get()
+ + " AND prozedur.geloescht = 0 "
+ + "ORDER BY beginndatum";
+
+ SQLQuery query =
+ session
+ .createSQLQuery(sql)
+ .addScalar("id", StandardBasicTypes.STRING)
+ .addScalar("genname", StandardBasicTypes.STRING)
+ .addScalar("geneid", StandardBasicTypes.STRING)
+ .addScalar("geneidlink", StandardBasicTypes.STRING)
+ .addScalar("empfehlung", StandardBasicTypes.STRING)
+ .addScalar("beginndatum", StandardBasicTypes.STRING);
+
+ @SuppressWarnings("unchecked")
+ List<String[]> rows = query.list();
+ return rows;
+ } catch (Exception e) {
+ logger.error("Fehler bei Abfrage von Empfehlungen", e);
+ return null;
+ }
+ }
+
+ public Object updateEmpfehlungPrio(final Map<String, Object> input) {
+ // Auslesen und Prüfen der Parameter aus 'input'
+ var rid = AnalyzerUtils.getRequiredId(input, "rid");
+ if (rid.isEmpty()) {
+ logger.error("Kein Parameter 'rid' angegeben, gebe 'false' zurück");
+ return false;
+ }
+ var strDate = AnalyzerUtils.getRequiredValueMatching(input, "bd", "[\\d]{4}-[\\d]{2}-[\\d]{2}");
+ if (strDate.isEmpty()) {
+ logger.error("Kein oder ungültiger Parameter 'bd' angegeben, gebe 'false' zurück");
+ return false;
}
- public List<EcogStatusWithDate> getEcogStatus(final Map<String, Object> input) {
- var pid = AnalyzerUtils.getRequiredId(input, "PatientId");
- if (pid.isEmpty()) {
- logger.error("Kein Parameter 'PatientId' angegeben, gebe leere Liste zurück");
- return List.of();
- }
+ // String strD = strDate.toString();
+ // String CompareDate = strD.substring(1, 11);
+ // DateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+
+ try {
+ String sql =
+ "UPDATE prozedur SET beginndatum = '"
+ + strDate.get()
+ + "' WHERE id = '"
+ + rid.get()
+ + "' ";
+ SQLQuery result = onkostarApi.getSessionFactory().getCurrentSession().createSQLQuery(sql);
+ result.executeUpdate();
+ return true;
+ } catch (Exception e) {
+ return "Achtung: Ein Fehler ist aufgetreten, Änderung konnte nicht gespeichert werden!";
+ // return null;
+ }
+ }
- var patient = onkostarApi.getPatient(pid.get());
- if (null == patient) {
- logger.error("Patient nicht gefunden, gebe leere Liste zurück");
- return List.of();
- }
+ public List<EcogStatusWithDate> getEcogStatus(final Map<String, Object> input) {
+ var pid = AnalyzerUtils.getRequiredId(input, "PatientId");
+ if (pid.isEmpty()) {
+ logger.error("Kein Parameter 'PatientId' angegeben, gebe leere Liste zurück");
+ return List.of();
+ }
- if (delegatingDataBasedPermissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), patient, PermissionType.READ)) {
- return systemtherapieService.ecogStatus(patient);
- }
+ var patient = onkostarApi.getPatient(pid.get());
+ if (null == patient) {
+ logger.error("Patient nicht gefunden, gebe leere Liste zurück");
+ return List.of();
+ }
- throw new IllegalSecuredObjectAccessException("Kein Zugriff auf diesen Patienten");
+ if (delegatingDataBasedPermissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(), patient, PermissionType.READ)) {
+ return systemtherapieService.ecogStatus(patient);
}
-} \ No newline at end of file
+
+ throw new IllegalSecuredObjectAccessException("Kein Zugriff auf diesen Patienten");
+ }
+}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzer.java b/src/main/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzer.java
index 941d3c8..12dc47a 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzer.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzer.java
@@ -19,135 +19,136 @@
package dev.dnpm.oshelper.analyzer;
+import de.itc.onkostar.api.Disease;
+import de.itc.onkostar.api.IOnkostarApi;
+import de.itc.onkostar.api.Procedure;
+import de.itc.onkostar.api.analysis.AnalyzerRequirement;
import dev.dnpm.oshelper.dto.Studie;
import dev.dnpm.oshelper.dto.Variant;
import dev.dnpm.oshelper.security.PermissionType;
import dev.dnpm.oshelper.security.PersonPoolBasedPermissionEvaluator;
import dev.dnpm.oshelper.services.StudienService;
import dev.dnpm.oshelper.services.molekulargenetik.MolekulargenetikFormService;
-import de.itc.onkostar.api.Disease;
-import de.itc.onkostar.api.IOnkostarApi;
-import de.itc.onkostar.api.Procedure;
-import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import java.util.List;
+import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import java.util.List;
-import java.util.Map;
-
/**
- * Diese Klasse implementiert ein Plugin, welches Funktionen für DNPM UF Einzelempfehlung bereitstellt.
+ * Diese Klasse implementiert ein Plugin, welches Funktionen für DNPM UF Einzelempfehlung
+ * bereitstellt.
*
* @since 0.2.0
*/
@Component
public class EinzelempfehlungAnalyzer extends BackendService {
- private final static Logger logger = LoggerFactory.getLogger(EinzelempfehlungAnalyzer.class);
-
- private final IOnkostarApi onkostarApi;
-
- private final MolekulargenetikFormService molekulargenetikFormService;
+ private static final Logger logger = LoggerFactory.getLogger(EinzelempfehlungAnalyzer.class);
- private final StudienService studienService;
+ private final IOnkostarApi onkostarApi;
- private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
+ private final MolekulargenetikFormService molekulargenetikFormService;
- public EinzelempfehlungAnalyzer(
- final IOnkostarApi onkostarApi,
- final StudienService studienService,
- final MolekulargenetikFormService molekulargenetikFormService,
- final PersonPoolBasedPermissionEvaluator permissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.studienService = studienService;
- this.molekulargenetikFormService = molekulargenetikFormService;
- this.permissionEvaluator = permissionEvaluator;
- }
+ private final StudienService studienService;
- @Override
- public String getDescription() {
- return "Stellt Funktionen zur Nutzung im Therapieplan-Unterformular für Einzelempfehlungen bereit";
- }
+ private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
- /**
- * @deprecated
- */
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
- }
+ public EinzelempfehlungAnalyzer(
+ final IOnkostarApi onkostarApi,
+ final StudienService studienService,
+ final MolekulargenetikFormService molekulargenetikFormService,
+ final PersonPoolBasedPermissionEvaluator permissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
+ this.molekulargenetikFormService = molekulargenetikFormService;
+ this.permissionEvaluator = permissionEvaluator;
+ }
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
- return false;
- }
+ @Override
+ public String getDescription() {
+ return "Stellt Funktionen zur Nutzung im Therapieplan-Unterformular für Einzelempfehlungen bereit";
+ }
- @Override
- public boolean isSynchronous() {
- return false;
- }
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return false;
+ }
- public List<Variant> getVariants(Map<String, Object> input) {
- var procedureId = AnalyzerUtils.getRequiredId(input, "id");
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
- if (procedureId.isEmpty()) {
- return List.of();
- }
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- var procedure = onkostarApi.getProcedure(procedureId.get());
- if (null == procedure) {
- return List.of();
- }
+ public List<Variant> getVariants(Map<String, Object> input) {
+ var procedureId = AnalyzerUtils.getRequiredId(input, "id");
- if (permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ)) {
- return molekulargenetikFormService.getVariants(procedure);
- } else {
- logger.error("Security: No permission to access procedure '{}'", procedure.getId());
- return List.of();
- }
+ if (procedureId.isEmpty()) {
+ return List.of();
}
- /**
- * Ü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', inactive: true },
- * (response) => console.log(response),
- * false
- * );
- * </pre>
- *
- * @param input Map mit Eingabewerten
- * @return Liste mit Studien
- */
- 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()) {
- if (inactive) {
- return studienService.findAll();
- }
- return studienService.findActive();
- }
- if (inactive) {
- return studienService.findByQuery(query.get());
- }
- return studienService.findActiveByQuery(query.get());
+ var procedure = onkostarApi.getProcedure(procedureId.get());
+ if (null == procedure) {
+ return List.of();
}
+ if (permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ)) {
+ return molekulargenetikFormService.getVariants(procedure);
+ } else {
+ logger.error("Security: No permission to access procedure '{}'", procedure.getId());
+ return List.of();
+ }
+ }
+
+ /**
+ * Ü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', inactive: true },
+ * (response) => console.log(response),
+ * false
+ * );
+ * </pre>
+ *
+ * @param input Map mit Eingabewerten
+ * @return Liste mit Studien
+ */
+ 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()) {
+ if (inactive) {
+ return studienService.findAll();
+ }
+ return studienService.findActive();
+ }
+ if (inactive) {
+ return studienService.findByQuery(query.get());
+ }
+ return studienService.findActiveByQuery(query.get());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzer.java b/src/main/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzer.java
index 8b35f8c..2fa973f 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzer.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzer.java
@@ -25,98 +25,97 @@ import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-import java.util.Set;
-
/**
- * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines FollowUps durchführt.
+ * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines FollowUps
+ * durchführt.
*
* @since 0.0.2
*/
@Component
public class FollowUpAnalyzer extends Analyzer {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- private final IOnkostarApi onkostarApi;
-
- public FollowUpAnalyzer(IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
-
- @Override
- public String getDescription() {
- return "Aktualisiert verknüpfte Formulare nach Änderungen im FollowUp-Formular";
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ private final IOnkostarApi onkostarApi;
+
+ public FollowUpAnalyzer(IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
+
+ @Override
+ public String getDescription() {
+ return "Aktualisiert verknüpfte Formulare nach Änderungen im FollowUp-Formular";
+ }
+
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
+
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return null != procedure && procedure.getFormName().equals("DNPM FollowUp");
+ }
+
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
+
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
+
+ @Override
+ public Set<AnalyseTriggerEvent> getTriggerEvents() {
+ return Set.of(
+ AnalyseTriggerEvent.EDIT_SAVE, AnalyseTriggerEvent.EDIT_LOCK, AnalyseTriggerEvent.REORG);
+ }
+
+ @Override
+ public void analyze(Procedure procedure, Disease disease) {
+ backlinkToEinzelempfehlung(procedure);
+ }
+
+ /**
+ * Verlinke aktuelles FollowUp in angegebener Einzelempfehlung
+ *
+ * @param procedure Das FollowUp
+ */
+ private void backlinkToEinzelempfehlung(Procedure procedure) {
+ if (null == procedure.getValue("LinkTherapieempfehlung")) {
+ return;
}
- /**
- * @deprecated
- */
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
+ var referencedProcedureId = procedure.getValue("LinkTherapieempfehlung");
+ if (null == referencedProcedureId || referencedProcedureId.getInt() == 0) {
+ // Alles gut, es ist keine Einzelempfehlung angegeben
+ return;
}
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
- return null != procedure && procedure.getFormName().equals("DNPM FollowUp");
+ var referencedProcedure = onkostarApi.getProcedure(referencedProcedureId.getInt());
+ if (null == referencedProcedure) {
+ logger.error(
+ "Referenzierte Einzelempfehlung wurde nicht gefunden: {}", referencedProcedureId);
+ return;
}
- @Override
- public boolean isSynchronous() {
- return false;
- }
-
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
-
- @Override
- public Set<AnalyseTriggerEvent> getTriggerEvents() {
- return Set.of(
- AnalyseTriggerEvent.EDIT_SAVE,
- AnalyseTriggerEvent.EDIT_LOCK,
- AnalyseTriggerEvent.REORG
- );
- }
-
- @Override
- public void analyze(Procedure procedure, Disease disease) {
- backlinkToEinzelempfehlung(procedure);
- }
+ referencedProcedure.setValue(
+ "refdnpmfollowup", new Item("ref_dnpm_followup", procedure.getId()));
- /**
- * Verlinke aktuelles FollowUp in angegebener Einzelempfehlung
- *
- * @param procedure Das FollowUp
- */
- private void backlinkToEinzelempfehlung(Procedure procedure) {
- if (null == procedure.getValue("LinkTherapieempfehlung")) {
- return;
- }
-
- var referencedProcedureId = procedure.getValue("LinkTherapieempfehlung");
- if (null == referencedProcedureId || referencedProcedureId.getInt() == 0) {
- // Alles gut, es ist keine Einzelempfehlung angegeben
- return;
- }
-
- var referencedProcedure = onkostarApi.getProcedure(referencedProcedureId.getInt());
- if (null == referencedProcedure) {
- logger.error("Referenzierte Einzelempfehlung wurde nicht gefunden: {}", referencedProcedureId);
- return;
- }
-
- referencedProcedure.setValue("refdnpmfollowup", new Item("ref_dnpm_followup", procedure.getId()));
-
- try {
- onkostarApi.saveProcedure(referencedProcedure);
- } catch (Exception e) {
- logger.error("FollowUp konnte nicht mit Einzelempfehlung verknüpft werden", e);
- }
+ try {
+ onkostarApi.saveProcedure(referencedProcedure);
+ } catch (Exception e) {
+ logger.error("FollowUp konnte nicht mit Einzelempfehlung verknüpft werden", e);
}
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/IPluginPart.java b/src/main/java/dev/dnpm/oshelper/analyzer/IPluginPart.java
index 2745d46..9e5b5fa 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/IPluginPart.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/IPluginPart.java
@@ -23,16 +23,15 @@ import de.itc.onkostar.api.analysis.IProcedureAnalyzer;
public interface IPluginPart extends IProcedureAnalyzer {
- default String getVersion() {
- return "2.0.0"; // x-release-please
- }
+ default String getVersion() {
+ return "2.2.0"; // x-release-please
+ }
- default String getName() {
- return "DNPM Plugin";
- }
-
- default String getDescription() {
- return String.format("Plugin-Bestandteil '%s'", this.getClass().getSimpleName());
- }
+ default String getName() {
+ return "DNPM Plugin";
+ }
+ default String getDescription() {
+ return String.format("Plugin-Bestandteil '%s'", this.getClass().getSimpleName());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/Merkmalskatalog.java b/src/main/java/dev/dnpm/oshelper/analyzer/Merkmalskatalog.java
index 18adb15..e8ed459 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/Merkmalskatalog.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/Merkmalskatalog.java
@@ -23,6 +23,8 @@ import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import java.util.List;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -30,87 +32,87 @@ import org.hibernate.type.StandardBasicTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.Map;
-
public class Merkmalskatalog extends BackendService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- public Merkmalskatalog(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
+ public Merkmalskatalog(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
- @Override
- public String getDescription() {
- return "Methoden für Merkmalskataloge";
- }
+ @Override
+ public String getDescription() {
+ return "Methoden für Merkmalskataloge";
+ }
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
- }
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
- @Override
- public boolean isSynchronous() {
- return true;
- }
+ @Override
+ public boolean isSynchronous() {
+ return true;
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
-
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease currentDisease) {
- return false;
- }
-
- public List<String[]> getMerkmalskatalog(final Map<String, Object> input) {
- var merkmalskatalog = AnalyzerUtils.getRequiredValue(input, "Merkmalskatalog", String.class);
- var spalten = AnalyzerUtils.getRequiredValue(input, "Spalten", String.class);
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- if (merkmalskatalog.isEmpty()) {
- logger.error("Kein Merkmalskatalog angegeben!");
- return null;
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease currentDisease) {
+ return false;
+ }
- if (spalten.isEmpty()) {
- logger.error("Keine Spalten angegeben!");
- return null;
- }
+ public List<String[]> getMerkmalskatalog(final Map<String, Object> input) {
+ var merkmalskatalog = AnalyzerUtils.getRequiredValue(input, "Merkmalskatalog", String.class);
+ var spalten = AnalyzerUtils.getRequiredValue(input, "Spalten", String.class);
- String[] spaltenArray = spalten.get().split("\\s*,\\s*");
-
- try {
- SQLQuery query = getSqlQuery(merkmalskatalog.get());
-
- for (String s : spaltenArray) {
- query.addScalar(s, StandardBasicTypes.STRING);
- }
+ if (merkmalskatalog.isEmpty()) {
+ logger.error("Kein Merkmalskatalog angegeben!");
+ return null;
+ }
- @SuppressWarnings("unchecked")
- List<String[]> rows = query.list();
- return rows;
- } catch (Exception e) {
- logger.error("Fehler bei der Ausführung von getMerkmalskatalog()", e);
- return null;
- }
+ if (spalten.isEmpty()) {
+ logger.error("Keine Spalten angegeben!");
+ return null;
}
- private SQLQuery getSqlQuery(String merkmalskatalog) {
- SessionFactory sessionFactory = onkostarApi.getSessionFactory();
- Session session = sessionFactory.getCurrentSession();
+ String[] spaltenArray = spalten.get().split("\\s*,\\s*");
+
+ try {
+ SQLQuery query = getSqlQuery(merkmalskatalog.get());
- String sql = "SELECT p.id, p.code, p.shortdesc, p.description, p.note, p.synonyms "
- + "FROM property_catalogue "
- + "LEFT JOIN property_catalogue_version ON property_catalogue_version.datacatalog_id = property_catalogue.id "
- + "LEFT JOIN property_catalogue_version_entry p ON p.property_version_id = property_catalogue_version.id "
- + "WHERE name = '" + merkmalskatalog + "' AND aktiv = 1 "
- + "ORDER BY position ASC";
+ for (String s : spaltenArray) {
+ query.addScalar(s, StandardBasicTypes.STRING);
+ }
- return session.createSQLQuery(sql);
+ @SuppressWarnings("unchecked")
+ List<String[]> rows = query.list();
+ return rows;
+ } catch (Exception e) {
+ logger.error("Fehler bei der Ausführung von getMerkmalskatalog()", e);
+ return null;
}
+ }
+
+ private SQLQuery getSqlQuery(String merkmalskatalog) {
+ SessionFactory sessionFactory = onkostarApi.getSessionFactory();
+ Session session = sessionFactory.getCurrentSession();
+
+ String sql =
+ "SELECT p.id, p.code, p.shortdesc, p.description, p.note, p.synonyms "
+ + "FROM property_catalogue "
+ + "LEFT JOIN property_catalogue_version ON property_catalogue_version.datacatalog_id = property_catalogue.id "
+ + "LEFT JOIN property_catalogue_version_entry p ON p.property_version_id = property_catalogue_version.id "
+ + "WHERE name = '"
+ + merkmalskatalog
+ + "' AND aktiv = 1 "
+ + "ORDER BY position ASC";
+
+ return session.createSQLQuery(sql);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzer.java b/src/main/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzer.java
index ec9f824..39a31da 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzer.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzer.java
@@ -19,169 +19,174 @@
package dev.dnpm.oshelper.analyzer;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.services.strahlentherapie.StrahlentherapieService;
-import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.services.strahlentherapie.StrahlentherapieService;
+import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
/**
- * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines Formulars zur Systemtherapie durchführt.
+ * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines Formulars zur
+ * Systemtherapie durchführt.
*
* @since 0.6.0
*/
@Component
public class TherapieMitEcogAnalyzer extends Analyzer {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- private final IOnkostarApi onkostarApi;
-
- private final StrahlentherapieService strahlentherapieService;
- private final SystemtherapieService systemtherapieService;
-
- public TherapieMitEcogAnalyzer(
- final IOnkostarApi onkostarApi,
- final StrahlentherapieService strahlentherapieService,
- final SystemtherapieService systemtherapieService
- ) {
- this.onkostarApi = onkostarApi;
- this.strahlentherapieService = strahlentherapieService;
- this.systemtherapieService = systemtherapieService;
- }
-
- @Override
- public String getDescription() {
- return "Aktualisiert verknüpfte Formulare nach Änderungen in Formularen vom Typ Strahlen-/Systemtherapie mit ECOG-Status";
- }
-
- /**
- * @deprecated
- */
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return true;
- }
-
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
- return null != procedure && null != disease && (
- procedure.getFormName().equals("OS.Strahlentherapie")
- || procedure.getFormName().equals("OS.Strahlentherapie.VarianteUKW")
- || procedure.getFormName().equals("OS.Systemische Therapie")
- || procedure.getFormName().equals("OS.Systemische Therapie.VarianteUKW")
- );
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ private final IOnkostarApi onkostarApi;
+
+ private final StrahlentherapieService strahlentherapieService;
+ private final SystemtherapieService systemtherapieService;
+
+ public TherapieMitEcogAnalyzer(
+ final IOnkostarApi onkostarApi,
+ final StrahlentherapieService strahlentherapieService,
+ final SystemtherapieService systemtherapieService) {
+ this.onkostarApi = onkostarApi;
+ this.strahlentherapieService = strahlentherapieService;
+ this.systemtherapieService = systemtherapieService;
+ }
+
+ @Override
+ public String getDescription() {
+ return "Aktualisiert verknüpfte Formulare nach Änderungen in Formularen vom Typ Strahlen-/Systemtherapie mit ECOG-Status";
+ }
+
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return true;
+ }
+
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return null != procedure
+ && null != disease
+ && (procedure.getFormName().equals("OS.Strahlentherapie")
+ || procedure.getFormName().equals("OS.Strahlentherapie.VarianteUKW")
+ || procedure.getFormName().equals("OS.Systemische Therapie")
+ || procedure.getFormName().equals("OS.Systemische Therapie.VarianteUKW"));
+ }
+
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
+
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
+
+ @Override
+ public Set<AnalyseTriggerEvent> getTriggerEvents() {
+ return Set.of(
+ AnalyseTriggerEvent.EDIT_SAVE, AnalyseTriggerEvent.EDIT_LOCK, AnalyseTriggerEvent.REORG);
+ }
+
+ @Override
+ public void analyze(Procedure procedure, Disease disease) {
+ var date = procedure.getStartDate();
+ var status = procedure.getValue("ECOGvorTherapie");
+
+ if (null == date || null == status) {
+ // Ignore
+ return;
}
- @Override
- public boolean isSynchronous() {
- return false;
+ var ecog =
+ strahlentherapieService.ecogStatus(procedure.getPatient()).stream()
+ .filter(
+ ecogStatusWithDate ->
+ ecogStatusWithDate.getDate().after(disease.getDiagnosisDate()))
+ .collect(Collectors.toList());
+
+ ecog.addAll(
+ systemtherapieService.ecogStatus(procedure.getPatient()).stream()
+ .filter(
+ ecogStatusWithDate ->
+ ecogStatusWithDate.getDate().after(disease.getDiagnosisDate()))
+ .collect(Collectors.toList()));
+
+ if (ecog.isEmpty()) {
+ // Nothing to do
+ return;
}
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
+ procedure.getPatient().getDiseases().stream()
+ .flatMap(
+ d ->
+ onkostarApi
+ .getProceduresForDiseaseByForm(d.getId(), "DNPM Klinik/Anamnese")
+ .stream())
+ .forEach(
+ p -> {
+ var ufEcog = p.getValue("ECOGVerlauf");
+ if (null != ufEcog && ufEcog.getValue() instanceof List) {
+ updateExistingEcogVerlauf(p, ecog, ufEcog);
+ } else {
+ newEcogverlauf(p, ecog);
+ }
+ });
+ }
+
+ private void updateExistingEcogVerlauf(
+ Procedure p, List<EcogStatusWithDate> ecogFromCompleted, Item ufEcog) {
+ var shouldSave = false;
+ var existingDates =
+ ufEcog.<List<Map<String, String>>>getValue().stream()
+ .map(v -> v.get("Datum"))
+ .collect(Collectors.toList());
+ for (var ecog : ecogFromCompleted) {
+ var formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(ecog.getDate());
+ if (!existingDates.contains(formattedDate)) {
+ var newSubProcedure = new Procedure(onkostarApi);
+ newSubProcedure.setStartDate(ecog.getDate());
+ newSubProcedure.setValue("Datum", new Item("Datum", ecog.getDate()));
+ newSubProcedure.setValue("ECOG", new Item("ECOG", ecog.getStatus()));
+ p.addSubProcedure("ECOGVerlauf", newSubProcedure);
+ shouldSave = true;
+ }
}
-
- @Override
- public Set<AnalyseTriggerEvent> getTriggerEvents() {
- return Set.of(
- AnalyseTriggerEvent.EDIT_SAVE,
- AnalyseTriggerEvent.EDIT_LOCK,
- AnalyseTriggerEvent.REORG
- );
+ if (shouldSave) {
+ try {
+ onkostarApi.saveProcedure(p, true);
+ } catch (Exception e) {
+ logger.error("Cannot update ECOG for procedure '{}'", p.getId());
+ }
}
-
- @Override
- public void analyze(Procedure procedure, Disease disease) {
- var date = procedure.getStartDate();
- var status = procedure.getValue("ECOGvorTherapie");
-
- if (null == date || null == status) {
- // Ignore
- return;
- }
-
- var ecog = strahlentherapieService.ecogStatus(procedure.getPatient())
- .stream()
- .filter(ecogStatusWithDate -> ecogStatusWithDate.getDate().after(disease.getDiagnosisDate()))
- .collect(Collectors.toList());
-
- ecog.addAll(systemtherapieService.ecogStatus(procedure.getPatient())
- .stream()
- .filter(ecogStatusWithDate -> ecogStatusWithDate.getDate().after(disease.getDiagnosisDate()))
- .collect(Collectors.toList()));
-
-
- if (ecog.isEmpty()) {
- // Nothing to do
- return;
- }
-
- procedure.getPatient().getDiseases().stream()
- .flatMap(d -> onkostarApi.getProceduresForDiseaseByForm(d.getId(), "DNPM Klinik/Anamnese").stream())
- .forEach(p -> {
- var ufEcog = p.getValue("ECOGVerlauf");
- if (null != ufEcog && ufEcog.getValue() instanceof List) {
- updateExistingEcogVerlauf(p, ecog, ufEcog);
- } else {
- newEcogverlauf(p, ecog);
- }
- });
+ }
+
+ private void newEcogverlauf(Procedure p, List<EcogStatusWithDate> ecogFromCompleted) {
+ p.setValue("ECOGVerlauf", new Item("ECOGVerlauf", List.of()));
+ for (var ecog : ecogFromCompleted) {
+ var newSubProcedure = new Procedure(onkostarApi);
+ newSubProcedure.setStartDate(ecog.getDate());
+ newSubProcedure.setValue("Datum", new Item("Datum", ecog.getDate()));
+ newSubProcedure.setValue("ECOG", new Item("ECOG", ecog.getStatus()));
+ p.addSubProcedure("ECOGVerlauf", newSubProcedure);
}
-
- private void updateExistingEcogVerlauf(Procedure p, List<EcogStatusWithDate> ecogFromCompleted, Item ufEcog) {
- var shouldSave = false;
- var existingDates = ufEcog.<List<Map<String, String>>>getValue().stream()
- .map(v -> v.get("Datum"))
- .collect(Collectors.toList());
- for (var ecog : ecogFromCompleted) {
- var formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(ecog.getDate());
- if (!existingDates.contains(formattedDate)) {
- var newSubProcedure = new Procedure(onkostarApi);
- newSubProcedure.setStartDate(ecog.getDate());
- newSubProcedure.setValue("Datum", new Item("Datum", ecog.getDate()));
- newSubProcedure.setValue("ECOG", new Item("ECOG", ecog.getStatus()));
- p.addSubProcedure("ECOGVerlauf", newSubProcedure);
- shouldSave = true;
- }
- }
- if (shouldSave) {
- try {
- onkostarApi.saveProcedure(p, true);
- } catch (Exception e) {
- logger.error("Cannot update ECOG for procedure '{}'", p.getId());
- }
- }
+ try {
+ onkostarApi.saveProcedure(p, true);
+ } catch (Exception e) {
+ logger.error("Create update ECOG for procedure '{}'", p.getId());
}
-
- private void newEcogverlauf(Procedure p, List<EcogStatusWithDate> ecogFromCompleted) {
- p.setValue("ECOGVerlauf", new Item("ECOGVerlauf", List.of()));
- for (var ecog : ecogFromCompleted) {
- var newSubProcedure = new Procedure(onkostarApi);
- newSubProcedure.setStartDate(ecog.getDate());
- newSubProcedure.setValue("Datum", new Item("Datum", ecog.getDate()));
- newSubProcedure.setValue("ECOG", new Item("ECOG", ecog.getStatus()));
- p.addSubProcedure("ECOGVerlauf", newSubProcedure);
- }
- try {
- onkostarApi.saveProcedure(p, true);
- } catch (Exception e) {
- logger.error("Create update ECOG for procedure '{}'", p.getId());
- }
- }
-
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzer.java b/src/main/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzer.java
index 85baf5f..f5ff959 100644
--- a/src/main/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzer.java
+++ b/src/main/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzer.java
@@ -24,66 +24,60 @@ import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
import dev.dnpm.oshelper.services.therapieplan.TherapieplanServiceFactory;
-import org.springframework.stereotype.Component;
-
import java.util.Set;
+import org.springframework.stereotype.Component;
/**
- * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines Therapieplans durchführt.
+ * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines Therapieplans
+ * durchführt.
*
* @since 0.0.2
*/
@Component
public class TherapieplanAnalyzer extends Analyzer {
- private final TherapieplanServiceFactory therapieplanServiceFactory;
-
- public TherapieplanAnalyzer(
- final TherapieplanServiceFactory therapieplanServiceFactory
- ) {
- this.therapieplanServiceFactory = therapieplanServiceFactory;
- }
+ private final TherapieplanServiceFactory therapieplanServiceFactory;
- @Override
- public String getDescription() {
- return "Aktualisiert Unterformulare nach Änderungen im Therapieplan-Formular";
- }
+ public TherapieplanAnalyzer(final TherapieplanServiceFactory therapieplanServiceFactory) {
+ this.therapieplanServiceFactory = therapieplanServiceFactory;
+ }
- /**
- * @deprecated
- */
- @Override
- public boolean isRelevantForDeletedProcedure() {
- return false;
- }
+ @Override
+ public String getDescription() {
+ return "Aktualisiert Unterformulare nach Änderungen im Therapieplan-Formular";
+ }
- @Override
- public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
- return null != procedure && procedure.getFormName().equals("DNPM Therapieplan");
- }
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
- @Override
- public boolean isSynchronous() {
- return false;
- }
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return null != procedure && procedure.getFormName().equals("DNPM Therapieplan");
+ }
- @Override
- public AnalyzerRequirement getRequirement() {
- return AnalyzerRequirement.PROCEDURE;
- }
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
- @Override
- public Set<AnalyseTriggerEvent> getTriggerEvents() {
- return Set.of(
- AnalyseTriggerEvent.EDIT_SAVE,
- AnalyseTriggerEvent.EDIT_LOCK,
- AnalyseTriggerEvent.REORG
- );
- }
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
- @Override
- public void analyze(Procedure procedure, Disease disease) {
- therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
- }
+ @Override
+ public Set<AnalyseTriggerEvent> getTriggerEvents() {
+ return Set.of(
+ AnalyseTriggerEvent.EDIT_SAVE, AnalyseTriggerEvent.EDIT_LOCK, AnalyseTriggerEvent.REORG);
+ }
+ @Override
+ public void analyze(Procedure procedure, Disease disease) {
+ therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/AgentCode.java b/src/main/java/dev/dnpm/oshelper/atc/AgentCode.java
index 4f969bc..1606d66 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/AgentCode.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/AgentCode.java
@@ -26,11 +26,11 @@ package dev.dnpm.oshelper.atc;
* @since 2.0.0
*/
public interface AgentCode extends Comparable<AgentCode> {
- String getCode();
+ String getCode();
- String getName();
+ String getName();
- CodeSystem getSystem();
+ CodeSystem getSystem();
- String getVersion();
+ String getVersion();
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/AtcCode.java b/src/main/java/dev/dnpm/oshelper/atc/AtcCode.java
index 61685d6..beff5bf 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/AtcCode.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/AtcCode.java
@@ -29,75 +29,76 @@ import java.util.Objects;
*/
public class AtcCode implements AgentCode {
- private final String code;
- private final String name;
- private final String synonyms;
-
- private final String version;
-
- public AtcCode(String code, String name) {
- this(code, name, null);
- }
-
- public AtcCode(String code, String name, String version) {
- this(code, name, version, "");
- }
-
- public AtcCode(String code, String name, String version, String synonyms) {
- this.code = code;
- this.name = name;
- this.synonyms = synonyms;
- this.version = version;
- }
-
- public String getCode() {
- return code;
- }
-
- public String getName() {
- return name;
- }
-
- public String getSynonyms() {
- return this.synonyms;
- }
-
- public CodeSystem getSystem() {
- return CodeSystem.ATC;
- }
-
- public String getVersion() {
- return version;
- }
-
- @Override
- public int compareTo(final AgentCode agentCode) {
- return this.name.toLowerCase().compareTo(agentCode.getName().toLowerCase());
- }
-
- @Override
- public boolean equals(final Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- AgentCode otherAgentCode = (AgentCode) o;
- return Objects.equals(code.toLowerCase(), otherAgentCode.getCode().toLowerCase())
- && Objects.equals(name.toLowerCase(), otherAgentCode.getName().toLowerCase())
- && Objects.equals(version, otherAgentCode.getVersion());
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(code.toLowerCase(), name.toLowerCase());
- }
-
- /**
- * Checks for usable ATC code starting at level 2
- * @param code Code to be checked
- * @return Will return <code>true</code> if code matches ATC code scheme
- */
- public static boolean isAtcCode(String code) {
- return null != code
- && ! code.isBlank()
- && code.matches("[ABCDGHJLMNPRSV][0-2][1-9]([A-Z]([A-Z](\\d{2})?)?)?");
- }
+ private final String code;
+ private final String name;
+ private final String synonyms;
+
+ private final String version;
+
+ public AtcCode(String code, String name) {
+ this(code, name, null);
+ }
+
+ public AtcCode(String code, String name, String version) {
+ this(code, name, version, "");
+ }
+
+ public AtcCode(String code, String name, String version, String synonyms) {
+ this.code = code;
+ this.name = name;
+ this.synonyms = synonyms;
+ this.version = version;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getSynonyms() {
+ return this.synonyms;
+ }
+
+ public CodeSystem getSystem() {
+ return CodeSystem.ATC;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ @Override
+ public int compareTo(final AgentCode agentCode) {
+ return this.name.toLowerCase().compareTo(agentCode.getName().toLowerCase());
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AgentCode otherAgentCode = (AgentCode) o;
+ return Objects.equals(code.toLowerCase(), otherAgentCode.getCode().toLowerCase())
+ && Objects.equals(name.toLowerCase(), otherAgentCode.getName().toLowerCase())
+ && Objects.equals(version, otherAgentCode.getVersion());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(code.toLowerCase(), name.toLowerCase());
+ }
+
+ /**
+ * Checks for usable ATC code starting at level 2
+ *
+ * @param code Code to be checked
+ * @return Will return <code>true</code> if code matches ATC code scheme
+ */
+ public static boolean isAtcCode(String code) {
+ return null != code
+ && !code.isBlank()
+ && code.matches("[ABCDGHJLMNPRSV][0-2][1-9]([A-Z]([A-Z](\\d{2})?)?)?");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/CodeSystem.java b/src/main/java/dev/dnpm/oshelper/atc/CodeSystem.java
index 2fc974c..f292371 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/CodeSystem.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/CodeSystem.java
@@ -26,6 +26,6 @@ package dev.dnpm.oshelper.atc;
* @since 2.0.0
*/
public enum CodeSystem {
- ATC,
- UNREGISTERED
-} \ No newline at end of file
+ ATC,
+ UNREGISTERED
+}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/UnregisteredCode.java b/src/main/java/dev/dnpm/oshelper/atc/UnregisteredCode.java
index 8c7df54..9300b01 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/UnregisteredCode.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/UnregisteredCode.java
@@ -29,58 +29,58 @@ import java.util.Objects;
*/
public class UnregisteredCode implements AgentCode {
- private final String code;
- private final String name;
+ private final String code;
+ private final String name;
- private final String synonyms;
+ private final String synonyms;
- public UnregisteredCode(String code, String name) {
- this(code, name, "");
- }
+ public UnregisteredCode(String code, String name) {
+ this(code, name, "");
+ }
- public UnregisteredCode(String code, String name, String synonyms) {
- this.code = code;
- this.name = name;
- this.synonyms = synonyms;
- }
+ public UnregisteredCode(String code, String name, String synonyms) {
+ this.code = code;
+ this.name = name;
+ this.synonyms = synonyms;
+ }
- public String getCode() {
- return code;
- }
+ public String getCode() {
+ return code;
+ }
- public String getName() {
- return name;
- }
+ public String getName() {
+ return name;
+ }
- public String getSynonyms() {
- return synonyms;
- }
+ public String getSynonyms() {
+ return synonyms;
+ }
- public CodeSystem getSystem() {
- return CodeSystem.UNREGISTERED;
- }
+ public CodeSystem getSystem() {
+ return CodeSystem.UNREGISTERED;
+ }
- public String getVersion() {
- return null;
- }
+ public String getVersion() {
+ return null;
+ }
- @Override
- public int compareTo(final AgentCode agentCode) {
- return this.name.toLowerCase().compareTo(agentCode.getName().toLowerCase());
- }
+ @Override
+ public int compareTo(final AgentCode agentCode) {
+ return this.name.toLowerCase().compareTo(agentCode.getName().toLowerCase());
+ }
- @Override
- public boolean equals(final Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- AgentCode otherAgentCode = (AgentCode) o;
- return Objects.equals(code.toLowerCase(), otherAgentCode.getCode().toLowerCase())
- && Objects.equals(name.toLowerCase(), otherAgentCode.getName().toLowerCase())
- && Objects.equals(this.getVersion(), otherAgentCode.getVersion());
- }
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AgentCode otherAgentCode = (AgentCode) o;
+ return Objects.equals(code.toLowerCase(), otherAgentCode.getCode().toLowerCase())
+ && Objects.equals(name.toLowerCase(), otherAgentCode.getName().toLowerCase())
+ && Objects.equals(this.getVersion(), otherAgentCode.getVersion());
+ }
- @Override
- public int hashCode() {
- return Objects.hash(code.toLowerCase(), name.toLowerCase());
- }
+ @Override
+ public int hashCode() {
+ return Objects.hash(code.toLowerCase(), name.toLowerCase());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/AgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/AgentCodeService.java
index b074364..f1dc2e2 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/services/AgentCodeService.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/services/AgentCodeService.java
@@ -19,17 +19,15 @@
package dev.dnpm.oshelper.atc.services;
+import static java.util.stream.Collectors.groupingBy;
import dev.dnpm.oshelper.atc.AgentCode;
-import org.jspecify.annotations.NullMarked;
-
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
-
-import static java.util.stream.Collectors.groupingBy;
+import org.jspecify.annotations.NullMarked;
/**
* Common interface for agent code services
@@ -39,69 +37,67 @@ import static java.util.stream.Collectors.groupingBy;
*/
public interface AgentCodeService {
- /**
- * Filters the provided list of AgentCodes to include only the latest available versions
- * for each unique code name and, if required, code.
- * If the input list is empty or null, an empty list will be returned.
- *
- * @param agentCodes A list of {@link AgentCode} objects to be filtered. Each object in the list
- * should contain information about the agent's code, name, system, and version.
- * @param classifier A function that returns a string value to be used as a key for grouping agent codes.
- * @return A list of {@link AgentCode} objects representing the latest available versions of unique agent codes.
- * If no valid inputs are provided, an empty list is returned.
- */
- @NullMarked
- static List<AgentCode> latestAgentCodeVersions(List<AgentCode> agentCodes, Function<AgentCode, String> classifier) {
- return latestAvailable(agentCodes, classifier);
- }
-
- /**
- * Function that extracts the name of an {@link AgentCode} object.
- * This function is used as a classifier for grouping agent codes by their name.
- */
- Function<AgentCode, String> byCodeOnly = AgentCode::getName;
+ /**
+ * Filters the provided list of AgentCodes to include only the latest available versions for each
+ * unique code name and, if required, code. If the input list is empty or null, an empty list will
+ * be returned.
+ *
+ * @param agentCodes A list of {@link AgentCode} objects to be filtered. Each object in the list
+ * should contain information about the agent's code, name, system, and version.
+ * @param classifier A function that returns a string value to be used as a key for grouping agent
+ * codes.
+ * @return A list of {@link AgentCode} objects representing the latest available versions of
+ * unique agent codes. If no valid inputs are provided, an empty list is returned.
+ */
+ @NullMarked
+ static List<AgentCode> latestAgentCodeVersions(
+ List<AgentCode> agentCodes, Function<AgentCode, String> classifier) {
+ return latestAvailable(agentCodes, classifier);
+ }
- /**
- * Function that extracts the name and code of an {@link AgentCode} object.
- * This function is used as a classifier for grouping agent codes by their name and code.
- */
- Function<AgentCode, String> byNameAndCode = (agentCode ->
- String.format("%s_%s", agentCode.getCode(), agentCode.getName())
- );
+ /**
+ * Function that extracts the name of an {@link AgentCode} object. This function is used as a
+ * classifier for grouping agent codes by their name.
+ */
+ Function<AgentCode, String> byCodeOnly = AgentCode::getName;
+ /**
+ * Function that extracts the name and code of an {@link AgentCode} object. This function is used
+ * as a classifier for grouping agent codes by their name and code.
+ */
+ Function<AgentCode, String> byNameAndCode =
+ (agentCode -> String.format("%s_%s", agentCode.getCode(), agentCode.getName()));
- @NullMarked
- private static List<AgentCode> latestAvailable(
- List<AgentCode> agentCodes,
- Function<AgentCode, String> classifier
- ) {
- return agentCodes.stream()
- .collect(groupingBy(classifier)).values().stream()
- .map(list ->
- list.stream()
- .sorted(Comparator.comparing(AgentCode::getCode))
- .max((ac1, ac2) -> {
- if (null == ac1.getVersion()) {
- return -1;
- } else if (null == ac2.getVersion()) {
- return 1;
- }
- return ac1.getVersion().compareTo(ac2.getVersion());
- })
- .orElse(null)
- )
- .filter(Objects::nonNull)
- .distinct()
- .collect(Collectors.toList());
- }
+ @NullMarked
+ private static List<AgentCode> latestAvailable(
+ List<AgentCode> agentCodes, Function<AgentCode, String> classifier) {
+ return agentCodes.stream().collect(groupingBy(classifier)).values().stream()
+ .map(
+ list ->
+ list.stream()
+ .sorted(Comparator.comparing(AgentCode::getCode))
+ .max(
+ (ac1, ac2) -> {
+ if (null == ac1.getVersion()) {
+ return -1;
+ } else if (null == ac2.getVersion()) {
+ return 1;
+ }
+ return ac1.getVersion().compareTo(ac2.getVersion());
+ })
+ .orElse(null))
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+ }
- /**
- * Queries source for agents with name and code starting with query string.
- * If size is zero, all available results will be returned.
- *
- * @param query The query string
- * @param size Maximal amount of responses
- * @return A list with agent codes
- */
- List<AgentCode> findAgentCodes(String query, int size);
+ /**
+ * Queries source for agents with name and code starting with query string. If size is zero, all
+ * available results will be returned.
+ *
+ * @param query The query string
+ * @param size Maximal amount of responses
+ * @return A list with agent codes
+ */
+ List<AgentCode> findAgentCodes(String query, int size);
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java
index cf80738..abb006b 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java
@@ -22,17 +22,15 @@ package dev.dnpm.oshelper.atc.services;
import dev.dnpm.oshelper.atc.AgentCode;
import dev.dnpm.oshelper.atc.AtcCode;
import dev.dnpm.oshelper.exceptions.FileParsingException;
-import org.apache.commons.csv.CSVFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
+import org.apache.commons.csv.CSVFormat;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Service to query for agent codes based on ATC codes file
@@ -42,65 +40,72 @@ import java.util.stream.Collectors;
*/
public class CsvAgentCodeService implements AgentCodeService {
- protected final Logger logger = LoggerFactory.getLogger(this.getClass());
- protected final List<AgentCode> codeList = new ArrayList<>();
+ protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+ protected final List<AgentCode> codeList = new ArrayList<>();
- private static final String ATC_CODE_COLUMN = "ATC-Code";
- private static final String ATC_NAME_COLUMN = "ATC-Bedeutung";
- private static final String ATC_VERSION_COLUMN = "Version";
+ private static final String ATC_CODE_COLUMN = "ATC-Code";
+ private static final String ATC_NAME_COLUMN = "ATC-Bedeutung";
+ private static final String ATC_VERSION_COLUMN = "Version";
- public CsvAgentCodeService() {
- this.codeList.addAll(parseFile());
- }
+ public CsvAgentCodeService() {
+ this.codeList.addAll(parseFile());
+ }
- /**
- * Queries source for agents code starting with or name containing query string.
- * If size is zero, all available results will be returned.
- *
- * @param query The query string
- * @param size Maximal amount of responses
- * @return A list with agent codes
- */
- @Override
- public List<AgentCode> findAgentCodes(final String query, final int size) {
- var resultStream = this.codeList.stream().filter(agentCode ->
- agentCode.getCode().toLowerCase().startsWith(query.toLowerCase())
- || agentCode.getName().toLowerCase().contains(query.toLowerCase())
- );
+ /**
+ * Queries source for agents code starting with or name containing query string. If size is zero,
+ * all available results will be returned.
+ *
+ * @param query The query string
+ * @param size Maximal amount of responses
+ * @return A list with agent codes
+ */
+ @Override
+ public List<AgentCode> findAgentCodes(final String query, final int size) {
+ var resultStream =
+ this.codeList.stream()
+ .filter(
+ agentCode ->
+ agentCode.getCode().toLowerCase().startsWith(query.toLowerCase())
+ || agentCode.getName().toLowerCase().contains(query.toLowerCase()));
- if (size > 0) {
- return resultStream.limit(size).collect(Collectors.toList());
- }
- return resultStream.collect(Collectors.toList());
+ if (size > 0) {
+ return resultStream.limit(size).collect(Collectors.toList());
}
+ return resultStream.collect(Collectors.toList());
+ }
- protected List<AgentCode> parseFile() {
- var result = new ArrayList<AgentCode>();
+ protected List<AgentCode> parseFile() {
+ var result = new ArrayList<AgentCode>();
- try {
- var inputStream = Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream("atc.csv"));
- var parser = CSVFormat.RFC4180
- .withHeader()
- .withDelimiter('\t')
- .withIgnoreEmptyLines()
- .withSkipHeaderRecord()
- .parse(new InputStreamReader(inputStream));
- for (var row : parser) {
- if (!row.isMapped(ATC_CODE_COLUMN) || !row.isMapped(ATC_NAME_COLUMN)) {
- throw new FileParsingException("No CSV column for ATC code or name found");
- }
- if (row.isMapped(ATC_VERSION_COLUMN)) {
- result.add(new AtcCode(row.get(ATC_CODE_COLUMN).trim(), row.get(ATC_NAME_COLUMN), row.get(ATC_VERSION_COLUMN)));
- } else {
- result.add(new AtcCode(row.get(ATC_CODE_COLUMN).trim(), row.get(ATC_NAME_COLUMN)));
- }
- }
- return result;
- } catch (IOException | FileParsingException e) {
- logger.warn("Error reading information from ATC codes");
+ try {
+ var inputStream =
+ Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream("atc.csv"));
+ var parser =
+ CSVFormat.RFC4180
+ .withHeader()
+ .withDelimiter('\t')
+ .withIgnoreEmptyLines()
+ .withSkipHeaderRecord()
+ .parse(new InputStreamReader(inputStream));
+ for (var row : parser) {
+ if (!row.isMapped(ATC_CODE_COLUMN) || !row.isMapped(ATC_NAME_COLUMN)) {
+ throw new FileParsingException("No CSV column for ATC code or name found");
}
- logger.info("Found {} ATC codes", result.size());
- return result;
+ if (row.isMapped(ATC_VERSION_COLUMN)) {
+ result.add(
+ new AtcCode(
+ row.get(ATC_CODE_COLUMN).trim(),
+ row.get(ATC_NAME_COLUMN),
+ row.get(ATC_VERSION_COLUMN)));
+ } else {
+ result.add(new AtcCode(row.get(ATC_CODE_COLUMN).trim(), row.get(ATC_NAME_COLUMN)));
+ }
+ }
+ return result;
+ } catch (IOException | FileParsingException e) {
+ logger.warn("Error reading information from ATC codes");
}
-
+ logger.info("Found {} ATC codes", result.size());
+ return result;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java
index 306563d..0dfb1e6 100644
--- a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java
+++ b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java
@@ -22,10 +22,9 @@ package dev.dnpm.oshelper.atc.services;
import dev.dnpm.oshelper.atc.AgentCode;
import dev.dnpm.oshelper.atc.AtcCode;
import dev.dnpm.oshelper.atc.UnregisteredCode;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
import java.util.List;
+import javax.sql.DataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Implementation of {@link AgentCodeService} that uses database to query for unregistered agents
@@ -35,45 +34,45 @@ import java.util.List;
*/
public class OnkostarAgentCodeService implements AgentCodeService {
- private final JdbcTemplate jdbcTemplate;
-
- public OnkostarAgentCodeService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
+ private final JdbcTemplate jdbcTemplate;
- /**
- * Queries source for agents code starting with or name containing query string.
- * If size is zero, all available results will be returned.
- *
- * @param query The query string
- * @param size Maximal amount of responses
- * @return A list with agent codes
- */
- @Override
- public List<AgentCode> findAgentCodes(final String query, final int size) {
- var sql = "SELECT code, shortdesc, synonyms\n" +
- " FROM property_catalogue\n" +
- " JOIN property_catalogue_version ON (property_catalogue_version.datacatalog_id = property_catalogue.id)\n" +
- " JOIN property_catalogue_version_entry p ON (p.property_version_id = property_catalogue_version.id)\n" +
- " WHERE name = 'OS.Substanzen'\n" +
- " AND (LOWER(code) LIKE ? OR LOWER(shortdesc) LIKE ? OR LOWER(synonyms) LIKE ?)";
+ public OnkostarAgentCodeService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
- if (size > 0) {
- sql = sql + " LIMIT " + size;
- }
+ /**
+ * Queries source for agents code starting with or name containing query string. If size is zero,
+ * all available results will be returned.
+ *
+ * @param query The query string
+ * @param size Maximal amount of responses
+ * @return A list with agent codes
+ */
+ @Override
+ public List<AgentCode> findAgentCodes(final String query, final int size) {
+ var sql =
+ "SELECT code, shortdesc, synonyms\n"
+ + " FROM property_catalogue\n"
+ + " JOIN property_catalogue_version ON (property_catalogue_version.datacatalog_id = property_catalogue.id)\n"
+ + " JOIN property_catalogue_version_entry p ON (p.property_version_id = property_catalogue_version.id)\n"
+ + " WHERE name = 'OS.Substanzen'\n"
+ + " AND (LOWER(code) LIKE ? OR LOWER(shortdesc) LIKE ? OR LOWER(synonyms) LIKE ?)";
- return jdbcTemplate.query(
- sql,
- new Object[]{query + "%", "%" + query + "%", "%" + query + "%"},
- (resultSet, i) -> {
- var code = resultSet.getString("code");
- var shortdesc = resultSet.getString("shortdesc");
- var synonyms = resultSet.getString("synonyms");
- if (AtcCode.isAtcCode(code)) {
- return new AtcCode(code, shortdesc);
- }
- return new UnregisteredCode(code, shortdesc, synonyms);
- }
- );
+ if (size > 0) {
+ sql = sql + " LIMIT " + size;
}
+
+ return jdbcTemplate.query(
+ sql,
+ new Object[] {query + "%", "%" + query + "%", "%" + query + "%"},
+ (resultSet, i) -> {
+ var code = resultSet.getString("code");
+ var shortdesc = resultSet.getString("shortdesc");
+ var synonyms = resultSet.getString("synonyms");
+ if (AtcCode.isAtcCode(code)) {
+ return new AtcCode(code, shortdesc);
+ }
+ return new UnregisteredCode(code, shortdesc, synonyms);
+ });
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/config/PluginConfiguration.java b/src/main/java/dev/dnpm/oshelper/config/PluginConfiguration.java
index bb6619f..3e2ea44 100644
--- a/src/main/java/dev/dnpm/oshelper/config/PluginConfiguration.java
+++ b/src/main/java/dev/dnpm/oshelper/config/PluginConfiguration.java
@@ -33,13 +33,12 @@ import dev.dnpm.oshelper.services.strahlentherapie.StrahlentherapieService;
import dev.dnpm.oshelper.services.systemtherapie.DefaultSystemtherapieService;
import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
import dev.dnpm.oshelper.services.therapieplan.TherapieplanServiceFactory;
+import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import javax.sql.DataSource;
-
/**
* Dynamische Konfiguration des Plugins basierend auf Onkostar-Einstellungen
*
@@ -50,64 +49,58 @@ import javax.sql.DataSource;
@EnableJpaRepositories(basePackages = "dev.dnpm.oshelper.database")
public class PluginConfiguration {
- @Bean
- public FormService formService(final DataSource dataSource) {
- return new DefaultFormService(dataSource);
- }
-
- @Bean
- public StudienService studienService(final DataSource dataSource) {
- return new DefaultStudienService(dataSource);
- }
+ @Bean
+ public FormService formService(final DataSource dataSource) {
+ return new DefaultFormService(dataSource);
+ }
- @Bean
- public SettingsService settingsService(final SettingsRepository settingsRepository) {
- return new SettingsService(settingsRepository);
- }
+ @Bean
+ public StudienService studienService(final DataSource dataSource) {
+ return new DefaultStudienService(dataSource);
+ }
- @Bean
- public SystemtherapieService systemtherapieService(
- final IOnkostarApi onkostarApi,
- final SettingsService settingsService
- ) {
- return new DefaultSystemtherapieService(onkostarApi, settingsService);
- }
+ @Bean
+ public SettingsService settingsService(final SettingsRepository settingsRepository) {
+ return new SettingsService(settingsRepository);
+ }
- @Bean
- public StrahlentherapieService strahlentherapieService(
- final IOnkostarApi onkostarApi,
- final SettingsService settingsService
- ) {
- return new DefaultStrahlentherapieService(onkostarApi, settingsService);
- }
+ @Bean
+ public SystemtherapieService systemtherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ return new DefaultSystemtherapieService(onkostarApi, settingsService);
+ }
- @Bean
- public ConsentManagerServiceFactory consentManagerServiceFactory(final IOnkostarApi onkostarApi) {
- return new ConsentManagerServiceFactory(onkostarApi);
- }
+ @Bean
+ public StrahlentherapieService strahlentherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ return new DefaultStrahlentherapieService(onkostarApi, settingsService);
+ }
- @Bean
- public TherapieplanServiceFactory therapieplanServiceFactory(
- final IOnkostarApi onkostarApi,
- final SettingsService settingsService,
- final FormService formService
- ) {
- return new TherapieplanServiceFactory(onkostarApi, settingsService, formService);
- }
+ @Bean
+ public ConsentManagerServiceFactory consentManagerServiceFactory(final IOnkostarApi onkostarApi) {
+ return new ConsentManagerServiceFactory(onkostarApi);
+ }
- @Bean
- public MolekulargenetikFormService molekulargenetikFormService() {
- return new OsMolekulargenetikFormService();
- }
+ @Bean
+ public TherapieplanServiceFactory therapieplanServiceFactory(
+ final IOnkostarApi onkostarApi,
+ final SettingsService settingsService,
+ final FormService formService) {
+ return new TherapieplanServiceFactory(onkostarApi, settingsService, formService);
+ }
- @Bean
- public AgentCodeService csvAgentCodeService() {
- return new CsvAgentCodeService();
- }
+ @Bean
+ public MolekulargenetikFormService molekulargenetikFormService() {
+ return new OsMolekulargenetikFormService();
+ }
- @Bean
- public AgentCodeService onkostarAgentCodeService (final DataSource dataSource) {
- return new OnkostarAgentCodeService(dataSource);
- }
+ @Bean
+ public AgentCodeService csvAgentCodeService() {
+ return new CsvAgentCodeService();
+ }
+ @Bean
+ public AgentCodeService onkostarAgentCodeService(final DataSource dataSource) {
+ return new OnkostarAgentCodeService(dataSource);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/database/ReadOnlyRepository.java b/src/main/java/dev/dnpm/oshelper/database/ReadOnlyRepository.java
index 90fb4b5..b7db9b2 100644
--- a/src/main/java/dev/dnpm/oshelper/database/ReadOnlyRepository.java
+++ b/src/main/java/dev/dnpm/oshelper/database/ReadOnlyRepository.java
@@ -19,23 +19,23 @@
package dev.dnpm.oshelper.database;
-import org.springframework.data.repository.NoRepositoryBean;
-import org.springframework.data.repository.Repository;
-
import java.io.Serializable;
import java.util.List;
+import org.springframework.data.repository.NoRepositoryBean;
+import org.springframework.data.repository.Repository;
/**
* Basis-Repository for ReadOnly Spring-Data-JPA Repositories
+ *
* <p>Entity-Klassen müssen in Package <code>de.itc.db.dnpm</code> liegen
+ *
* @param <T> Typ des Entities
* @param <ID> Typ der ID
*/
@NoRepositoryBean
public interface ReadOnlyRepository<T, ID extends Serializable> extends Repository<T, ID> {
- T findById(ID id);
-
- List<T> findAll();
+ T findById(ID id);
+ List<T> findAll();
}
diff --git a/src/main/java/dev/dnpm/oshelper/database/SettingsRepository.java b/src/main/java/dev/dnpm/oshelper/database/SettingsRepository.java
index 936415f..03d9a53 100644
--- a/src/main/java/dev/dnpm/oshelper/database/SettingsRepository.java
+++ b/src/main/java/dev/dnpm/oshelper/database/SettingsRepository.java
@@ -22,12 +22,9 @@ package dev.dnpm.oshelper.database;
import de.itc.db.dnpm.Setting;
import org.springframework.stereotype.Repository;
-/**
- * Spring Data JPA Repository zum Lesen von Einstellungen
- */
+/** Spring Data JPA Repository zum Lesen von Einstellungen */
@Repository("dnpmSettingRepository")
public interface SettingsRepository extends ReadOnlyRepository<Setting, Long> {
- Setting findByName(String name);
-
+ Setting findByName(String name);
}
diff --git a/src/main/java/dev/dnpm/oshelper/dto/EcogStatusWithDate.java b/src/main/java/dev/dnpm/oshelper/dto/EcogStatusWithDate.java
index 2b9331b..a943aff 100644
--- a/src/main/java/dev/dnpm/oshelper/dto/EcogStatusWithDate.java
+++ b/src/main/java/dev/dnpm/oshelper/dto/EcogStatusWithDate.java
@@ -19,45 +19,42 @@
package dev.dnpm.oshelper.dto;
-import org.springframework.util.Assert;
-
import java.util.Date;
+import org.springframework.util.Assert;
-/**
- * Datenklasse zum Abbilden des ECOG-Status und Datum
- */
+/** Datenklasse zum Abbilden des ECOG-Status und Datum */
public class EcogStatusWithDate {
- private final Date date;
- private final String status;
-
- public EcogStatusWithDate(Date date, String status) {
- Assert.notNull(date, "Date cannot be null");
- Assert.hasText(status, "Status cannot be empty String");
- Assert.isTrue(isValidEcogCode(status), "Not a valid ADT.LeistungszustandECOG code");
- this.date = date;
- this.status = status;
+ private final Date date;
+ private final String status;
+
+ public EcogStatusWithDate(Date date, String status) {
+ Assert.notNull(date, "Date cannot be null");
+ Assert.hasText(status, "Status cannot be empty String");
+ Assert.isTrue(isValidEcogCode(status), "Not a valid ADT.LeistungszustandECOG code");
+ this.date = date;
+ this.status = status;
+ }
+
+ private boolean isValidEcogCode(String status) {
+ switch (status) {
+ case "0":
+ case "1":
+ case "2":
+ case "3":
+ case "4":
+ case "5":
+ case "U":
+ return true;
+ default:
+ return false;
}
+ }
- private boolean isValidEcogCode(String status) {
- switch (status) {
- case "0":
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- case "U":
- return true;
- default:
- return false;
- }
- }
-
- public Date getDate() {
- return date;
- }
+ public Date getDate() {
+ return date;
+ }
- public String getStatus() {
- return status;
- }
+ public String getStatus() {
+ return status;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/dto/Studie.java b/src/main/java/dev/dnpm/oshelper/dto/Studie.java
index 1a3bb85..e13d772 100644
--- a/src/main/java/dev/dnpm/oshelper/dto/Studie.java
+++ b/src/main/java/dev/dnpm/oshelper/dto/Studie.java
@@ -20,74 +20,81 @@
package dev.dnpm.oshelper.dto;
public class Studie {
- private final String kategorieName;
- private final String code;
- private final String studiennummer;
- private final String shortDesc;
- private final String description;
- private final int version;
+ private final String kategorieName;
+ private final String code;
+ private final String studiennummer;
+ private final String shortDesc;
+ private final String description;
+ private final int version;
- private final boolean active;
+ 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 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() {
- return kategorieName;
- }
+ public String getKategorieName() {
+ return kategorieName;
+ }
- public int getVersion() {
- return version;
- }
+ public int getVersion() {
+ return version;
+ }
- public String getCode() {
- return code;
- }
+ public String getCode() {
+ return code;
+ }
- public String getStudiennummer() {
- return studiennummer;
- }
+ public String getStudiennummer() {
+ return studiennummer;
+ }
- public String getShortDesc() {
- return shortDesc;
- }
+ public String getShortDesc() {
+ return shortDesc;
+ }
- public String getDescription() {
- return description;
- }
+ public String getDescription() {
+ return description;
+ }
- public boolean isActive() {
- return active;
- }
+ public boolean isActive() {
+ return active;
+ }
- public Type getType() {
- if (this.hasNctNumber()) {
- return Type.NCT;
- } else if (this.hasEudraCtNumber()) {
- return Type.EUDRA_CT;
- } else {
- return Type.UNKNOWN;
- }
+ public Type getType() {
+ if (this.hasNctNumber()) {
+ return Type.NCT;
+ } else if (this.hasEudraCtNumber()) {
+ return Type.EUDRA_CT;
+ } else {
+ return Type.UNKNOWN;
}
+ }
- private boolean hasNctNumber() {
- return null != studiennummer && studiennummer.toLowerCase().startsWith("nct");
- }
+ private boolean hasNctNumber() {
+ return null != studiennummer && studiennummer.toLowerCase().startsWith("nct");
+ }
- private boolean hasEudraCtNumber() {
- return null != studiennummer && studiennummer.matches("\\d{4}-\\d{6}-\\d{2}");
- }
+ private boolean hasEudraCtNumber() {
+ return null != studiennummer && studiennummer.matches("\\d{4}-\\d{6}-\\d{2}");
+ }
- public enum Type {
- NCT,
- EUDRA_CT,
- UNKNOWN
- }
+ public enum Type {
+ NCT,
+ EUDRA_CT,
+ UNKNOWN
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/dto/Variant.java b/src/main/java/dev/dnpm/oshelper/dto/Variant.java
index 3e501dd..63bd078 100644
--- a/src/main/java/dev/dnpm/oshelper/dto/Variant.java
+++ b/src/main/java/dev/dnpm/oshelper/dto/Variant.java
@@ -20,110 +20,110 @@
package dev.dnpm.oshelper.dto;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
/**
- * Ein Auszug der Variante aus dem NGS-Bericht zur Übertragung an das Frontend zur Auswahl der stützenden molekularen Alteration
+ * Ein Auszug der Variante aus dem NGS-Bericht zur Übertragung an das Frontend zur Auswahl der
+ * stützenden molekularen Alteration
*
* @since 0.2.0
*/
public class Variant {
- private final Integer id;
-
- private final String ergebnis;
-
- private final String gen;
-
- private final String exon;
-
- private final String pathogenitaetsklasse;
-
- private Variant(
- final int id,
- final String ergebnis,
- final String gen,
- final String exon,
- final String pathogenitaetsklasse
- ) {
- this.id = id;
- this.ergebnis = ergebnis;
- this.gen = gen;
- this.exon = exon;
- this.pathogenitaetsklasse = pathogenitaetsklasse;
+ private final Integer id;
+
+ private final String ergebnis;
+
+ private final String gen;
+
+ private final String exon;
+
+ private final String pathogenitaetsklasse;
+
+ private Variant(
+ final int id,
+ final String ergebnis,
+ final String gen,
+ final String exon,
+ final String pathogenitaetsklasse) {
+ this.id = id;
+ this.ergebnis = ergebnis;
+ this.gen = gen;
+ this.exon = exon;
+ this.pathogenitaetsklasse = pathogenitaetsklasse;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public String getErgebnis() {
+ return ergebnis;
+ }
+
+ public String getGen() {
+ return gen;
+ }
+
+ public String getExon() {
+ return exon;
+ }
+
+ public String getPathogenitaetsklasse() {
+ return pathogenitaetsklasse;
+ }
+
+ /**
+ * Erstellt ein Optional einer Variante aus einer Prozedur
+ *
+ * @param procedure Die zu verwendende Prozedur
+ * @return Das Optional, wenn die Prozedur verwendet werden kann, ansonsten ein leeres Optional
+ */
+ public static Optional<Variant> fromProcedure(Procedure procedure) {
+ if (!"OS.Molekulargenetische Untersuchung".equals(procedure.getFormName())) {
+ return Optional.empty();
}
- public Integer getId() {
- return id;
- }
-
- public String getErgebnis() {
- return ergebnis;
- }
-
- public String getGen() {
- return gen;
- }
-
- public String getExon() {
- return exon;
- }
+ var ergebnis = procedure.getValue("Ergebnis");
+ var gene = procedure.getValue("Untersucht");
+ var exon = procedure.getValue("ExonInt");
+ var pathogenitaetsklasse = procedure.getValue("Pathogenitaetsklasse");
- public String getPathogenitaetsklasse() {
- return pathogenitaetsklasse;
+ if (null == gene) {
+ return Optional.empty();
}
- /**
- * Erstellt ein Optional einer Variante aus einer Prozedur
- * @param procedure Die zu verwendende Prozedur
- * @return Das Optional, wenn die Prozedur verwendet werden kann, ansonsten ein leeres Optional
- */
- public static Optional<Variant> fromProcedure(Procedure procedure) {
- if (!"OS.Molekulargenetische Untersuchung".equals(procedure.getFormName())) {
- return Optional.empty();
- }
-
- var ergebnis = procedure.getValue("Ergebnis");
- var gene = procedure.getValue("Untersucht");
- var exon = procedure.getValue("ExonInt");
- var pathogenitaetsklasse = procedure.getValue("Pathogenitaetsklasse");
-
- if (null == gene) {
- return Optional.empty();
- }
-
- if (ergebnis.getString().equals("P")) {
- return Optional.of(
- new Variant(
- procedure.getId(),
- "Einfache Variante (Mutation)",
- gene.getString().isBlank() ? "-" : gene.getString(),
- null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
- null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank() ? "-" : pathogenitaetsklasse.getString()
- )
- );
- } else if (ergebnis.getString().equals("CNV")) {
- return Optional.of(
- new Variant(
- procedure.getId(),
- "Copy Number Variation (CNV)",
- gene.getString().isBlank() ? "-" : gene.getString(),
- null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
- null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank() ? "-" : pathogenitaetsklasse.getString()
- )
- );
- } else if (ergebnis.getString().equals("F")) {
- return Optional.of(
- new Variant(
- procedure.getId(),
- "Fusion (Translokation Inversion Insertion)",
- gene.getString().isBlank() ? "-" : gene.getString(),
- null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
- null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank() ? "-" : pathogenitaetsklasse.getString()
- )
- );
- } else {
- return Optional.empty();
- }
+ if (ergebnis.getString().equals("P")) {
+ return Optional.of(
+ new Variant(
+ procedure.getId(),
+ "Einfache Variante (Mutation)",
+ gene.getString().isBlank() ? "-" : gene.getString(),
+ null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
+ null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank()
+ ? "-"
+ : pathogenitaetsklasse.getString()));
+ } else if (ergebnis.getString().equals("CNV")) {
+ return Optional.of(
+ new Variant(
+ procedure.getId(),
+ "Copy Number Variation (CNV)",
+ gene.getString().isBlank() ? "-" : gene.getString(),
+ null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
+ null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank()
+ ? "-"
+ : pathogenitaetsklasse.getString()));
+ } else if (ergebnis.getString().equals("F")) {
+ return Optional.of(
+ new Variant(
+ procedure.getId(),
+ "Fusion (Translokation Inversion Insertion)",
+ gene.getString().isBlank() ? "-" : gene.getString(),
+ null == exon || exon.getString().isBlank() ? "-" : exon.getString(),
+ null == pathogenitaetsklasse || pathogenitaetsklasse.getString().isBlank()
+ ? "-"
+ : pathogenitaetsklasse.getString()));
+ } else {
+ return Optional.empty();
}
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/exceptions/FileParsingException.java b/src/main/java/dev/dnpm/oshelper/exceptions/FileParsingException.java
index f523553..dc483d2 100644
--- a/src/main/java/dev/dnpm/oshelper/exceptions/FileParsingException.java
+++ b/src/main/java/dev/dnpm/oshelper/exceptions/FileParsingException.java
@@ -27,8 +27,7 @@ package dev.dnpm.oshelper.exceptions;
*/
public class FileParsingException extends RuntimeException {
- public FileParsingException(final String msg) {
- super(msg);
- }
-
+ public FileParsingException(final String msg) {
+ super(msg);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/exceptions/FormException.java b/src/main/java/dev/dnpm/oshelper/exceptions/FormException.java
index aabed1a..6a083f4 100644
--- a/src/main/java/dev/dnpm/oshelper/exceptions/FormException.java
+++ b/src/main/java/dev/dnpm/oshelper/exceptions/FormException.java
@@ -21,8 +21,7 @@ package dev.dnpm.oshelper.exceptions;
public class FormException extends RuntimeException {
- public FormException(String message) {
- super(message);
- }
-
+ public FormException(String message) {
+ super(message);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/AbstractDelegatedPermissionEvaluator.java b/src/main/java/dev/dnpm/oshelper/security/AbstractDelegatedPermissionEvaluator.java
index 99b5397..230cb01 100644
--- a/src/main/java/dev/dnpm/oshelper/security/AbstractDelegatedPermissionEvaluator.java
+++ b/src/main/java/dev/dnpm/oshelper/security/AbstractDelegatedPermissionEvaluator.java
@@ -26,17 +26,17 @@ import org.springframework.security.access.PermissionEvaluator;
public abstract class AbstractDelegatedPermissionEvaluator implements PermissionEvaluator {
- protected static final String PATIENT = Patient.class.getSimpleName();
+ protected static final String PATIENT = Patient.class.getSimpleName();
- protected static final String PROCEDURE = Procedure.class.getSimpleName();
+ protected static final String PROCEDURE = Procedure.class.getSimpleName();
- protected final IOnkostarApi onkostarApi;
+ protected final IOnkostarApi onkostarApi;
- protected final SecurityService securityService;
-
- protected AbstractDelegatedPermissionEvaluator(final IOnkostarApi onkostarApi, final SecurityService securityService) {
- this.onkostarApi = onkostarApi;
- this.securityService = securityService;
- }
+ protected final SecurityService securityService;
+ protected AbstractDelegatedPermissionEvaluator(
+ final IOnkostarApi onkostarApi, final SecurityService securityService) {
+ this.onkostarApi = onkostarApi;
+ this.securityService = securityService;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluator.java b/src/main/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluator.java
index f25d105..b842e8e 100644
--- a/src/main/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluator.java
+++ b/src/main/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluator.java
@@ -19,57 +19,66 @@
package dev.dnpm.oshelper.security;
+import java.io.Serializable;
+import java.util.List;
import org.springframework.security.access.PermissionEvaluator;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;
-import java.io.Serializable;
-import java.util.List;
-
/**
- * PermissionEvaluator zur Gesamtprüfung der Zugriffsberechtigung.
- * Die konkrete Berechtigungsprüfung wird an die nachgelagerten PermissionEvaluatoren delegiert,
- * welche jeweils einzeln dem Zugriff zustimmen müssen.
+ * PermissionEvaluator zur Gesamtprüfung der Zugriffsberechtigung. Die konkrete Berechtigungsprüfung
+ * wird an die nachgelagerten PermissionEvaluatoren delegiert, welche jeweils einzeln dem Zugriff
+ * zustimmen müssen.
*/
@Component
public class DelegatingDataBasedPermissionEvaluator implements PermissionEvaluator {
- private final List<AbstractDelegatedPermissionEvaluator> permissionEvaluators;
+ private final List<AbstractDelegatedPermissionEvaluator> permissionEvaluators;
- public DelegatingDataBasedPermissionEvaluator(final List<AbstractDelegatedPermissionEvaluator> permissionEvaluators) {
- this.permissionEvaluators = permissionEvaluators;
- }
+ public DelegatingDataBasedPermissionEvaluator(
+ final List<AbstractDelegatedPermissionEvaluator> permissionEvaluators) {
+ this.permissionEvaluators = permissionEvaluators;
+ }
- /**
- * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit angeforderter Berechtigung.
- * Hierbei wird die Berechtigungsprüfung an alle nachgelagerten PermissionEvaluatoren delegiert.
- * Alle müssen dem Zugriff zustimmen.
- *
- * @param authentication Das Authentication Objekt
- * @param targetObject Das Zielobjekt
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Object targetObject, Object permissionType) {
- return permissionEvaluators.stream()
- .allMatch(permissionEvaluator -> permissionEvaluator.hasPermission(authentication, targetObject, permissionType));
- }
+ /**
+ * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit
+ * angeforderter Berechtigung. Hierbei wird die Berechtigungsprüfung an alle nachgelagerten
+ * PermissionEvaluatoren delegiert. Alle müssen dem Zugriff zustimmen.
+ *
+ * @param authentication Das Authentication Objekt
+ * @param targetObject Das Zielobjekt
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication, Object targetObject, Object permissionType) {
+ return permissionEvaluators.stream()
+ .allMatch(
+ permissionEvaluator ->
+ permissionEvaluator.hasPermission(authentication, targetObject, permissionType));
+ }
- /**
- * Auswertung anhand der ID und des Namens des Zielobjekts.
- * Hierbei wird die Berechtigungsprüfung an alle nachgelagerten PermissionEvaluatoren delegiert.
- * Alle müssen dem Zugriff zustimmen.
- *
- * @param authentication Authentication-Object
- * @param targetId ID des Objekts
- * @param targetType Name der Zielobjektklasse
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permissionType) {
- return permissionEvaluators.stream()
- .allMatch(permissionEvaluator -> permissionEvaluator.hasPermission(authentication, targetId, targetType, permissionType));
- }
+ /**
+ * Auswertung anhand der ID und des Namens des Zielobjekts. Hierbei wird die Berechtigungsprüfung
+ * an alle nachgelagerten PermissionEvaluatoren delegiert. Alle müssen dem Zugriff zustimmen.
+ *
+ * @param authentication Authentication-Object
+ * @param targetId ID des Objekts
+ * @param targetType Name der Zielobjektklasse
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication,
+ Serializable targetId,
+ String targetType,
+ Object permissionType) {
+ return permissionEvaluators.stream()
+ .allMatch(
+ permissionEvaluator ->
+ permissionEvaluator.hasPermission(
+ authentication, targetId, targetType, permissionType));
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluator.java b/src/main/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluator.java
index 7ec38f0..768052a 100644
--- a/src/main/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluator.java
+++ b/src/main/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluator.java
@@ -21,58 +21,68 @@ package dev.dnpm.oshelper.security;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
+import java.io.Serializable;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;
-import java.io.Serializable;
-
/**
- * Permission-Evaluator zur Auswertung der Berechtigung auf Objekte aufgrund der Formularberechtigung
+ * Permission-Evaluator zur Auswertung der Berechtigung auf Objekte aufgrund der
+ * Formularberechtigung
*/
@Component
public class FormBasedPermissionEvaluator extends AbstractDelegatedPermissionEvaluator {
- public FormBasedPermissionEvaluator(final IOnkostarApi onkostarApi, final SecurityService securityService) {
- super(onkostarApi, securityService);
- }
+ public FormBasedPermissionEvaluator(
+ final IOnkostarApi onkostarApi, final SecurityService securityService) {
+ super(onkostarApi, securityService);
+ }
- /**
- * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit angeforderter Berechtigung.
- * Zugriff auf Objekte vom Typ "Patient" wird immer gewährt.
- *
- * @param authentication Das Authentication Objekt
- * @param targetObject Das Zielobjekt
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Object targetObject, Object permissionType) {
- if (permissionType instanceof PermissionType && targetObject instanceof Procedure) {
- return this.securityService.getFormNamesForPermission(authentication, (PermissionType)permissionType)
- .contains(((Procedure)targetObject).getFormName());
- }
- return true;
+ /**
+ * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit
+ * angeforderter Berechtigung. Zugriff auf Objekte vom Typ "Patient" wird immer gewährt.
+ *
+ * @param authentication Das Authentication Objekt
+ * @param targetObject Das Zielobjekt
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication, Object targetObject, Object permissionType) {
+ if (permissionType instanceof PermissionType && targetObject instanceof Procedure) {
+ return this.securityService
+ .getFormNamesForPermission(authentication, (PermissionType) permissionType)
+ .contains(((Procedure) targetObject).getFormName());
}
+ return true;
+ }
- /**
- * Auswertung anhand der ID und des Namens des Zielobjekts.
- * Zugriff auf Objekte vom Typ "Patient" wird immer gewährt.
- *
- * @param authentication Authentication-Object
- * @param targetId ID des Objekts
- * @param targetType Name der Zielobjektklasse
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permissionType) {
- if (permissionType instanceof PermissionType && targetId instanceof Integer && PROCEDURE.equals(targetType)) {
- var procedure = this.onkostarApi.getProcedure((int)targetId);
- if (null != procedure) {
- return this.securityService.getFormNamesForPermission(authentication, (PermissionType) permissionType).contains(procedure.getFormName());
- }
- }
- return true;
+ /**
+ * Auswertung anhand der ID und des Namens des Zielobjekts. Zugriff auf Objekte vom Typ "Patient"
+ * wird immer gewährt.
+ *
+ * @param authentication Authentication-Object
+ * @param targetId ID des Objekts
+ * @param targetType Name der Zielobjektklasse
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication,
+ Serializable targetId,
+ String targetType,
+ Object permissionType) {
+ if (permissionType instanceof PermissionType
+ && targetId instanceof Integer
+ && PROCEDURE.equals(targetType)) {
+ var procedure = this.onkostarApi.getProcedure((int) targetId);
+ if (null != procedure) {
+ return this.securityService
+ .getFormNamesForPermission(authentication, (PermissionType) permissionType)
+ .contains(procedure.getFormName());
+ }
}
-
+ return true;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/FormBasedSecurityAspects.java b/src/main/java/dev/dnpm/oshelper/security/FormBasedSecurityAspects.java
index 6eb5a80..bfca456 100644
--- a/src/main/java/dev/dnpm/oshelper/security/FormBasedSecurityAspects.java
+++ b/src/main/java/dev/dnpm/oshelper/security/FormBasedSecurityAspects.java
@@ -20,6 +20,7 @@
package dev.dnpm.oshelper.security;
import de.itc.onkostar.api.Procedure;
+import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
@@ -28,43 +29,46 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
-import java.util.Arrays;
-
// TODO Disabled for now - check bytecode reported incompatibility for older OS installations
-//@Component
+// @Component
@Aspect
public class FormBasedSecurityAspects {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final FormBasedPermissionEvaluator permissionEvaluator;
+ private final FormBasedPermissionEvaluator permissionEvaluator;
- public FormBasedSecurityAspects(
- final FormBasedPermissionEvaluator permissionEvaluator
- ) {
- this.permissionEvaluator = permissionEvaluator;
- }
+ public FormBasedSecurityAspects(final FormBasedPermissionEvaluator permissionEvaluator) {
+ this.permissionEvaluator = permissionEvaluator;
+ }
- @AfterReturning(value = "@annotation(dev.dnpm.oshelper.security.FormSecuredResult)", returning = "procedure")
- public void afterProcedureFormBased(Procedure procedure) {
- if (
- null != procedure
- && ! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ_WRITE)
- ) {
- logger.warn("Rückgabe von Prozedur blockiert: {}", procedure.getId());
- throw new IllegalSecuredObjectAccessException();
- }
+ @AfterReturning(
+ value = "@annotation(dev.dnpm.oshelper.security.FormSecuredResult)",
+ returning = "procedure")
+ public void afterProcedureFormBased(Procedure procedure) {
+ if (null != procedure
+ && !permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ procedure,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Rückgabe von Prozedur blockiert: {}", procedure.getId());
+ throw new IllegalSecuredObjectAccessException();
}
+ }
- @Before(value = "@annotation(dev.dnpm.oshelper.security.FormSecured)")
- public void beforeProcedureFormBased(JoinPoint jp) {
- Arrays.stream(jp.getArgs())
- .filter(arg -> arg instanceof Procedure)
- .forEach(procedure -> {
- if (! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ_WRITE)) {
- logger.warn("Zugriff auf Prozedur blockiert: {}", ((Procedure)procedure).getId());
- throw new IllegalSecuredObjectAccessException();
- }
- });
- }
+ @Before(value = "@annotation(dev.dnpm.oshelper.security.FormSecured)")
+ public void beforeProcedureFormBased(JoinPoint jp) {
+ Arrays.stream(jp.getArgs())
+ .filter(arg -> arg instanceof Procedure)
+ .forEach(
+ procedure -> {
+ if (!permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ procedure,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Zugriff auf Prozedur blockiert: {}", ((Procedure) procedure).getId());
+ throw new IllegalSecuredObjectAccessException();
+ }
+ });
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/FormSecured.java b/src/main/java/dev/dnpm/oshelper/security/FormSecured.java
index 4419575..5bc271d 100644
--- a/src/main/java/dev/dnpm/oshelper/security/FormSecured.java
+++ b/src/main/java/dev/dnpm/oshelper/security/FormSecured.java
@@ -28,6 +28,5 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
public @interface FormSecured {
- PermissionType value() default PermissionType.READ_WRITE;
-
+ PermissionType value() default PermissionType.READ_WRITE;
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/FormSecuredResult.java b/src/main/java/dev/dnpm/oshelper/security/FormSecuredResult.java
index a0b180c..51612d0 100644
--- a/src/main/java/dev/dnpm/oshelper/security/FormSecuredResult.java
+++ b/src/main/java/dev/dnpm/oshelper/security/FormSecuredResult.java
@@ -28,6 +28,5 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
public @interface FormSecuredResult {
- PermissionType value() default PermissionType.READ_WRITE;
-
+ PermissionType value() default PermissionType.READ_WRITE;
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/IllegalSecuredObjectAccessException.java b/src/main/java/dev/dnpm/oshelper/security/IllegalSecuredObjectAccessException.java
index 4a46126..0b179ab 100644
--- a/src/main/java/dev/dnpm/oshelper/security/IllegalSecuredObjectAccessException.java
+++ b/src/main/java/dev/dnpm/oshelper/security/IllegalSecuredObjectAccessException.java
@@ -21,12 +21,11 @@ package dev.dnpm.oshelper.security;
public class IllegalSecuredObjectAccessException extends RuntimeException {
- public IllegalSecuredObjectAccessException() {
- super();
- }
-
- public IllegalSecuredObjectAccessException(String message) {
- super(message);
- }
+ public IllegalSecuredObjectAccessException() {
+ super();
+ }
+ public IllegalSecuredObjectAccessException(String message) {
+ super(message);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/PermissionType.java b/src/main/java/dev/dnpm/oshelper/security/PermissionType.java
index e041620..51c51ff 100644
--- a/src/main/java/dev/dnpm/oshelper/security/PermissionType.java
+++ b/src/main/java/dev/dnpm/oshelper/security/PermissionType.java
@@ -20,6 +20,6 @@
package dev.dnpm.oshelper.security;
public enum PermissionType {
- READ,
- READ_WRITE
+ READ,
+ READ_WRITE
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluator.java b/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluator.java
index 1681945..666aed9 100644
--- a/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluator.java
+++ b/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluator.java
@@ -22,79 +22,90 @@ package dev.dnpm.oshelper.security;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
+import java.io.Serializable;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;
-import java.io.Serializable;
-
/**
- * Permission-Evaluator zur Auswertung der Berechtigung auf Objekte aufgrund der Personenstammberechtigung
+ * Permission-Evaluator zur Auswertung der Berechtigung auf Objekte aufgrund der
+ * Personenstammberechtigung
*/
@Component
public class PersonPoolBasedPermissionEvaluator extends AbstractDelegatedPermissionEvaluator {
- public PersonPoolBasedPermissionEvaluator(final IOnkostarApi onkostarApi, final SecurityService securityService) {
- super(onkostarApi, securityService);
- }
+ public PersonPoolBasedPermissionEvaluator(
+ final IOnkostarApi onkostarApi, final SecurityService securityService) {
+ super(onkostarApi, securityService);
+ }
- /**
- * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit angeforderter Berechtigung.
- * @param authentication Das Authentication Objekt
- * @param targetObject Das Zielobjekt
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Object targetObject, Object permissionType) {
- if (permissionType instanceof PermissionType) {
- if (targetObject instanceof Patient) {
- return this.securityService.getPersonPoolIdsForPermission(authentication, (PermissionType)permissionType)
- .contains(((Patient)targetObject).getPersonPoolCode());
- } else if (targetObject instanceof Procedure) {
- return this.securityService.getPersonPoolIdsForPermission(authentication, (PermissionType)permissionType)
- .contains(((Procedure)targetObject).getPatient().getPersonPoolCode());
- }
- }
- return false;
+ /**
+ * Auswertung der Zugriffsberechtigung für authentifizierten Benutzer auf Zielobjekt mit
+ * angeforderter Berechtigung.
+ *
+ * @param authentication Das Authentication Objekt
+ * @param targetObject Das Zielobjekt
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication, Object targetObject, Object permissionType) {
+ if (permissionType instanceof PermissionType) {
+ if (targetObject instanceof Patient) {
+ return this.securityService
+ .getPersonPoolIdsForPermission(authentication, (PermissionType) permissionType)
+ .contains(((Patient) targetObject).getPersonPoolCode());
+ } else if (targetObject instanceof Procedure) {
+ return this.securityService
+ .getPersonPoolIdsForPermission(authentication, (PermissionType) permissionType)
+ .contains(((Procedure) targetObject).getPatient().getPersonPoolCode());
+ }
}
+ return false;
+ }
- /**
- * Auswertung anhand der ID und des Namens des Zielobjekts.
- * @param authentication Authentication-Object
- * @param targetId ID des Objekts
- * @param targetType Name der Zielobjektklasse
- * @param permissionType Die angeforderte Berechtigung
- * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
- */
- @Override
- public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permissionType) {
- if (targetId instanceof Integer && permissionType instanceof PermissionType) {
- var personPoolCode = getPersonPoolCode((int)targetId, targetType);
- if (null != personPoolCode) {
- return this.securityService.getPersonPoolIdsForPermission(authentication, (PermissionType) permissionType).contains(personPoolCode);
- }
- }
- return false;
+ /**
+ * Auswertung anhand der ID und des Namens des Zielobjekts.
+ *
+ * @param authentication Authentication-Object
+ * @param targetId ID des Objekts
+ * @param targetType Name der Zielobjektklasse
+ * @param permissionType Die angeforderte Berechtigung
+ * @return Gibt <code>true</code> zurück, wenn der Benutzer die Berechtigung hat
+ */
+ @Override
+ public boolean hasPermission(
+ Authentication authentication,
+ Serializable targetId,
+ String targetType,
+ Object permissionType) {
+ if (targetId instanceof Integer && permissionType instanceof PermissionType) {
+ var personPoolCode = getPersonPoolCode((int) targetId, targetType);
+ if (null != personPoolCode) {
+ return this.securityService
+ .getPersonPoolIdsForPermission(authentication, (PermissionType) permissionType)
+ .contains(personPoolCode);
+ }
}
+ return false;
+ }
- private String getPersonPoolCode(int id, String type) {
- Patient patient = null;
+ private String getPersonPoolCode(int id, String type) {
+ Patient patient = null;
- if (PATIENT.equals(type)) {
- patient = onkostarApi.getPatient(id);
- } else if (PROCEDURE.equals(type)) {
- var procedure = onkostarApi.getProcedure(id);
- if (null != procedure) {
- patient = procedure.getPatient();
- }
- }
-
- if (null != patient) {
- return patient.getPersonPoolCode();
- }
-
- return null;
+ if (PATIENT.equals(type)) {
+ patient = onkostarApi.getPatient(id);
+ } else if (PROCEDURE.equals(type)) {
+ var procedure = onkostarApi.getProcedure(id);
+ if (null != procedure) {
+ patient = procedure.getPatient();
+ }
}
+ if (null != patient) {
+ return patient.getPersonPoolCode();
+ }
+ return null;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspects.java b/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspects.java
index ae6d82d..1cd4122 100644
--- a/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspects.java
+++ b/src/main/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspects.java
@@ -21,6 +21,7 @@ package dev.dnpm.oshelper.security;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
+import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
@@ -30,64 +31,75 @@ import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import java.util.Arrays;
-
@Component
@Aspect
public class PersonPoolBasedSecurityAspects {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
+ private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
- public PersonPoolBasedSecurityAspects(PersonPoolBasedPermissionEvaluator permissionEvaluator) {
- this.permissionEvaluator = permissionEvaluator;
- }
+ public PersonPoolBasedSecurityAspects(PersonPoolBasedPermissionEvaluator permissionEvaluator) {
+ this.permissionEvaluator = permissionEvaluator;
+ }
- @AfterReturning(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecuredResult) ", returning = "patient")
- public void afterPatient(Patient patient) {
- if (
- null != patient
- && ! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), patient, PermissionType.READ_WRITE)
- ) {
- logger.warn("Rückgabe von Patient blockiert: {}", patient.getId());
- throw new IllegalSecuredObjectAccessException();
- }
+ @AfterReturning(
+ value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecuredResult) ",
+ returning = "patient")
+ public void afterPatient(Patient patient) {
+ if (null != patient
+ && !permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ patient,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Rückgabe von Patient blockiert: {}", patient.getId());
+ throw new IllegalSecuredObjectAccessException();
}
+ }
- @AfterReturning(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecuredResult)", returning = "procedure")
- public void afterProcedure(Procedure procedure) {
- if (
- null != procedure
- && ! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ_WRITE)
- ) {
- logger.warn("Rückgabe von Prozedur blockiert: {}", procedure.getId());
- throw new IllegalSecuredObjectAccessException();
- }
+ @AfterReturning(
+ value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecuredResult)",
+ returning = "procedure")
+ public void afterProcedure(Procedure procedure) {
+ if (null != procedure
+ && !permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ procedure,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Rückgabe von Prozedur blockiert: {}", procedure.getId());
+ throw new IllegalSecuredObjectAccessException();
}
+ }
- @Before(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecured)")
- public void beforePatient(JoinPoint jp) {
- Arrays.stream(jp.getArgs())
- .filter(arg -> arg instanceof Patient)
- .forEach(patient -> {
- if (! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), patient, PermissionType.READ_WRITE)) {
- logger.warn("Zugriff auf Patient blockiert: {}", ((Patient)patient).getId());
- throw new IllegalSecuredObjectAccessException();
- }
- });
- }
-
- @Before(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecured)")
- public void beforeProcedure(JoinPoint jp) {
- Arrays.stream(jp.getArgs())
- .filter(arg -> arg instanceof Procedure)
- .forEach(procedure -> {
- if (! permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ_WRITE)) {
- logger.warn("Zugriff auf Prozedur blockiert: {}", ((Procedure)procedure).getId());
- throw new IllegalSecuredObjectAccessException();
- }
- });
- }
+ @Before(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecured)")
+ public void beforePatient(JoinPoint jp) {
+ Arrays.stream(jp.getArgs())
+ .filter(arg -> arg instanceof Patient)
+ .forEach(
+ patient -> {
+ if (!permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ patient,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Zugriff auf Patient blockiert: {}", ((Patient) patient).getId());
+ throw new IllegalSecuredObjectAccessException();
+ }
+ });
+ }
+ @Before(value = "@annotation(dev.dnpm.oshelper.security.PersonPoolSecured)")
+ public void beforeProcedure(JoinPoint jp) {
+ Arrays.stream(jp.getArgs())
+ .filter(arg -> arg instanceof Procedure)
+ .forEach(
+ procedure -> {
+ if (!permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ procedure,
+ PermissionType.READ_WRITE)) {
+ logger.warn("Zugriff auf Prozedur blockiert: {}", ((Procedure) procedure).getId());
+ throw new IllegalSecuredObjectAccessException();
+ }
+ });
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecured.java b/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecured.java
index 079da7e..ebd1274 100644
--- a/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecured.java
+++ b/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecured.java
@@ -28,6 +28,5 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
public @interface PersonPoolSecured {
- PermissionType value() default PermissionType.READ_WRITE;
-
+ PermissionType value() default PermissionType.READ_WRITE;
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecuredResult.java b/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecuredResult.java
index afb0a12..bec530e 100644
--- a/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecuredResult.java
+++ b/src/main/java/dev/dnpm/oshelper/security/PersonPoolSecuredResult.java
@@ -28,6 +28,5 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
public @interface PersonPoolSecuredResult {
- PermissionType value() default PermissionType.READ_WRITE;
-
+ PermissionType value() default PermissionType.READ_WRITE;
}
diff --git a/src/main/java/dev/dnpm/oshelper/security/SecurityService.java b/src/main/java/dev/dnpm/oshelper/security/SecurityService.java
index 677645e..46b5bf2 100644
--- a/src/main/java/dev/dnpm/oshelper/security/SecurityService.java
+++ b/src/main/java/dev/dnpm/oshelper/security/SecurityService.java
@@ -19,61 +19,61 @@
package dev.dnpm.oshelper.security;
+import java.util.List;
+import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
-import javax.sql.DataSource;
-import java.util.List;
-
-/**
- * Service mit Methoden zum Feststellen von sicherheitsrelevanten Informationen eines Benutzers
- */
+/** Service mit Methoden zum Feststellen von sicherheitsrelevanten Informationen eines Benutzers */
@Service
public class SecurityService {
- private final JdbcTemplate jdbcTemplate;
-
- public SecurityService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
+ private final JdbcTemplate jdbcTemplate;
- List<String> getPersonPoolIdsForPermission(Authentication authentication, PermissionType permissionType) {
- var sql = "SELECT p.kennung FROM personenstamm_zugriff " +
- " JOIN usergroup u ON personenstamm_zugriff.benutzergruppe_id = u.id " +
- " JOIN akteur_usergroup au ON u.id = au.usergroup_id " +
- " JOIN akteur a ON au.akteur_id = a.id " +
- " JOIN personenstamm p on personenstamm_zugriff.personenstamm_id = p.id " +
- " WHERE a.login = ? AND a.aktiv AND a.anmelden_moeglich ";
+ public SecurityService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
- if (PermissionType.READ_WRITE == permissionType) {
- sql += " AND personenstamm_zugriff.bearbeiten ";
- }
+ List<String> getPersonPoolIdsForPermission(
+ Authentication authentication, PermissionType permissionType) {
+ var sql =
+ "SELECT p.kennung FROM personenstamm_zugriff "
+ + " JOIN usergroup u ON personenstamm_zugriff.benutzergruppe_id = u.id "
+ + " JOIN akteur_usergroup au ON u.id = au.usergroup_id "
+ + " JOIN akteur a ON au.akteur_id = a.id "
+ + " JOIN personenstamm p on personenstamm_zugriff.personenstamm_id = p.id "
+ + " WHERE a.login = ? AND a.aktiv AND a.anmelden_moeglich ";
- var userDetails = (UserDetails)authentication.getPrincipal();
-
- return jdbcTemplate
- .query(sql, new Object[]{userDetails.getUsername()}, (rs, rowNum) -> rs.getString("kennung"));
+ if (PermissionType.READ_WRITE == permissionType) {
+ sql += " AND personenstamm_zugriff.bearbeiten ";
}
- List<String> getFormNamesForPermission(Authentication authentication, PermissionType permissionType) {
+ var userDetails = (UserDetails) authentication.getPrincipal();
- var sql = "SELECT df.name FROM formular_usergroup_zugriff " +
- " JOIN data_form df ON formular_usergroup_zugriff.formular_id = df.id " +
- " JOIN usergroup u ON formular_usergroup_zugriff.usergroup_id = u.id " +
- " JOIN akteur_usergroup au ON u.id = au.usergroup_id " +
- " JOIN akteur a on au.akteur_id = a.id " +
- " WHERE a.login = ? AND a.aktiv AND a.anmelden_moeglich ";
+ return jdbcTemplate.query(
+ sql, new Object[] {userDetails.getUsername()}, (rs, rowNum) -> rs.getString("kennung"));
+ }
- if (PermissionType.READ_WRITE == permissionType) {
- sql += " AND formular_usergroup_zugriff.bearbeiten ";
- }
+ List<String> getFormNamesForPermission(
+ Authentication authentication, PermissionType permissionType) {
- var userDetails = (UserDetails)authentication.getPrincipal();
+ var sql =
+ "SELECT df.name FROM formular_usergroup_zugriff "
+ + " JOIN data_form df ON formular_usergroup_zugriff.formular_id = df.id "
+ + " JOIN usergroup u ON formular_usergroup_zugriff.usergroup_id = u.id "
+ + " JOIN akteur_usergroup au ON u.id = au.usergroup_id "
+ + " JOIN akteur a on au.akteur_id = a.id "
+ + " WHERE a.login = ? AND a.aktiv AND a.anmelden_moeglich ";
- return jdbcTemplate
- .query(sql, new Object[]{userDetails.getUsername()}, (rs, rowNum) -> rs.getString("name"));
+ if (PermissionType.READ_WRITE == permissionType) {
+ sql += " AND formular_usergroup_zugriff.bearbeiten ";
}
+ var userDetails = (UserDetails) authentication.getPrincipal();
+
+ return jdbcTemplate.query(
+ sql, new Object[] {userDetails.getUsername()}, (rs, rowNum) -> rs.getString("name"));
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java b/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
index 9548202..e652ee5 100644
--- a/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
@@ -20,10 +20,9 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.exceptions.FormException;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
import java.util.List;
+import javax.sql.DataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Standardimplementierung zum Ermitteln von Unter- und Hauptformularen
@@ -32,25 +31,27 @@ import java.util.List;
*/
public class DefaultFormService implements FormService {
- private final JdbcTemplate jdbcTemplate;
-
- public DefaultFormService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
-
- @Override
- public int getMainFormProcedureId(int procedureId) throws FormException {
- var sql = "SELECT hauptprozedur_id FROM prozedur WHERE id = ?";
- try {
- return jdbcTemplate.queryForObject(sql, (resultSet, i) -> resultSet.getInt("hauptprozedur_id"), procedureId);
- } catch (Exception e) {
- throw new FormException(String.format("No main form found for subform with ID '%d'", procedureId));
- }
+ private final JdbcTemplate jdbcTemplate;
+
+ public DefaultFormService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+ @Override
+ public int getMainFormProcedureId(int procedureId) throws FormException {
+ var sql = "SELECT hauptprozedur_id FROM prozedur WHERE id = ?";
+ try {
+ return jdbcTemplate.queryForObject(
+ sql, (resultSet, i) -> resultSet.getInt("hauptprozedur_id"), procedureId);
+ } catch (Exception e) {
+ throw new FormException(
+ String.format("No main form found for subform with ID '%d'", procedureId));
}
+ }
- @Override
- public List<Integer> getSubFormProcedureIds(int procedureId) {
- var sql = "SELECT id FROM prozedur WHERE hauptprozedur_id = ?";
- return jdbcTemplate.queryForList(sql, Integer.class, procedureId);
- }
+ @Override
+ public List<Integer> getSubFormProcedureIds(int procedureId) {
+ var sql = "SELECT id FROM prozedur WHERE hauptprozedur_id = ?";
+ return jdbcTemplate.queryForList(sql, Integer.class, procedureId);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java b/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
index 463c1e9..2366c10 100644
--- a/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
@@ -20,11 +20,10 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.dto.Studie;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
import java.util.List;
import java.util.stream.Collectors;
+import javax.sql.DataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Standardimplementierung zum Ermitteln von Studien
@@ -33,65 +32,72 @@ import java.util.stream.Collectors;
*/
public class DefaultStudienService implements StudienService {
- private final JdbcTemplate jdbcTemplate;
+ private final JdbcTemplate jdbcTemplate;
- public DefaultStudienService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
+ public DefaultStudienService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
- @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, 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 "
- + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
- + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
- + "WHERE pc.name = 'OS.Studien'"
- + "ORDER BY TRIM(studie.studien_nummer)";
+ @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, 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 "
+ + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
+ + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
+ + "WHERE pc.name = 'OS.Studien'"
+ + "ORDER BY TRIM(studie.studien_nummer)";
- return this.jdbcTemplate.query(sql, (resultSet, i) -> new Studie(
+ return this.jdbcTemplate.query(
+ sql,
+ (resultSet, i) ->
+ new Studie(
resultSet.getString("name"),
resultSet.getInt("version_number"),
resultSet.getString("code"),
resultSet.getString("studien_nummer"),
resultSet.getString("shortdesc"),
resultSet.getString("description"),
- resultSet.getBoolean("aktiv")
- ));
- }
+ 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, 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 "
- + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
- + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
- + "WHERE pc.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ? OR studie.studien_nummer LIKE ?)"
- + "ORDER BY TRIM(studie.studien_nummer)";
+ @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, 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 "
+ + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
+ + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
+ + "WHERE pc.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ? OR studie.studien_nummer LIKE ?)"
+ + "ORDER BY TRIM(studie.studien_nummer)";
- var like = String.format("%%%s%%", query);
+ var like = String.format("%%%s%%", query);
- return this.jdbcTemplate.query(sql, new Object[]{like, like, like}, (resultSet, i) -> new Studie(
+ return this.jdbcTemplate.query(
+ sql,
+ new Object[] {like, like, like},
+ (resultSet, i) ->
+ new Studie(
resultSet.getString("name"),
resultSet.getInt("version_number"),
resultSet.getString("code"),
resultSet.getString("studien_nummer"),
resultSet.getString("shortdesc"),
resultSet.getString("description"),
- resultSet.getBoolean("aktiv")
- ));
- }
+ resultSet.getBoolean("aktiv")));
+ }
- @Override
- public List<Studie> findActive() {
- return findAll().stream().filter(Studie::isActive).collect(Collectors.toList());
- }
+ @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());
- }
+ @Override
+ public List<Studie> findActiveByQuery(String query) {
+ return findByQuery(query).stream().filter(Studie::isActive).collect(Collectors.toList());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/FormService.java b/src/main/java/dev/dnpm/oshelper/services/FormService.java
index 1e89d57..f48dcd2 100644
--- a/src/main/java/dev/dnpm/oshelper/services/FormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/FormService.java
@@ -19,52 +19,53 @@
package dev.dnpm.oshelper.services;
-import dev.dnpm.oshelper.exceptions.FormException;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.constants.JaNeinUnbekannt;
-
+import dev.dnpm.oshelper.exceptions.FormException;
import java.util.List;
public interface FormService {
- /**
- * Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular
- * Siehe auch: <a href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
- *
- * @param procedureId Die Prozedur-ID des Unterformulars
- * @return Die Prozedur-ID des zugehörigen Hauptformulars
- * @throws FormException Wird geworfen, wenn ein Fehler auftrat
- */
- int getMainFormProcedureId(int procedureId) throws FormException;
-
- /**
- * Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular
- * Siehe auch: <a href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
- *
- * @param procedureId Die Prozedur-ID des Formulars
- * @return Eine Liste mit Prozedur-IDs der Unterformulare
- */
- List<Integer> getSubFormProcedureIds(int procedureId);
+ /**
+ * Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular
+ * Siehe auch: <a
+ * href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
+ *
+ * @param procedureId Die Prozedur-ID des Unterformulars
+ * @return Die Prozedur-ID des zugehörigen Hauptformulars
+ * @throws FormException Wird geworfen, wenn ein Fehler auftrat
+ */
+ int getMainFormProcedureId(int procedureId) throws FormException;
- /**
- * Prüft, ob ein Formularfeld in der Prozedur einen Wert hat oder null ist
- * @param procedure Die zu prüfende Prozedur
- * @param fieldName Der Formularfeldname
- * @return Gibt <code>true</code> zurück, wenn das Feld einen Wert hat
- */
- static boolean hasValue(final Procedure procedure, final String fieldName) {
- return null != procedure.getValue(fieldName);
- }
+ /**
+ * Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular Siehe auch: <a
+ * href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
+ *
+ * @param procedureId Die Prozedur-ID des Formulars
+ * @return Eine Liste mit Prozedur-IDs der Unterformulare
+ */
+ List<Integer> getSubFormProcedureIds(int procedureId);
- /**
- * Prüft, ob ein Formularfeld mit Ja/Nein/Unbekannt den Wert Ja hat
- * @param procedure Die zu prüfende Prozedur
- * @param fieldName Der Formularfeldname
- * @return Gibt <code>true</code> zurück, wenn das Feld den Wert "Ja" hat
- */
- static boolean isYes(final Procedure procedure, final String fieldName) {
- return hasValue(procedure, fieldName)
- && procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode());
- }
+ /**
+ * Prüft, ob ein Formularfeld in der Prozedur einen Wert hat oder null ist
+ *
+ * @param procedure Die zu prüfende Prozedur
+ * @param fieldName Der Formularfeldname
+ * @return Gibt <code>true</code> zurück, wenn das Feld einen Wert hat
+ */
+ static boolean hasValue(final Procedure procedure, final String fieldName) {
+ return null != procedure.getValue(fieldName);
+ }
+ /**
+ * Prüft, ob ein Formularfeld mit Ja/Nein/Unbekannt den Wert Ja hat
+ *
+ * @param procedure Die zu prüfende Prozedur
+ * @param fieldName Der Formularfeldname
+ * @return Gibt <code>true</code> zurück, wenn das Feld den Wert "Ja" hat
+ */
+ static boolean isYes(final Procedure procedure, final String fieldName) {
+ return hasValue(procedure, fieldName)
+ && procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/SettingsService.java b/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
index 61ef193..82dfcfc 100644
--- a/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
@@ -20,48 +20,50 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.database.SettingsRepository;
-
import java.util.Optional;
-/**
- * Implementiert den Dienst zur Ermittlung von Systemeinstellungen
- */
+/** Implementiert den Dienst zur Ermittlung von Systemeinstellungen */
public class SettingsService {
- private final SettingsRepository settingsRepository;
+ private final SettingsRepository settingsRepository;
- public SettingsService(final SettingsRepository settingsRepository) {
- this.settingsRepository = settingsRepository;
- }
+ public SettingsService(final SettingsRepository settingsRepository) {
+ this.settingsRepository = settingsRepository;
+ }
- /**
- * Übergibt ein <code>Optional</code> für die Einstellung mit angegebenen Namen
- * @param name Name der Einstellung
- * @return Optional mit Wert der Einstellung oder ein leeres Optional, wenn Einstellung nicht gefunden
- */
- public Optional<String> getSetting(String name) {
- var sid = settingsRepository.findByName(name);
- if (null == sid) {
- return Optional.empty();
- }
- return Optional.of(sid.getValue());
+ /**
+ * Übergibt ein <code>Optional</code> für die Einstellung mit angegebenen Namen
+ *
+ * @param name Name der Einstellung
+ * @return Optional mit Wert der Einstellung oder ein leeres Optional, wenn Einstellung nicht
+ * gefunden
+ */
+ public Optional<String> getSetting(String name) {
+ var sid = settingsRepository.findByName(name);
+ if (null == sid) {
+ return Optional.empty();
}
+ return Optional.of(sid.getValue());
+ }
- /**
- * Übergibt die SID als <code>Optional</code>
- * @return Optional mit Wert der SID
- */
- public Optional<String> getSID() {
- return getSetting("SID");
- }
+ /**
+ * Übergibt die SID als <code>Optional</code>
+ *
+ * @return Optional mit Wert der SID
+ */
+ public Optional<String> getSID() {
+ return getSetting("SID");
+ }
- /**
- * Übergibt die Einstellung für <code>mehrere_mtb_in_mtbepisode</code>
- * @return Übergibt <code>true</code>, wenn <code>mehrere_mtb_in_mtbepisode</code> auf "Ja" gesetzt ist.
- */
- @Deprecated(since = "2.1.0", forRemoval = true)
- public boolean multipleMtbsInMtbEpisode() {
- var setting = getSetting("mehrere_mtb_in_mtbepisode");
- return setting.isPresent() && setting.get().equals("true");
- }
+ /**
+ * Übergibt die Einstellung für <code>mehrere_mtb_in_mtbepisode</code>
+ *
+ * @return Übergibt <code>true</code>, wenn <code>mehrere_mtb_in_mtbepisode</code> auf "Ja"
+ * gesetzt ist.
+ */
+ @Deprecated(since = "2.1.0", forRemoval = true)
+ public boolean multipleMtbsInMtbEpisode() {
+ var setting = getSetting("mehrere_mtb_in_mtbepisode");
+ return setting.isPresent() && setting.get().equals("true");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/StudienService.java b/src/main/java/dev/dnpm/oshelper/services/StudienService.java
index 0e0314e..f39c7e9 100644
--- a/src/main/java/dev/dnpm/oshelper/services/StudienService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/StudienService.java
@@ -20,39 +20,39 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.dto.Studie;
-
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);
-
- /**
- * Ü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);
-
+ /**
+ * Ü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);
+
+ /**
+ * Ü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);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java b/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
index 5ae1093..3353e41 100644
--- a/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
@@ -19,31 +19,31 @@
package dev.dnpm.oshelper.services;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
import de.itc.onkostar.api.Patient;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
import java.util.List;
import java.util.Optional;
/**
* Schnittstelle zum Ermitteln von ECOG-Statusinformationen
*
- * @since 0.6.0
+ * @since 0.6.0
*/
public interface TherapieMitEcogService {
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Therapieformularen des Patienten
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- Optional<String> latestEcogStatus(Patient patient);
-
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Therapieformularen des Patienten
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- List<EcogStatusWithDate> ecogStatus(Patient patient);
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Therapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ Optional<String> latestEcogStatus(Patient patient);
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Therapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ List<EcogStatusWithDate> ecogStatus(Patient patient);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
index 0a3346a..edfeddd 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
@@ -29,19 +29,20 @@ import de.itc.onkostar.api.Procedure;
@Deprecated(forRemoval = true, since = "2.0.0")
public interface ConsentManagerService {
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- * @param procedure Prozedur des Consent-Formulars
- */
- void applyConsent(Procedure procedure);
-
- /**
- * Optionale Prüfung, ob die angegebene Prozedur angewendet werden kann.
- * @param procedure Anzuwendende Prozedur
- * @return Gibt <code>true</code> zurück, wenn die Prozedur angewendet werden kann.
- */
- default boolean canApply(Procedure procedure) {
- return null != procedure;
- }
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ void applyConsent(Procedure procedure);
+ /**
+ * Optionale Prüfung, ob die angegebene Prozedur angewendet werden kann.
+ *
+ * @param procedure Anzuwendende Prozedur
+ * @return Gibt <code>true</code> zurück, wenn die Prozedur angewendet werden kann.
+ */
+ default boolean canApply(Procedure procedure) {
+ return null != procedure;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
index 3f548a0..81d864b 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
@@ -24,25 +24,22 @@ import de.itc.onkostar.api.IOnkostarApi;
@Deprecated(forRemoval = true, since = "2.0.0")
public class ConsentManagerServiceFactory {
- private final IOnkostarApi onkostarApi;
-
- public ConsentManagerServiceFactory(
- final IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
+ private final IOnkostarApi onkostarApi;
+
+ public ConsentManagerServiceFactory(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
+
+ public ConsentManagerService currentUsableInstance() {
+ var consentFormName = onkostarApi.getGlobalSetting("consentform");
+
+ switch (consentFormName) {
+ case "Excel-Formular":
+ return new UkwConsentManagerService(this.onkostarApi);
+ case "MR.Consent":
+ return new MrConsentManagerService(this.onkostarApi);
+ default:
+ return procedure -> {};
}
-
- public ConsentManagerService currentUsableInstance() {
- var consentFormName = onkostarApi.getGlobalSetting("consentform");
-
- switch (consentFormName) {
- case "Excel-Formular":
- return new UkwConsentManagerService(this.onkostarApi);
- case "MR.Consent":
- return new MrConsentManagerService(this.onkostarApi);
- default:
- return procedure -> {};
- }
- }
-
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
index ca2cba5..c01568a 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
@@ -19,10 +19,12 @@
package dev.dnpm.oshelper.services.consent;
-import dev.dnpm.oshelper.VerweisVon;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import dev.dnpm.oshelper.VerweisVon;
+import java.util.List;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -31,9 +33,6 @@ import org.hibernate.type.StandardBasicTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.Map;
-
/**
* Detailimplementierung für das Formular `MR.Consent`
*
@@ -42,105 +41,113 @@ import java.util.Map;
@Deprecated(forRemoval = true, since = "2.0.0")
public class MrConsentManagerService implements ConsentManagerService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- private final IOnkostarApi onkostarApi;
-
- public MrConsentManagerService(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
-
- @Override
- public boolean canApply(Procedure procedure) {
- return null != procedure && procedure.getFormName().equals("MR.Consent");
- }
-
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- *
- * @param procedure Prozedur des Consent-Formulars
- */
- @Override
- public void applyConsent(Procedure procedure) {
- int value = 0;
- try {
- SessionFactory sessionFactory = onkostarApi.getSessionFactory();
- Session session = sessionFactory.getCurrentSession();
- // geänderte Werte checken
- String sql1 = "select id, max(timestamp) AS datum from aenderungsprotokoll where entity_id = '" + procedure.getId() + "'";
- SQLQuery query1 = session.createSQLQuery(sql1)
- .addScalar("id", StandardBasicTypes.INTEGER)
- .addScalar("datum", StandardBasicTypes.TIMESTAMP);
- logger.info("Wert-Check: {}", query1.uniqueResult());
-
- String sql = "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum " +
- "FROM prozedur " +
- "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id " +
- "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id " +
- "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id " +
- "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id " +
- "WHERE patient_id = " + procedure.getPatientId() + " " +
- "AND geloescht = 0 " +
- "AND data_catalogue_entry.type = 'formReference' " +
- "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
-
- SQLQuery query = session.createSQLQuery(sql)
- .addScalar("procedure_id", StandardBasicTypes.INTEGER)
- .addScalar("data_form_id", StandardBasicTypes.INTEGER)
- .addScalar("data_catalogue", StandardBasicTypes.STRING)
- .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
- .addScalar("formname", StandardBasicTypes.STRING)
- .addScalar("datum", StandardBasicTypes.DATE);
-
- query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
-
- @SuppressWarnings("unchecked")
- List<VerweisVon> result = query.list();
-
- for (VerweisVon verweisVon : result) {
- sql = verweisVon.getSQL();
- query = session.createSQLQuery(sql)
- .addScalar("value", StandardBasicTypes.INTEGER);
- if (query.uniqueResult() != null) {
- value = (Integer) query.uniqueResult();
- }
- if (value == procedure.getId()) {
- saveReferencedProcedure(procedure, verweisVon);
- value = 0;
- }
- }
- } catch (RuntimeException e) {
- logger.error("Sonstiger Fehler bei der Ausführung von analyze()", e);
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ private final IOnkostarApi onkostarApi;
+
+ public MrConsentManagerService(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
+
+ @Override
+ public boolean canApply(Procedure procedure) {
+ return null != procedure && procedure.getFormName().equals("MR.Consent");
+ }
+
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ @Override
+ public void applyConsent(Procedure procedure) {
+ int value = 0;
+ try {
+ SessionFactory sessionFactory = onkostarApi.getSessionFactory();
+ Session session = sessionFactory.getCurrentSession();
+ // geänderte Werte checken
+ String sql1 =
+ "select id, max(timestamp) AS datum from aenderungsprotokoll where entity_id = '"
+ + procedure.getId()
+ + "'";
+ SQLQuery query1 =
+ session
+ .createSQLQuery(sql1)
+ .addScalar("id", StandardBasicTypes.INTEGER)
+ .addScalar("datum", StandardBasicTypes.TIMESTAMP);
+ logger.info("Wert-Check: {}", query1.uniqueResult());
+
+ String sql =
+ "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum "
+ + "FROM prozedur "
+ + "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id "
+ + "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id "
+ + "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id "
+ + "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id "
+ + "WHERE patient_id = "
+ + procedure.getPatientId()
+ + " "
+ + "AND geloescht = 0 "
+ + "AND data_catalogue_entry.type = 'formReference' "
+ + "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
+
+ SQLQuery query =
+ session
+ .createSQLQuery(sql)
+ .addScalar("procedure_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_form_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_catalogue", StandardBasicTypes.STRING)
+ .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
+ .addScalar("formname", StandardBasicTypes.STRING)
+ .addScalar("datum", StandardBasicTypes.DATE);
+
+ query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
+
+ @SuppressWarnings("unchecked")
+ List<VerweisVon> result = query.list();
+
+ for (VerweisVon verweisVon : result) {
+ sql = verweisVon.getSQL();
+ query = session.createSQLQuery(sql).addScalar("value", StandardBasicTypes.INTEGER);
+ if (query.uniqueResult() != null) {
+ value = (Integer) query.uniqueResult();
+ }
+ if (value == procedure.getId()) {
+ saveReferencedProcedure(procedure, verweisVon);
+ value = 0;
}
+ }
+ } catch (RuntimeException e) {
+ logger.error("Sonstiger Fehler bei der Ausführung von analyze()", e);
}
-
- private void saveReferencedProcedure(Procedure prozedur, VerweisVon verweisVon) {
- Procedure andereprozedur = onkostarApi.getProcedure(verweisVon.getProcedure_id());
- try {
- Map<String, Item> felder = prozedur.getAllValues();
- for (Map.Entry<String, Item> feld : felder.entrySet()) {
- if (feld.getKey().startsWith("Consent")) {
- if (feld.getKey().equals("ConsentStatusEinwilligungDNPM")) {
- switch (feld.getValue().getValue().toString()) {
- case "z":
- andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "active"));
- break;
- case "a":
- case "w":
- andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "rejected"));
- break;
- default:
- break;
- }
- } else {
- andereprozedur.setValue(feld.getKey(), prozedur.getValue(feld.getKey()));
- }
- }
+ }
+
+ private void saveReferencedProcedure(Procedure prozedur, VerweisVon verweisVon) {
+ Procedure andereprozedur = onkostarApi.getProcedure(verweisVon.getProcedure_id());
+ try {
+ Map<String, Item> felder = prozedur.getAllValues();
+ for (Map.Entry<String, Item> feld : felder.entrySet()) {
+ if (feld.getKey().startsWith("Consent")) {
+ if (feld.getKey().equals("ConsentStatusEinwilligungDNPM")) {
+ switch (feld.getValue().getValue().toString()) {
+ case "z":
+ andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "active"));
+ break;
+ case "a":
+ case "w":
+ andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "rejected"));
+ break;
+ default:
+ break;
}
- onkostarApi.saveProcedure(andereprozedur);
- } catch (Exception e) {
- logger.error("Kann Prozedur nicht speichern", e);
+ } else {
+ andereprozedur.setValue(feld.getKey(), prozedur.getValue(feld.getKey()));
+ }
}
+ }
+ onkostarApi.saveProcedure(andereprozedur);
+ } catch (Exception e) {
+ logger.error("Kann Prozedur nicht speichern", e);
}
-
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
index fdf4f7b..32f7219 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
@@ -22,11 +22,10 @@ package dev.dnpm.oshelper.services.consent;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.util.Comparator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Comparator;
-
/**
* Detailimplementierung für das Formular `Excel-Formular`
*
@@ -35,58 +34,60 @@ import java.util.Comparator;
@Deprecated(forRemoval = true, since = "2.0.0")
public class UkwConsentManagerService implements ConsentManagerService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- public UkwConsentManagerService(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
+ public UkwConsentManagerService(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
- @Override
- public boolean canApply(Procedure procedure) {
- return null != procedure && procedure.getFormName().equals("Excel-Formular");
- }
+ @Override
+ public boolean canApply(Procedure procedure) {
+ return null != procedure && procedure.getFormName().equals("Excel-Formular");
+ }
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- *
- * @param procedure Prozedur des Consent-Formulars
- */
- @Override
- public void applyConsent(Procedure procedure) {
- var refdnpmklinikanamnese = procedure.getValue("refdnpmklinikanamnese").getInt();
- var dnpmKlinikAnamnese = this.onkostarApi.getProcedure(refdnpmklinikanamnese);
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ @Override
+ public void applyConsent(Procedure procedure) {
+ var refdnpmklinikanamnese = procedure.getValue("refdnpmklinikanamnese").getInt();
+ var dnpmKlinikAnamnese = this.onkostarApi.getProcedure(refdnpmklinikanamnese);
- if (null == dnpmKlinikAnamnese) {
- return;
- }
-
- var consents = procedure.getSubProceduresMap().get("ufdnpmconsent");
-
- if (null == consents) {
- return;
- }
-
- consents.stream()
- .max(Comparator.comparing(Procedure::getStartDate))
- .ifPresent(lastConsent -> {
- var date = lastConsent.getStartDate();
- var status = lastConsent.getValue("status");
- if (null == date || null == status || status.getString().isBlank()) {
- logger.warn("Kein DNPM-Einwilligungstatus angegeben");
- return;
- }
+ if (null == dnpmKlinikAnamnese) {
+ return;
+ }
- dnpmKlinikAnamnese.setValue("ConsentStatusEinwilligungDNPM", new Item("Einwilligung", status.getString()));
- dnpmKlinikAnamnese.setValue("ConsentDatumEinwilligungDNPM", new Item("DatumEinwilligung", date));
+ var consents = procedure.getSubProceduresMap().get("ufdnpmconsent");
- try {
- onkostarApi.saveProcedure(dnpmKlinikAnamnese, false);
- } catch (Exception e) {
- logger.error("Kann DNPM-Einwilligungstatus nicht aktualisieren", e);
- }
- });
+ if (null == consents) {
+ return;
}
+ consents.stream()
+ .max(Comparator.comparing(Procedure::getStartDate))
+ .ifPresent(
+ lastConsent -> {
+ var date = lastConsent.getStartDate();
+ var status = lastConsent.getValue("status");
+ if (null == date || null == status || status.getString().isBlank()) {
+ logger.warn("Kein DNPM-Einwilligungstatus angegeben");
+ return;
+ }
+
+ dnpmKlinikAnamnese.setValue(
+ "ConsentStatusEinwilligungDNPM", new Item("Einwilligung", status.getString()));
+ dnpmKlinikAnamnese.setValue(
+ "ConsentDatumEinwilligungDNPM", new Item("DatumEinwilligung", date));
+
+ try {
+ onkostarApi.saveProcedure(dnpmKlinikAnamnese, false);
+ } catch (Exception e) {
+ logger.error("Kann DNPM-Einwilligungstatus nicht aktualisieren", e);
+ }
+ });
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
index 8216818..19cbc4c 100644
--- a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
@@ -19,21 +19,19 @@
package dev.dnpm.oshelper.services.molekulargenetik;
-import dev.dnpm.oshelper.dto.Variant;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.Variant;
import java.util.List;
-/**
- * Schnittstellenbeschreibung für Methoden zum Formular "OS.Molekulargenetik"
- */
+/** Schnittstellenbeschreibung für Methoden zum Formular "OS.Molekulargenetik" */
public interface MolekulargenetikFormService {
- /**
- * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
- * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik"
- * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden wurden.
- */
- List<Variant> getVariants(Procedure procedure);
-
+ /**
+ * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
+ *
+ * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik"
+ * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden
+ * wurden.
+ */
+ List<Variant> getVariants(Procedure procedure);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
index 71f2435..5111ac7 100644
--- a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
@@ -19,46 +19,47 @@
package dev.dnpm.oshelper.services.molekulargenetik;
-import dev.dnpm.oshelper.dto.Variant;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.Variant;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class OsMolekulargenetikFormService implements MolekulargenetikFormService {
- /**
- * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik" (oder Variante)
- * Unterstützte Varianten sind:
- * <uL>
- * <li>Einfache Variante
- * <li>CNV
- * <li>Fusion
- * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik" (oder Variante)
- * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden wurden.
- */
- @Override
- public List<Variant> getVariants(Procedure procedure) {
- if (! procedureWithUsableFormVariant(procedure)) {
- return List.of();
- }
-
- var subforms = procedure.getSubProceduresMap().get("MolekulargenetischeUntersuchung");
- if (null == subforms) {
- return List.of();
- }
-
- return subforms.stream()
- .map(Variant::fromProcedure)
- .filter(Optional::isPresent)
- .map(Optional::get)
- .collect(Collectors.toList());
-
+ /**
+ * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
+ * (oder Variante) Unterstützte Varianten sind:
+ *
+ * <uL>
+ * <li>Einfache Variante
+ * <li>CNV
+ * <li>Fusion
+ *
+ * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik" (oder Variante)
+ * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden
+ * wurden.
+ */
+ @Override
+ public List<Variant> getVariants(Procedure procedure) {
+ if (!procedureWithUsableFormVariant(procedure)) {
+ return List.of();
}
- private boolean procedureWithUsableFormVariant(Procedure procedure) {
- return "OS.Molekulargenetik".equals(procedure.getFormName())
- || "UKER.Molekulargenetik".equals(procedure.getFormName());
+ var subforms = procedure.getSubProceduresMap().get("MolekulargenetischeUntersuchung");
+ if (null == subforms) {
+ return List.of();
}
+
+ return subforms.stream()
+ .map(Variant::fromProcedure)
+ .filter(Optional::isPresent)
+ .map(Optional::get)
+ .collect(Collectors.toList());
+ }
+
+ private boolean procedureWithUsableFormVariant(Procedure procedure) {
+ return "OS.Molekulargenetik".equals(procedure.getFormName())
+ || "UKER.Molekulargenetik".equals(procedure.getFormName());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
index 03532d6..53d4620 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
@@ -21,7 +21,6 @@ package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Optional;
@@ -29,55 +28,56 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class MrMtbAnmeldungToProtocolMapper implements ProcedureToProtocolMapper {
- private final IOnkostarApi onkostarApi;
-
- public MrMtbAnmeldungToProtocolMapper(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
+ private final IOnkostarApi onkostarApi;
- /**
- * Wandelt eine Prozedur mit Formularnamen "MR.MTB_Anmeldung" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- *
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("MR.MTB_Anmeldung"))) {
- throw new AssertionError("Procedure is not of form type 'MR.MTB_Anmeldung'");
- }
+ public MrMtbAnmeldungToProtocolMapper(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
- var resultParts = new ArrayList<String>();
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "MR.MTB_Anmeldung" in ein {@link Optional} mit einer
+ * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("MR.MTB_Anmeldung"))) {
+ throw new AssertionError("Procedure is not of form type 'MR.MTB_Anmeldung'");
+ }
- var fragestellung = procedure.getValue("Fragestellung");
- if (null != fragestellung && !fragestellung.getString().isBlank()) {
- resultParts.add(String.format("Fragestellung:%n%s", fragestellung.getString()));
- }
+ var resultParts = new ArrayList<String>();
- var refEmpfehlung = procedure.getValue("Empfehlung");
- if (null != refEmpfehlung && refEmpfehlung.getInt() > 0) {
- var empfehlungsProzedur = onkostarApi.getProcedure(refEmpfehlung.getInt());
- var refEinzelempfehlungen = onkostarApi.getSubprocedures(empfehlungsProzedur.getId());
+ var fragestellung = procedure.getValue("Fragestellung");
+ if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ resultParts.add(String.format("Fragestellung:%n%s", fragestellung.getString()));
+ }
- if (null != refEinzelempfehlungen) {
- refEinzelempfehlungen.stream()
- .sorted(Comparator.comparingInt(proc -> proc.getValue("Prioritaet").getInt()))
- .forEach(proc -> {
- if (proc.getFormName().equals("MR.MTB_Einzelempfehlung")) {
- var empfehlung = proc.getValue("Empfehlung");
- if (null != empfehlung && !empfehlung.getString().isBlank()) {
- resultParts.add(String.format("Empfehlung:%n%s", empfehlung.getString()));
- }
- }
- });
- }
- }
+ var refEmpfehlung = procedure.getValue("Empfehlung");
+ if (null != refEmpfehlung && refEmpfehlung.getInt() > 0) {
+ var empfehlungsProzedur = onkostarApi.getProcedure(refEmpfehlung.getInt());
+ var refEinzelempfehlungen = onkostarApi.getSubprocedures(empfehlungsProzedur.getId());
- if (resultParts.isEmpty()) {
- return Optional.empty();
- }
+ if (null != refEinzelempfehlungen) {
+ refEinzelempfehlungen.stream()
+ .sorted(Comparator.comparingInt(proc -> proc.getValue("Prioritaet").getInt()))
+ .forEach(
+ proc -> {
+ if (proc.getFormName().equals("MR.MTB_Einzelempfehlung")) {
+ var empfehlung = proc.getValue("Empfehlung");
+ if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ resultParts.add(String.format("Empfehlung:%n%s", empfehlung.getString()));
+ }
+ }
+ });
+ }
+ }
- return Optional.of(String.join("\n\n", resultParts));
+ if (resultParts.isEmpty()) {
+ return Optional.empty();
}
+
+ return Optional.of(String.join("\n\n", resultParts));
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
index cf992f8..67b3d81 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
@@ -20,10 +20,8 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
-
/**
* Mapper zum Ermitteln des Protokollauszugs für Formular "OS.Tumorkonferenz"
*
@@ -32,32 +30,36 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class OsTumorkonferenzToProtocolMapper implements ProcedureToProtocolMapper {
- /**
- * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("OS.Tumorkonferenz"))) {
- throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz'");
- }
-
- var fragestellung = procedure.getValue("Fragestellung");
- var empfehlung = procedure.getValue("Empfehlung");
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz" in ein {@link Optional} mit einer
+ * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("OS.Tumorkonferenz"))) {
+ throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz'");
+ }
- if (
- null != fragestellung && !fragestellung.getString().isBlank()
- && null != empfehlung && !empfehlung.getString().isBlank()
- ) {
- return Optional.of(String.format("Fragestellung:%n%s%n%nEmpfehlung:%n%s", fragestellung.getString(), empfehlung.getString()));
- } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
- return Optional.of(fragestellung.getString());
- } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
- return Optional.of(empfehlung.getString());
- }
+ var fragestellung = procedure.getValue("Fragestellung");
+ var empfehlung = procedure.getValue("Empfehlung");
- return Optional.empty();
+ if (null != fragestellung
+ && !fragestellung.getString().isBlank()
+ && null != empfehlung
+ && !empfehlung.getString().isBlank()) {
+ return Optional.of(
+ String.format(
+ "Fragestellung:%n%s%n%nEmpfehlung:%n%s",
+ fragestellung.getString(), empfehlung.getString()));
+ } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ return Optional.of(fragestellung.getString());
+ } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ return Optional.of(empfehlung.getString());
}
+
+ return Optional.empty();
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
index c1c7bac..7a387c1 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
/**
@@ -31,32 +30,35 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class OsTumorkonferenzVarianteUkwToProtocolMapper implements ProcedureToProtocolMapper {
- /**
- * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz.VarianteUKW" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW"))) {
- throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz.VarianteUKW'");
- }
-
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz.VarianteUKW" in ein {@link Optional}
+ * mit einer Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW"))) {
+ throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz.VarianteUKW'");
+ }
- var fragestellung = procedure.getValue("Fragestellung");
- var empfehlung = procedure.getValue("Empfehlung");
+ var fragestellung = procedure.getValue("Fragestellung");
+ var empfehlung = procedure.getValue("Empfehlung");
- if (
- null != fragestellung && !fragestellung.getString().isBlank()
- && null != empfehlung && !empfehlung.getString().isBlank()
- ) {
- return Optional.of(String.format("Fragestellung:%n%s%n%nEmpfehlung:%n%s", fragestellung.getString().trim(), empfehlung.getString().trim()));
- } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
- return Optional.of(fragestellung.getString().trim());
- } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
- return Optional.of(empfehlung.getString().trim());
- }
- return Optional.empty();
+ if (null != fragestellung
+ && !fragestellung.getString().isBlank()
+ && null != empfehlung
+ && !empfehlung.getString().isBlank()) {
+ return Optional.of(
+ String.format(
+ "Fragestellung:%n%s%n%nEmpfehlung:%n%s",
+ fragestellung.getString().trim(), empfehlung.getString().trim()));
+ } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ return Optional.of(fragestellung.getString().trim());
+ } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ return Optional.of(empfehlung.getString().trim());
}
+ return Optional.empty();
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
index 93d30d7..8a09f5d 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
import java.util.function.Function;
diff --git a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
index 622f841..49fa149 100644
--- a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
@@ -19,12 +19,11 @@
package dev.dnpm.oshelper.services.strahlentherapie;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.services.SettingsService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.services.SettingsService;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@@ -38,56 +37,59 @@ import java.util.stream.Collectors;
*/
public class DefaultStrahlentherapieService implements StrahlentherapieService {
- private static final String ECOG_FIELD = "ECOGvorTherapie";
+ private static final String ECOG_FIELD = "ECOGvorTherapie";
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final SettingsService settingsService;
+ private final SettingsService settingsService;
- public DefaultStrahlentherapieService(final IOnkostarApi onkostarApi, final SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- }
+ public DefaultStrahlentherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ }
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- @Override
- public Optional<String> latestEcogStatus(Patient patient) {
- return ecogStatus(patient).stream()
- .max(Comparator.comparing(EcogStatusWithDate::getDate))
- .map(EcogStatusWithDate::getStatus);
- }
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ @Override
+ public Optional<String> latestEcogStatus(Patient patient) {
+ return ecogStatus(patient).stream()
+ .max(Comparator.comparing(EcogStatusWithDate::getDate))
+ .map(EcogStatusWithDate::getStatus);
+ }
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- @Override
- public List<EcogStatusWithDate> ecogStatus(Patient patient) {
- return patient.getDiseases().stream()
- .flatMap(disease -> onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
- .filter(procedure -> null != procedure.getStartDate())
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .map(procedure -> {
- try {
- return new EcogStatusWithDate(procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
- } catch (IllegalArgumentException e) {
- return null;
- }
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- }
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ @Override
+ public List<EcogStatusWithDate> ecogStatus(Patient patient) {
+ return patient.getDiseases().stream()
+ .flatMap(
+ disease ->
+ onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
+ .filter(procedure -> null != procedure.getStartDate())
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .map(
+ procedure -> {
+ try {
+ return new EcogStatusWithDate(
+ procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
+ } catch (IllegalArgumentException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
- private String getFormName() {
- return settingsService
- .getSetting("strahlentherapieform")
- .orElse("OS.Strahlentherapie");
- }
+ private String getFormName() {
+ return settingsService.getSetting("strahlentherapieform").orElse("OS.Strahlentherapie");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
index c410dfc..9b0a1f3 100644
--- a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
@@ -24,6 +24,6 @@ import dev.dnpm.oshelper.services.TherapieMitEcogService;
/**
* Service für Systemtherapieformulare
*
- * @since 0.6.0
+ * @since 0.6.0
*/
public interface StrahlentherapieService extends TherapieMitEcogService {}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
index 7c73dbe..22c7f13 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
@@ -19,12 +19,11 @@
package dev.dnpm.oshelper.services.systemtherapie;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.services.SettingsService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.services.SettingsService;
import java.util.*;
import java.util.stream.Collectors;
@@ -35,83 +34,86 @@ import java.util.stream.Collectors;
*/
public class DefaultSystemtherapieService implements SystemtherapieService {
- private static final String ECOG_FIELD = "ECOGvorTherapie";
+ private static final String ECOG_FIELD = "ECOGvorTherapie";
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final SettingsService settingsService;
+ private final SettingsService settingsService;
- public DefaultSystemtherapieService(final IOnkostarApi onkostarApi, final SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- }
+ public DefaultSystemtherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ }
- /**
- * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
- *
- * @param diseaseId Die ID der Erkrankung
- * @return Zusammenfassung der systemischen Therapien
- */
- @Override
- public List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId) {
- List<Map<String, String>> result = new ArrayList<>();
- for (Procedure prozedur : onkostarApi.getProceduresForDiseaseByForm(diseaseId, getFormName())) {
- prozedurToProzedurwerteMapper(prozedur).apply(prozedur).ifPresent(result::add);
- }
- return result;
+ /**
+ * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
+ *
+ * @param diseaseId Die ID der Erkrankung
+ * @return Zusammenfassung der systemischen Therapien
+ */
+ @Override
+ public List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId) {
+ List<Map<String, String>> result = new ArrayList<>();
+ for (Procedure prozedur : onkostarApi.getProceduresForDiseaseByForm(diseaseId, getFormName())) {
+ prozedurToProzedurwerteMapper(prozedur).apply(prozedur).ifPresent(result::add);
}
+ return result;
+ }
- /**
- * Übergibt aktuell immer den Mapper für das Formular "OS.Systemische Therapie",
- * da beide bekannte Varianten damit gemappt werden können.
- *
- * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
- * @return Der Mapper für die Prozedur
- */
- @Override
- public ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure) {
- return new OsSystemischeTherapieToProzedurwerteMapper();
- }
+ /**
+ * Übergibt aktuell immer den Mapper für das Formular "OS.Systemische Therapie", da beide bekannte
+ * Varianten damit gemappt werden können.
+ *
+ * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
+ * @return Der Mapper für die Prozedur
+ */
+ @Override
+ public ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure) {
+ return new OsSystemischeTherapieToProzedurwerteMapper();
+ }
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- @Override
- public Optional<String> latestEcogStatus(Patient patient) {
- return ecogStatus(patient).stream()
- .max(Comparator.comparing(EcogStatusWithDate::getDate))
- .map(EcogStatusWithDate::getStatus);
- }
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ @Override
+ public Optional<String> latestEcogStatus(Patient patient) {
+ return ecogStatus(patient).stream()
+ .max(Comparator.comparing(EcogStatusWithDate::getDate))
+ .map(EcogStatusWithDate::getStatus);
+ }
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- @Override
- public List<EcogStatusWithDate> ecogStatus(Patient patient) {
- return patient.getDiseases().stream()
- .flatMap(disease -> onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
- .filter(procedure -> null != procedure.getStartDate())
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .map(procedure -> {
- try {
- return new EcogStatusWithDate(procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
- } catch (IllegalArgumentException e) {
- return null;
- }
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- }
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ @Override
+ public List<EcogStatusWithDate> ecogStatus(Patient patient) {
+ return patient.getDiseases().stream()
+ .flatMap(
+ disease ->
+ onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
+ .filter(procedure -> null != procedure.getStartDate())
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .map(
+ procedure -> {
+ try {
+ return new EcogStatusWithDate(
+ procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
+ } catch (IllegalArgumentException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
- private String getFormName() {
- return settingsService
- .getSetting("systemtherapieform")
- .orElse("OS.Systemische Therapie");
- }
+ private String getFormName() {
+ return settingsService.getSetting("systemtherapieform").orElse("OS.Systemische Therapie");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
index f671381..0e7455d 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
@@ -24,11 +24,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.atc.AtcCode;
+import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
-
/**
* Implementierung zum Mappen des Formulars "OS.Systemische Therapie" auf die Prozedurwerte
*
@@ -36,74 +35,74 @@ import java.util.*;
*/
public class OsSystemischeTherapieToProzedurwerteMapper implements ProzedurToProzedurwerteMapper {
- private static final Logger logger = LoggerFactory.getLogger(OsSystemischeTherapieToProzedurwerteMapper.class);
+ private static final Logger logger =
+ LoggerFactory.getLogger(OsSystemischeTherapieToProzedurwerteMapper.class);
- @Override
- public Optional<Map<String, String>> apply(Procedure procedure) {
- try {
- return Optional.of(getProzedurwerte(procedure));
- } catch (Exception e) {
- logger.error("Fehler beim Mappen der Prozedur auf Prozedurwerte", e);
- return Optional.empty();
- }
+ @Override
+ public Optional<Map<String, String>> apply(Procedure procedure) {
+ try {
+ return Optional.of(getProzedurwerte(procedure));
+ } catch (Exception e) {
+ logger.error("Fehler beim Mappen der Prozedur auf Prozedurwerte", e);
+ return Optional.empty();
}
+ }
- private static Map<String, String> getProzedurwerte(Procedure prozedur) {
- List<String> wirkstoffListe = new ArrayList<>();
- // SubstanzenCodesListe enthält die Liste der SubstanzenCodes
- List<Map<String, String>> substanzenCodesListe = new ArrayList<>();
+ private static Map<String, String> getProzedurwerte(Procedure prozedur) {
+ List<String> wirkstoffListe = new ArrayList<>();
+ // SubstanzenCodesListe enthält die Liste der SubstanzenCodes
+ List<Map<String, String>> substanzenCodesListe = new ArrayList<>();
- // alle Werte der Prozedur auslesen
- Map<String, Item> alleWerte = prozedur.getAllValues();
- // Prozedurwerte enthält nur die interessanten Werte
- Map<String, String> prozedurwerte = new HashMap<>();
- // alle Werte durchgehen und die interessanten übernehmen
- if (alleWerte.containsKey("Beendigung")) {
- prozedurwerte.put("Beendigung", alleWerte.get("Beendigung").getValue());
- }
- if (alleWerte.containsKey("Ergebnis")) {
- prozedurwerte.put("Ergebnis", alleWerte.get("Ergebnis").getValue());
- }
- if (alleWerte.containsKey("Beginn")) {
- prozedurwerte.put("Beginn", alleWerte.get("Beginn").getString());
- }
- if (alleWerte.containsKey("Ende")) {
- prozedurwerte.put("Ende", alleWerte.get("Ende").getString());
- }
- if (alleWerte.containsKey("SubstanzenList")) {
- List<Map<String, String>> substanzList = alleWerte.get("SubstanzenList").getValue();
- for (var substanz : substanzList) {
- var substanzCodes = getSubstanzCode(substanz);
- substanzenCodesListe.add(substanzCodes);
- wirkstoffListe.add(substanzCodes.get("substance"));
- }
- }
-
- prozedurwerte.put("Wirkstoffe", String.join(", ", wirkstoffListe));
- try {
- ObjectMapper mapper = new ObjectMapper();
- prozedurwerte.put("WirkstoffCodes", mapper.writeValueAsString(substanzenCodesListe));
- } catch (JsonProcessingException e) {
- logger.error("Kann 'WirkstoffCodes' nicht in JSON-String mappen", e);
- }
+ // alle Werte der Prozedur auslesen
+ Map<String, Item> alleWerte = prozedur.getAllValues();
+ // Prozedurwerte enthält nur die interessanten Werte
+ Map<String, String> prozedurwerte = new HashMap<>();
+ // alle Werte durchgehen und die interessanten übernehmen
+ if (alleWerte.containsKey("Beendigung")) {
+ prozedurwerte.put("Beendigung", alleWerte.get("Beendigung").getValue());
+ }
+ if (alleWerte.containsKey("Ergebnis")) {
+ prozedurwerte.put("Ergebnis", alleWerte.get("Ergebnis").getValue());
+ }
+ if (alleWerte.containsKey("Beginn")) {
+ prozedurwerte.put("Beginn", alleWerte.get("Beginn").getString());
+ }
+ if (alleWerte.containsKey("Ende")) {
+ prozedurwerte.put("Ende", alleWerte.get("Ende").getString());
+ }
+ if (alleWerte.containsKey("SubstanzenList")) {
+ List<Map<String, String>> substanzList = alleWerte.get("SubstanzenList").getValue();
+ for (var substanz : substanzList) {
+ var substanzCodes = getSubstanzCode(substanz);
+ substanzenCodesListe.add(substanzCodes);
+ wirkstoffListe.add(substanzCodes.get("substance"));
+ }
+ }
- return prozedurwerte;
+ prozedurwerte.put("Wirkstoffe", String.join(", ", wirkstoffListe));
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ prozedurwerte.put("WirkstoffCodes", mapper.writeValueAsString(substanzenCodesListe));
+ } catch (JsonProcessingException e) {
+ logger.error("Kann 'WirkstoffCodes' nicht in JSON-String mappen", e);
}
- private static Map<String, String> getSubstanzCode(Map<String, String> substanz) {
- Map<String, String> substanzCode = new HashMap<>();
- if (substanz.containsKey("Substanz")) {
- if (AtcCode.isAtcCode(substanz.get("Substanz"))) {
- substanzCode.put("system", "ATC");
- } else {
- substanzCode.put("system", "other");
- }
- substanzCode.put("code", substanz.get("Substanz"));
+ return prozedurwerte;
+ }
- }
- if (substanz.containsKey("Substanz_shortDescription")) {
- substanzCode.put("substance", substanz.get("Substanz_shortDescription"));
- }
- return substanzCode;
+ private static Map<String, String> getSubstanzCode(Map<String, String> substanz) {
+ Map<String, String> substanzCode = new HashMap<>();
+ if (substanz.containsKey("Substanz")) {
+ if (AtcCode.isAtcCode(substanz.get("Substanz"))) {
+ substanzCode.put("system", "ATC");
+ } else {
+ substanzCode.put("system", "other");
+ }
+ substanzCode.put("code", substanz.get("Substanz"));
+ }
+ if (substanz.containsKey("Substanz_shortDescription")) {
+ substanzCode.put("substance", substanz.get("Substanz_shortDescription"));
}
+ return substanzCode;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
index e2af851..c8a6829 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.systemtherapie;
import de.itc.onkostar.api.Procedure;
-
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
@@ -30,4 +29,5 @@ import java.util.function.Function;
*
* @since 0.2.0
*/
-public interface ProzedurToProzedurwerteMapper extends Function<Procedure, Optional<Map<String, String>>> {}
+public interface ProzedurToProzedurwerteMapper
+ extends Function<Procedure, Optional<Map<String, String>>> {}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
index 63216a0..2be4cc4 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
@@ -19,30 +19,30 @@
package dev.dnpm.oshelper.services.systemtherapie;
-import dev.dnpm.oshelper.services.TherapieMitEcogService;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.TherapieMitEcogService;
import java.util.List;
import java.util.Map;
/**
* Service für Systemtherapieformulare
*
- * @since 0.2.0
+ * @since 0.2.0
*/
public interface SystemtherapieService extends TherapieMitEcogService {
- /**
- * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
- * @param diseaseId Die ID der Erkrankung
- * @return Die Zusammenfassung der systemischen Therapien
- */
- List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId);
-
- /**
- * Erstellt den Mapper for die Prozedur
- * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
- * @return Der erstellte ProzedurToProzedurwerteMapper
- */
- ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure);
+ /**
+ * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
+ *
+ * @param diseaseId Die ID der Erkrankung
+ * @return Die Zusammenfassung der systemischen Therapien
+ */
+ List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId);
+ /**
+ * Erstellt den Mapper for die Prozedur
+ *
+ * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
+ * @return Der erstellte ProzedurToProzedurwerteMapper
+ */
+ ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
index 4542972..cd04e1f 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
@@ -19,43 +19,44 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.List;
import java.util.stream.Collectors;
public abstract class AbstractTherapieplanService implements TherapieplanService {
- protected final IOnkostarApi onkostarApi;
+ protected final IOnkostarApi onkostarApi;
- protected final FormService formService;
+ protected final FormService formService;
- protected AbstractTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- this.onkostarApi = onkostarApi;
- this.formService = formService;
- }
-
- @Override
- public List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure) {
- if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
- return List.of();
- }
+ protected AbstractTherapieplanService(
+ final IOnkostarApi onkostarApi, final FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.formService = formService;
+ }
- return procedure.getDiseaseIds().stream()
- .flatMap(diseaseId -> onkostarApi.getProceduresForDiseaseByForm(diseaseId, "DNPM FollowUp").stream())
- .filter(p -> p.getValue("LinkTherapieempfehlung").getInt() == procedure.getId())
- .collect(Collectors.toList());
+ @Override
+ public List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure) {
+ if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
+ return List.of();
}
- @Override
- public List<Procedure> findReferencedFollowUpsForSubform(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
- return List.of();
- }
- return findReferencedFollowUpsForSubform(procedure);
+ return procedure.getDiseaseIds().stream()
+ .flatMap(
+ diseaseId ->
+ onkostarApi.getProceduresForDiseaseByForm(diseaseId, "DNPM FollowUp").stream())
+ .filter(p -> p.getValue("LinkTherapieempfehlung").getInt() == procedure.getId())
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<Procedure> findReferencedFollowUpsForSubform(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
+ return List.of();
}
-
+ return findReferencedFollowUpsForSubform(procedure);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
index df1902e..4f5d716 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
@@ -19,197 +19,192 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
+import static dev.dnpm.oshelper.services.FormService.hasValue;
+import static dev.dnpm.oshelper.services.FormService.isYes;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.Date;
import java.util.List;
import java.util.Objects;
-
-import static dev.dnpm.oshelper.services.FormService.hasValue;
-import static dev.dnpm.oshelper.services.FormService.isYes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DefaultTherapieplanService extends AbstractTherapieplanService {
- public static final String FORMFIELD_REFERSTEMTB = "referstemtb";
- public static final String FORMFIELD_HUMANGENBERATUNG = "humangenberatung";
- public static final String FORMFIELD_REEVALUATION = "reevaluation";
- public static final String FORMFIELD_DATUM = "datum";
- public static final String FORMFIELD_REFTKHUMANGENBER = "reftkhumangenber";
- public static final String FORMFIELD_DATUMTKHUMANGENBER = "datumtkhumangenber";
- public static final String FORMFIELD_REFTKREEVALUATION = "reftkreevaluation";
- public static final String FORMFIELD_DATUMTKREEVALUATION = "datumtkreevaluation";
- public static final String FORMFIELD_MTB = "mtb";
- public static final String FORMFIELD_UFEEDATUM = "ufeedatum";
- public static final String FORMFIELD_REFTUMORKONFERENZ = "reftumorkonferenz";
- public static final String FORMFIELD_UFRBDATUM = "ufrbdatum";
-
- public static final String DATAFIELD_REF_TK_HUMANGENBER = "ref_tk_humangenber";
- public static final String DATAFIELD_DATUM_TK_HUMANGENBER = "datum_tk_humangenber";
- public static final String DATAFIELD_DATUM = "datum";
-
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- public DefaultTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- super(onkostarApi, formService);
+ public static final String FORMFIELD_REFERSTEMTB = "referstemtb";
+ public static final String FORMFIELD_HUMANGENBERATUNG = "humangenberatung";
+ public static final String FORMFIELD_REEVALUATION = "reevaluation";
+ public static final String FORMFIELD_DATUM = "datum";
+ public static final String FORMFIELD_REFTKHUMANGENBER = "reftkhumangenber";
+ public static final String FORMFIELD_DATUMTKHUMANGENBER = "datumtkhumangenber";
+ public static final String FORMFIELD_REFTKREEVALUATION = "reftkreevaluation";
+ public static final String FORMFIELD_DATUMTKREEVALUATION = "datumtkreevaluation";
+ public static final String FORMFIELD_MTB = "mtb";
+ public static final String FORMFIELD_UFEEDATUM = "ufeedatum";
+ public static final String FORMFIELD_REFTUMORKONFERENZ = "reftumorkonferenz";
+ public static final String FORMFIELD_UFRBDATUM = "ufrbdatum";
+
+ public static final String DATAFIELD_REF_TK_HUMANGENBER = "ref_tk_humangenber";
+ public static final String DATAFIELD_DATUM_TK_HUMANGENBER = "datum_tk_humangenber";
+ public static final String DATAFIELD_DATUM = "datum";
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ public DefaultTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
+ super(onkostarApi, formService);
+ }
+
+ /**
+ * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen "Humangenetische
+ * Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ */
+ @Override
+ public void updateRequiredMtbEntries(Procedure procedure) {
+ this.updateMtbInSections(procedure);
+ this.updateMtbInSubforms(procedure);
+ }
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ if (!hasValue(procedure, FORMFIELD_REFERSTEMTB)) {
+ return List.of();
+ }
+
+ var mtbProcedure =
+ this.onkostarApi.getProcedure(procedure.getValue(FORMFIELD_REFERSTEMTB).getInt());
+ if (null == mtbProcedure) {
+ return List.of();
}
+ return List.of(mtbProcedure);
+ }
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
+ }
+ return findReferencedMtbs(procedure);
+ }
+
+ private void updateMtbInSections(Procedure procedure) {
+ if (!isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && !isYes(procedure, FORMFIELD_REEVALUATION)) {
+ return;
+ }
+
+ var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
+ var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
+ var noUpdateRequired = true;
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
- * "Humangenetische Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- @Override
- public void updateRequiredMtbEntries(Procedure procedure) {
- this.updateMtbInSections(procedure);
- this.updateMtbInSubforms(procedure);
+ if (isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && (!hasValue(procedure, FORMFIELD_REFTKHUMANGENBER)
+ || mtbReference != procedure.getValue(FORMFIELD_REFTKHUMANGENBER).getInt())) {
+ procedure.setValue(
+ FORMFIELD_REFTKHUMANGENBER, new Item(DATAFIELD_REF_TK_HUMANGENBER, mtbReference));
+ noUpdateRequired = false;
}
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedure Die Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- @Override
- public List<Procedure> findReferencedMtbs(Procedure procedure) {
- if (!hasValue(procedure, FORMFIELD_REFERSTEMTB)) {
- return List.of();
- }
-
- var mtbProcedure = this.onkostarApi.getProcedure(procedure.getValue(FORMFIELD_REFERSTEMTB).getInt());
- if (null == mtbProcedure) {
- return List.of();
- }
- return List.of(mtbProcedure);
+ if (isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && (!hasValue(procedure, FORMFIELD_DATUMTKHUMANGENBER)
+ || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKHUMANGENBER).getDate()))) {
+ procedure.setValue(
+ FORMFIELD_DATUMTKHUMANGENBER, new Item(DATAFIELD_DATUM_TK_HUMANGENBER, mtbDate));
+ noUpdateRequired = false;
}
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedureId ID der Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- @Override
- public List<Procedure> findReferencedMtbs(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure) {
- return List.of();
- }
- return findReferencedMtbs(procedure);
+ if (isYes(procedure, FORMFIELD_REEVALUATION)
+ && (!hasValue(procedure, FORMFIELD_REFTKREEVALUATION)
+ || mtbReference != procedure.getValue(FORMFIELD_REFTKREEVALUATION).getInt())) {
+ procedure.setValue(
+ FORMFIELD_REFTKREEVALUATION, new Item("ref_tk_reevaluation", mtbReference));
+ noUpdateRequired = false;
}
- private void updateMtbInSections(Procedure procedure) {
- if (!isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && !isYes(procedure, FORMFIELD_REEVALUATION)) {
- return;
- }
-
- var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
- var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
- var noUpdateRequired = true;
-
- if (
- isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && (
- !hasValue(procedure, FORMFIELD_REFTKHUMANGENBER)
- || mtbReference != procedure.getValue(FORMFIELD_REFTKHUMANGENBER).getInt()
- )
- ) {
- procedure.setValue(FORMFIELD_REFTKHUMANGENBER, new Item(DATAFIELD_REF_TK_HUMANGENBER, mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && (
- !hasValue(procedure, FORMFIELD_DATUMTKHUMANGENBER)
- || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKHUMANGENBER).getDate())
- )
- ) {
- procedure.setValue(FORMFIELD_DATUMTKHUMANGENBER, new Item(DATAFIELD_DATUM_TK_HUMANGENBER, mtbDate));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_REEVALUATION) && (
- !hasValue(procedure, FORMFIELD_REFTKREEVALUATION)
- || mtbReference != procedure.getValue(FORMFIELD_REFTKREEVALUATION).getInt()
- )
- ) {
- procedure.setValue(FORMFIELD_REFTKREEVALUATION, new Item("ref_tk_reevaluation", mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_REEVALUATION) && (
- !hasValue(procedure, FORMFIELD_DATUMTKREEVALUATION)
- || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKREEVALUATION).getDate())
- )
- ) {
- procedure.setValue(FORMFIELD_DATUMTKREEVALUATION, new Item("datum_tk_reevaluation", mtbDate));
- noUpdateRequired = false;
- }
-
- if (noUpdateRequired) {
- return;
- }
-
- try {
- onkostarApi.saveProcedure(procedure, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM Therapieplan' konnte nicht aktualisiert werden", e);
- }
+ if (isYes(procedure, FORMFIELD_REEVALUATION)
+ && (!hasValue(procedure, FORMFIELD_DATUMTKREEVALUATION)
+ || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKREEVALUATION).getDate()))) {
+ procedure.setValue(FORMFIELD_DATUMTKREEVALUATION, new Item("datum_tk_reevaluation", mtbDate));
+ noUpdateRequired = false;
}
- private void updateMtbInSubforms(Procedure procedure) {
- if (
- !hasValue(procedure, FORMFIELD_REFERSTEMTB) || !hasValue(procedure, FORMFIELD_DATUM)
- ) {
- return;
- }
-
- var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
- var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
-
- formService.getSubFormProcedureIds(procedure.getId()).stream()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .forEach(subform -> {
- if (isUsableEinzelempfehlung(subform, mtbReference, mtbDate)) {
- subform.setValue(FORMFIELD_MTB, new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue(FORMFIELD_UFEEDATUM, new Item(DATAFIELD_DATUM, mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Einzelempfehlung' konnte nicht aktualisiert werden", e);
- }
- }
-
-
- if (isUsableRebiopsie(subform, mtbReference, mtbDate)) {
- subform.setValue(FORMFIELD_REFTUMORKONFERENZ, new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue(FORMFIELD_UFRBDATUM, new Item(DATAFIELD_DATUM, mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Rebiopsie' konnte nicht aktualisiert werden", e);
- }
- }
-
- });
+ if (noUpdateRequired) {
+ return;
}
- private static boolean isUsableRebiopsie(Procedure subform, int mtbReference, Date mtbDate) {
- return subform.getFormName().equals("DNPM UF Rebiopsie") && mtbReference != subform.getValue(FORMFIELD_REFTUMORKONFERENZ).getInt() && !mtbDate.equals(subform.getValue(FORMFIELD_UFRBDATUM).getDate());
+ try {
+ onkostarApi.saveProcedure(procedure, false);
+ } catch (Exception e) {
+ logger.error("Formular 'DNPM Therapieplan' konnte nicht aktualisiert werden", e);
}
+ }
- private static boolean isUsableEinzelempfehlung(Procedure subform, int mtbReference, Date mtbDate) {
- return subform.getFormName().equals("DNPM UF Einzelempfehlung") && mtbReference != subform.getValue(FORMFIELD_MTB).getInt() && !mtbDate.equals(subform.getValue(FORMFIELD_UFEEDATUM).getDate());
+ private void updateMtbInSubforms(Procedure procedure) {
+ if (!hasValue(procedure, FORMFIELD_REFERSTEMTB) || !hasValue(procedure, FORMFIELD_DATUM)) {
+ return;
}
+ var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
+ var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
+
+ formService.getSubFormProcedureIds(procedure.getId()).stream()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .forEach(
+ subform -> {
+ if (isUsableEinzelempfehlung(subform, mtbReference, mtbDate)) {
+ subform.setValue(FORMFIELD_MTB, new Item("ref_tumorkonferenz", mtbReference));
+ subform.setValue(FORMFIELD_UFEEDATUM, new Item(DATAFIELD_DATUM, mtbDate));
+
+ try {
+ onkostarApi.saveProcedure(subform, false);
+ } catch (Exception e) {
+ logger.error(
+ "Formular 'DNPM UF Einzelempfehlung' konnte nicht aktualisiert werden", e);
+ }
+ }
+
+ if (isUsableRebiopsie(subform, mtbReference, mtbDate)) {
+ subform.setValue(
+ FORMFIELD_REFTUMORKONFERENZ, new Item("ref_tumorkonferenz", mtbReference));
+ subform.setValue(FORMFIELD_UFRBDATUM, new Item(DATAFIELD_DATUM, mtbDate));
+
+ try {
+ onkostarApi.saveProcedure(subform, false);
+ } catch (Exception e) {
+ logger.error("Formular 'DNPM UF Rebiopsie' konnte nicht aktualisiert werden", e);
+ }
+ }
+ });
+ }
+
+ private static boolean isUsableRebiopsie(Procedure subform, int mtbReference, Date mtbDate) {
+ return subform.getFormName().equals("DNPM UF Rebiopsie")
+ && mtbReference != subform.getValue(FORMFIELD_REFTUMORKONFERENZ).getInt()
+ && !mtbDate.equals(subform.getValue(FORMFIELD_UFRBDATUM).getDate());
+ }
+
+ private static boolean isUsableEinzelempfehlung(
+ Procedure subform, int mtbReference, Date mtbDate) {
+ return subform.getFormName().equals("DNPM UF Einzelempfehlung")
+ && mtbReference != subform.getValue(FORMFIELD_MTB).getInt()
+ && !mtbDate.equals(subform.getValue(FORMFIELD_UFEEDATUM).getDate());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
index d6cf537..ff7408e 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
@@ -19,73 +19,74 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
+import static dev.dnpm.oshelper.services.FormService.hasValue;
+import static dev.dnpm.oshelper.services.FormService.isYes;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
-import static dev.dnpm.oshelper.services.FormService.hasValue;
-import static dev.dnpm.oshelper.services.FormService.isYes;
-
@Deprecated(forRemoval = true, since = "2.0.0")
public class MultipleMtbTherapieplanService extends AbstractTherapieplanService {
- public MultipleMtbTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- super(onkostarApi, formService);
- }
+ public MultipleMtbTherapieplanService(
+ final IOnkostarApi onkostarApi, final FormService formService) {
+ super(onkostarApi, formService);
+ }
- @Override
- public void updateRequiredMtbEntries(Procedure procedure) {
- // No action required
- }
+ @Override
+ public void updateRequiredMtbEntries(Procedure procedure) {
+ // No action required
+ }
- @Override
- public List<Procedure> findReferencedMtbs(Procedure procedure) {
- var procedureIds = new ArrayList<Integer>();
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ var procedureIds = new ArrayList<Integer>();
- var mtbReference = procedure.getValue("referstemtb").getInt();
- procedureIds.add(mtbReference);
+ var mtbReference = procedure.getValue("referstemtb").getInt();
+ procedureIds.add(mtbReference);
- if (isYes(procedure, "humangenberatung") && hasValue(procedure, "reftkhumangenber")) {
- procedureIds.add(procedure.getValue("reftkhumangenber").getInt());
- }
+ if (isYes(procedure, "humangenberatung") && hasValue(procedure, "reftkhumangenber")) {
+ procedureIds.add(procedure.getValue("reftkhumangenber").getInt());
+ }
- if (isYes(procedure, "reevaluation") && hasValue(procedure, "reftkreevaluation")) {
- procedureIds.add(procedure.getValue("reftkreevaluation").getInt());
- }
+ if (isYes(procedure, "reevaluation") && hasValue(procedure, "reftkreevaluation")) {
+ procedureIds.add(procedure.getValue("reftkreevaluation").getInt());
+ }
- formService.getSubFormProcedureIds(procedure.getId()).stream()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .forEach(subform -> {
- if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
- procedureIds.add(subform.getValue("mtb").getInt());
- }
+ formService.getSubFormProcedureIds(procedure.getId()).stream()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .forEach(
+ subform -> {
+ if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
+ procedureIds.add(subform.getValue("mtb").getInt());
+ }
- if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
- procedureIds.add(subform.getValue("reftumorkonferenz").getInt());
- }
- });
+ if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
+ procedureIds.add(subform.getValue("reftumorkonferenz").getInt());
+ }
+ });
- return procedureIds.stream()
- .distinct()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .collect(Collectors.toList());
- }
+ return procedureIds.stream()
+ .distinct()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .collect(Collectors.toList());
+ }
- @Override
- public List<Procedure> findReferencedMtbs(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure) {
- return List.of();
- }
- return findReferencedMtbs(procedure);
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
}
+ return findReferencedMtbs(procedure);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
index b22a75d..bfdbf76 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
@@ -20,49 +20,47 @@
package dev.dnpm.oshelper.services.therapieplan;
import de.itc.onkostar.api.Procedure;
-
import java.util.List;
public interface TherapieplanService {
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
- * "Humangenetische Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- void updateRequiredMtbEntries(Procedure procedure);
-
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedure Die Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- List<Procedure> findReferencedMtbs(Procedure procedure);
+ /**
+ * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen "Humangenetische
+ * Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ */
+ void updateRequiredMtbEntries(Procedure procedure);
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedureId ID der Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- List<Procedure> findReferencedMtbs(int procedureId);
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(Procedure procedure);
- /**
- * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
- *
- * @param procedure Die DNPM UF Einzelempfehlung Prozedur
- * @return Liste mit verlinkten FollowUps
- */
- List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure);
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(int procedureId);
- /**
- * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
- *
- * @param procedureId ID der Prozedur
- * @return Liste mit verlinkten FollowUps
- */
- List<Procedure> findReferencedFollowUpsForSubform(int procedureId);
+ /**
+ * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
+ *
+ * @param procedure Die DNPM UF Einzelempfehlung Prozedur
+ * @return Liste mit verlinkten FollowUps
+ */
+ List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure);
+ /**
+ * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
+ *
+ * @param procedureId ID der Prozedur
+ * @return Liste mit verlinkten FollowUps
+ */
+ List<Procedure> findReferencedFollowUpsForSubform(int procedureId);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
index 0b9222c..889f9c8 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
@@ -19,28 +19,26 @@
package dev.dnpm.oshelper.services.therapieplan;
+import de.itc.onkostar.api.IOnkostarApi;
import dev.dnpm.oshelper.services.FormService;
import dev.dnpm.oshelper.services.SettingsService;
-import de.itc.onkostar.api.IOnkostarApi;
public class TherapieplanServiceFactory {
- private final IOnkostarApi onkostarApi;
-
- private final FormService formService;
+ private final IOnkostarApi onkostarApi;
- @SuppressWarnings("unused")
- public TherapieplanServiceFactory(
- final IOnkostarApi onkostarApi,
- final SettingsService settingsService,
- final FormService formService
- ) {
- this.onkostarApi = onkostarApi;
- this.formService = formService;
- }
+ private final FormService formService;
- public TherapieplanService currentUsableInstance() {
- return new DefaultTherapieplanService(onkostarApi, formService);
- }
+ @SuppressWarnings("unused")
+ public TherapieplanServiceFactory(
+ final IOnkostarApi onkostarApi,
+ final SettingsService settingsService,
+ final FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.formService = formService;
+ }
+ public TherapieplanService currentUsableInstance() {
+ return new DefaultTherapieplanService(onkostarApi, formService);
+ }
}
diff --git a/src/test/java/de/itc/utils/DateFormats.java b/src/test/java/de/itc/utils/DateFormats.java
index 1723f4a..8ee58e0 100644
--- a/src/test/java/de/itc/utils/DateFormats.java
+++ b/src/test/java/de/itc/utils/DateFormats.java
@@ -22,14 +22,13 @@ package de.itc.utils;
import java.util.Date;
/**
- * Diese Klasse dient nur Testzwecken, da die Klasse und enthaltene(n) Methode(n) von der Onkostar-API
- * benötigt und verwendet werden, nicht jedoch in der Onkostar-API-JAR enthalten sind.
+ * Diese Klasse dient nur Testzwecken, da die Klasse und enthaltene(n) Methode(n) von der
+ * Onkostar-API benötigt und verwendet werden, nicht jedoch in der Onkostar-API-JAR enthalten sind.
* Das tatsächliche Verhalten innerhalb von Onkostar wird abweichen.
*/
public class DateFormats {
- public static Date parseDate(String value) {
- return null;
- }
-
+ public static Date parseDate(String value) {
+ return null;
+ }
}
diff --git a/src/test/java/de/itc/utils/MapUtilities.java b/src/test/java/de/itc/utils/MapUtilities.java
index 9afb2a8..5e5594a 100644
--- a/src/test/java/de/itc/utils/MapUtilities.java
+++ b/src/test/java/de/itc/utils/MapUtilities.java
@@ -20,22 +20,20 @@
package de.itc.utils;
import com.fasterxml.jackson.databind.ObjectMapper;
-
import java.util.LinkedHashMap;
/**
- * Diese Klasse dient nur Testzwecken, da die Klasse und enthaltene(n) Methode(n) von der Onkostar-API
- * benötigt und verwendet werden, nicht jedoch in der Onkostar-API-JAR enthalten sind.
+ * Diese Klasse dient nur Testzwecken, da die Klasse und enthaltene(n) Methode(n) von der
+ * Onkostar-API benötigt und verwendet werden, nicht jedoch in der Onkostar-API-JAR enthalten sind.
* Das tatsächliche Verhalten innerhalb von Onkostar wird abweichen.
*/
public class MapUtilities {
- public static ObjectMapper getObjectMapper() {
- return null;
- }
-
- public static LinkedHashMap stringToMap(String value) {
- return null;
- }
+ public static ObjectMapper getObjectMapper() {
+ return null;
+ }
+ public static LinkedHashMap stringToMap(String value) {
+ return null;
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/ConsentManagerTest.java b/src/test/java/dev/dnpm/oshelper/ConsentManagerTest.java
index b0dc6a9..80e7298 100644
--- a/src/test/java/dev/dnpm/oshelper/ConsentManagerTest.java
+++ b/src/test/java/dev/dnpm/oshelper/ConsentManagerTest.java
@@ -19,64 +19,62 @@
package dev.dnpm.oshelper;
+import static org.mockito.Mockito.*;
+
+import de.itc.onkostar.api.IOnkostarApi;
+import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.analyzer.ConsentManager;
import dev.dnpm.oshelper.services.consent.ConsentManagerServiceFactory;
import dev.dnpm.oshelper.services.consent.MrConsentManagerService;
-import de.itc.onkostar.api.IOnkostarApi;
-import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class ConsentManagerTest {
- private IOnkostarApi onkostarApi;
-
- private ConsentManagerServiceFactory consentManagerServiceFactory;
+ private IOnkostarApi onkostarApi;
- private ConsentManager consentManager;
+ private ConsentManagerServiceFactory consentManagerServiceFactory;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock ConsentManagerServiceFactory consentManagerServiceFactory
- ) {
- this.onkostarApi = onkostarApi;
- this.consentManagerServiceFactory = consentManagerServiceFactory;
- this.consentManager = new ConsentManager(onkostarApi, consentManagerServiceFactory);
- }
+ private ConsentManager consentManager;
- @Test
- void shouldRunServiceMethodsOnAnalyzeCalled() {
- var consentManagerServiceMock = mock(MrConsentManagerService.class);
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock ConsentManagerServiceFactory consentManagerServiceFactory) {
+ this.onkostarApi = onkostarApi;
+ this.consentManagerServiceFactory = consentManagerServiceFactory;
+ this.consentManager = new ConsentManager(onkostarApi, consentManagerServiceFactory);
+ }
- when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(true);
+ @Test
+ void shouldRunServiceMethodsOnAnalyzeCalled() {
+ var consentManagerServiceMock = mock(MrConsentManagerService.class);
- when(this.consentManagerServiceFactory.currentUsableInstance())
- .thenReturn(consentManagerServiceMock);
+ when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(true);
- this.consentManager.analyze(new Procedure(onkostarApi), null);
+ when(this.consentManagerServiceFactory.currentUsableInstance())
+ .thenReturn(consentManagerServiceMock);
- verify(consentManagerServiceMock, times(1)).applyConsent(any(Procedure.class));
- }
+ this.consentManager.analyze(new Procedure(onkostarApi), null);
- @Test
- void shouldNotRunServiceMethodsIfProcedureCannotBeAppliesForForm() {
- var consentManagerServiceMock = mock(MrConsentManagerService.class);
+ verify(consentManagerServiceMock, times(1)).applyConsent(any(Procedure.class));
+ }
- when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(false);
+ @Test
+ void shouldNotRunServiceMethodsIfProcedureCannotBeAppliesForForm() {
+ var consentManagerServiceMock = mock(MrConsentManagerService.class);
- when(this.consentManagerServiceFactory.currentUsableInstance())
- .thenReturn(consentManagerServiceMock);
+ when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(false);
- this.consentManager.analyze(new Procedure(onkostarApi), null);
+ when(this.consentManagerServiceFactory.currentUsableInstance())
+ .thenReturn(consentManagerServiceMock);
- verify(consentManagerServiceMock, times(0)).applyConsent(any(Procedure.class));
- }
+ this.consentManager.analyze(new Procedure(onkostarApi), null);
+ verify(consentManagerServiceMock, times(0)).applyConsent(any(Procedure.class));
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java b/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java
index 839db4c..87f1771 100644
--- a/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java
+++ b/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java
@@ -19,15 +19,23 @@
package dev.dnpm.oshelper;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
+
+import de.itc.onkostar.api.IOnkostarApi;
+import de.itc.onkostar.api.Item;
+import de.itc.onkostar.api.Patient;
+import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.analyzer.DNPMHelper;
import dev.dnpm.oshelper.security.DelegatingDataBasedPermissionEvaluator;
import dev.dnpm.oshelper.security.IllegalSecuredObjectAccessException;
import dev.dnpm.oshelper.security.PermissionType;
import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
-import de.itc.onkostar.api.IOnkostarApi;
-import de.itc.onkostar.api.Item;
-import de.itc.onkostar.api.Patient;
-import de.itc.onkostar.api.Procedure;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -39,154 +47,149 @@ 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.List;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class DNPMHelperTest {
- private IOnkostarApi onkostarApi;
+ private IOnkostarApi onkostarApi;
- private SystemtherapieService systemtherapieService;
+ private SystemtherapieService systemtherapieService;
- private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
+ private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
- private DNPMHelper dnpmHelper;
+ private DNPMHelper dnpmHelper;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock SystemtherapieService systemtherapieService,
- @Mock DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.systemtherapieService = systemtherapieService;
- this.delegatingDataBasedPermissionEvaluator = delegatingDataBasedPermissionEvaluator;
- this.dnpmHelper = new DNPMHelper(onkostarApi, systemtherapieService, delegatingDataBasedPermissionEvaluator);
- }
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock SystemtherapieService systemtherapieService,
+ @Mock DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.systemtherapieService = systemtherapieService;
+ this.delegatingDataBasedPermissionEvaluator = delegatingDataBasedPermissionEvaluator;
+ this.dnpmHelper =
+ new DNPMHelper(onkostarApi, systemtherapieService, delegatingDataBasedPermissionEvaluator);
+ }
+
+ @Test
+ void testShouldRequestSystemischeTherapienFromDiagnose() {
+ dnpmHelper.getSystemischeTherapienFromDiagnose(Map.of("DiagnoseId", 1234));
+
+ var captor = ArgumentCaptor.forClass(Integer.class);
+ verify(systemtherapieService, times(1)).getSystemischeTherapienFromDiagnose(captor.capture());
+ assertThat(captor.getValue()).isEqualTo(1234);
+ }
+
+ @Test
+ void testShouldReturnNullIfNoDiagnoseIdCallingGetSystemischeTherapienFromDiagnose() {
+ var actual = dnpmHelper.getSystemischeTherapienFromDiagnose(new HashMap<>());
+
+ assertThat(actual).isNull();
+ }
+
+ @Test
+ void testShouldReturnNullIfNoProcedureIdCallingGetEmpfehlung() {
+ var actual = dnpmHelper.getEmpfehlung(new HashMap<>());
+
+ assertThat(actual).isNull();
+ }
+
+ @Nested
+ class UpdateEmpfehlungPrioTests {
@Test
- void testShouldRequestSystemischeTherapienFromDiagnose() {
- dnpmHelper.getSystemischeTherapienFromDiagnose(Map.of("DiagnoseId", 1234));
+ void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() {
+ var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>());
- var captor = ArgumentCaptor.forClass(Integer.class);
- verify(systemtherapieService, times(1)).getSystemischeTherapienFromDiagnose(captor.capture());
- assertThat(captor.getValue()).isEqualTo(1234);
+ assertThat(actual).isEqualTo(false);
}
@Test
- void testShouldReturnNullIfNoDiagnoseIdCallingGetSystemischeTherapienFromDiagnose() {
- var actual = dnpmHelper.getSystemischeTherapienFromDiagnose(new HashMap<>());
+ void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() {
+ var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01"));
- assertThat(actual).isNull();
+ assertThat(actual).isEqualTo(false);
}
@Test
- void testShouldReturnNullIfNoProcedureIdCallingGetEmpfehlung() {
- var actual = dnpmHelper.getEmpfehlung(new HashMap<>());
+ void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() {
+ var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234));
- assertThat(actual).isNull();
+ assertThat(actual).isEqualTo(false);
}
- @Nested
- class UpdateEmpfehlungPrioTests {
-
- @Test
- void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() {
- var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>());
+ @Test
+ void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() {
+ var sessionFactory = mock(SessionFactory.class);
+ var session = mock(Session.class);
+ var query = mock(SQLQuery.class);
- assertThat(actual).isEqualTo(false);
- }
+ when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
+ when(sessionFactory.getCurrentSession()).thenReturn(session);
+ when(session.createSQLQuery(anyString())).thenReturn(query);
- @Test
- void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() {
- var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01"));
+ var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01"));
- assertThat(actual).isEqualTo(false);
- }
+ assertThat(actual).isEqualTo(true);
+ }
- @Test
- void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() {
- var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234));
+ @Test
+ void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() {
+ var sessionFactory = mock(SessionFactory.class);
+ var session = mock(Session.class);
+ var query = mock(SQLQuery.class);
- assertThat(actual).isEqualTo(false);
- }
+ when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
+ when(sessionFactory.getCurrentSession()).thenReturn(session);
+ when(session.createSQLQuery(anyString())).thenReturn(query);
- @Test
- void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() {
- var sessionFactory = mock(SessionFactory.class);
- var session = mock(Session.class);
- var query = mock(SQLQuery.class);
+ dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01"));
- when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
- when(sessionFactory.getCurrentSession()).thenReturn(session);
- when(session.createSQLQuery(anyString())).thenReturn(query);
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue())
+ .isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' ");
+ }
+ }
- var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01"));
+ @Nested
+ class GetProzedurenFromDiagnoseTests {
+ @Test
+ void testShouldReturnEmptyStringOnParamCheckIfNoDataFormParamGiven() {
+ var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("DiagnoseId", 1, "PatientId", 2));
+ assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
- assertThat(actual).isEqualTo(true);
- }
+ verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
+ }
- @Test
- void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() {
- var sessionFactory = mock(SessionFactory.class);
- var session = mock(Session.class);
- var query = mock(SQLQuery.class);
+ @Test
+ void testShouldReturnEmptyStringOnParamCheckIfNoDiagnoseIdParamGiven() {
+ var actual =
+ dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "PatientId", 2));
+ assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
- when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
- when(sessionFactory.getCurrentSession()).thenReturn(session);
- when(session.createSQLQuery(anyString())).thenReturn(query);
+ verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
+ }
- dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01"));
+ @Test
+ void testShouldReturnEmptyStringOnParamCheckIfNoPatientIdParamGiven() {
+ var actual =
+ dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1));
+ assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' ");
- }
+ verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
+ }
+ @Test
+ void testShouldRequestProceduresIfRequiredParamsGiven() {
+ dnpmHelper.getProzedurenFromDiagnose(
+ Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
+ verify(onkostarApi, times(1)).getProceduresByPatientId(anyInt());
}
- @Nested
- class GetProzedurenFromDiagnoseTests {
- @Test
- void testShouldReturnEmptyStringOnParamCheckIfNoDataFormParamGiven() {
- var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("DiagnoseId", 1, "PatientId", 2));
- assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
-
- verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
- }
-
- @Test
- void testShouldReturnEmptyStringOnParamCheckIfNoDiagnoseIdParamGiven() {
- var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "PatientId", 2));
- assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
-
- verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
- }
-
- @Test
- void testShouldReturnEmptyStringOnParamCheckIfNoPatientIdParamGiven() {
- var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1));
- assertThat(actual).isExactlyInstanceOf(String.class).isEmpty();
-
- verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
- }
-
- @Test
- void testShouldRequestProceduresIfRequiredParamsGiven() {
- dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
- verify(onkostarApi, times(1)).getProceduresByPatientId(anyInt());
- }
-
- @Test
- void testShouldNotReturnProceduresNotRelatedToDisease() {
- doAnswer(invocationOnMock -> {
+ @Test
+ void testShouldNotReturnProceduresNotRelatedToDisease() {
+ doAnswer(
+ invocationOnMock -> {
var procedure = new Procedure(onkostarApi);
procedure.setFormName("OS.Example1");
procedure.setId(11);
@@ -194,15 +197,20 @@ class DNPMHelperTest {
procedure.setValue("formfield", new Item("formfield", "Wert11"));
return List.of(procedure);
- }).when(onkostarApi).getProceduresByPatientId(anyInt());
-
- var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
- assertThat(actual).isEqualTo("[]");
- }
+ })
+ .when(onkostarApi)
+ .getProceduresByPatientId(anyInt());
+
+ var actual =
+ dnpmHelper.getProzedurenFromDiagnose(
+ Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
+ assertThat(actual).isEqualTo("[]");
+ }
- @Test
- void testShouldReturnProcedures() {
- doAnswer(invocationOnMock -> {
+ @Test
+ void testShouldReturnProcedures() {
+ doAnswer(
+ invocationOnMock -> {
var procedure1 = new Procedure(onkostarApi);
procedure1.setFormName("OS.Example1");
procedure1.setId(11);
@@ -225,90 +233,102 @@ class DNPMHelperTest {
procedure3.setValue("formfield", new Item("formfield", "Wert12"));
return List.of(procedure1, procedure2, procedure3);
- }).when(onkostarApi).getProceduresByPatientId(anyInt());
-
- var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
- assertThat(actual).contains("OS.Example1", "OS.Example2", "Wert11", "Wert21", "Wert12");
- }
+ })
+ .when(onkostarApi)
+ .getProceduresByPatientId(anyInt());
+
+ var actual =
+ dnpmHelper.getProzedurenFromDiagnose(
+ Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2));
+ assertThat(actual).contains("OS.Example1", "OS.Example2", "Wert11", "Wert21", "Wert12");
}
+ }
- @Nested
- class GetVerweiseTests {
+ @Nested
+ class GetVerweiseTests {
- @Test
- void testShouldReturnEmptyArrayIfNoProcedureIdParamGiven() {
- var actual = dnpmHelper.getVerweise(Map.of("PatientId", 2));
- assertThat(actual).isNull();
+ @Test
+ void testShouldReturnEmptyArrayIfNoProcedureIdParamGiven() {
+ var actual = dnpmHelper.getVerweise(Map.of("PatientId", 2));
+ assertThat(actual).isNull();
- verify(onkostarApi, times(0)).getSessionFactory();
- }
+ verify(onkostarApi, times(0)).getSessionFactory();
+ }
- @Test
- void testShouldReturnEmptyArrayIfNoPatientIdParamGiven() {
- var actual = dnpmHelper.getVerweise(Map.of("ProcedureId", 1));
- assertThat(actual).isNull();
+ @Test
+ void testShouldReturnEmptyArrayIfNoPatientIdParamGiven() {
+ var actual = dnpmHelper.getVerweise(Map.of("ProcedureId", 1));
+ assertThat(actual).isNull();
- verify(onkostarApi, times(0)).getSessionFactory();
- }
+ verify(onkostarApi, times(0)).getSessionFactory();
+ }
- @Test
- void testShouldRequestSessionFactoryIfRequiredParamsGiven() {
- dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2));
- verify(onkostarApi, times(1)).getSessionFactory();
- }
+ @Test
+ void testShouldRequestSessionFactoryIfRequiredParamsGiven() {
+ dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2));
+ verify(onkostarApi, times(1)).getSessionFactory();
+ }
- @Test
- void testShouldCreateSqlQueryWithPatientId() {
- var sessionFactory = mock(SessionFactory.class);
- var session = mock(Session.class);
- var query = mock(SQLQuery.class);
+ @Test
+ void testShouldCreateSqlQueryWithPatientId() {
+ var sessionFactory = mock(SessionFactory.class);
+ var session = mock(Session.class);
+ var query = mock(SQLQuery.class);
- when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
- when(sessionFactory.getCurrentSession()).thenReturn(session);
- when(session.createSQLQuery(anyString())).thenReturn(query);
+ when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
+ when(sessionFactory.getCurrentSession()).thenReturn(session);
+ when(session.createSQLQuery(anyString())).thenReturn(query);
- dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2));
+ dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2));
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).contains("WHERE patient_id = 2 AND geloescht = 0");
- }
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).contains("WHERE patient_id = 2 AND geloescht = 0");
+ }
- @Test
- void testShouldReturnEcogStatusList() {
- when(delegatingDataBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(true);
+ @Test
+ void testShouldReturnEcogStatusList() {
+ when(delegatingDataBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
- doAnswer(invocationOnMock -> {
+ doAnswer(
+ invocationOnMock -> {
var id = invocationOnMock.getArgument(0, Integer.class);
var patient = new Patient(onkostarApi);
patient.setId(id);
return patient;
- }).when(onkostarApi).getPatient(anyInt());
+ })
+ .when(onkostarApi)
+ .getPatient(anyInt());
- dnpmHelper.getEcogStatus(Map.of("PatientId", 42));
+ dnpmHelper.getEcogStatus(Map.of("PatientId", 42));
- var argumentCaptor = ArgumentCaptor.forClass(Patient.class);
- verify(systemtherapieService, times(1)).ecogStatus(argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).isNotNull();
- assertThat(argumentCaptor.getValue().getId()).isEqualTo(42);
- }
+ var argumentCaptor = ArgumentCaptor.forClass(Patient.class);
+ verify(systemtherapieService, times(1)).ecogStatus(argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).isNotNull();
+ assertThat(argumentCaptor.getValue().getId()).isEqualTo(42);
+ }
- @Test
- void testShouldNotReturnEcogStatusListIfNoPermissionGranted() {
- when(delegatingDataBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(false);
+ @Test
+ void testShouldNotReturnEcogStatusListIfNoPermissionGranted() {
+ when(delegatingDataBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(false);
- doAnswer(invocationOnMock -> {
+ doAnswer(
+ invocationOnMock -> {
var id = invocationOnMock.getArgument(0, Integer.class);
var patient = new Patient(onkostarApi);
patient.setId(id);
return patient;
- }).when(onkostarApi).getPatient(anyInt());
-
- assertThrows(IllegalSecuredObjectAccessException.class, () -> dnpmHelper.getEcogStatus(Map.of("PatientId", 42)));
- }
+ })
+ .when(onkostarApi)
+ .getPatient(anyInt());
+ assertThrows(
+ IllegalSecuredObjectAccessException.class,
+ () -> dnpmHelper.getEcogStatus(Map.of("PatientId", 42)));
}
-
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/MerkmalskatalogTest.java b/src/test/java/dev/dnpm/oshelper/MerkmalskatalogTest.java
index f57dd8f..e393d17 100644
--- a/src/test/java/dev/dnpm/oshelper/MerkmalskatalogTest.java
+++ b/src/test/java/dev/dnpm/oshelper/MerkmalskatalogTest.java
@@ -19,8 +19,12 @@
package dev.dnpm.oshelper;
-import dev.dnpm.oshelper.analyzer.Merkmalskatalog;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
+import dev.dnpm.oshelper.analyzer.Merkmalskatalog;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -31,57 +35,49 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class MerkmalskatalogTest {
- private IOnkostarApi onkostarApi;
-
- private Merkmalskatalog merkmalskatalog;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.merkmalskatalog = new Merkmalskatalog(onkostarApi);
- }
+ private Merkmalskatalog merkmalskatalog;
- @Test
- void testShouldReturnNullOnParamCheckIfNoMerkmalskatalogParamGiven() {
- var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Spalten", "id, code"));
- assertThat(actual).isNull();
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.merkmalskatalog = new Merkmalskatalog(onkostarApi);
+ }
- verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
- }
+ @Test
+ void testShouldReturnNullOnParamCheckIfNoMerkmalskatalogParamGiven() {
+ var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Spalten", "id, code"));
+ assertThat(actual).isNull();
- @Test
- void testShouldReturnNullOnParamCheckIfNoSpaltenParamGiven() {
- var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1"));
- assertThat(actual).isNull();
+ verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
+ }
- verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
- }
+ @Test
+ void testShouldReturnNullOnParamCheckIfNoSpaltenParamGiven() {
+ var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1"));
+ assertThat(actual).isNull();
- @Test
- void testShouldCreateSqlQueryWithMerkmalskatalog() {
- var sessionFactory = mock(SessionFactory.class);
- var session = mock(Session.class);
- var query = mock(SQLQuery.class);
+ verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt());
+ }
- when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
- when(sessionFactory.getCurrentSession()).thenReturn(session);
- when(session.createSQLQuery(anyString())).thenReturn(query);
+ @Test
+ void testShouldCreateSqlQueryWithMerkmalskatalog() {
+ var sessionFactory = mock(SessionFactory.class);
+ var session = mock(Session.class);
+ var query = mock(SQLQuery.class);
- merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1", "Spalten", "id, code"));
+ when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
+ when(sessionFactory.getCurrentSession()).thenReturn(session);
+ when(session.createSQLQuery(anyString())).thenReturn(query);
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).contains("WHERE name = 'MK1' AND aktiv = 1");
- }
+ merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1", "Spalten", "id, code"));
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(session, times(1)).createSQLQuery(argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).contains("WHERE name = 'MK1' AND aktiv = 1");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/analyzer/AnalyzerUtilsTest.java b/src/test/java/dev/dnpm/oshelper/analyzer/AnalyzerUtilsTest.java
index 009ce34..18100a6 100644
--- a/src/test/java/dev/dnpm/oshelper/analyzer/AnalyzerUtilsTest.java
+++ b/src/test/java/dev/dnpm/oshelper/analyzer/AnalyzerUtilsTest.java
@@ -19,138 +19,141 @@
package dev.dnpm.oshelper.analyzer;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
+import static org.assertj.core.api.Assertions.assertThat;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-
-import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
class AnalyzerUtilsTest {
- private final Map<String, Object> input = Map.of("value1", 1, "valueA", "A", "valueTrue", true);
-
- private static Set<TestTypeData> testTypeData() {
- return Set.of(
- new TestTypeData("value1", Integer.class).withExpectedResult(true),
- new TestTypeData("valueA", String.class).withExpectedResult(true),
- new TestTypeData("valueTrue", Boolean.class).withExpectedResult(true),
-
- new TestTypeData("value1", String.class).withExpectedResult(false),
- new TestTypeData("valueA", Boolean.class).withExpectedResult(false),
- new TestTypeData("valueTrue", Integer.class).withExpectedResult(false),
-
- new TestTypeData("value1", Boolean.class).withExpectedResult(false),
- new TestTypeData("valueA", Integer.class).withExpectedResult(false),
- new TestTypeData("valueTrue", String.class).withExpectedResult(false)
- );
+ private final Map<String, Object> input = Map.of("value1", 1, "valueA", "A", "valueTrue", true);
+
+ private static Set<TestTypeData> testTypeData() {
+ return Set.of(
+ new TestTypeData("value1", Integer.class).withExpectedResult(true),
+ new TestTypeData("valueA", String.class).withExpectedResult(true),
+ new TestTypeData("valueTrue", Boolean.class).withExpectedResult(true),
+ new TestTypeData("value1", String.class).withExpectedResult(false),
+ new TestTypeData("valueA", Boolean.class).withExpectedResult(false),
+ new TestTypeData("valueTrue", Integer.class).withExpectedResult(false),
+ new TestTypeData("value1", Boolean.class).withExpectedResult(false),
+ new TestTypeData("valueA", Integer.class).withExpectedResult(false),
+ new TestTypeData("valueTrue", String.class).withExpectedResult(false));
+ }
+
+ @ParameterizedTest
+ @MethodSource("testTypeData")
+ void testShouldReturnExpectedResultForTypedCheck(TestTypeData testData) {
+ var actual = AnalyzerUtils.requiredValuePresent(input, testData.key, testData.type);
+ assertThat(actual).isEqualTo(testData.result);
+ }
+
+ private static Set<TestMatchData> testMatchData() {
+ return Set.of(
+ new TestMatchData("value1", "[\\d]").withExpectedResult(true),
+ new TestMatchData("valueA", "[A-Z]").withExpectedResult(true),
+ new TestMatchData("value1", "[A-Z]").withExpectedResult(false),
+ new TestMatchData("valueA", "[a-z]").withExpectedResult(false),
+ new TestMatchData("valueA", "[\\d]").withExpectedResult(false));
+ }
+
+ @ParameterizedTest
+ @MethodSource("testMatchData")
+ void testShouldReturnExpectedResultForMatchCheck(TestMatchData testData) {
+ var actual = AnalyzerUtils.requiredValueMatches(input, testData.key, testData.regexp);
+ assertThat(actual).isEqualTo(testData.result);
+ }
+
+ @Test
+ void testShouldCheckIfInputValueIsIdNumber() {
+ assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", 0), "value")).isFalse();
+ assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", "ABC"), "value")).isFalse();
+ assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", 1234), "value")).isTrue();
+ }
+
+ @Test
+ void testShouldReturnInputValueAsOptional() {
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value", Integer.class))
+ .isEqualTo(Optional.of(1234));
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value", String.class))
+ .isEqualTo(Optional.of("ABC"));
+
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value1", Integer.class))
+ .isEmpty();
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value1", String.class))
+ .isEmpty();
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value", String.class))
+ .isEmpty();
+ assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value", Boolean.class))
+ .isEmpty();
+ }
+
+ @Test
+ void testShouldReturnInputIdAsOptional() {
+ assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 1234), "value"))
+ .isEqualTo(Optional.of(1234));
+
+ assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 1234), "value1")).isEmpty();
+ assertThat(AnalyzerUtils.getRequiredId(Map.of("value", "ABC"), "value")).isEmpty();
+ assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 0), "value")).isEmpty();
+ }
+
+ @Test
+ void testShouldReturnInputValueMatchingAsOptional() {
+ assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", 1234), "value", "[\\d]+"))
+ .isEqualTo(Optional.of("1234"));
+ assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", "ABC"), "value", "[A-Z]+"))
+ .isEqualTo(Optional.of("ABC"));
+
+ assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", "ABC"), "value1", "[A-Z]+"))
+ .isEmpty();
+ }
+
+ private static class TestTypeData {
+ public final String key;
+ public final Class<?> type;
+
+ public boolean result;
+
+ public TestTypeData(String key, Class<?> type) {
+ this.key = key;
+ this.type = type;
}
- @ParameterizedTest
- @MethodSource("testTypeData")
- void testShouldReturnExpectedResultForTypedCheck(TestTypeData testData) {
- var actual = AnalyzerUtils.requiredValuePresent(input, testData.key, testData.type);
- assertThat(actual).isEqualTo(testData.result);
+ public TestTypeData withExpectedResult(boolean result) {
+ this.result = result;
+ return this;
}
- private static Set<TestMatchData> testMatchData() {
- return Set.of(
- new TestMatchData("value1", "[\\d]").withExpectedResult(true),
- new TestMatchData("valueA", "[A-Z]").withExpectedResult(true),
-
- new TestMatchData("value1", "[A-Z]").withExpectedResult(false),
- new TestMatchData("valueA", "[a-z]").withExpectedResult(false),
- new TestMatchData("valueA", "[\\d]").withExpectedResult(false)
- );
- }
-
- @ParameterizedTest
- @MethodSource("testMatchData")
- void testShouldReturnExpectedResultForMatchCheck(TestMatchData testData) {
- var actual = AnalyzerUtils.requiredValueMatches(input, testData.key, testData.regexp);
- assertThat(actual).isEqualTo(testData.result);
+ @Override
+ public String toString() {
+ return String.format("key: '%s', type: %s, result: %s", key, type.getSimpleName(), result);
}
+ }
- @Test
- void testShouldCheckIfInputValueIsIdNumber() {
- assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", 0), "value")).isFalse();
- assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", "ABC"), "value")).isFalse();
- assertThat(AnalyzerUtils.requiredValueIsId(Map.of("value", 1234), "value")).isTrue();
- }
+ private static class TestMatchData {
+ public final String key;
+ public final String regexp;
- @Test
- void testShouldReturnInputValueAsOptional() {
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value", Integer.class)).isEqualTo(Optional.of(1234));
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value", String.class)).isEqualTo(Optional.of("ABC"));
+ public boolean result;
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value1", Integer.class)).isEmpty();
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value1", String.class)).isEmpty();
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", 1234), "value", String.class)).isEmpty();
- assertThat(AnalyzerUtils.getRequiredValue(Map.of("value", "ABC"), "value", Boolean.class)).isEmpty();
+ public TestMatchData(String key, String regexp) {
+ this.key = key;
+ this.regexp = regexp;
}
- @Test
- void testShouldReturnInputIdAsOptional() {
- assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 1234), "value")).isEqualTo(Optional.of(1234));
-
- assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 1234), "value1")).isEmpty();
- assertThat(AnalyzerUtils.getRequiredId(Map.of("value", "ABC"), "value")).isEmpty();
- assertThat(AnalyzerUtils.getRequiredId(Map.of("value", 0), "value")).isEmpty();
- }
-
- @Test
- void testShouldReturnInputValueMatchingAsOptional() {
- assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", 1234), "value", "[\\d]+")).isEqualTo(Optional.of("1234"));
- assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", "ABC"), "value", "[A-Z]+")).isEqualTo(Optional.of("ABC"));
-
- assertThat(AnalyzerUtils.getRequiredValueMatching(Map.of("value", "ABC"), "value1", "[A-Z]+")).isEmpty();
+ public TestMatchData withExpectedResult(boolean result) {
+ this.result = result;
+ return this;
}
- private static class TestTypeData {
- public final String key;
- public final Class<?> type;
-
- public boolean result;
-
- public TestTypeData(String key, Class<?> type) {
- this.key = key;
- this.type = type;
- }
-
- public TestTypeData withExpectedResult(boolean result) {
- this.result = result;
- return this;
- }
-
- @Override
- public String toString() {
- return String.format("key: '%s', type: %s, result: %s", key, type.getSimpleName(), result);
- }
+ @Override
+ public String toString() {
+ return String.format("key: '%s', regexp: '%s', result: %s", key, regexp, result);
}
-
- private static class TestMatchData {
- public final String key;
- public final String regexp;
-
- public boolean result;
-
- public TestMatchData(String key, String regexp) {
- this.key = key;
- this.regexp = regexp;
- }
-
- public TestMatchData withExpectedResult(boolean result) {
- this.result = result;
- return this;
- }
-
- @Override
- public String toString() {
- return String.format("key: '%s', regexp: '%s', result: %s", key, regexp, result);
- }
- }
-
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzerTest.java b/src/test/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzerTest.java
index 092e85d..3e33574 100644
--- a/src/test/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzerTest.java
+++ b/src/test/java/dev/dnpm/oshelper/analyzer/EinzelempfehlungAnalyzerTest.java
@@ -19,12 +19,17 @@
package dev.dnpm.oshelper.analyzer;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
+import de.itc.onkostar.api.IOnkostarApi;
+import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.security.PermissionType;
import dev.dnpm.oshelper.security.PersonPoolBasedPermissionEvaluator;
import dev.dnpm.oshelper.services.StudienService;
import dev.dnpm.oshelper.services.molekulargenetik.MolekulargenetikFormService;
-import de.itc.onkostar.api.IOnkostarApi;
-import de.itc.onkostar.api.Procedure;
+import java.util.HashMap;
+import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -32,91 +37,88 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class EinzelempfehlungAnalyzerTest {
- private IOnkostarApi onkostarApi;
-
- private StudienService studienService;
-
- private MolekulargenetikFormService molekulargenetikFormService;
-
- private PersonPoolBasedPermissionEvaluator permissionEvaluator;
-
- private EinzelempfehlungAnalyzer analyzer;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock StudienService studienService,
- @Mock MolekulargenetikFormService molekulargenetikFormService,
- @Mock PersonPoolBasedPermissionEvaluator permissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.studienService = studienService;
- this.molekulargenetikFormService = molekulargenetikFormService;
- this.permissionEvaluator = permissionEvaluator;
- this.analyzer = new EinzelempfehlungAnalyzer(onkostarApi, studienService, molekulargenetikFormService, permissionEvaluator);
- }
-
- @Test
- void testShouldRequestVariantsFromMolekulargenetikFormService() {
- doAnswer(invocationOnMock -> new Procedure(this.onkostarApi)).when(onkostarApi).getProcedure(anyInt());
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(true);
-
- analyzer.getVariants(Map.of("id", 123));
- verify(molekulargenetikFormService, times(1)).getVariants(any(Procedure.class));
- }
-
- @Test
- void shouldRequestAllStudienForEmptyQueryString() {
- var input = Map.of("q", (Object) " ");
- this.analyzer.getStudien(input);
-
- verify(studienService, times(1)).findActive();
- }
-
- @Test
- void shouldRequestActiveStudienForEmptyInputMap() {
- var input = new HashMap<String, Object>();
- this.analyzer.getStudien(input);
-
- verify(studienService, times(1)).findActive();
- }
-
- @Test
- void shouldRequestFilteredActiveStudien() {
- 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");
- }
-
- @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");
- }
-
+ private IOnkostarApi onkostarApi;
+
+ private StudienService studienService;
+
+ private MolekulargenetikFormService molekulargenetikFormService;
+
+ private PersonPoolBasedPermissionEvaluator permissionEvaluator;
+
+ private EinzelempfehlungAnalyzer analyzer;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock StudienService studienService,
+ @Mock MolekulargenetikFormService molekulargenetikFormService,
+ @Mock PersonPoolBasedPermissionEvaluator permissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
+ this.molekulargenetikFormService = molekulargenetikFormService;
+ this.permissionEvaluator = permissionEvaluator;
+ this.analyzer =
+ new EinzelempfehlungAnalyzer(
+ onkostarApi, studienService, molekulargenetikFormService, permissionEvaluator);
+ }
+
+ @Test
+ void testShouldRequestVariantsFromMolekulargenetikFormService() {
+ doAnswer(invocationOnMock -> new Procedure(this.onkostarApi))
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ analyzer.getVariants(Map.of("id", 123));
+ verify(molekulargenetikFormService, times(1)).getVariants(any(Procedure.class));
+ }
+
+ @Test
+ void shouldRequestAllStudienForEmptyQueryString() {
+ var input = Map.of("q", (Object) " ");
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findActive();
+ }
+
+ @Test
+ void shouldRequestActiveStudienForEmptyInputMap() {
+ var input = new HashMap<String, Object>();
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findActive();
+ }
+
+ @Test
+ void shouldRequestFilteredActiveStudien() {
+ 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");
+ }
+
+ @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");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzerTest.java b/src/test/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzerTest.java
index ee06c35..3a9b03f 100644
--- a/src/test/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzerTest.java
+++ b/src/test/java/dev/dnpm/oshelper/analyzer/FollowUpAnalyzerTest.java
@@ -19,6 +19,9 @@
package dev.dnpm.oshelper.analyzer;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
@@ -29,71 +32,65 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class FollowUpAnalyzerTest {
- private IOnkostarApi onkostarApi;
-
- private FollowUpAnalyzer followUpAnalyzer;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setUp(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.followUpAnalyzer = new FollowUpAnalyzer(onkostarApi);
- }
+ private FollowUpAnalyzer followUpAnalyzer;
- @Test
- void shouldBacklinkEinzelempfehlungUsingOnkostarApi() throws Exception {
- var einzelempfehlung = new Procedure(onkostarApi);
- einzelempfehlung.setId(1234);
+ @BeforeEach
+ void setUp(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.followUpAnalyzer = new FollowUpAnalyzer(onkostarApi);
+ }
- when(onkostarApi.getProcedure(anyInt())).thenReturn(einzelempfehlung);
+ @Test
+ void shouldBacklinkEinzelempfehlungUsingOnkostarApi() throws Exception {
+ var einzelempfehlung = new Procedure(onkostarApi);
+ einzelempfehlung.setId(1234);
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", 1234));
+ when(onkostarApi.getProcedure(anyInt())).thenReturn(einzelempfehlung);
- followUpAnalyzer.analyze(procedure, null);
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", 1234));
- var procedureIdCaptor = ArgumentCaptor.forClass(Integer.class);
- verify(onkostarApi, times(1)).getProcedure(procedureIdCaptor.capture());
- assertThat(procedureIdCaptor.getValue()).isEqualTo(einzelempfehlung.getId());
+ followUpAnalyzer.analyze(procedure, null);
- var procedureCaptor = ArgumentCaptor.forClass(Procedure.class);
- verify(onkostarApi, times(1)).saveProcedure(procedureCaptor.capture());
- assertThat(procedureCaptor.getValue()).isNotNull();
- assertThat(procedureCaptor.getValue().getId()).isEqualTo(einzelempfehlung.getId());
- }
+ var procedureIdCaptor = ArgumentCaptor.forClass(Integer.class);
+ verify(onkostarApi, times(1)).getProcedure(procedureIdCaptor.capture());
+ assertThat(procedureIdCaptor.getValue()).isEqualTo(einzelempfehlung.getId());
- @Test
- void shouldNotBacklinkEinzelempfehlungIfNoEinzelempfehlungSelected() throws Exception {
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
+ var procedureCaptor = ArgumentCaptor.forClass(Procedure.class);
+ verify(onkostarApi, times(1)).saveProcedure(procedureCaptor.capture());
+ assertThat(procedureCaptor.getValue()).isNotNull();
+ assertThat(procedureCaptor.getValue().getId()).isEqualTo(einzelempfehlung.getId());
+ }
- followUpAnalyzer.analyze(procedure, null);
+ @Test
+ void shouldNotBacklinkEinzelempfehlungIfNoEinzelempfehlungSelected() throws Exception {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
- verify(onkostarApi, times(0)).getProcedure(anyInt());
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class));
- }
+ followUpAnalyzer.analyze(procedure, null);
- @Test
- void shouldNotBacklinkEinzelempfehlungIfEinzelempfehlungDoesNotExist() throws Exception {
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", 1234));
+ verify(onkostarApi, times(0)).getProcedure(anyInt());
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class));
+ }
- followUpAnalyzer.analyze(procedure, null);
+ @Test
+ void shouldNotBacklinkEinzelempfehlungIfEinzelempfehlungDoesNotExist() throws Exception {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", 1234));
- var procedureIdCaptor = ArgumentCaptor.forClass(Integer.class);
- verify(onkostarApi, times(1)).getProcedure(procedureIdCaptor.capture());
- assertThat(procedureIdCaptor.getValue()).isEqualTo(1234);
+ followUpAnalyzer.analyze(procedure, null);
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class));
- }
+ var procedureIdCaptor = ArgumentCaptor.forClass(Integer.class);
+ verify(onkostarApi, times(1)).getProcedure(procedureIdCaptor.capture());
+ assertThat(procedureIdCaptor.getValue()).isEqualTo(1234);
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class));
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzerTest.java b/src/test/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzerTest.java
index c1f0b28..41a658a 100644
--- a/src/test/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzerTest.java
+++ b/src/test/java/dev/dnpm/oshelper/analyzer/TherapieMitEcogAnalyzerTest.java
@@ -19,10 +19,17 @@
package dev.dnpm.oshelper.analyzer;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
+import de.itc.onkostar.api.*;
import dev.dnpm.oshelper.dto.EcogStatusWithDate;
import dev.dnpm.oshelper.services.strahlentherapie.StrahlentherapieService;
import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService;
-import de.itc.onkostar.api.*;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.Date;
+import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -30,154 +37,153 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.Date;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class TherapieMitEcogAnalyzerTest {
- private IOnkostarApi onkostarApi;
-
- private StrahlentherapieService strahlentherapieService;
-
- private SystemtherapieService systemtherapieService;
-
- private TherapieMitEcogAnalyzer therapieMitEcogAnalyzer;
-
- private Disease dummyDisease(int id, Date diagnosisDate) {
- var disease = new Disease(onkostarApi);
- disease.setId(id);
- disease.setDiagnosisDate(diagnosisDate);
- return disease;
- }
-
- private Date daysPassed(int days) {
- return Date.from(Instant.now().minus(days, ChronoUnit.DAYS));
- }
-
- @BeforeEach
- void setUp(
- @Mock IOnkostarApi onkostarApi,
- @Mock StrahlentherapieService strahlentherapieService,
- @Mock SystemtherapieService systemtherapieService
- ) {
- this.onkostarApi = onkostarApi;
- this.strahlentherapieService = strahlentherapieService;
- this.systemtherapieService = systemtherapieService;
- this.therapieMitEcogAnalyzer = new TherapieMitEcogAnalyzer(onkostarApi, strahlentherapieService, systemtherapieService);
- }
-
- @Test
- void shouldInsertNewEcogStatus() throws Exception {
- final var diagnosisDate = daysPassed(7);
- final var ecogDate = daysPassed(1);
- final var procedureDate = daysPassed(1);
-
- doAnswer(invocationOnMock -> List.of(new EcogStatusWithDate(ecogDate, "0")))
- .when(systemtherapieService).ecogStatus(any(Patient.class));
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setStartDate(procedureDate);
- procedure.setEditState(ProcedureEditStateType.COMPLETED);
- procedure.setPatientId(1);
- procedure.setPatient(patient);
- procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- doAnswer(invocationOnMock -> List.of(dummyDisease(42, diagnosisDate))).when(this.onkostarApi).getDiseasesByPatientId(anyInt());
-
- doAnswer(invocationOnMock -> List.of(procedure)).when(onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
-
- var idCaptor = ArgumentCaptor.forClass(Integer.class);
- var formNameCaptor = ArgumentCaptor.forClass(String.class);
- verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(idCaptor.capture(), formNameCaptor.capture());
- assertThat(idCaptor.getValue()).isEqualTo(42);
- assertThat(formNameCaptor.getValue()).isEqualTo("DNPM Klinik/Anamnese");
-
- verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void shouldNotModifyEcogStatusIfNoCompletedSystemTherapy() throws Exception {
- final var diagnosisDate = daysPassed(7);
- final var procedureDate = daysPassed(1);
-
- doAnswer(invocationOnMock -> List.of())
- .when(systemtherapieService).ecogStatus(any(Patient.class));
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setStartDate(procedureDate);
- procedure.setEditState(ProcedureEditStateType.COMPLETED);
- procedure.setPatientId(1);
- procedure.setPatient(patient);
- procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
-
- verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString());
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void shouldNotIncludeEcogStatusBeforeDiagnosisDate() throws Exception {
- final var diagnosisDate = daysPassed(7);
- final var ecogDate = daysPassed(28);
- final var procedureDate = daysPassed(1);
-
- doAnswer(invocationOnMock -> List.of(new EcogStatusWithDate(ecogDate, "0")))
- .when(systemtherapieService).ecogStatus(any(Patient.class));
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setStartDate(procedureDate);
- procedure.setEditState(ProcedureEditStateType.COMPLETED);
- procedure.setPatientId(1);
- procedure.setPatient(patient);
- procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
-
- verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString());
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void shouldRequestEcogFromStrahlentherapieAndSystemtherapie() {
- final var diagnosisDate = daysPassed(7);
- final var procedureDate = daysPassed(1);
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1000);
- procedure.setStartDate(procedureDate);
- procedure.setEditState(ProcedureEditStateType.COMPLETED);
- procedure.setPatientId(1);
- procedure.setPatient(patient);
- procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
-
- verify(strahlentherapieService, times(1)).ecogStatus(any());
- verify(systemtherapieService, times(1)).ecogStatus(any());
- }
-
+ private IOnkostarApi onkostarApi;
+
+ private StrahlentherapieService strahlentherapieService;
+
+ private SystemtherapieService systemtherapieService;
+
+ private TherapieMitEcogAnalyzer therapieMitEcogAnalyzer;
+
+ private Disease dummyDisease(int id, Date diagnosisDate) {
+ var disease = new Disease(onkostarApi);
+ disease.setId(id);
+ disease.setDiagnosisDate(diagnosisDate);
+ return disease;
+ }
+
+ private Date daysPassed(int days) {
+ return Date.from(Instant.now().minus(days, ChronoUnit.DAYS));
+ }
+
+ @BeforeEach
+ void setUp(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock StrahlentherapieService strahlentherapieService,
+ @Mock SystemtherapieService systemtherapieService) {
+ this.onkostarApi = onkostarApi;
+ this.strahlentherapieService = strahlentherapieService;
+ this.systemtherapieService = systemtherapieService;
+ this.therapieMitEcogAnalyzer =
+ new TherapieMitEcogAnalyzer(onkostarApi, strahlentherapieService, systemtherapieService);
+ }
+
+ @Test
+ void shouldInsertNewEcogStatus() throws Exception {
+ final var diagnosisDate = daysPassed(7);
+ final var ecogDate = daysPassed(1);
+ final var procedureDate = daysPassed(1);
+
+ doAnswer(invocationOnMock -> List.of(new EcogStatusWithDate(ecogDate, "0")))
+ .when(systemtherapieService)
+ .ecogStatus(any(Patient.class));
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setStartDate(procedureDate);
+ procedure.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure.setPatientId(1);
+ procedure.setPatient(patient);
+ procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ doAnswer(invocationOnMock -> List.of(dummyDisease(42, diagnosisDate)))
+ .when(this.onkostarApi)
+ .getDiseasesByPatientId(anyInt());
+
+ doAnswer(invocationOnMock -> List.of(procedure))
+ .when(onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
+
+ var idCaptor = ArgumentCaptor.forClass(Integer.class);
+ var formNameCaptor = ArgumentCaptor.forClass(String.class);
+ verify(onkostarApi, times(1))
+ .getProceduresForDiseaseByForm(idCaptor.capture(), formNameCaptor.capture());
+ assertThat(idCaptor.getValue()).isEqualTo(42);
+ assertThat(formNameCaptor.getValue()).isEqualTo("DNPM Klinik/Anamnese");
+
+ verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void shouldNotModifyEcogStatusIfNoCompletedSystemTherapy() throws Exception {
+ final var diagnosisDate = daysPassed(7);
+ final var procedureDate = daysPassed(1);
+
+ doAnswer(invocationOnMock -> List.of())
+ .when(systemtherapieService)
+ .ecogStatus(any(Patient.class));
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setStartDate(procedureDate);
+ procedure.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure.setPatientId(1);
+ procedure.setPatient(patient);
+ procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
+
+ verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString());
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void shouldNotIncludeEcogStatusBeforeDiagnosisDate() throws Exception {
+ final var diagnosisDate = daysPassed(7);
+ final var ecogDate = daysPassed(28);
+ final var procedureDate = daysPassed(1);
+
+ doAnswer(invocationOnMock -> List.of(new EcogStatusWithDate(ecogDate, "0")))
+ .when(systemtherapieService)
+ .ecogStatus(any(Patient.class));
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setStartDate(procedureDate);
+ procedure.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure.setPatientId(1);
+ procedure.setPatient(patient);
+ procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
+
+ verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString());
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void shouldRequestEcogFromStrahlentherapieAndSystemtherapie() {
+ final var diagnosisDate = daysPassed(7);
+ final var procedureDate = daysPassed(1);
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1000);
+ procedure.setStartDate(procedureDate);
+ procedure.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure.setPatientId(1);
+ procedure.setPatient(patient);
+ procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ therapieMitEcogAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate));
+
+ verify(strahlentherapieService, times(1)).ecogStatus(any());
+ verify(systemtherapieService, times(1)).ecogStatus(any());
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzerTest.java
index 0ee1ef8..dc75e51 100644
--- a/src/test/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzerTest.java
+++ b/src/test/java/dev/dnpm/oshelper/analyzer/TherapieplanAnalyzerTest.java
@@ -19,6 +19,8 @@
package dev.dnpm.oshelper.analyzer;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.services.FormService;
@@ -30,35 +32,29 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class TherapieplanAnalyzerTest {
- @Mock
- private IOnkostarApi onkostarApi;
-
- @Mock
- private FormService formService;
+ @Mock private IOnkostarApi onkostarApi;
- @Mock
- private TherapieplanServiceFactory therapieplanServiceFactory;
+ @Mock private FormService formService;
- private TherapieplanAnalyzer therapieplanAnalyzer;
+ @Mock private TherapieplanServiceFactory therapieplanServiceFactory;
- @BeforeEach
- void setUp() {
- this.therapieplanAnalyzer = new TherapieplanAnalyzer(therapieplanServiceFactory);
- }
+ private TherapieplanAnalyzer therapieplanAnalyzer;
- @Test
- void shouldRunServiceMethodsOnAnalyzeCalled() {
- when(this.therapieplanServiceFactory.currentUsableInstance())
- .thenReturn(new DefaultTherapieplanService(onkostarApi, formService));
+ @BeforeEach
+ void setUp() {
+ this.therapieplanAnalyzer = new TherapieplanAnalyzer(therapieplanServiceFactory);
+ }
- this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
+ @Test
+ void shouldRunServiceMethodsOnAnalyzeCalled() {
+ when(this.therapieplanServiceFactory.currentUsableInstance())
+ .thenReturn(new DefaultTherapieplanService(onkostarApi, formService));
- verify(this.therapieplanServiceFactory, times(1)).currentUsableInstance();
- }
+ this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
+ verify(this.therapieplanServiceFactory, times(1)).currentUsableInstance();
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/atc/AgentCodeServiceTest.java b/src/test/java/dev/dnpm/oshelper/atc/AgentCodeServiceTest.java
index 7516b08..95030b5 100644
--- a/src/test/java/dev/dnpm/oshelper/atc/AgentCodeServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/atc/AgentCodeServiceTest.java
@@ -19,65 +19,61 @@
package dev.dnpm.oshelper.atc;
-import dev.dnpm.oshelper.atc.services.AgentCodeService;
-import org.junit.jupiter.api.Test;
+import static org.assertj.core.api.Assertions.assertThat;
+import dev.dnpm.oshelper.atc.services.AgentCodeService;
import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
class AgentCodeServiceTest {
- @Test
- void shouldReturnLatestAvailableAgentCodeVersion() {
- var testAgentCodes = List.of(
- new AtcCode("A01AD05", "Acetylsalicylsäure"),
- new AtcCode("A01AD05", "Acetylsalicylsäure", "2025"),
- new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"),
- new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
- new UnregisteredCode("", "Acetylsalicylsäure")
- );
-
- var actual = AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byNameAndCode);
+ @Test
+ void shouldReturnLatestAvailableAgentCodeVersion() {
+ var testAgentCodes =
+ List.of(
+ new AtcCode("A01AD05", "Acetylsalicylsäure"),
+ new AtcCode("A01AD05", "Acetylsalicylsäure", "2025"),
+ new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"),
+ new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
+ new UnregisteredCode("", "Acetylsalicylsäure"));
- assertThat(actual).containsAll(
- List.of(
- new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"),
- new UnregisteredCode("", "Acetylsalicylsäure")
- )
- );
- }
+ var actual =
+ AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byNameAndCode);
- @Test
- void shouldReturnLatestAvailableAgentCodeVersionByNameOnly() {
- var testAgentCodes = List.of(
- new AtcCode("A01AD05", "Acetylsalicylsäure"),
- new AtcCode("A01AD05", "Acetylsalicylsäure", "2025"),
+ assertThat(actual)
+ .containsAll(
+ List.of(
new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"),
- new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
- new UnregisteredCode("", "Acetylsalicylsäure")
- );
+ new UnregisteredCode("", "Acetylsalicylsäure")));
+ }
- var actual = AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byCodeOnly);
+ @Test
+ void shouldReturnLatestAvailableAgentCodeVersionByNameOnly() {
+ var testAgentCodes =
+ List.of(
+ new AtcCode("A01AD05", "Acetylsalicylsäure"),
+ new AtcCode("A01AD05", "Acetylsalicylsäure", "2025"),
+ new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"),
+ new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
+ new UnregisteredCode("", "Acetylsalicylsäure"));
- assertThat(actual).containsExactly(
- new AtcCode("A01AD05", "Acetylsalicylsäure", "2026")
- );
- }
+ var actual =
+ AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byCodeOnly);
- @Test
- void shouldReturnLatestAvailableAgentCodeWithoutVersionVersionByNameOnly() {
- var testAgentCodes = List.of(
- new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
- new AtcCode("A01AD05", "Acetylsalicylsäure"),
- new UnregisteredCode("", "Acetylsalicylsäure")
- );
+ assertThat(actual).containsExactly(new AtcCode("A01AD05", "Acetylsalicylsäure", "2026"));
+ }
- var actual = AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byCodeOnly);
+ @Test
+ void shouldReturnLatestAvailableAgentCodeWithoutVersionVersionByNameOnly() {
+ var testAgentCodes =
+ List.of(
+ new UnregisteredCode("A01AD05", "Acetylsalicylsäure"),
+ new AtcCode("A01AD05", "Acetylsalicylsäure"),
+ new UnregisteredCode("", "Acetylsalicylsäure"));
- assertThat(actual).containsExactly(
- new AtcCode("A01AD05", "Acetylsalicylsäure")
- );
- }
+ var actual =
+ AgentCodeService.latestAgentCodeVersions(testAgentCodes, AgentCodeService.byCodeOnly);
+ assertThat(actual).containsExactly(new AtcCode("A01AD05", "Acetylsalicylsäure"));
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/atc/AtcCodeTest.java b/src/test/java/dev/dnpm/oshelper/atc/AtcCodeTest.java
index 7e3240d..35fd34e 100644
--- a/src/test/java/dev/dnpm/oshelper/atc/AtcCodeTest.java
+++ b/src/test/java/dev/dnpm/oshelper/atc/AtcCodeTest.java
@@ -19,29 +19,28 @@
package dev.dnpm.oshelper.atc;
-import org.junit.jupiter.api.Test;
-
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-class AtcCodeTest {
+import org.junit.jupiter.api.Test;
- @Test
- void testShouldDetectAtcCodeScheme() {
- assertTrue(AtcCode.isAtcCode("L01"));
- assertTrue(AtcCode.isAtcCode("L01A"));
- assertTrue(AtcCode.isAtcCode("L01AA"));
- assertTrue(AtcCode.isAtcCode("L01AA01"));
- }
+class AtcCodeTest {
- @Test
- void testShouldDetectInvalidAtcCodeScheme() {
- assertFalse(AtcCode.isAtcCode(null));
- assertFalse(AtcCode.isAtcCode(" "));
- assertFalse(AtcCode.isAtcCode("irgendwas"));
- assertFalse(AtcCode.isAtcCode("L00AA"));
- assertFalse(AtcCode.isAtcCode("Z01AA"));
- assertFalse(AtcCode.isAtcCode("L01AA0"));
- }
+ @Test
+ void testShouldDetectAtcCodeScheme() {
+ assertTrue(AtcCode.isAtcCode("L01"));
+ assertTrue(AtcCode.isAtcCode("L01A"));
+ assertTrue(AtcCode.isAtcCode("L01AA"));
+ assertTrue(AtcCode.isAtcCode("L01AA01"));
+ }
+ @Test
+ void testShouldDetectInvalidAtcCodeScheme() {
+ assertFalse(AtcCode.isAtcCode(null));
+ assertFalse(AtcCode.isAtcCode(" "));
+ assertFalse(AtcCode.isAtcCode("irgendwas"));
+ assertFalse(AtcCode.isAtcCode("L00AA"));
+ assertFalse(AtcCode.isAtcCode("Z01AA"));
+ assertFalse(AtcCode.isAtcCode("L01AA0"));
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/atc/CsvAgentCodeServiceTest.java b/src/test/java/dev/dnpm/oshelper/atc/CsvAgentCodeServiceTest.java
index 2735e01..82fd837 100644
--- a/src/test/java/dev/dnpm/oshelper/atc/CsvAgentCodeServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/atc/CsvAgentCodeServiceTest.java
@@ -19,22 +19,21 @@
package dev.dnpm.oshelper.atc;
+import static org.assertj.core.api.Assertions.assertThat;
+
import dev.dnpm.oshelper.atc.services.AgentCodeService;
import dev.dnpm.oshelper.atc.services.CsvAgentCodeService;
import org.junit.jupiter.api.Test;
-import static org.assertj.core.api.Assertions.assertThat;
-
class CsvAgentCodeServiceTest {
- AgentCodeService agentCodeService = new CsvAgentCodeService();
-
- @Test
- void shouldReturnAtcCodeFromEmbeddedResource() {
- var actual = agentCodeService.findAgentCodes("Cisplatin", 10);
+ AgentCodeService agentCodeService = new CsvAgentCodeService();
- assertThat(actual).hasSize(1);
- assertThat(actual.get(0).getCode()).isEqualTo("L01XA01");
- }
+ @Test
+ void shouldReturnAtcCodeFromEmbeddedResource() {
+ var actual = agentCodeService.findAgentCodes("Cisplatin", 10);
+ assertThat(actual).hasSize(1);
+ assertThat(actual.get(0).getCode()).isEqualTo("L01XA01");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/config/PluginConfigurationTest.java b/src/test/java/dev/dnpm/oshelper/config/PluginConfigurationTest.java
index 6b80968..42583ca 100644
--- a/src/test/java/dev/dnpm/oshelper/config/PluginConfigurationTest.java
+++ b/src/test/java/dev/dnpm/oshelper/config/PluginConfigurationTest.java
@@ -19,47 +19,45 @@
package dev.dnpm.oshelper.config;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import de.itc.onkostar.api.IOnkostarApi;
import dev.dnpm.oshelper.services.FormService;
import dev.dnpm.oshelper.services.SettingsService;
-import dev.dnpm.oshelper.services.therapieplan.TherapieplanServiceFactory;
import dev.dnpm.oshelper.services.consent.ConsentManagerServiceFactory;
-import de.itc.onkostar.api.IOnkostarApi;
+import dev.dnpm.oshelper.services.therapieplan.TherapieplanServiceFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.assertj.core.api.Assertions.assertThat;
-
@ExtendWith(MockitoExtension.class)
class PluginConfigurationTest {
- @Mock
- private IOnkostarApi onkostarApi;
+ @Mock private IOnkostarApi onkostarApi;
- @Mock
- private SettingsService settingsService;
+ @Mock private SettingsService settingsService;
- @Mock
- private FormService formService;
+ @Mock private FormService formService;
- private PluginConfiguration configuration;
+ private PluginConfiguration configuration;
- @BeforeEach
- void setup() {
- this.configuration = new PluginConfiguration();
- }
+ @BeforeEach
+ void setup() {
+ this.configuration = new PluginConfiguration();
+ }
- @Test
- void testShouldReturnConsentManagerServiceFactory() {
- var actual = this.configuration.consentManagerServiceFactory(onkostarApi);
- assertThat(actual).isInstanceOf(ConsentManagerServiceFactory.class);
- }
+ @Test
+ void testShouldReturnConsentManagerServiceFactory() {
+ var actual = this.configuration.consentManagerServiceFactory(onkostarApi);
+ assertThat(actual).isInstanceOf(ConsentManagerServiceFactory.class);
+ }
- @Test
- void testShouldReturnTherapieplanServiceFactory() {
- var actual = this.configuration.therapieplanServiceFactory(onkostarApi, settingsService, formService);
- assertThat(actual).isInstanceOf(TherapieplanServiceFactory.class);
- }
+ @Test
+ void testShouldReturnTherapieplanServiceFactory() {
+ var actual =
+ this.configuration.therapieplanServiceFactory(onkostarApi, settingsService, formService);
+ assertThat(actual).isInstanceOf(TherapieplanServiceFactory.class);
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/dto/VariantTest.java b/src/test/java/dev/dnpm/oshelper/dto/VariantTest.java
index aa39ba3..9ab2b3d 100644
--- a/src/test/java/dev/dnpm/oshelper/dto/VariantTest.java
+++ b/src/test/java/dev/dnpm/oshelper/dto/VariantTest.java
@@ -19,104 +19,103 @@
package dev.dnpm.oshelper.dto;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.Test;
-import static org.assertj.core.api.Assertions.assertThat;
-
public class VariantTest {
- @Test
- void testShouldMapVariantFromProcedureForSimpleVariant() {
- var procedure = new Procedure(null);
- procedure.setId(12345);
- procedure.setFormName("OS.Molekulargenetische Untersuchung");
-
- procedure.setValue("Ergebnis", new Item("Ergebnis", "P"));
- procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- procedure.setValue("ExonInt", new Item("ExonInt", 123));
- procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
-
- var actual = Variant.fromProcedure(procedure);
-
- assertThat(actual).isPresent();
- assertThat(actual.get().getId()).isEqualTo(12345);
- assertThat(actual.get().getErgebnis()).isEqualTo("Einfache Variante (Mutation)");
- assertThat(actual.get().getGen()).isEqualTo("BRAF");
- assertThat(actual.get().getExon()).isEqualTo("123");
- assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
- }
-
- @Test
- void testShouldMapVariantFromProcedureForCopyNumberVariation() {
- var procedure = new Procedure(null);
- procedure.setId(12345);
- procedure.setFormName("OS.Molekulargenetische Untersuchung");
-
- procedure.setValue("Ergebnis", new Item("Ergebnis", "CNV"));
- procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- procedure.setValue("ExonInt", new Item("ExonInt", 123));
- procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
-
- var actual = Variant.fromProcedure(procedure);
-
- assertThat(actual).isPresent();
- assertThat(actual.get().getId()).isEqualTo(12345);
- assertThat(actual.get().getErgebnis()).isEqualTo("Copy Number Variation (CNV)");
- assertThat(actual.get().getGen()).isEqualTo("BRAF");
- assertThat(actual.get().getExon()).isEqualTo("123");
- assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
- }
-
- @Test
- void testShouldMapVariantFromProcedureForFusion() {
- var procedure = new Procedure(null);
- procedure.setId(12345);
- procedure.setFormName("OS.Molekulargenetische Untersuchung");
-
- procedure.setValue("Ergebnis", new Item("Ergebnis", "F"));
- procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- procedure.setValue("ExonInt", new Item("ExonInt", 123));
- procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
-
- var actual = Variant.fromProcedure(procedure);
-
- assertThat(actual).isPresent();
- assertThat(actual.get().getId()).isEqualTo(12345);
- assertThat(actual.get().getErgebnis()).isEqualTo("Fusion (Translokation Inversion Insertion)");
- assertThat(actual.get().getGen()).isEqualTo("BRAF");
- assertThat(actual.get().getExon()).isEqualTo("123");
- assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
- }
-
- @Test
- void testShouldNotMapVariantFromProcedureForUnknownVariant() {
- var procedure = new Procedure(null);
- procedure.setId(12345);
- procedure.setFormName("OS.Molekulargenetische Untersuchung");
-
- procedure.setValue("Ergebnis", new Item("Ergebnis", "X"));
- procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- procedure.setValue("ExonInt", new Item("ExonInt", 123));
- procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
-
- var actual = Variant.fromProcedure(procedure);
-
- assertThat(actual).isEmpty();
- }
-
- @Test
- void testShouldNotMapVariantFromUnknownProcedureForm() {
- var procedure = new Procedure(null);
- procedure.setId(12345);
- procedure.setFormName("ABC.Irgendwas");
-
- procedure.setValue("Testfeld", new Item("Testfeld", "T"));
-
- var actual = Variant.fromProcedure(procedure);
-
- assertThat(actual).isEmpty();
- }
-
+ @Test
+ void testShouldMapVariantFromProcedureForSimpleVariant() {
+ var procedure = new Procedure(null);
+ procedure.setId(12345);
+ procedure.setFormName("OS.Molekulargenetische Untersuchung");
+
+ procedure.setValue("Ergebnis", new Item("Ergebnis", "P"));
+ procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ procedure.setValue("ExonInt", new Item("ExonInt", 123));
+ procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+
+ var actual = Variant.fromProcedure(procedure);
+
+ assertThat(actual).isPresent();
+ assertThat(actual.get().getId()).isEqualTo(12345);
+ assertThat(actual.get().getErgebnis()).isEqualTo("Einfache Variante (Mutation)");
+ assertThat(actual.get().getGen()).isEqualTo("BRAF");
+ assertThat(actual.get().getExon()).isEqualTo("123");
+ assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
+ }
+
+ @Test
+ void testShouldMapVariantFromProcedureForCopyNumberVariation() {
+ var procedure = new Procedure(null);
+ procedure.setId(12345);
+ procedure.setFormName("OS.Molekulargenetische Untersuchung");
+
+ procedure.setValue("Ergebnis", new Item("Ergebnis", "CNV"));
+ procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ procedure.setValue("ExonInt", new Item("ExonInt", 123));
+ procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+
+ var actual = Variant.fromProcedure(procedure);
+
+ assertThat(actual).isPresent();
+ assertThat(actual.get().getId()).isEqualTo(12345);
+ assertThat(actual.get().getErgebnis()).isEqualTo("Copy Number Variation (CNV)");
+ assertThat(actual.get().getGen()).isEqualTo("BRAF");
+ assertThat(actual.get().getExon()).isEqualTo("123");
+ assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
+ }
+
+ @Test
+ void testShouldMapVariantFromProcedureForFusion() {
+ var procedure = new Procedure(null);
+ procedure.setId(12345);
+ procedure.setFormName("OS.Molekulargenetische Untersuchung");
+
+ procedure.setValue("Ergebnis", new Item("Ergebnis", "F"));
+ procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ procedure.setValue("ExonInt", new Item("ExonInt", 123));
+ procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+
+ var actual = Variant.fromProcedure(procedure);
+
+ assertThat(actual).isPresent();
+ assertThat(actual.get().getId()).isEqualTo(12345);
+ assertThat(actual.get().getErgebnis()).isEqualTo("Fusion (Translokation Inversion Insertion)");
+ assertThat(actual.get().getGen()).isEqualTo("BRAF");
+ assertThat(actual.get().getExon()).isEqualTo("123");
+ assertThat(actual.get().getPathogenitaetsklasse()).isEqualTo("2");
+ }
+
+ @Test
+ void testShouldNotMapVariantFromProcedureForUnknownVariant() {
+ var procedure = new Procedure(null);
+ procedure.setId(12345);
+ procedure.setFormName("OS.Molekulargenetische Untersuchung");
+
+ procedure.setValue("Ergebnis", new Item("Ergebnis", "X"));
+ procedure.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ procedure.setValue("ExonInt", new Item("ExonInt", 123));
+ procedure.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+
+ var actual = Variant.fromProcedure(procedure);
+
+ assertThat(actual).isEmpty();
+ }
+
+ @Test
+ void testShouldNotMapVariantFromUnknownProcedureForm() {
+ var procedure = new Procedure(null);
+ procedure.setId(12345);
+ procedure.setFormName("ABC.Irgendwas");
+
+ procedure.setValue("Testfeld", new Item("Testfeld", "T"));
+
+ var actual = Variant.fromProcedure(procedure);
+
+ assertThat(actual).isEmpty();
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluatorTest.java b/src/test/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluatorTest.java
index 0f615ec..a305bb2 100644
--- a/src/test/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluatorTest.java
+++ b/src/test/java/dev/dnpm/oshelper/security/DelegatingDataBasedPermissionEvaluatorTest.java
@@ -19,8 +19,14 @@
package dev.dnpm.oshelper.security;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.when;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
+import java.util.Collection;
+import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -29,113 +35,124 @@ import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
-import java.util.Collection;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.when;
-
@ExtendWith(MockitoExtension.class)
class DelegatingDataBasedPermissionEvaluatorTest {
- private IOnkostarApi onkostarApi;
-
- private PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator;
-
- private FormBasedPermissionEvaluator formBasedPermissionEvaluator;
-
- private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator,
- @Mock FormBasedPermissionEvaluator formBasedPermissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.personPoolBasedPermissionEvaluator = personPoolBasedPermissionEvaluator;
- this.formBasedPermissionEvaluator = formBasedPermissionEvaluator;
-
- this.delegatingDataBasedPermissionEvaluator = new DelegatingDataBasedPermissionEvaluator(
- List.of(personPoolBasedPermissionEvaluator, formBasedPermissionEvaluator)
- );
- }
-
- @Test
- void testShouldGrantPermissionIfAllDelegatedPermissionEvaluatorsGrantsAccessByObject() {
- when(personPoolBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))).thenReturn(true);
- when(formBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))).thenReturn(true);
-
- var actual = delegatingDataBasedPermissionEvaluator.hasPermission(new DummyAuthentication(), new Patient(this.onkostarApi), PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldGrantPermissionIfAllDelegatedPermissionEvaluatorsGrantsAccessByIdAndType() {
- when(personPoolBasedPermissionEvaluator.hasPermission(any(), anyInt(), anyString(), any(PermissionType.class))).thenReturn(true);
- when(formBasedPermissionEvaluator.hasPermission(any(), anyInt(), anyString(), any(PermissionType.class))).thenReturn(true);
-
- var actual = delegatingDataBasedPermissionEvaluator.hasPermission(new DummyAuthentication(), 123, "Patient", PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldDenyPermissionIfAtLeastOneDelegatedPermissionEvaluatorsDeniesAccessByObject() {
- when(personPoolBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))).thenReturn(true);
- when(formBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))).thenReturn(false);
-
- var actual = delegatingDataBasedPermissionEvaluator.hasPermission(new DummyAuthentication(), new Patient(this.onkostarApi), PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldDenyPermissionIfAtLeastOneDelegatedPermissionEvaluatorsDeniesAccessByIdAndType() {
- when(personPoolBasedPermissionEvaluator.hasPermission(any(), anyInt(), anyString(), any(PermissionType.class))).thenReturn(false);
-
- var actual = delegatingDataBasedPermissionEvaluator.hasPermission(new DummyAuthentication(), 123, "Patient", PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
+ private IOnkostarApi onkostarApi;
+
+ private PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator;
+
+ private FormBasedPermissionEvaluator formBasedPermissionEvaluator;
+
+ private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator,
+ @Mock FormBasedPermissionEvaluator formBasedPermissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.personPoolBasedPermissionEvaluator = personPoolBasedPermissionEvaluator;
+ this.formBasedPermissionEvaluator = formBasedPermissionEvaluator;
+
+ this.delegatingDataBasedPermissionEvaluator =
+ new DelegatingDataBasedPermissionEvaluator(
+ List.of(personPoolBasedPermissionEvaluator, formBasedPermissionEvaluator));
+ }
+
+ @Test
+ void testShouldGrantPermissionIfAllDelegatedPermissionEvaluatorsGrantsAccessByObject() {
+ when(personPoolBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
+ when(formBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ var actual =
+ delegatingDataBasedPermissionEvaluator.hasPermission(
+ new DummyAuthentication(), new Patient(this.onkostarApi), PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldGrantPermissionIfAllDelegatedPermissionEvaluatorsGrantsAccessByIdAndType() {
+ when(personPoolBasedPermissionEvaluator.hasPermission(
+ any(), anyInt(), anyString(), any(PermissionType.class)))
+ .thenReturn(true);
+ when(formBasedPermissionEvaluator.hasPermission(
+ any(), anyInt(), anyString(), any(PermissionType.class)))
+ .thenReturn(true);
+
+ var actual =
+ delegatingDataBasedPermissionEvaluator.hasPermission(
+ new DummyAuthentication(), 123, "Patient", PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldDenyPermissionIfAtLeastOneDelegatedPermissionEvaluatorsDeniesAccessByObject() {
+ when(personPoolBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
+ when(formBasedPermissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var actual =
+ delegatingDataBasedPermissionEvaluator.hasPermission(
+ new DummyAuthentication(), new Patient(this.onkostarApi), PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldDenyPermissionIfAtLeastOneDelegatedPermissionEvaluatorsDeniesAccessByIdAndType() {
+ when(personPoolBasedPermissionEvaluator.hasPermission(
+ any(), anyInt(), anyString(), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var actual =
+ delegatingDataBasedPermissionEvaluator.hasPermission(
+ new DummyAuthentication(), 123, "Patient", PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
}
class DummyAuthentication implements Authentication {
- @Override
- public String getName() {
- return "dummy";
- }
-
- @Override
- public Collection<? extends GrantedAuthority> getAuthorities() {
- return null;
- }
-
- @Override
- public Object getCredentials() {
- return null;
- }
-
- @Override
- public Object getDetails() {
- return null;
- }
-
- @Override
- public Object getPrincipal() {
- return null;
- }
-
- @Override
- public boolean isAuthenticated() {
- return false;
- }
-
- @Override
- public void setAuthenticated(boolean b) throws IllegalArgumentException {
-
- }
-} \ No newline at end of file
+ @Override
+ public String getName() {
+ return "dummy";
+ }
+
+ @Override
+ public Collection<? extends GrantedAuthority> getAuthorities() {
+ return null;
+ }
+
+ @Override
+ public Object getCredentials() {
+ return null;
+ }
+
+ @Override
+ public Object getDetails() {
+ return null;
+ }
+
+ @Override
+ public Object getPrincipal() {
+ return null;
+ }
+
+ @Override
+ public boolean isAuthenticated() {
+ return false;
+ }
+
+ @Override
+ public void setAuthenticated(boolean b) throws IllegalArgumentException {}
+}
diff --git a/src/test/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluatorTest.java b/src/test/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluatorTest.java
index 6c363d4..60e896a 100644
--- a/src/test/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluatorTest.java
+++ b/src/test/java/dev/dnpm/oshelper/security/FormBasedPermissionEvaluatorTest.java
@@ -19,9 +19,16 @@
package dev.dnpm.oshelper.security;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
+import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -29,103 +36,123 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.core.Authentication;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
-
@ExtendWith(MockitoExtension.class)
class FormBasedPermissionEvaluatorTest {
- private IOnkostarApi onkostarApi;
-
- private Authentication dummyAuthentication;
-
- private SecurityService securityService;
-
- private FormBasedPermissionEvaluator permissionEvaluator;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock SecurityService securityService,
- @Mock DummyAuthentication dummyAuthentication
- ) {
- this.onkostarApi = onkostarApi;
- this.dummyAuthentication = dummyAuthentication;
- this.securityService = securityService;
-
- this.permissionEvaluator = new FormBasedPermissionEvaluator(
- onkostarApi, securityService
- );
- }
-
- @Test
- void testShouldGrantPermissionByProcedure() {
- when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form2");
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldGrantPermissionByProcedureId() {
- when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
-
- doAnswer(invocationOnMock -> {
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form2");
- return object;
- }).when(onkostarApi).getProcedure(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldDenyPermissionByProcedure() {
- when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldDenyPermissionByProcedureId() {
- when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
-
- doAnswer(invocationOnMock -> {
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
- return object;
- }).when(onkostarApi).getProcedure(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldVoteForPermissionToPatient() {
- var object = new Patient(onkostarApi);
- object.setPersonPoolCode("Pool1");
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldVoteForPermissionToIdOfTypeProcedure() {
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, FormBasedPermissionEvaluator.PATIENT, PermissionType.READ);
- assertThat(actual).isTrue();
- }
-
+ private IOnkostarApi onkostarApi;
+
+ private Authentication dummyAuthentication;
+
+ private SecurityService securityService;
+
+ private FormBasedPermissionEvaluator permissionEvaluator;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock SecurityService securityService,
+ @Mock DummyAuthentication dummyAuthentication) {
+ this.onkostarApi = onkostarApi;
+ this.dummyAuthentication = dummyAuthentication;
+ this.securityService = securityService;
+
+ this.permissionEvaluator = new FormBasedPermissionEvaluator(onkostarApi, securityService);
+ }
+
+ @Test
+ void testShouldGrantPermissionByProcedure() {
+ when(securityService.getFormNamesForPermission(
+ any(Authentication.class), any(PermissionType.class)))
+ .thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form2");
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldGrantPermissionByProcedureId() {
+ when(securityService.getFormNamesForPermission(
+ any(Authentication.class), any(PermissionType.class)))
+ .thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
+
+ doAnswer(
+ invocationOnMock -> {
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form2");
+ return object;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ PersonPoolBasedPermissionEvaluator.PROCEDURE,
+ PermissionType.READ);
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldDenyPermissionByProcedure() {
+ when(securityService.getFormNamesForPermission(
+ any(Authentication.class), any(PermissionType.class)))
+ .thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldDenyPermissionByProcedureId() {
+ when(securityService.getFormNamesForPermission(
+ any(Authentication.class), any(PermissionType.class)))
+ .thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
+
+ doAnswer(
+ invocationOnMock -> {
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+ return object;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ PersonPoolBasedPermissionEvaluator.PROCEDURE,
+ PermissionType.READ);
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldVoteForPermissionToPatient() {
+ var object = new Patient(onkostarApi);
+ object.setPersonPoolCode("Pool1");
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldVoteForPermissionToIdOfTypeProcedure() {
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ FormBasedPermissionEvaluator.PATIENT,
+ PermissionType.READ);
+ assertThat(actual).isTrue();
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/security/FormBasedSecurityAspectsTest.java b/src/test/java/dev/dnpm/oshelper/security/FormBasedSecurityAspectsTest.java
index 54d7873..a7660b6 100644
--- a/src/test/java/dev/dnpm/oshelper/security/FormBasedSecurityAspectsTest.java
+++ b/src/test/java/dev/dnpm/oshelper/security/FormBasedSecurityAspectsTest.java
@@ -19,6 +19,10 @@
package dev.dnpm.oshelper.security;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
@@ -29,122 +33,118 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.aop.aspectj.annotation.AspectJProxyFactory;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class FormBasedSecurityAspectsTest {
- private DummyClass dummyClass;
-
- private IOnkostarApi onkostarApi;
-
- private FormBasedPermissionEvaluator permissionEvaluator;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock FormBasedPermissionEvaluator permissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.permissionEvaluator = permissionEvaluator;
-
- // Create proxied instance of DummyClass as done within Onkostar using Spring AOP
- var dummyClass = new DummyClass(onkostarApi);
- AspectJProxyFactory factory = new AspectJProxyFactory(dummyClass);
- FormBasedSecurityAspects securityAspects = new FormBasedSecurityAspects(this.permissionEvaluator);
- factory.addAspect(securityAspects);
- this.dummyClass = factory.getProxy();
+ private DummyClass dummyClass;
+
+ private IOnkostarApi onkostarApi;
+
+ private FormBasedPermissionEvaluator permissionEvaluator;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi, @Mock FormBasedPermissionEvaluator permissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.permissionEvaluator = permissionEvaluator;
+
+ // Create proxied instance of DummyClass as done within Onkostar using Spring AOP
+ var dummyClass = new DummyClass(onkostarApi);
+ AspectJProxyFactory factory = new AspectJProxyFactory(dummyClass);
+ FormBasedSecurityAspects securityAspects =
+ new FormBasedSecurityAspects(this.permissionEvaluator);
+ factory.addAspect(securityAspects);
+ this.dummyClass = factory.getProxy();
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithPatientParam() {
+ this.dummyClass.methodWithPatientParam(new Patient(onkostarApi));
+ verify(onkostarApi, times(1)).savePatient(any(Patient.class));
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithProcedureParam() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(
+ Exception.class,
+ () -> this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi)));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithProcedureParam() throws Exception {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi));
+
+ verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithPatientReturnValue() {
+ var actual = this.dummyClass.methodWithPatientReturnValue(1);
+ assertThat(actual).isNotNull();
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithProcedureReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(Exception.class, () -> this.dummyClass.methodWithProcedureReturnValue(1));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithProcedureReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ var actual = this.dummyClass.methodWithProcedureReturnValue(1);
+
+ assertThat(actual).isNotNull();
+ }
+
+ private static class DummyClass {
+
+ private final IOnkostarApi onkostarApi;
+
+ DummyClass(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
}
- @Test
- void testShouldAllowSecuredMethodCallWithPatientParam() {
- this.dummyClass.methodWithPatientParam(new Patient(onkostarApi));
- verify(onkostarApi, times(1)).savePatient(any(Patient.class));
+ @FormSecured
+ public void methodWithPatientParam(Patient patient) {
+ this.onkostarApi.savePatient(patient);
}
- @Test
- void testShouldPreventSecuredMethodCallWithProcedureParam() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi))
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ @FormSecured
+ public void methodWithProcedureParam(Procedure procedure) throws Exception {
+ this.onkostarApi.saveProcedure(procedure, false);
}
- @Test
- void testShouldAllowSecuredMethodCallWithProcedureParam() throws Exception {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(true);
-
- this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi));
-
- verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void testShouldAllowSecuredMethodCallWithPatientReturnValue() {
- var actual = this.dummyClass.methodWithPatientReturnValue(1);
- assertThat(actual).isNotNull();
- }
-
- @Test
- void testShouldPreventSecuredMethodCallWithProcedureReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithProcedureReturnValue(1)
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
- }
-
- @Test
- void testShouldAllowSecuredMethodCallWithProcedureReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(true);
-
- var actual = this.dummyClass.methodWithProcedureReturnValue(1);
-
- assertThat(actual).isNotNull();
+ @FormSecuredResult
+ public Patient methodWithPatientReturnValue(int id) {
+ var patient = new Patient(this.onkostarApi);
+ patient.setId(id);
+ return patient;
}
- private static class DummyClass {
-
- private final IOnkostarApi onkostarApi;
-
- DummyClass(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
-
- @FormSecured
- public void methodWithPatientParam(Patient patient) {
- this.onkostarApi.savePatient(patient);
- }
-
- @FormSecured
- public void methodWithProcedureParam(Procedure procedure) throws Exception {
- this.onkostarApi.saveProcedure(procedure, false);
- }
-
- @FormSecuredResult
- public Patient methodWithPatientReturnValue(int id) {
- var patient = new Patient(this.onkostarApi);
- patient.setId(id);
- return patient;
- }
-
- @FormSecuredResult
- public Procedure methodWithProcedureReturnValue(int id) {
- var procedure = new Procedure(this.onkostarApi);
- procedure.setId(id);
- return procedure;
- }
+ @FormSecuredResult
+ public Procedure methodWithProcedureReturnValue(int id) {
+ var procedure = new Procedure(this.onkostarApi);
+ procedure.setId(id);
+ return procedure;
}
-
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java
index 1390b76..01e3399 100644
--- a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java
+++ b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java
@@ -19,9 +19,16 @@
package dev.dnpm.oshelper.security;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
+import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -29,151 +36,177 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.core.Authentication;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
-
@ExtendWith(MockitoExtension.class)
class PersonPoolBasedPermissionEvaluatorTest {
- private IOnkostarApi onkostarApi;
-
- private Authentication dummyAuthentication;
-
- private PersonPoolBasedPermissionEvaluator permissionEvaluator;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock SecurityService securityService,
- @Mock DummyAuthentication dummyAuthentication
- ) {
- this.onkostarApi = onkostarApi;
- this.dummyAuthentication = dummyAuthentication;
-
- this.permissionEvaluator = new PersonPoolBasedPermissionEvaluator(
- onkostarApi, securityService
- );
-
- when(securityService.getPersonPoolIdsForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("Pool2", "Pool3", "Pool5"));
- }
-
- @Test
- void testShouldGrantPermissionByPatientObject() {
- var object = new Patient(onkostarApi);
- object.setPersonPoolCode("Pool2");
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldGrantPermissionByPatientIdAndType() {
- doAnswer(invocationOnMock -> {
- var object = new Patient(onkostarApi);
- object.setPersonPoolCode("Pool2");
- return object;
- }).when(onkostarApi).getPatient(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PATIENT, PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldDenyPermissionByPatientObject() {
- var object = new Patient(onkostarApi);
- object.setPersonPoolCode("Pool1");
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldDenyPermissionByPatientIdAndType() {
- doAnswer(invocationOnMock -> {
- var object = new Patient(onkostarApi);
- object.setPersonPoolCode("Pool1");
- return object;
- }).when(onkostarApi).getPatient(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PATIENT, PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldGrantPermissionByProcedureObject() {
- var patient = new Patient(onkostarApi);
- patient.setId(1);
- patient.setPersonPoolCode("Pool2");
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
- object.setPatient(patient);
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldGrantPermissionByProcedureIdAndType() {
- doAnswer(invocationOnMock -> {
- var patient = new Patient(onkostarApi);
- patient.setId(1);
- patient.setPersonPoolCode("Pool2");
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
- object.setPatient(patient);
-
- return object;
- }).when(onkostarApi).getProcedure(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 456, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
-
- assertThat(actual).isTrue();
- }
-
- @Test
- void testShouldDenyPermissionByProcedureObject() {
- var patient = new Patient(onkostarApi);
- patient.setId(1);
- patient.setPersonPoolCode("Pool1");
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
- object.setPatient(patient);
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
- @Test
- void testShouldDenyPermissionByProcedureIdAndType() {
- doAnswer(invocationOnMock -> {
- var patient = new Patient(onkostarApi);
- patient.setId(1);
- patient.setPersonPoolCode("Pool1");
-
- var object = new Procedure(onkostarApi);
- object.setFormName("OS.Form1");
- object.setPatient(patient);
-
- return object;
- }).when(onkostarApi).getProcedure(anyInt());
-
- var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
-
- assertThat(actual).isFalse();
- }
-
-} \ No newline at end of file
+ private IOnkostarApi onkostarApi;
+
+ private Authentication dummyAuthentication;
+
+ private PersonPoolBasedPermissionEvaluator permissionEvaluator;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock SecurityService securityService,
+ @Mock DummyAuthentication dummyAuthentication) {
+ this.onkostarApi = onkostarApi;
+ this.dummyAuthentication = dummyAuthentication;
+
+ this.permissionEvaluator = new PersonPoolBasedPermissionEvaluator(onkostarApi, securityService);
+
+ when(securityService.getPersonPoolIdsForPermission(
+ any(Authentication.class), any(PermissionType.class)))
+ .thenReturn(List.of("Pool2", "Pool3", "Pool5"));
+ }
+
+ @Test
+ void testShouldGrantPermissionByPatientObject() {
+ var object = new Patient(onkostarApi);
+ object.setPersonPoolCode("Pool2");
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldGrantPermissionByPatientIdAndType() {
+ doAnswer(
+ invocationOnMock -> {
+ var object = new Patient(onkostarApi);
+ object.setPersonPoolCode("Pool2");
+ return object;
+ })
+ .when(onkostarApi)
+ .getPatient(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ PersonPoolBasedPermissionEvaluator.PATIENT,
+ PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldDenyPermissionByPatientObject() {
+ var object = new Patient(onkostarApi);
+ object.setPersonPoolCode("Pool1");
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldDenyPermissionByPatientIdAndType() {
+ doAnswer(
+ invocationOnMock -> {
+ var object = new Patient(onkostarApi);
+ object.setPersonPoolCode("Pool1");
+ return object;
+ })
+ .when(onkostarApi)
+ .getPatient(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ PersonPoolBasedPermissionEvaluator.PATIENT,
+ PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldGrantPermissionByProcedureObject() {
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+ patient.setPersonPoolCode("Pool2");
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+ object.setPatient(patient);
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldGrantPermissionByProcedureIdAndType() {
+ doAnswer(
+ invocationOnMock -> {
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+ patient.setPersonPoolCode("Pool2");
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+ object.setPatient(patient);
+
+ return object;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 456,
+ PersonPoolBasedPermissionEvaluator.PROCEDURE,
+ PermissionType.READ);
+
+ assertThat(actual).isTrue();
+ }
+
+ @Test
+ void testShouldDenyPermissionByProcedureObject() {
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+ patient.setPersonPoolCode("Pool1");
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+ object.setPatient(patient);
+
+ var actual =
+ permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
+
+ @Test
+ void testShouldDenyPermissionByProcedureIdAndType() {
+ doAnswer(
+ invocationOnMock -> {
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+ patient.setPersonPoolCode("Pool1");
+
+ var object = new Procedure(onkostarApi);
+ object.setFormName("OS.Form1");
+ object.setPatient(patient);
+
+ return object;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ var actual =
+ permissionEvaluator.hasPermission(
+ this.dummyAuthentication,
+ 123,
+ PersonPoolBasedPermissionEvaluator.PROCEDURE,
+ PermissionType.READ);
+
+ assertThat(actual).isFalse();
+ }
+}
diff --git a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspectsTest.java b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspectsTest.java
index 4f03a64..cf7706c 100644
--- a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspectsTest.java
+++ b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedSecurityAspectsTest.java
@@ -19,6 +19,10 @@
package dev.dnpm.oshelper.security;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
@@ -29,154 +33,153 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.aop.aspectj.annotation.AspectJProxyFactory;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class PersonPoolBasedSecurityAspectsTest {
- private DummyClass dummyClass;
-
- private IOnkostarApi onkostarApi;
-
- private PersonPoolBasedPermissionEvaluator permissionEvaluator;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock PersonPoolBasedPermissionEvaluator permissionEvaluator
- ) {
- this.onkostarApi = onkostarApi;
- this.permissionEvaluator = permissionEvaluator;
-
- // Create proxied instance of DummyClass as done within Onkostar using Spring AOP
- var dummyClass = new DummyClass(onkostarApi);
- AspectJProxyFactory factory = new AspectJProxyFactory(dummyClass);
- PersonPoolBasedSecurityAspects securityAspects = new PersonPoolBasedSecurityAspects(this.permissionEvaluator);
- factory.addAspect(securityAspects);
- this.dummyClass = factory.getProxy();
+ private DummyClass dummyClass;
+
+ private IOnkostarApi onkostarApi;
+
+ private PersonPoolBasedPermissionEvaluator permissionEvaluator;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock PersonPoolBasedPermissionEvaluator permissionEvaluator) {
+ this.onkostarApi = onkostarApi;
+ this.permissionEvaluator = permissionEvaluator;
+
+ // Create proxied instance of DummyClass as done within Onkostar using Spring AOP
+ var dummyClass = new DummyClass(onkostarApi);
+ AspectJProxyFactory factory = new AspectJProxyFactory(dummyClass);
+ PersonPoolBasedSecurityAspects securityAspects =
+ new PersonPoolBasedSecurityAspects(this.permissionEvaluator);
+ factory.addAspect(securityAspects);
+ this.dummyClass = factory.getProxy();
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithPatientParam() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(
+ Exception.class,
+ () -> this.dummyClass.methodWithPatientParam(new Patient(onkostarApi)));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithPatientParam() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ this.dummyClass.methodWithPatientParam(new Patient(onkostarApi));
+
+ verify(onkostarApi, times(1)).savePatient(any(Patient.class));
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithProcedureParam() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(
+ Exception.class,
+ () -> this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi)));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithProcedureParam() throws Exception {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi));
+
+ verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithPatientReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(Exception.class, () -> this.dummyClass.methodWithPatientReturnValue(1));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithPatientReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Patient.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ var actual = this.dummyClass.methodWithPatientReturnValue(1);
+
+ assertThat(actual).isNotNull();
+ }
+
+ @Test
+ void testShouldPreventSecuredMethodCallWithProcedureReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(false);
+
+ var exception =
+ assertThrows(Exception.class, () -> this.dummyClass.methodWithProcedureReturnValue(1));
+ assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ }
+
+ @Test
+ void testShouldAllowSecuredMethodCallWithProcedureReturnValue() {
+ when(this.permissionEvaluator.hasPermission(
+ any(), any(Procedure.class), any(PermissionType.class)))
+ .thenReturn(true);
+
+ var actual = this.dummyClass.methodWithProcedureReturnValue(1);
+
+ assertThat(actual).isNotNull();
+ }
+
+ private static class DummyClass {
+
+ private final IOnkostarApi onkostarApi;
+
+ DummyClass(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
}
- @Test
- void testShouldPreventSecuredMethodCallWithPatientParam() {
- when(this.permissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithPatientParam(new Patient(onkostarApi))
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ @PersonPoolSecured
+ public void methodWithPatientParam(Patient patient) {
+ this.onkostarApi.savePatient(patient);
}
- @Test
- void testShouldAllowSecuredMethodCallWithPatientParam() {
- when(this.permissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(true);
-
- this.dummyClass.methodWithPatientParam(new Patient(onkostarApi));
-
- verify(onkostarApi, times(1)).savePatient(any(Patient.class));
+ @PersonPoolSecured
+ public void methodWithProcedureParam(Procedure procedure) throws Exception {
+ this.onkostarApi.saveProcedure(procedure, false);
}
- @Test
- void testShouldPreventSecuredMethodCallWithProcedureParam() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi))
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
+ @PersonPoolSecuredResult
+ public Patient methodWithPatientReturnValue(int id) {
+ var patient = new Patient(this.onkostarApi);
+ patient.setId(id);
+ return patient;
}
- @Test
- void testShouldAllowSecuredMethodCallWithProcedureParam() throws Exception {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(true);
-
- this.dummyClass.methodWithProcedureParam(new Procedure(onkostarApi));
-
- verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean());
+ @PersonPoolSecuredResult
+ public Procedure methodWithProcedureReturnValue(int id) {
+ var procedure = new Procedure(this.onkostarApi);
+ procedure.setId(id);
+ return procedure;
}
-
- @Test
- void testShouldPreventSecuredMethodCallWithPatientReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithPatientReturnValue(1)
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
- }
-
- @Test
- void testShouldAllowSecuredMethodCallWithPatientReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class)))
- .thenReturn(true);
-
- var actual = this.dummyClass.methodWithPatientReturnValue(1);
-
- assertThat(actual).isNotNull();
- }
-
- @Test
- void testShouldPreventSecuredMethodCallWithProcedureReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(false);
-
- var exception = assertThrows(
- Exception.class,
- () -> this.dummyClass.methodWithProcedureReturnValue(1)
- );
- assertThat(exception).isExactlyInstanceOf(IllegalSecuredObjectAccessException.class);
- }
-
- @Test
- void testShouldAllowSecuredMethodCallWithProcedureReturnValue() {
- when(this.permissionEvaluator.hasPermission(any(), any(Procedure.class), any(PermissionType.class)))
- .thenReturn(true);
-
- var actual = this.dummyClass.methodWithProcedureReturnValue(1);
-
- assertThat(actual).isNotNull();
- }
-
- private static class DummyClass {
-
- private final IOnkostarApi onkostarApi;
-
- DummyClass(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
-
- @PersonPoolSecured
- public void methodWithPatientParam(Patient patient) {
- this.onkostarApi.savePatient(patient);
- }
-
- @PersonPoolSecured
- public void methodWithProcedureParam(Procedure procedure) throws Exception {
- this.onkostarApi.saveProcedure(procedure, false);
- }
-
- @PersonPoolSecuredResult
- public Patient methodWithPatientReturnValue(int id) {
- var patient = new Patient(this.onkostarApi);
- patient.setId(id);
- return patient;
- }
-
- @PersonPoolSecuredResult
- public Procedure methodWithProcedureReturnValue(int id) {
- var procedure = new Procedure(this.onkostarApi);
- procedure.setId(id);
- return procedure;
- }
- }
-
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/SettingsServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/SettingsServiceTest.java
index f0c53de..ce085eb 100644
--- a/src/test/java/dev/dnpm/oshelper/services/SettingsServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/SettingsServiceTest.java
@@ -19,6 +19,10 @@
package dev.dnpm.oshelper.services;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.doAnswer;
+
import de.itc.db.dnpm.Setting;
import dev.dnpm.oshelper.database.SettingsRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -27,55 +31,50 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.doAnswer;
-
@ExtendWith(MockitoExtension.class)
class SettingsServiceTest {
- private SettingsRepository settingsRepository;
+ private SettingsRepository settingsRepository;
- private SettingsService service;
+ private SettingsService service;
- @BeforeEach
- void setUp(
- @Mock SettingsRepository settingsRepository
- ) {
- this.settingsRepository = settingsRepository;
- this.service = new SettingsService(settingsRepository);
- }
+ @BeforeEach
+ void setUp(@Mock SettingsRepository settingsRepository) {
+ this.settingsRepository = settingsRepository;
+ this.service = new SettingsService(settingsRepository);
+ }
- @Test
- void shouldReturnSID() {
- doAnswer(invocationOnMock -> {
- var name = invocationOnMock.getArgument(0, String.class);
- if (null != name && name.equals("SID")) {
+ @Test
+ void shouldReturnSID() {
+ doAnswer(
+ invocationOnMock -> {
+ var name = invocationOnMock.getArgument(0, String.class);
+ if (null != name && name.equals("SID")) {
return new Setting(1L, "SID", "12345");
- }
- return null;
- }).when(settingsRepository).findByName(anyString());
+ }
+ return null;
+ })
+ .when(settingsRepository)
+ .findByName(anyString());
- var actual = service.getSID();
- assertThat(actual)
- .isPresent()
- .contains("12345");
- }
+ var actual = service.getSID();
+ assertThat(actual).isPresent().contains("12345");
+ }
- @Test
- void shouldReturnSIDByName() {
- doAnswer(invocationOnMock -> {
- var name = invocationOnMock.getArgument(0, String.class);
- if (null != name && name.equals("SID")) {
+ @Test
+ void shouldReturnSIDByName() {
+ doAnswer(
+ invocationOnMock -> {
+ var name = invocationOnMock.getArgument(0, String.class);
+ if (null != name && name.equals("SID")) {
return new Setting(1L, "SID", "12345");
- }
- return null;
- }).when(settingsRepository).findByName(anyString());
-
- var actual = service.getSetting("SID");
- assertThat(actual)
- .isPresent()
- .contains("12345");
- }
+ }
+ return null;
+ })
+ .when(settingsRepository)
+ .findByName(anyString());
+ var actual = service.getSetting("SID");
+ assertThat(actual).isPresent().contains("12345");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/StudieTest.java b/src/test/java/dev/dnpm/oshelper/services/StudieTest.java
index f8d64c2..b65760a 100644
--- a/src/test/java/dev/dnpm/oshelper/services/StudieTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/StudieTest.java
@@ -19,56 +19,32 @@
package dev.dnpm.oshelper.services;
+import static org.assertj.core.api.Assertions.assertThat;
+
import dev.dnpm.oshelper.dto.Studie;
import org.junit.jupiter.api.Test;
-import static org.assertj.core.api.Assertions.assertThat;
-
class StudieTest {
- @Test
- void shouldDetectStudieWithNctNumber() {
- var studie = new Studie(
- "Kat 1",
- 1,
- null,
- "Nct-12345678",
- "Teststudie 1",
- "Teststudie 1",
- true
- );
-
- assertThat(studie.getType()).isEqualTo(Studie.Type.NCT);
- }
+ @Test
+ void shouldDetectStudieWithNctNumber() {
+ var studie = new Studie("Kat 1", 1, null, "Nct-12345678", "Teststudie 1", "Teststudie 1", true);
- @Test
- void shouldDetectStudieWithEudraCtNumber() {
- var studie = new Studie(
- "Kat 1",
- 1,
- null,
- "2023-012345-12",
- "Teststudie 1",
- "Teststudie 1",
- true
- );
+ assertThat(studie.getType()).isEqualTo(Studie.Type.NCT);
+ }
- assertThat(studie.getType()).isEqualTo(Studie.Type.EUDRA_CT);
- }
+ @Test
+ void shouldDetectStudieWithEudraCtNumber() {
+ var studie =
+ new Studie("Kat 1", 1, null, "2023-012345-12", "Teststudie 1", "Teststudie 1", true);
- @Test
- void shouldReturnStudieWithUnknownNumberScheme() {
- var studie = new Studie(
- "Kat 1",
- 1,
- "teststudie1",
- null,
- "Teststudie 1",
- "Teststudie 1",
- true
- );
+ assertThat(studie.getType()).isEqualTo(Studie.Type.EUDRA_CT);
+ }
- assertThat(studie.getType()).isEqualTo(Studie.Type.UNKNOWN);
- }
+ @Test
+ void shouldReturnStudieWithUnknownNumberScheme() {
+ var studie = new Studie("Kat 1", 1, "teststudie1", null, "Teststudie 1", "Teststudie 1", true);
+ assertThat(studie.getType()).isEqualTo(Studie.Type.UNKNOWN);
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactoryTest.java b/src/test/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactoryTest.java
index 57e505b..7d086de 100644
--- a/src/test/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactoryTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactoryTest.java
@@ -19,7 +19,13 @@
package dev.dnpm.oshelper.services.consent;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
import de.itc.onkostar.api.IOnkostarApi;
+import java.util.Map;
+import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
@@ -27,43 +33,33 @@ import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.Map;
-import java.util.Set;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
-
@ExtendWith(MockitoExtension.class)
class ConsentManagerServiceFactoryTest {
- private IOnkostarApi onkostarApi;
-
- private ConsentManagerServiceFactory consentManagerServiceFactory;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.consentManagerServiceFactory = new ConsentManagerServiceFactory(onkostarApi);
- }
+ private ConsentManagerServiceFactory consentManagerServiceFactory;
- private static Set<Map.Entry<String, Class<? extends ConsentManagerService>>> expectedMappings() {
- return Map.ofEntries(
- Map.entry("MR.Consent", MrConsentManagerService.class),
- Map.entry("Excel-Formular", UkwConsentManagerService.class)
- ).entrySet();
- }
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.consentManagerServiceFactory = new ConsentManagerServiceFactory(onkostarApi);
+ }
- @ParameterizedTest
- @MethodSource("expectedMappings")
- void testShouldMapFormNameToService(Map.Entry<String, Class<?>> expectedMapping) {
- when(onkostarApi.getGlobalSetting(anyString())).thenReturn(expectedMapping.getKey());
+ private static Set<Map.Entry<String, Class<? extends ConsentManagerService>>> expectedMappings() {
+ return Map.ofEntries(
+ Map.entry("MR.Consent", MrConsentManagerService.class),
+ Map.entry("Excel-Formular", UkwConsentManagerService.class))
+ .entrySet();
+ }
- var actual = consentManagerServiceFactory.currentUsableInstance();
+ @ParameterizedTest
+ @MethodSource("expectedMappings")
+ void testShouldMapFormNameToService(Map.Entry<String, Class<?>> expectedMapping) {
+ when(onkostarApi.getGlobalSetting(anyString())).thenReturn(expectedMapping.getKey());
- assertThat(actual).isExactlyInstanceOf(expectedMapping.getValue());
- }
+ var actual = consentManagerServiceFactory.currentUsableInstance();
+ assertThat(actual).isExactlyInstanceOf(expectedMapping.getValue());
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/consent/MrConsentManagerServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/consent/MrConsentManagerServiceTest.java
index 12b9208..b747987 100644
--- a/src/test/java/dev/dnpm/oshelper/services/consent/MrConsentManagerServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/consent/MrConsentManagerServiceTest.java
@@ -19,6 +19,9 @@
package dev.dnpm.oshelper.services.consent;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import org.hibernate.SQLQuery;
@@ -32,47 +35,42 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class MrConsentManagerServiceTest {
- private IOnkostarApi onkostarApi;
-
- private MrConsentManagerService service;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.service = new MrConsentManagerService(onkostarApi);
- }
+ private MrConsentManagerService service;
- @Test
- void testShouldCreateSqlQueriesWithRelatedEntityIds() {
- var sessionFactory = mock(SessionFactory.class);
- var session = mock(Session.class);
- var query = mock(SQLQuery.class);
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.service = new MrConsentManagerService(onkostarApi);
+ }
- when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
- when(sessionFactory.getCurrentSession()).thenReturn(session);
- when(session.createSQLQuery(anyString())).thenReturn(query);
- when(query.addScalar(anyString(), any(Type.class))).thenReturn(query);
- when(query.uniqueResult()).thenReturn("");
+ @Test
+ void testShouldCreateSqlQueriesWithRelatedEntityIds() {
+ var sessionFactory = mock(SessionFactory.class);
+ var session = mock(Session.class);
+ var query = mock(SQLQuery.class);
- var dummyProzedur = new Procedure(this.onkostarApi);
- dummyProzedur.setId(111);
- dummyProzedur.setPatientId(123);
+ when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory);
+ when(sessionFactory.getCurrentSession()).thenReturn(session);
+ when(session.createSQLQuery(anyString())).thenReturn(query);
+ when(query.addScalar(anyString(), any(Type.class))).thenReturn(query);
+ when(query.uniqueResult()).thenReturn("");
- this.service.applyConsent(dummyProzedur);
+ var dummyProzedur = new Procedure(this.onkostarApi);
+ dummyProzedur.setId(111);
+ dummyProzedur.setPatientId(123);
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(session, times(2)).createSQLQuery(argumentCaptor.capture());
- assertThat(argumentCaptor.getAllValues()).hasSize(2);
- assertThat(argumentCaptor.getAllValues().get(0)).contains("where entity_id = '111'");
- assertThat(argumentCaptor.getAllValues().get(1)).contains("WHERE patient_id = 123 AND geloescht = 0");
- }
+ this.service.applyConsent(dummyProzedur);
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(session, times(2)).createSQLQuery(argumentCaptor.capture());
+ assertThat(argumentCaptor.getAllValues()).hasSize(2);
+ assertThat(argumentCaptor.getAllValues().get(0)).contains("where entity_id = '111'");
+ assertThat(argumentCaptor.getAllValues().get(1))
+ .contains("WHERE patient_id = 123 AND geloescht = 0");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerServiceTest.java
index f21492d..e28dd64 100644
--- a/src/test/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerServiceTest.java
@@ -19,9 +19,14 @@
package dev.dnpm.oshelper.services.consent;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.sql.Date;
+import java.time.Instant;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -29,129 +34,125 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.sql.Date;
-import java.time.Instant;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class UkwConsentManagerServiceTest {
- private IOnkostarApi onkostarApi;
-
- private UkwConsentManagerService service;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.service = new UkwConsentManagerService(onkostarApi);
- }
+ private IOnkostarApi onkostarApi;
- @Test
- void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentAvailable() throws Exception {
+ private UkwConsentManagerService service;
- var excelForm = new Procedure(this.onkostarApi);
- excelForm.setId(111);
- excelForm.setPatientId(123);
- excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.service = new UkwConsentManagerService(onkostarApi);
+ }
- var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
- dnpmKlinikAnamneseForm.setId(2);
- dnpmKlinikAnamneseForm.setPatientId(123);
+ @Test
+ void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentAvailable() throws Exception {
- when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
+ var excelForm = new Procedure(this.onkostarApi);
+ excelForm.setId(111);
+ excelForm.setPatientId(123);
+ excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
- this.service.applyConsent(excelForm);
+ var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
+ dnpmKlinikAnamneseForm.setId(2);
+ dnpmKlinikAnamneseForm.setPatientId(123);
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
- }
+ when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
- @Test
- void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentDateAvailable() throws Exception {
+ this.service.applyConsent(excelForm);
- var consentSubForm = new Procedure(this.onkostarApi);
- consentSubForm.setId(1);
- consentSubForm.setPatientId(123);
- consentSubForm.setValue("status", new Item("status", "accepted"));
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+ @Test
+ void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentDateAvailable()
+ throws Exception {
- var excelForm = new Procedure(this.onkostarApi);
- excelForm.setId(111);
- excelForm.setPatientId(123);
- excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
- excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
+ var consentSubForm = new Procedure(this.onkostarApi);
+ consentSubForm.setId(1);
+ consentSubForm.setPatientId(123);
+ consentSubForm.setValue("status", new Item("status", "accepted"));
- var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
- dnpmKlinikAnamneseForm.setId(2);
- dnpmKlinikAnamneseForm.setPatientId(123);
+ var excelForm = new Procedure(this.onkostarApi);
+ excelForm.setId(111);
+ excelForm.setPatientId(123);
+ excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
+ excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
- when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
+ var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
+ dnpmKlinikAnamneseForm.setId(2);
+ dnpmKlinikAnamneseForm.setPatientId(123);
- this.service.applyConsent(excelForm);
+ when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
- }
+ this.service.applyConsent(excelForm);
- @Test
- void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentValueAvailable() throws Exception {
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
- var consentSubForm = new Procedure(this.onkostarApi);
- consentSubForm.setId(1);
- consentSubForm.setPatientId(123);
- consentSubForm.setStartDate(Date.from(Instant.parse("2023-04-03T12:00:00Z")));
- consentSubForm.setValue("datum", new Item("datum", Date.from(Instant.parse("2023-04-03T12:00:00Z"))));
+ @Test
+ void testShouldSkipUpdateRelatedDnpmKlinikAnamneseFormIfNoConsentValueAvailable()
+ throws Exception {
- var excelForm = new Procedure(this.onkostarApi);
- excelForm.setId(111);
- excelForm.setPatientId(123);
- excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
- excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
+ var consentSubForm = new Procedure(this.onkostarApi);
+ consentSubForm.setId(1);
+ consentSubForm.setPatientId(123);
+ consentSubForm.setStartDate(Date.from(Instant.parse("2023-04-03T12:00:00Z")));
+ consentSubForm.setValue(
+ "datum", new Item("datum", Date.from(Instant.parse("2023-04-03T12:00:00Z"))));
- var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
- dnpmKlinikAnamneseForm.setId(2);
- dnpmKlinikAnamneseForm.setPatientId(123);
+ var excelForm = new Procedure(this.onkostarApi);
+ excelForm.setId(111);
+ excelForm.setPatientId(123);
+ excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
+ excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
- when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
+ var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
+ dnpmKlinikAnamneseForm.setId(2);
+ dnpmKlinikAnamneseForm.setPatientId(123);
- this.service.applyConsent(excelForm);
+ when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
- verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
- }
+ this.service.applyConsent(excelForm);
- @Test
- void testShouldUpdateRelatedDnpmKlinikAnamneseFormOnFormSave() throws Exception {
+ verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean());
+ }
- var consentSubForm = new Procedure(this.onkostarApi);
- consentSubForm.setId(1);
- consentSubForm.setPatientId(123);
- consentSubForm.setStartDate(Date.from(Instant.parse("2023-04-03T12:00:00Z")));
- consentSubForm.setValue("datum", new Item("datum", Date.from(Instant.parse("2023-04-03T12:00:00Z"))));
- consentSubForm.setValue("status", new Item("status", "accepted"));
+ @Test
+ void testShouldUpdateRelatedDnpmKlinikAnamneseFormOnFormSave() throws Exception {
- var excelForm = new Procedure(this.onkostarApi);
- excelForm.setId(111);
- excelForm.setPatientId(123);
- excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
- excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
+ var consentSubForm = new Procedure(this.onkostarApi);
+ consentSubForm.setId(1);
+ consentSubForm.setPatientId(123);
+ consentSubForm.setStartDate(Date.from(Instant.parse("2023-04-03T12:00:00Z")));
+ consentSubForm.setValue(
+ "datum", new Item("datum", Date.from(Instant.parse("2023-04-03T12:00:00Z"))));
+ consentSubForm.setValue("status", new Item("status", "accepted"));
- var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
- dnpmKlinikAnamneseForm.setId(2);
- dnpmKlinikAnamneseForm.setPatientId(123);
+ var excelForm = new Procedure(this.onkostarApi);
+ excelForm.setId(111);
+ excelForm.setPatientId(123);
+ excelForm.setValue("refdnpmklinikanamnese", new Item("refdnpmklinikanamnese", 2));
+ excelForm.addSubProcedure("ufdnpmconsent", consentSubForm);
- when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
+ var dnpmKlinikAnamneseForm = new Procedure(this.onkostarApi);
+ dnpmKlinikAnamneseForm.setId(2);
+ dnpmKlinikAnamneseForm.setPatientId(123);
- this.service.applyConsent(excelForm);
+ when(onkostarApi.getProcedure(anyInt())).thenReturn(dnpmKlinikAnamneseForm);
- var argumentCaptor = ArgumentCaptor.forClass(Procedure.class);
- verify(onkostarApi, times(1)).saveProcedure(argumentCaptor.capture(), anyBoolean());
+ this.service.applyConsent(excelForm);
- var savedForm = argumentCaptor.getValue();
- assertThat(savedForm).isExactlyInstanceOf(Procedure.class);
- assertThat(savedForm.getValue("ConsentStatusEinwilligungDNPM").getString()).isEqualTo("accepted");
- assertThat(savedForm.getValue("ConsentDatumEinwilligungDNPM").getDate()).isEqualTo("2023-04-03T12:00:00Z");
- }
+ var argumentCaptor = ArgumentCaptor.forClass(Procedure.class);
+ verify(onkostarApi, times(1)).saveProcedure(argumentCaptor.capture(), anyBoolean());
+ var savedForm = argumentCaptor.getValue();
+ assertThat(savedForm).isExactlyInstanceOf(Procedure.class);
+ assertThat(savedForm.getValue("ConsentStatusEinwilligungDNPM").getString())
+ .isEqualTo("accepted");
+ assertThat(savedForm.getValue("ConsentDatumEinwilligungDNPM").getDate())
+ .isEqualTo("2023-04-03T12:00:00Z");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekluargenetikFormServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekluargenetikFormServiceTest.java
index 61f82fa..5182160 100644
--- a/src/test/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekluargenetikFormServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekluargenetikFormServiceTest.java
@@ -19,50 +19,49 @@
package dev.dnpm.oshelper.services.molekulargenetik;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import static org.assertj.core.api.Assertions.assertThat;
-
class OsMolekluargenetikFormServiceTest {
- private OsMolekulargenetikFormService service;
-
- @BeforeEach
- void setup() {
- this.service = new OsMolekulargenetikFormService();
- }
+ private OsMolekulargenetikFormService service;
- @Test
- void testShouldReturnVariants() {
+ @BeforeEach
+ void setup() {
+ this.service = new OsMolekulargenetikFormService();
+ }
- var procedure = new Procedure(null);
- procedure.setId(123);
- procedure.setFormName("OS.Molekulargenetik");
+ @Test
+ void testShouldReturnVariants() {
- var subProcedure1 = new Procedure(null);
- subProcedure1.setId(1123);
- subProcedure1.setFormName("OS.Molekulargenetische Untersuchung");
- subProcedure1.setValue("Ergebnis", new Item("Ergebnis", "P"));
- subProcedure1.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- subProcedure1.setValue("ExonInt", new Item("ExonInt", 123));
- subProcedure1.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
- procedure.addSubProcedure("MolekulargenetischeUntersuchung", subProcedure1);
+ var procedure = new Procedure(null);
+ procedure.setId(123);
+ procedure.setFormName("OS.Molekulargenetik");
- var subProcedure2 = new Procedure(null);
- subProcedure2.setId(2123);
- subProcedure2.setFormName("OS.Molekulargenetische Untersuchung");
- subProcedure2.setValue("Ergebnis", new Item("Ergebnis", "CNV"));
- subProcedure2.setValue("Untersucht", new Item("Untersucht", "BRAF"));
- subProcedure2.setValue("ExonInt", new Item("ExonInt", 123));
- subProcedure2.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
- procedure.addSubProcedure("MolekulargenetischeUntersuchung", subProcedure2);
+ var subProcedure1 = new Procedure(null);
+ subProcedure1.setId(1123);
+ subProcedure1.setFormName("OS.Molekulargenetische Untersuchung");
+ subProcedure1.setValue("Ergebnis", new Item("Ergebnis", "P"));
+ subProcedure1.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ subProcedure1.setValue("ExonInt", new Item("ExonInt", 123));
+ subProcedure1.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+ procedure.addSubProcedure("MolekulargenetischeUntersuchung", subProcedure1);
- var actual = service.getVariants(procedure);
+ var subProcedure2 = new Procedure(null);
+ subProcedure2.setId(2123);
+ subProcedure2.setFormName("OS.Molekulargenetische Untersuchung");
+ subProcedure2.setValue("Ergebnis", new Item("Ergebnis", "CNV"));
+ subProcedure2.setValue("Untersucht", new Item("Untersucht", "BRAF"));
+ subProcedure2.setValue("ExonInt", new Item("ExonInt", 123));
+ subProcedure2.setValue("Pathogenitaetsklasse", new Item("Pathogenitaetsklasse", "2"));
+ procedure.addSubProcedure("MolekulargenetischeUntersuchung", subProcedure2);
- assertThat(actual).hasSize(2);
- }
+ var actual = service.getVariants(procedure);
+ assertThat(actual).hasSize(2);
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapperTest.java b/src/test/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapperTest.java
index 405853c..b8e43b3 100644
--- a/src/test/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapperTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapperTest.java
@@ -19,140 +19,141 @@
package dev.dnpm.oshelper.services.mtb;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.Set;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doAnswer;
-
@ExtendWith(MockitoExtension.class)
class MrMtbAnmeldungToProtocolMapperTest {
- private IOnkostarApi onkostarApi;
-
- private MrMtbAnmeldungToProtocolMapper mapper;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.mapper = new MrMtbAnmeldungToProtocolMapper(onkostarApi);
- }
-
- @Test
- void testShouldMapCompletedForm() {
- var anmeldung = new Procedure(onkostarApi);
- anmeldung.setId(1);
- anmeldung.setFormName("MR.MTB_Anmeldung");
- anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
- anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
-
- var empfehlung = new Procedure(onkostarApi);
- empfehlung.setId(2);
- empfehlung.setFormName("MR.MTB_Empfehlung");
-
- var einzelempfehlung1 = new Procedure(onkostarApi);
- einzelempfehlung1.setId(10);
- einzelempfehlung1.setFormName("MR.MTB_Einzelempfehlung");
- einzelempfehlung1.setValue("Prioritaet", new Item("Empfehlungsprio", 1));
- einzelempfehlung1.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung1"));
-
- var einzelempfehlung2 = new Procedure(onkostarApi);
- einzelempfehlung2.setId(20);
- einzelempfehlung2.setFormName("MR.MTB_Einzelempfehlung");
- einzelempfehlung2.setValue("Prioritaet", new Item("Empfehlungsprio", 2));
- einzelempfehlung2.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung2"));
-
- doAnswer(invocationOnMock -> {
- var procedureId = invocationOnMock.getArgument(0, Integer.class);
- if (2 == procedureId) {
+ private IOnkostarApi onkostarApi;
+
+ private MrMtbAnmeldungToProtocolMapper mapper;
+
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.mapper = new MrMtbAnmeldungToProtocolMapper(onkostarApi);
+ }
+
+ @Test
+ void testShouldMapCompletedForm() {
+ var anmeldung = new Procedure(onkostarApi);
+ anmeldung.setId(1);
+ anmeldung.setFormName("MR.MTB_Anmeldung");
+ anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
+ anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
+
+ var empfehlung = new Procedure(onkostarApi);
+ empfehlung.setId(2);
+ empfehlung.setFormName("MR.MTB_Empfehlung");
+
+ var einzelempfehlung1 = new Procedure(onkostarApi);
+ einzelempfehlung1.setId(10);
+ einzelempfehlung1.setFormName("MR.MTB_Einzelempfehlung");
+ einzelempfehlung1.setValue("Prioritaet", new Item("Empfehlungsprio", 1));
+ einzelempfehlung1.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung1"));
+
+ var einzelempfehlung2 = new Procedure(onkostarApi);
+ einzelempfehlung2.setId(20);
+ einzelempfehlung2.setFormName("MR.MTB_Einzelempfehlung");
+ einzelempfehlung2.setValue("Prioritaet", new Item("Empfehlungsprio", 2));
+ einzelempfehlung2.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung2"));
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedureId = invocationOnMock.getArgument(0, Integer.class);
+ if (2 == procedureId) {
return empfehlung;
- } else if (10 == procedureId) {
+ } else if (10 == procedureId) {
return einzelempfehlung1;
- } else if (20 == procedureId) {
+ } else if (20 == procedureId) {
return einzelempfehlung2;
- }
- return null;
- }).when(onkostarApi).getProcedure(anyInt());
-
- doAnswer(invocationOnMock -> {
- var procedureId = invocationOnMock.getArgument(0, Integer.class);
- if (2 == procedureId) {
+ }
+ return null;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedureId = invocationOnMock.getArgument(0, Integer.class);
+ if (2 == procedureId) {
return Set.of(einzelempfehlung1, einzelempfehlung2);
- }
- return null;
- }).when(onkostarApi).getSubprocedures(anyInt());
-
- var actual = this.mapper.apply(anmeldung);
-
- assertThat(actual)
- .isPresent()
- .contains(
- "Fragestellung:\nFrage?\n\n"
- + "Empfehlung:\nEmpfehlung1\n\n"
- + "Empfehlung:\nEmpfehlung2"
- );
- }
-
- @Test
- void testShouldMapFormWithMissingEinzelempfehlungen() {
- var anmeldung = new Procedure(onkostarApi);
- anmeldung.setId(1);
- anmeldung.setFormName("MR.MTB_Anmeldung");
- anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
- anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
-
- var empfehlung = new Procedure(onkostarApi);
- empfehlung.setId(2);
- empfehlung.setFormName("MR.MTB_Empfehlung");
-
- doAnswer(invocationOnMock -> {
- var procedureId = invocationOnMock.getArgument(0, Integer.class);
- if (2 == procedureId) {
+ }
+ return null;
+ })
+ .when(onkostarApi)
+ .getSubprocedures(anyInt());
+
+ var actual = this.mapper.apply(anmeldung);
+
+ assertThat(actual)
+ .isPresent()
+ .contains(
+ "Fragestellung:\nFrage?\n\n"
+ + "Empfehlung:\nEmpfehlung1\n\n"
+ + "Empfehlung:\nEmpfehlung2");
+ }
+
+ @Test
+ void testShouldMapFormWithMissingEinzelempfehlungen() {
+ var anmeldung = new Procedure(onkostarApi);
+ anmeldung.setId(1);
+ anmeldung.setFormName("MR.MTB_Anmeldung");
+ anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
+ anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
+
+ var empfehlung = new Procedure(onkostarApi);
+ empfehlung.setId(2);
+ empfehlung.setFormName("MR.MTB_Empfehlung");
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedureId = invocationOnMock.getArgument(0, Integer.class);
+ if (2 == procedureId) {
return empfehlung;
- }
- return null;
- }).when(onkostarApi).getProcedure(anyInt());
+ }
+ return null;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
- var actual = this.mapper.apply(anmeldung);
+ var actual = this.mapper.apply(anmeldung);
- assertThat(actual)
- .isPresent()
- .contains("Fragestellung:\nFrage?");
- }
+ assertThat(actual).isPresent().contains("Fragestellung:\nFrage?");
+ }
- @Test
- void testShouldMapFormWithMissingEmpfehlung() {
- var anmeldung = new Procedure(onkostarApi);
- anmeldung.setId(1);
- anmeldung.setFormName("MR.MTB_Anmeldung");
- anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
+ @Test
+ void testShouldMapFormWithMissingEmpfehlung() {
+ var anmeldung = new Procedure(onkostarApi);
+ anmeldung.setId(1);
+ anmeldung.setFormName("MR.MTB_Anmeldung");
+ anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
- var actual = this.mapper.apply(anmeldung);
+ var actual = this.mapper.apply(anmeldung);
- assertThat(actual)
- .isPresent()
- .contains("Fragestellung:\nFrage?");
- }
+ assertThat(actual).isPresent().contains("Fragestellung:\nFrage?");
+ }
- @Test
- void testShouldMapFormWithMissingFragestellungAndEmpfehlung() {
- var anmeldung = new Procedure(onkostarApi);
- anmeldung.setId(1);
- anmeldung.setFormName("MR.MTB_Anmeldung");
+ @Test
+ void testShouldMapFormWithMissingFragestellungAndEmpfehlung() {
+ var anmeldung = new Procedure(onkostarApi);
+ anmeldung.setId(1);
+ anmeldung.setFormName("MR.MTB_Anmeldung");
- var actual = this.mapper.apply(anmeldung);
+ var actual = this.mapper.apply(anmeldung);
- assertThat(actual).isEmpty();
- }
+ assertThat(actual).isEmpty();
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapperTest.java b/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapperTest.java
index ac86bb6..7ab8ecf 100644
--- a/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapperTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapperTest.java
@@ -19,48 +19,44 @@
package dev.dnpm.oshelper.services.mtb;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.time.Instant;
+import java.util.Date;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.util.Date;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
@ExtendWith(MockitoExtension.class)
class OsTumorkonferenzToProtocolMapperTest {
- private IOnkostarApi onkostarApi;
-
- private OsTumorkonferenzToProtocolMapper mapper;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.mapper = new OsTumorkonferenzToProtocolMapper();
- }
+ private OsTumorkonferenzToProtocolMapper mapper;
- @Test
- void testShouldReturnMtbProtocolForDefaultImplementation() {
- var procedure = new Procedure(onkostarApi);
- procedure.setFormName("OS.Tumorkonferenz");
- procedure.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z")));
- procedure.setValue("Fragestellung", new Item("Fragestellung", "Test ok?"));
- procedure.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!"));
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.mapper = new OsTumorkonferenzToProtocolMapper();
+ }
- var actual = mapper.apply(procedure);
+ @Test
+ void testShouldReturnMtbProtocolForDefaultImplementation() {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setFormName("OS.Tumorkonferenz");
+ procedure.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z")));
+ procedure.setValue("Fragestellung", new Item("Fragestellung", "Test ok?"));
+ procedure.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!"));
- assertThat(actual)
- .isPresent()
- .contains("Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!");
- }
+ var actual = mapper.apply(procedure);
+ assertThat(actual)
+ .isPresent()
+ .contains("Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapperTest.java b/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapperTest.java
index ba606ae..0c10371 100644
--- a/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapperTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapperTest.java
@@ -19,48 +19,44 @@
package dev.dnpm.oshelper.services.mtb;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.time.Instant;
+import java.util.Date;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.util.Date;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
@ExtendWith(MockitoExtension.class)
class OsTumorkonferenzVarianteUkwToProtocolMapperTest {
- private IOnkostarApi onkostarApi;
-
- private OsTumorkonferenzVarianteUkwToProtocolMapper mapper;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.mapper = new OsTumorkonferenzVarianteUkwToProtocolMapper();
- }
+ private OsTumorkonferenzVarianteUkwToProtocolMapper mapper;
- @Test
- void testShouldReturnMtbProtocolForDefaultImplementation() {
- var procedure = new Procedure(onkostarApi);
- procedure.setFormName("OS.Tumorkonferenz.VarianteUKW");
- procedure.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z")));
- procedure.setValue("Fragestellung", new Item("Fragestellung", "Test ok?"));
- procedure.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!"));
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.mapper = new OsTumorkonferenzVarianteUkwToProtocolMapper();
+ }
- var actual = mapper.apply(procedure);
+ @Test
+ void testShouldReturnMtbProtocolForDefaultImplementation() {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setFormName("OS.Tumorkonferenz.VarianteUKW");
+ procedure.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z")));
+ procedure.setValue("Fragestellung", new Item("Fragestellung", "Test ok?"));
+ procedure.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!"));
- assertThat(actual)
- .isPresent()
- .contains("Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!");
- }
+ var actual = mapper.apply(procedure);
+ assertThat(actual)
+ .isPresent()
+ .contains("Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieServiceTest.java
index 8457dea..16436bd 100644
--- a/src/test/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieServiceTest.java
@@ -19,8 +19,16 @@
package dev.dnpm.oshelper.services.strahlentherapie;
-import dev.dnpm.oshelper.services.SettingsService;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.*;
+import dev.dnpm.oshelper.services.SettingsService;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -29,95 +37,95 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class DefaultStrahlentherapieServiceTest {
- private IOnkostarApi onkostarApi;
-
- private SettingsService settingsService;
-
- private DefaultStrahlentherapieService service;
-
- @BeforeEach
- void setup(@Mock IOnkostarApi onkostarApi, @Mock SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- this.service = new DefaultStrahlentherapieService(onkostarApi, settingsService);
- }
-
- @Test
- void testShouldRequestProceduresWithDefaultFormName() {
- when(this.settingsService.getSetting(anyString())).thenReturn(Optional.empty());
-
- doAnswer(invocationOnMock -> {
- var procedure = new Procedure(onkostarApi);
- procedure.setId(1);
- procedure.setFormName("OS.Strahlentherapie");
- procedure.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
- procedure.setEditState(ProcedureEditStateType.COMPLETED);
- procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
- return Lists.list(procedure);
- }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- doAnswer(invocationOnMock -> {
- var disease = new Disease(onkostarApi);
- disease.setId(1);
- disease.setPatientId(123);
- return Lists.list(disease);
- }).when(this.onkostarApi).getDiseasesByPatientId(anyInt());
-
- var patient = new Patient(onkostarApi);
- patient.setId(123);
-
- service.ecogStatus(patient);
-
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).isEqualTo("OS.Strahlentherapie");
- }
-
- @Test
- void testShouldReturnListOfEcogStatusWithDate() {
- doAnswer(invocationOnMock -> {
- var disease = new Disease(onkostarApi);
- disease.setId(1);
- return List.of(disease);
- }).when(this.onkostarApi).getDiseasesByPatientId(anyInt());
-
- doAnswer(invocationOnMock -> {
- var procedure1 = new Procedure(onkostarApi);
- procedure1.setId(1);
- procedure1.setFormName("OS.Strahlentherapie");
- procedure1.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
- procedure1.setEditState(ProcedureEditStateType.COMPLETED);
- procedure1.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- var procedure2 = new Procedure(onkostarApi);
- procedure2.setId(2);
- procedure2.setFormName("OS.Strahlentherapie");
- procedure2.setStartDate(Date.from(Instant.parse("2023-07-12T06:00:00Z")));
- procedure2.setEditState(ProcedureEditStateType.COMPLETED);
- procedure2.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 2));
- return List.of(procedure1, procedure2);
- }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var actual = service.ecogStatus(patient);
-
- assertThat(actual)
- .isNotNull()
- .isExactlyInstanceOf(ArrayList.class)
- .hasSize(2);
- }
+ private IOnkostarApi onkostarApi;
+
+ private SettingsService settingsService;
+
+ private DefaultStrahlentherapieService service;
+
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi, @Mock SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ this.service = new DefaultStrahlentherapieService(onkostarApi, settingsService);
+ }
+
+ @Test
+ void testShouldRequestProceduresWithDefaultFormName() {
+ when(this.settingsService.getSetting(anyString())).thenReturn(Optional.empty());
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setId(1);
+ procedure.setFormName("OS.Strahlentherapie");
+ procedure.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
+ procedure.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+ return Lists.list(procedure);
+ })
+ .when(this.onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ doAnswer(
+ invocationOnMock -> {
+ var disease = new Disease(onkostarApi);
+ disease.setId(1);
+ disease.setPatientId(123);
+ return Lists.list(disease);
+ })
+ .when(this.onkostarApi)
+ .getDiseasesByPatientId(anyInt());
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(123);
+
+ service.ecogStatus(patient);
+
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).isEqualTo("OS.Strahlentherapie");
+ }
+
+ @Test
+ void testShouldReturnListOfEcogStatusWithDate() {
+ doAnswer(
+ invocationOnMock -> {
+ var disease = new Disease(onkostarApi);
+ disease.setId(1);
+ return List.of(disease);
+ })
+ .when(this.onkostarApi)
+ .getDiseasesByPatientId(anyInt());
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedure1 = new Procedure(onkostarApi);
+ procedure1.setId(1);
+ procedure1.setFormName("OS.Strahlentherapie");
+ procedure1.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
+ procedure1.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure1.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ var procedure2 = new Procedure(onkostarApi);
+ procedure2.setId(2);
+ procedure2.setFormName("OS.Strahlentherapie");
+ procedure2.setStartDate(Date.from(Instant.parse("2023-07-12T06:00:00Z")));
+ procedure2.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure2.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 2));
+ return List.of(procedure1, procedure2);
+ })
+ .when(this.onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var actual = service.ecogStatus(patient);
+
+ assertThat(actual).isNotNull().isExactlyInstanceOf(ArrayList.class).hasSize(2);
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieServiceTest.java
index e8d474b..05cd535 100644
--- a/src/test/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieServiceTest.java
@@ -19,8 +19,13 @@
package dev.dnpm.oshelper.services.systemtherapie;
-import dev.dnpm.oshelper.services.SettingsService;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.*;
+import dev.dnpm.oshelper.services.SettingsService;
+import java.time.Instant;
+import java.util.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -30,121 +35,126 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.util.*;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class DefaultSystemtherapieServiceTest {
- private IOnkostarApi onkostarApi;
-
- private SettingsService settingsService;
-
- private DefaultSystemtherapieService service;
-
- @BeforeEach
- void setup(@Mock IOnkostarApi onkostarApi, @Mock SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- this.service = new DefaultSystemtherapieService(onkostarApi, settingsService);
- }
-
- private static Set<Map.Entry<String, Class<OsSystemischeTherapieToProzedurwerteMapper>>> expectedMapperMappings() {
- return Map.ofEntries(Map.entry("OS.Systemische Therapie", OsSystemischeTherapieToProzedurwerteMapper.class), Map.entry("OS.Systemische Therapie.VarianteUKW", OsSystemischeTherapieToProzedurwerteMapper.class)).entrySet();
- }
-
- @ParameterizedTest
- @MethodSource("expectedMapperMappings")
- void testShouldMapFormNameToMapper(Map.Entry<String, Class<?>> expectedMapping) {
- var procedure = new Procedure(onkostarApi);
- procedure.setFormName(expectedMapping.getKey());
-
- var actual = service.prozedurToProzedurwerteMapper(procedure);
-
- assertThat(actual).isExactlyInstanceOf(expectedMapping.getValue());
- }
-
- private static List<String> formnameSetting() {
- return List.of("OS.Systemische Therapie", "OS.Systemische Therapie.VarianteUKW");
- }
-
- @ParameterizedTest
- @MethodSource("formnameSetting")
- void testShouldRequestProceduresWithExpectedFormName(String expectedFormName) {
- when(this.settingsService.getSetting(anyString())).thenReturn(Optional.of(expectedFormName));
- when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString())).thenReturn(List.of());
-
- service.getSystemischeTherapienFromDiagnose(123);
-
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).isEqualTo(expectedFormName);
- }
-
- @Test
- void testShouldRequestProceduresWithDefaultFormName() {
- when(this.settingsService.getSetting(anyString())).thenReturn(Optional.empty());
- when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString())).thenReturn(List.of());
-
- service.getSystemischeTherapienFromDiagnose(123);
-
- var argumentCaptor = ArgumentCaptor.forClass(String.class);
- verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
- assertThat(argumentCaptor.getValue()).isEqualTo("OS.Systemische Therapie");
- }
-
- @Test
- void testShouldReturnSystemischeTherapienFromDiagnose() {
- doAnswer(invocationOnMock -> {
- var procedure = new Procedure(onkostarApi);
- procedure.setFormName("OS.Systemische Therapie");
- return List.of(procedure);
- }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- var actual = service.getSystemischeTherapienFromDiagnose(1);
-
- assertThat(actual)
- .isNotNull()
- .isExactlyInstanceOf(ArrayList.class)
- .hasSize(1);
- }
-
- @Test
- void testShouldReturnListOfEcogStatusWithDate() {
- doAnswer(invocationOnMock -> {
- var disease = new Disease(onkostarApi);
- disease.setId(1);
- return List.of(disease);
- }).when(this.onkostarApi).getDiseasesByPatientId(anyInt());
-
- doAnswer(invocationOnMock -> {
- var procedure1 = new Procedure(onkostarApi);
- procedure1.setId(1);
- procedure1.setFormName("OS.Systemische Therapie");
- procedure1.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
- procedure1.setEditState(ProcedureEditStateType.COMPLETED);
- procedure1.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
-
- var procedure2 = new Procedure(onkostarApi);
- procedure2.setId(2);
- procedure2.setFormName("OS.Systemische Therapie");
- procedure2.setStartDate(Date.from(Instant.parse("2023-07-12T06:00:00Z")));
- procedure2.setEditState(ProcedureEditStateType.COMPLETED);
- procedure2.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 2));
- return List.of(procedure1, procedure2);
- }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- var patient = new Patient(onkostarApi);
- patient.setId(1);
-
- var actual = service.ecogStatus(patient);
-
- assertThat(actual)
- .isNotNull()
- .isExactlyInstanceOf(ArrayList.class)
- .hasSize(2);
- }
+ private IOnkostarApi onkostarApi;
+
+ private SettingsService settingsService;
+
+ private DefaultSystemtherapieService service;
+
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi, @Mock SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ this.service = new DefaultSystemtherapieService(onkostarApi, settingsService);
+ }
+
+ private static Set<Map.Entry<String, Class<OsSystemischeTherapieToProzedurwerteMapper>>>
+ expectedMapperMappings() {
+ return Map.ofEntries(
+ Map.entry("OS.Systemische Therapie", OsSystemischeTherapieToProzedurwerteMapper.class),
+ Map.entry(
+ "OS.Systemische Therapie.VarianteUKW",
+ OsSystemischeTherapieToProzedurwerteMapper.class))
+ .entrySet();
+ }
+
+ @ParameterizedTest
+ @MethodSource("expectedMapperMappings")
+ void testShouldMapFormNameToMapper(Map.Entry<String, Class<?>> expectedMapping) {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setFormName(expectedMapping.getKey());
+
+ var actual = service.prozedurToProzedurwerteMapper(procedure);
+
+ assertThat(actual).isExactlyInstanceOf(expectedMapping.getValue());
+ }
+
+ private static List<String> formnameSetting() {
+ return List.of("OS.Systemische Therapie", "OS.Systemische Therapie.VarianteUKW");
+ }
+
+ @ParameterizedTest
+ @MethodSource("formnameSetting")
+ void testShouldRequestProceduresWithExpectedFormName(String expectedFormName) {
+ when(this.settingsService.getSetting(anyString())).thenReturn(Optional.of(expectedFormName));
+ when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString()))
+ .thenReturn(List.of());
+
+ service.getSystemischeTherapienFromDiagnose(123);
+
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).isEqualTo(expectedFormName);
+ }
+
+ @Test
+ void testShouldRequestProceduresWithDefaultFormName() {
+ when(this.settingsService.getSetting(anyString())).thenReturn(Optional.empty());
+ when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString()))
+ .thenReturn(List.of());
+
+ service.getSystemischeTherapienFromDiagnose(123);
+
+ var argumentCaptor = ArgumentCaptor.forClass(String.class);
+ verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
+ assertThat(argumentCaptor.getValue()).isEqualTo("OS.Systemische Therapie");
+ }
+
+ @Test
+ void testShouldReturnSystemischeTherapienFromDiagnose() {
+ doAnswer(
+ invocationOnMock -> {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setFormName("OS.Systemische Therapie");
+ return List.of(procedure);
+ })
+ .when(this.onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ var actual = service.getSystemischeTherapienFromDiagnose(1);
+
+ assertThat(actual).isNotNull().isExactlyInstanceOf(ArrayList.class).hasSize(1);
+ }
+
+ @Test
+ void testShouldReturnListOfEcogStatusWithDate() {
+ doAnswer(
+ invocationOnMock -> {
+ var disease = new Disease(onkostarApi);
+ disease.setId(1);
+ return List.of(disease);
+ })
+ .when(this.onkostarApi)
+ .getDiseasesByPatientId(anyInt());
+
+ doAnswer(
+ invocationOnMock -> {
+ var procedure1 = new Procedure(onkostarApi);
+ procedure1.setId(1);
+ procedure1.setFormName("OS.Systemische Therapie");
+ procedure1.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z")));
+ procedure1.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure1.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1));
+
+ var procedure2 = new Procedure(onkostarApi);
+ procedure2.setId(2);
+ procedure2.setFormName("OS.Systemische Therapie");
+ procedure2.setStartDate(Date.from(Instant.parse("2023-07-12T06:00:00Z")));
+ procedure2.setEditState(ProcedureEditStateType.COMPLETED);
+ procedure2.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 2));
+ return List.of(procedure1, procedure2);
+ })
+ .when(this.onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ var patient = new Patient(onkostarApi);
+ patient.setId(1);
+
+ var actual = service.ecogStatus(patient);
+
+ assertThat(actual).isNotNull().isExactlyInstanceOf(ArrayList.class).hasSize(2);
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapperTest.java b/src/test/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapperTest.java
index 6c7c532..085834f 100644
--- a/src/test/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapperTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapperTest.java
@@ -19,72 +19,72 @@
package dev.dnpm.oshelper.services.systemtherapie;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.sql.Date;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.sql.Date;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
@ExtendWith(MockitoExtension.class)
class ProzedurToProzedurwerteMapperTest {
- private IOnkostarApi onkostarApi;
-
- private OsSystemischeTherapieToProzedurwerteMapper mapper;
+ private IOnkostarApi onkostarApi;
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
- this.mapper = new OsSystemischeTherapieToProzedurwerteMapper();
- }
+ private OsSystemischeTherapieToProzedurwerteMapper mapper;
- @Test
- void testShouldReturnSystemischeTherapienFromDiagnose() {
- var procedure = new Procedure(onkostarApi);
- procedure.setFormName("OS.Systemische Therapie");
- procedure.setValue("Beginn", new Item("Beginn", Date.from(Instant.parse("2023-01-01T00:00:00Z"))));
- procedure.setValue("Ende", new Item("Ende", Date.from(Instant.parse("2023-01-31T00:00:00Z"))));
- procedure.setValue("Beendigung", new Item("Beendigungsstatus", "E"));
- procedure.setValue("Ergebnis", new Item("Ergebnis", "T"));
+ @BeforeEach
+ void setup(@Mock IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ this.mapper = new OsSystemischeTherapieToProzedurwerteMapper();
+ }
- var substanzen = new ArrayList<>();
- substanzen.add(Map.of(
- "Substanz", "Testsubstanz",
- "Substanz_shortDescription", "Testsubstanz"
- ));
- substanzen.add(Map.of(
- "Substanz", "L01AA01",
- "Substanz_shortDescription", "cyclophosphamide"
- ));
- procedure.setValue("SubstanzenList", new Item("SubstanzenList", substanzen));
+ @Test
+ void testShouldReturnSystemischeTherapienFromDiagnose() {
+ var procedure = new Procedure(onkostarApi);
+ procedure.setFormName("OS.Systemische Therapie");
+ procedure.setValue(
+ "Beginn", new Item("Beginn", Date.from(Instant.parse("2023-01-01T00:00:00Z"))));
+ procedure.setValue("Ende", new Item("Ende", Date.from(Instant.parse("2023-01-31T00:00:00Z"))));
+ procedure.setValue("Beendigung", new Item("Beendigungsstatus", "E"));
+ procedure.setValue("Ergebnis", new Item("Ergebnis", "T"));
- var actual = mapper.apply(procedure);
+ var substanzen = new ArrayList<>();
+ substanzen.add(
+ Map.of(
+ "Substanz", "Testsubstanz",
+ "Substanz_shortDescription", "Testsubstanz"));
+ substanzen.add(
+ Map.of(
+ "Substanz", "L01AA01",
+ "Substanz_shortDescription", "cyclophosphamide"));
+ procedure.setValue("SubstanzenList", new Item("SubstanzenList", substanzen));
- assertThat(actual).isPresent();
+ var actual = mapper.apply(procedure);
- assertThat(actual.get()).containsEntry("Beginn", Date.from(Instant.parse("2023-01-01T00:00:00Z")).toString());
- assertThat(actual.get()).containsEntry("Ende", Date.from(Instant.parse("2023-01-31T00:00:00Z")).toString());
- assertThat(actual.get()).containsEntry("Beendigung", "E");
- assertThat(actual.get()).containsEntry("Ergebnis", "T");
- assertThat(actual.get()).containsEntry("Wirkstoffe", "Testsubstanz, cyclophosphamide");
- assertThat(actual.get()).containsEntry("WirkstoffCodes",
- "[" +
- "{\"system\":\"other\",\"code\":\"Testsubstanz\",\"substance\":\"Testsubstanz\"}," +
- "{\"system\":\"ATC\",\"code\":\"L01AA01\",\"substance\":\"cyclophosphamide\"}" +
- "]"
- );
- }
+ assertThat(actual).isPresent();
+ assertThat(actual.get())
+ .containsEntry("Beginn", Date.from(Instant.parse("2023-01-01T00:00:00Z")).toString());
+ assertThat(actual.get())
+ .containsEntry("Ende", Date.from(Instant.parse("2023-01-31T00:00:00Z")).toString());
+ assertThat(actual.get()).containsEntry("Beendigung", "E");
+ assertThat(actual.get()).containsEntry("Ergebnis", "T");
+ assertThat(actual.get()).containsEntry("Wirkstoffe", "Testsubstanz, cyclophosphamide");
+ assertThat(actual.get())
+ .containsEntry(
+ "WirkstoffCodes",
+ "["
+ + "{\"system\":\"other\",\"code\":\"Testsubstanz\",\"substance\":\"Testsubstanz\"},"
+ + "{\"system\":\"ATC\",\"code\":\"L01AA01\",\"substance\":\"cyclophosphamide\"}"
+ + "]");
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanServiceTest.java b/src/test/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanServiceTest.java
index 18865a8..1d68e08 100644
--- a/src/test/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanServiceTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanServiceTest.java
@@ -19,11 +19,17 @@
package dev.dnpm.oshelper.services.therapieplan;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.constants.JaNeinUnbekannt;
import dev.dnpm.oshelper.services.FormService;
+import java.time.Instant;
+import java.util.Date;
+import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -31,158 +37,166 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.time.Instant;
-import java.util.Date;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
@ExtendWith(MockitoExtension.class)
class DefaultTherapieplanServiceTest {
- private IOnkostarApi onkostarApi;
-
- private TherapieplanService service;
-
- @BeforeEach
- void setUp(
- @Mock IOnkostarApi onkostarApi,
- @Mock FormService formService
- ) {
- this.onkostarApi = onkostarApi;
- this.service = new DefaultTherapieplanService(onkostarApi, formService);
- }
-
- @Test
- void shouldNotUpdateSubformsOrSectionsIfMultipleMtbConfiguration() throws Exception {
- this.service.updateRequiredMtbEntries(new Procedure(onkostarApi));
- verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void shouldNotUpdateSectionsIfSectionsNotEnabled() throws Exception {
- var testProcedure = baseProcedure(onkostarApi);
-
- // Keine humangenetische Beratung und keine Reevaluation empfohlen
- testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
- testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
-
- this.service.updateRequiredMtbEntries(testProcedure);
-
- verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
- }
-
- @Test
- void shouldUpdateSectionsIfNoReevaluation() throws Exception {
- var testProcedure = baseProcedure(onkostarApi);
-
- // Humangenetische Beratung aber keine Reevaluation
- testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.JA.getCode()));
- testProcedure.setValue("humangenberbegruendung", new Item("humangen_ber_begruendung", "Das ist die Begründung"));
- testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
-
- this.service.updateRequiredMtbEntries(testProcedure);
-
- var captor = ArgumentCaptor.forClass(Procedure.class);
- verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
-
- var capturedProcedure = captor.getValue();
-
- assertThat(capturedProcedure.getValue("reftkreevaluation")).isNull();
- assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNull();
-
- assertThat(capturedProcedure.getValue("reftkhumangenber")).isNotNull();
- assertThat(capturedProcedure.getValue("reftkhumangenber").getInt()).isEqualTo(procedureId);
- assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNotNull();
- assertThat(capturedProcedure.getValue("datumtkhumangenber").getDate()).isEqualTo(testDate);
- }
-
- @Test
- void shouldUpdateSectionsIfNoHumanGenConsultation() throws Exception {
- var testProcedure = baseProcedure(onkostarApi);
-
- // Humangenetische Beratung aber keine Reevaluation
- testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
- testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.JA.getCode()));
-
- this.service.updateRequiredMtbEntries(testProcedure);
-
- var captor = ArgumentCaptor.forClass(Procedure.class);
- verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
-
- var capturedProcedure = captor.getValue();
-
- assertThat(capturedProcedure.getValue("reftkhumangenber")).isNull();
- assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNull();
-
- assertThat(capturedProcedure.getValue("reftkreevaluation")).isNotNull();
- assertThat(capturedProcedure.getValue("reftkreevaluation").getInt()).isEqualTo(procedureId);
- assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNotNull();
- assertThat(capturedProcedure.getValue("datumtkreevaluation").getDate()).isEqualTo(testDate);
- }
-
- @Test
- void shouldFindFollowUps() {
- doAnswer(invocationOnMock -> {
- var testProcedure = baseProcedure(onkostarApi);
- testProcedure.setId(procedureId);
- testProcedure.setFormName("DNPM UF Einzelempfehlung");
- testProcedure.addDiseaseId(123);
- return testProcedure;
- }).when(onkostarApi).getProcedure(anyInt());
-
- doAnswer(invocationOnMock -> {
- var diseaseId = invocationOnMock.getArgument(0, Integer.class);
- var formName = invocationOnMock.getArgument(1, String.class);
- var procedure = baseProcedure(onkostarApi);
- procedure.addDiseaseId(diseaseId);
- procedure.setFormName(formName);
- procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", procedureId));
- return List.of(procedure);
- }).when(onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- var followUps = this.service.findReferencedFollowUpsForSubform(1);
-
- assertThat(followUps).hasSize(1)
- .allSatisfy(procedure -> assertThat(procedure.getFormName()).isEqualTo("DNPM FollowUp"));
- }
-
- @Test
- void shouldFindFollowUpsById() {
- var testProcedure = baseProcedure(onkostarApi);
- testProcedure.setId(procedureId);
- testProcedure.setFormName("DNPM UF Einzelempfehlung");
- testProcedure.addDiseaseId(123);
-
- doAnswer(invocationOnMock -> {
- var diseaseId = invocationOnMock.getArgument(0, Integer.class);
- var formName = invocationOnMock.getArgument(1, String.class);
- var procedure = baseProcedure(onkostarApi);
- procedure.addDiseaseId(diseaseId);
- procedure.setFormName(formName);
- procedure.setValue("LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", procedureId));
- return List.of(procedure);
- }).when(onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
-
- var followUps = this.service.findReferencedFollowUpsForSubform(testProcedure);
-
- assertThat(followUps).hasSize(1)
- .allSatisfy(procedure -> assertThat(procedure.getFormName()).isEqualTo("DNPM FollowUp"));
- }
-
- private static final int procedureId = 1234;
- private static final Date testDate = Date.from(Instant.parse("2023-03-15T09:43:00Z"));
-
- private Procedure baseProcedure(final IOnkostarApi onkostarApi) {
- var testProcedure = new Procedure(onkostarApi);
- testProcedure.setId(1000);
-
- // Setzen MTB Referenz und Datum MTB
- testProcedure.setValue("referstemtb", new Item("ref_tumorkonferenz", procedureId));
- testProcedure.setValue("datum", new Item("datum", testDate));
-
- return testProcedure;
- }
-
+ private IOnkostarApi onkostarApi;
+
+ private TherapieplanService service;
+
+ @BeforeEach
+ void setUp(@Mock IOnkostarApi onkostarApi, @Mock FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.service = new DefaultTherapieplanService(onkostarApi, formService);
+ }
+
+ @Test
+ void shouldNotUpdateSubformsOrSectionsIfMultipleMtbConfiguration() throws Exception {
+ this.service.updateRequiredMtbEntries(new Procedure(onkostarApi));
+ verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void shouldNotUpdateSectionsIfSectionsNotEnabled() throws Exception {
+ var testProcedure = baseProcedure(onkostarApi);
+
+ // Keine humangenetische Beratung und keine Reevaluation empfohlen
+ testProcedure.setValue(
+ "humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
+ testProcedure.setValue(
+ "reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
+
+ this.service.updateRequiredMtbEntries(testProcedure);
+
+ verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
+ }
+
+ @Test
+ void shouldUpdateSectionsIfNoReevaluation() throws Exception {
+ var testProcedure = baseProcedure(onkostarApi);
+
+ // Humangenetische Beratung aber keine Reevaluation
+ testProcedure.setValue(
+ "humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.JA.getCode()));
+ testProcedure.setValue(
+ "humangenberbegruendung", new Item("humangen_ber_begruendung", "Das ist die Begründung"));
+ testProcedure.setValue(
+ "reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
+
+ this.service.updateRequiredMtbEntries(testProcedure);
+
+ var captor = ArgumentCaptor.forClass(Procedure.class);
+ verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
+
+ var capturedProcedure = captor.getValue();
+
+ assertThat(capturedProcedure.getValue("reftkreevaluation")).isNull();
+ assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNull();
+
+ assertThat(capturedProcedure.getValue("reftkhumangenber")).isNotNull();
+ assertThat(capturedProcedure.getValue("reftkhumangenber").getInt()).isEqualTo(procedureId);
+ assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNotNull();
+ assertThat(capturedProcedure.getValue("datumtkhumangenber").getDate()).isEqualTo(testDate);
+ }
+
+ @Test
+ void shouldUpdateSectionsIfNoHumanGenConsultation() throws Exception {
+ var testProcedure = baseProcedure(onkostarApi);
+
+ // Humangenetische Beratung aber keine Reevaluation
+ testProcedure.setValue(
+ "humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
+ testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.JA.getCode()));
+
+ this.service.updateRequiredMtbEntries(testProcedure);
+
+ var captor = ArgumentCaptor.forClass(Procedure.class);
+ verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
+
+ var capturedProcedure = captor.getValue();
+
+ assertThat(capturedProcedure.getValue("reftkhumangenber")).isNull();
+ assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNull();
+
+ assertThat(capturedProcedure.getValue("reftkreevaluation")).isNotNull();
+ assertThat(capturedProcedure.getValue("reftkreevaluation").getInt()).isEqualTo(procedureId);
+ assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNotNull();
+ assertThat(capturedProcedure.getValue("datumtkreevaluation").getDate()).isEqualTo(testDate);
+ }
+
+ @Test
+ void shouldFindFollowUps() {
+ doAnswer(
+ invocationOnMock -> {
+ var testProcedure = baseProcedure(onkostarApi);
+ testProcedure.setId(procedureId);
+ testProcedure.setFormName("DNPM UF Einzelempfehlung");
+ testProcedure.addDiseaseId(123);
+ return testProcedure;
+ })
+ .when(onkostarApi)
+ .getProcedure(anyInt());
+
+ doAnswer(
+ invocationOnMock -> {
+ var diseaseId = invocationOnMock.getArgument(0, Integer.class);
+ var formName = invocationOnMock.getArgument(1, String.class);
+ var procedure = baseProcedure(onkostarApi);
+ procedure.addDiseaseId(diseaseId);
+ procedure.setFormName(formName);
+ procedure.setValue(
+ "LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", procedureId));
+ return List.of(procedure);
+ })
+ .when(onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ var followUps = this.service.findReferencedFollowUpsForSubform(1);
+
+ assertThat(followUps)
+ .hasSize(1)
+ .allSatisfy(procedure -> assertThat(procedure.getFormName()).isEqualTo("DNPM FollowUp"));
+ }
+
+ @Test
+ void shouldFindFollowUpsById() {
+ var testProcedure = baseProcedure(onkostarApi);
+ testProcedure.setId(procedureId);
+ testProcedure.setFormName("DNPM UF Einzelempfehlung");
+ testProcedure.addDiseaseId(123);
+
+ doAnswer(
+ invocationOnMock -> {
+ var diseaseId = invocationOnMock.getArgument(0, Integer.class);
+ var formName = invocationOnMock.getArgument(1, String.class);
+ var procedure = baseProcedure(onkostarApi);
+ procedure.addDiseaseId(diseaseId);
+ procedure.setFormName(formName);
+ procedure.setValue(
+ "LinkTherapieempfehlung", new Item("LinkTherapieempfehlung", procedureId));
+ return List.of(procedure);
+ })
+ .when(onkostarApi)
+ .getProceduresForDiseaseByForm(anyInt(), anyString());
+
+ var followUps = this.service.findReferencedFollowUpsForSubform(testProcedure);
+
+ assertThat(followUps)
+ .hasSize(1)
+ .allSatisfy(procedure -> assertThat(procedure.getFormName()).isEqualTo("DNPM FollowUp"));
+ }
+
+ private static final int procedureId = 1234;
+ private static final Date testDate = Date.from(Instant.parse("2023-03-15T09:43:00Z"));
+
+ private Procedure baseProcedure(final IOnkostarApi onkostarApi) {
+ var testProcedure = new Procedure(onkostarApi);
+ testProcedure.setId(1000);
+
+ // Setzen MTB Referenz und Datum MTB
+ testProcedure.setValue("referstemtb", new Item("ref_tumorkonferenz", procedureId));
+ testProcedure.setValue("datum", new Item("datum", testDate));
+
+ return testProcedure;
+ }
}
diff --git a/src/test/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactoryTest.java b/src/test/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactoryTest.java
index 7c176bb..c6db22a 100644
--- a/src/test/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactoryTest.java
+++ b/src/test/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactoryTest.java
@@ -19,6 +19,8 @@
package dev.dnpm.oshelper.services.therapieplan;
+import static org.assertj.core.api.Assertions.assertThat;
+
import de.itc.onkostar.api.IOnkostarApi;
import dev.dnpm.oshelper.services.FormService;
import dev.dnpm.oshelper.services.SettingsService;
@@ -28,28 +30,26 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import static org.assertj.core.api.Assertions.assertThat;
-
@ExtendWith(MockitoExtension.class)
class TherapieplanServiceFactoryTest {
- private SettingsService settingsService;
-
- private TherapieplanServiceFactory therapieplanServiceFactory;
-
- @BeforeEach
- void setup(
- @Mock IOnkostarApi onkostarApi,
- @Mock SettingsService settingsService,
- @Mock FormService formService
- ) {
- this.settingsService = settingsService;
- this.therapieplanServiceFactory = new TherapieplanServiceFactory(onkostarApi, settingsService, formService);
- }
-
- @Test
- void testShouldAlwaysReturnDefaultTherapieplanService() {
- var actual = this.therapieplanServiceFactory.currentUsableInstance();
- assertThat(actual).isInstanceOf(DefaultTherapieplanService.class);
- }
+ private SettingsService settingsService;
+
+ private TherapieplanServiceFactory therapieplanServiceFactory;
+
+ @BeforeEach
+ void setup(
+ @Mock IOnkostarApi onkostarApi,
+ @Mock SettingsService settingsService,
+ @Mock FormService formService) {
+ this.settingsService = settingsService;
+ this.therapieplanServiceFactory =
+ new TherapieplanServiceFactory(onkostarApi, settingsService, formService);
+ }
+
+ @Test
+ void testShouldAlwaysReturnDefaultTherapieplanService() {
+ var actual = this.therapieplanServiceFactory.currentUsableInstance();
+ assertThat(actual).isInstanceOf(DefaultTherapieplanService.class);
+ }
}