summaryrefslogtreecommitdiff
path: root/src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2024-09-21 22:10:24 +0200
committerPaul-Christian Volkmer2024-09-21 22:10:24 +0200
commitcc27edc544cec1b892e7c224aec9e6e42342aa39 (patch)
tree3036b92f84a707d769782d63c2b018166623abf5 /src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java
parent93215825f5c8aec0912d562b544f370cffe9cda7 (diff)
refactor: use package name following Java guidelines
Diffstat (limited to 'src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java')
-rw-r--r--src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java b/src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java
new file mode 100644
index 0000000..a623a99
--- /dev/null
+++ b/src/main/java/dev/dnpm/analyzer/TherapieplanAnalyzer.java
@@ -0,0 +1,127 @@
+package dev.dnpm.analyzer;
+
+import dev.dnpm.security.DelegatingDataBasedPermissionEvaluator;
+import dev.dnpm.security.PermissionType;
+import dev.dnpm.services.mtb.MtbService;
+import dev.dnpm.services.therapieplan.TherapieplanServiceFactory;
+import de.itc.onkostar.api.Disease;
+import de.itc.onkostar.api.Procedure;
+import de.itc.onkostar.api.analysis.AnalyseTriggerEvent;
+import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Diese Klasse implementiert ein Plugin, welches Aktionen nach Bearbeitung eines Therapieplans durchführt.
+ *
+ * @since 0.0.2
+ */
+@Component
+public class TherapieplanAnalyzer extends Analyzer {
+
+ private final TherapieplanServiceFactory therapieplanServiceFactory;
+
+ private final MtbService mtbService;
+
+ private final DelegatingDataBasedPermissionEvaluator permissionEvaluator;
+
+ public TherapieplanAnalyzer(
+ final TherapieplanServiceFactory therapieplanServiceFactory,
+ final MtbService mtbService,
+ final DelegatingDataBasedPermissionEvaluator permissionEvaluator
+ ) {
+ this.therapieplanServiceFactory = therapieplanServiceFactory;
+ this.mtbService = mtbService;
+ this.permissionEvaluator = permissionEvaluator;
+ }
+
+ @Override
+ public String getDescription() {
+ return "Aktualisiert Unterformulare nach Änderungen im Therapieplan-Formular";
+ }
+
+ /**
+ * @deprecated
+ */
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
+
+ @Override
+ public boolean isRelevantForAnalyzer(Procedure procedure, Disease disease) {
+ return null != procedure && procedure.getFormName().equals("DNPM Therapieplan");
+ }
+
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
+
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
+
+ @Override
+ public Set<AnalyseTriggerEvent> getTriggerEvents() {
+ return Set.of(
+ AnalyseTriggerEvent.EDIT_SAVE,
+ AnalyseTriggerEvent.EDIT_LOCK,
+ AnalyseTriggerEvent.REORG
+ );
+ }
+
+ @Override
+ public void analyze(Procedure procedure, Disease disease) {
+ therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
+ }
+
+ /**
+ * Übergibt den Text der referenzierten MTBs für den Protokollauszug
+ *
+ * <p>Wurde der Eingabewert <code>id</code> nicht übergeben, wird ein leerer String zurück gegeben.
+ *
+ * <p>Beispiel zur Nutzung in einem Formularscript
+ * <pre>
+ * executePluginMethod(
+ * 'TherapieplanAnalyzer',
+ * 'getProtokollauszug',
+ * { id: 12345 },
+ * (response) => console.log(response),
+ * false
+ * );
+ * </pre>
+ *
+ * @param input Map mit Eingabewerten
+ * @return Zeichenkette mit Protokollauszug
+ */
+ public String getProtokollauszug(Map<String, Object> input) {
+ var procedureId = AnalyzerUtils.getRequiredId(input, "id");
+
+ if (procedureId.isEmpty()) {
+ return "";
+ }
+
+ if (
+ permissionEvaluator.hasPermission(
+ SecurityContextHolder.getContext().getAuthentication(),
+ procedureId.get(),
+ Procedure.class.getSimpleName(),
+ PermissionType.READ
+ )
+ ) {
+ return mtbService.getProtocol(
+ therapieplanServiceFactory
+ .currentUsableInstance()
+ .findReferencedMtbs(procedureId.get())
+ );
+ }
+
+ return "";
+ }
+
+}