From 783dfedd60a80ab4eeca720e7c5644a1a1042698 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 3 Apr 2023 17:35:40 +0200 Subject: Issue #20: Detailimplementierung für UKW mit Formular "Excel-Formular" --- .../consent/ConsentManagerServiceFactory.java | 2 + .../services/consent/UkwConsentManagerService.java | 67 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/main/java/DNPM/services/consent/UkwConsentManagerService.java (limited to 'src/main/java/DNPM/services/consent') diff --git a/src/main/java/DNPM/services/consent/ConsentManagerServiceFactory.java b/src/main/java/DNPM/services/consent/ConsentManagerServiceFactory.java index eb6c8ce..4e08f8a 100644 --- a/src/main/java/DNPM/services/consent/ConsentManagerServiceFactory.java +++ b/src/main/java/DNPM/services/consent/ConsentManagerServiceFactory.java @@ -16,6 +16,8 @@ public class ConsentManagerServiceFactory { var consentFormName = onkostarApi.getGlobalSetting("consentform"); switch (consentFormName) { + case "Excel-Formular": + return new UkwConsentManagerService(this.onkostarApi); case "MR.Consent": default: return new MrConsentManagerService(this.onkostarApi); diff --git a/src/main/java/DNPM/services/consent/UkwConsentManagerService.java b/src/main/java/DNPM/services/consent/UkwConsentManagerService.java new file mode 100644 index 0000000..46b7d05 --- /dev/null +++ b/src/main/java/DNPM/services/consent/UkwConsentManagerService.java @@ -0,0 +1,67 @@ +package DNPM.services.consent; + +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 java.util.Comparator; + +/** + * Detailimplementierung für das Formular `Excel-Formular` + * + * @since 0.2.0 + */ +public class UkwConsentManagerService implements ConsentManagerService { + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final IOnkostarApi onkostarApi; + + public UkwConsentManagerService(final IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } + + /** + * 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 == status) { + 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); + } + }); + } + +} -- cgit v1.2.3