From e89b31532b67cf2026f1b2b975176c950bfeaaa7 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Fri, 10 Mar 2023 15:27:46 +0100 Subject: [PATCH] =?UTF-8?q?Plugin=20f=C3=BCr=20FollowUp=20Formulare=20hinz?= =?UTF-8?q?ugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Das entsprechende Plugin ergänzt nun nach Auswahl der zugehörigen Einzelempfehlung die Prozedur/das Formular der Einzelempfehlung um einen Rückverweis auf das FollowUp. --- .../java/DNPM/forms/FollowUpAnalyzer.java | 116 ++++++++++++++++++ .../de/itc/onkostar/library/moduleContext.xml | 3 +- 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 src/main/java/DNPM/forms/FollowUpAnalyzer.java diff --git a/src/main/java/DNPM/forms/FollowUpAnalyzer.java b/src/main/java/DNPM/forms/FollowUpAnalyzer.java new file mode 100644 index 0000000..f76cd64 --- /dev/null +++ b/src/main/java/DNPM/forms/FollowUpAnalyzer.java @@ -0,0 +1,116 @@ +package DNPM.forms; + +import de.itc.onkostar.api.Disease; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; +import de.itc.onkostar.api.Procedure; +import de.itc.onkostar.api.analysis.AnalyseTriggerEvent; +import de.itc.onkostar.api.analysis.AnalyzerRequirement; +import de.itc.onkostar.api.analysis.IProcedureAnalyzer; +import de.itc.onkostar.api.analysis.OnkostarPluginType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Set; + +/** + * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines FollowUps durchführt. + * + * @since 0.0.2 + */ +@Component +public class FollowUpAnalyzer implements IProcedureAnalyzer { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final IOnkostarApi onkostarApi; + + public FollowUpAnalyzer(IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } + + @Override + public OnkostarPluginType getType() { + return OnkostarPluginType.ANALYZER; + } + + @Override + public String getVersion() { + return "0.1.0"; + } + + @Override + public String getName() { + return "DNPM FollowUp Analyzer"; + } + + @Override + public String getDescription() { + return "Aktualisiert verknüpfte Formulare nach Änderungen im FollowUp-Formular"; + } + + /** + * @deprecated + */ + @Override + public boolean isRelevantForDeletedProcedure() { + return false; + } + + @Override + public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) { + return null != procedure && procedure.getFormName().equals("DNPM FollowUp"); + } + + @Override + public boolean isSynchronous() { + return false; + } + + @Override + public AnalyzerRequirement getRequirement() { + return AnalyzerRequirement.PROCEDURE; + } + + @Override + public Set getTriggerEvents() { + return Set.of( + AnalyseTriggerEvent.EDIT_SAVE, + AnalyseTriggerEvent.EDIT_LOCK, + AnalyseTriggerEvent.REORG + ); + } + + @Override + public void analyze(Procedure procedure, Disease disease) { + backlinkToEinzelempfehlung(procedure); + } + + /** + * Verlinke aktuelles FollowUp in angegebener Einzelempfehlung + * + * @param procedure Das FollowUp + */ + private void backlinkToEinzelempfehlung(Procedure procedure) { + var referencedProcedureId = procedure.getValue("LinkTherapieempfehlung").getInt(); + if (referencedProcedureId == 0) { + // Alles gut, es ist keine Einzelempfehlung angegeben + return; + } + + var referencedProcedure = onkostarApi.getProcedure(referencedProcedureId); + if (null == referencedProcedure) { + logger.error("Referenzierte Einzelempfehlung wurde nicht gefunden: {}", referencedProcedureId); + return; + } + + referencedProcedure.setValue("refdnpmfollowup", new Item("ref_dnpm_followup", procedure.getId())); + + try { + onkostarApi.saveProcedure(referencedProcedure); + } catch (Exception e) { + logger.error("FollowUp konnte nicht mit Einzelempfehlung verknüpft werden", e); + } + } +} diff --git a/src/main/resources/de/itc/onkostar/library/moduleContext.xml b/src/main/resources/de/itc/onkostar/library/moduleContext.xml index efcde36..51844e1 100644 --- a/src/main/resources/de/itc/onkostar/library/moduleContext.xml +++ b/src/main/resources/de/itc/onkostar/library/moduleContext.xml @@ -14,7 +14,8 @@ - + + \ No newline at end of file