diff options
| author | Paul-Christian Volkmer | 2023-04-04 16:04:54 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-04-04 16:07:35 +0200 |
| commit | 541d2e3a031c710bfc6f17d9069d31394cd55ba3 (patch) | |
| tree | ec3cc48a2849e6f94b265271e9446669c399222b | |
| parent | c4d9abdf0cfc5b82c99316079a22815494840da2 (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.
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)); + } + } |
