diff options
| author | Paul-Christian Volkmer | 2023-04-03 17:35:40 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-04-03 17:35:40 +0200 |
| commit | 783dfedd60a80ab4eeca720e7c5644a1a1042698 (patch) | |
| tree | 4e86d1bcef0eee87704176dbb9163f635b81cfa3 /src/main/java/DNPM/services/consent/UkwConsentManagerService.java | |
| parent | a97d76e5bbe42cde2a5729efedcdcdcd7c26bbe9 (diff) | |
Issue #20: Detailimplementierung für UKW mit Formular "Excel-Formular"
Diffstat (limited to 'src/main/java/DNPM/services/consent/UkwConsentManagerService.java')
| -rw-r--r-- | src/main/java/DNPM/services/consent/UkwConsentManagerService.java | 67 |
1 files changed, 67 insertions, 0 deletions
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); + } + }); + } + +} |
