diff options
| author | Paul-Christian Volkmer | 2023-04-03 17:44:38 +0200 |
|---|---|---|
| committer | GitHub | 2023-04-03 17:44:38 +0200 |
| commit | 4193ad9672c6f3a26e765d2fc987d7da94108fb1 (patch) | |
| tree | c9df0d013bd8bddf1ac5976cf0dba8ca89f609d1 /src/main/java/DNPM/services/consent/UkwConsentManagerService.java | |
| parent | 6d401353026d9dc042e8300d871d43589b74f153 (diff) | |
| parent | 0914dd21d26eaa83bb057d0bc0af74f9cd3df20c (diff) | |
Merge pull request #21 from CCC-MF/issue_20
Anpassung des ConsentManagements an verschiedene Standorte
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..c22a6e4 --- /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 final 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 == date || null == status || status.getString().isBlank()) { + 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); + } + }); + } + +} |
