summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-04-04 16:04:54 +0200
committerPaul-Christian Volkmer2023-04-04 16:07:35 +0200
commit541d2e3a031c710bfc6f17d9069d31394cd55ba3 (patch)
treeec3cc48a2849e6f94b265271e9446669c399222b
parentc4d9abdf0cfc5b82c99316079a22815494840da2 (diff)
Zusätzliche Prüfung auf Formularname vor Consentübernahme hinzugefügt
Diese zusätzliche Prüfung ermöglicht die Erkennung, ob der aktuell ausgewählte ConsentManagerService die entsprechende Prozedur bearbeiten und Consent-Daten in das Formular "DNPM-Klinik/Anamnese" übernehmen kann. Die Standardimplementierung prüft dabei nur, ob die Prozedur nicht `null` ist.
-rw-r--r--src/main/java/DNPM/ConsentManager.java7
-rw-r--r--src/main/java/DNPM/services/consent/ConsentManagerService.java9
-rw-r--r--src/main/java/DNPM/services/consent/MrConsentManagerService.java7
-rw-r--r--src/main/java/DNPM/services/consent/UkwConsentManagerService.java5
-rw-r--r--src/test/java/DNPM/ConsentManagerTest.java16
5 files changed, 42 insertions, 2 deletions
diff --git a/src/main/java/DNPM/ConsentManager.java b/src/main/java/DNPM/ConsentManager.java
index 3eca56b..e78dedd 100644
--- a/src/main/java/DNPM/ConsentManager.java
+++ b/src/main/java/DNPM/ConsentManager.java
@@ -69,7 +69,12 @@ public class ConsentManager implements IProcedureAnalyzer {
@Override
public void analyze(Procedure prozedur, Disease erkrankung) {
- consentManagerServiceFactory.currentUsableInstance().applyConsent(prozedur);
+ 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/DNPM/services/consent/ConsentManagerService.java b/src/main/java/DNPM/services/consent/ConsentManagerService.java
index 9e2d0fa..c05ad6b 100644
--- a/src/main/java/DNPM/services/consent/ConsentManagerService.java
+++ b/src/main/java/DNPM/services/consent/ConsentManagerService.java
@@ -15,4 +15,13 @@ public interface ConsentManagerService {
*/
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/DNPM/services/consent/MrConsentManagerService.java b/src/main/java/DNPM/services/consent/MrConsentManagerService.java
index bf054b4..20ee4db 100644
--- a/src/main/java/DNPM/services/consent/MrConsentManagerService.java
+++ b/src/main/java/DNPM/services/consent/MrConsentManagerService.java
@@ -22,7 +22,7 @@ import java.util.Map;
*/
public class MrConsentManagerService implements ConsentManagerService {
- private Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final IOnkostarApi onkostarApi;
@@ -30,6 +30,11 @@ public class MrConsentManagerService implements ConsentManagerService {
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
*
diff --git a/src/main/java/DNPM/services/consent/UkwConsentManagerService.java b/src/main/java/DNPM/services/consent/UkwConsentManagerService.java
index c22a6e4..c539e5a 100644
--- a/src/main/java/DNPM/services/consent/UkwConsentManagerService.java
+++ b/src/main/java/DNPM/services/consent/UkwConsentManagerService.java
@@ -23,6 +23,11 @@ public class UkwConsentManagerService implements ConsentManagerService {
this.onkostarApi = onkostarApi;
}
+ @Override
+ public boolean canApply(Procedure procedure) {
+ return null != procedure && procedure.getFormName().equals("Excel-Formular");
+ }
+
/**
* Wende Consent an, wenn dieses Consent-Formular gespeichert wird
*
diff --git a/src/test/java/DNPM/ConsentManagerTest.java b/src/test/java/DNPM/ConsentManagerTest.java
index 41c9a02..e4e33e5 100644
--- a/src/test/java/DNPM/ConsentManagerTest.java
+++ b/src/test/java/DNPM/ConsentManagerTest.java
@@ -35,6 +35,8 @@ class ConsentManagerTest {
void shouldRunServiceMethodsOnAnalyzeCalled() {
var consentManagerServiceMock = mock(MrConsentManagerService.class);
+ when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(true);
+
when(this.consentManagerServiceFactory.currentUsableInstance())
.thenReturn(consentManagerServiceMock);
@@ -43,4 +45,18 @@ class ConsentManagerTest {
verify(consentManagerServiceMock, times(1)).applyConsent(any(Procedure.class));
}
+ @Test
+ void shouldNotRunServiceMethodsIfProcedureCannotBeAppliesForForm() {
+ var consentManagerServiceMock = mock(MrConsentManagerService.class);
+
+ when(consentManagerServiceMock.canApply(any(Procedure.class))).thenReturn(false);
+
+ when(this.consentManagerServiceFactory.currentUsableInstance())
+ .thenReturn(consentManagerServiceMock);
+
+ this.consentManager.analyze(new Procedure(onkostarApi), null);
+
+ verify(consentManagerServiceMock, times(0)).applyConsent(any(Procedure.class));
+ }
+
}