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 true 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)); + } + }