From 541d2e3a031c710bfc6f17d9069d31394cd55ba3 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 4 Apr 2023 16:04:54 +0200 Subject: [PATCH] =?UTF-8?q?Zus=C3=A4tzliche=20Pr=C3=BCfung=20auf=20Formula?= =?UTF-8?q?rname=20vor=20Consent=C3=BCbernahme=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/main/java/DNPM/ConsentManager.java | 7 ++++++- .../services/consent/ConsentManagerService.java | 9 +++++++++ .../consent/MrConsentManagerService.java | 7 ++++++- .../consent/UkwConsentManagerService.java | 5 +++++ src/test/java/DNPM/ConsentManagerTest.java | 16 ++++++++++++++++ 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 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)); + } + }