summaryrefslogtreecommitdiff
path: root/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java')
-rw-r--r--src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java158
1 files changed, 9 insertions, 149 deletions
diff --git a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
index 17317cb..29441cf 100644
--- a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
@@ -1,24 +1,18 @@
package DNPM.analyzer;
-import DNPM.services.FormService;
import DNPM.services.Studie;
import DNPM.services.StudienService;
+import DNPM.services.TherapieplanService;
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 de.itc.onkostar.api.constants.JaNeinUnbekannt;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
/**
@@ -29,18 +23,16 @@ import java.util.Set;
@Component
public class TherapieplanAnalyzer implements IProcedureAnalyzer {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- private final IOnkostarApi onkostarApi;
-
- private final FormService formService;
-
private final StudienService studienService;
- public TherapieplanAnalyzer(final IOnkostarApi onkostarApi, final FormService formService, final StudienService studienService) {
- this.onkostarApi = onkostarApi;
- this.formService = formService;
+ private final TherapieplanService therapieplanService;
+
+ public TherapieplanAnalyzer(
+ final StudienService studienService,
+ final TherapieplanService therapieplanService
+ ) {
this.studienService = studienService;
+ this.therapieplanService = therapieplanService;
}
@Override
@@ -97,8 +89,7 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
@Override
public void analyze(Procedure procedure, Disease disease) {
- updateMtbInSections(procedure);
- updateMtbInSubforms(procedure);
+ therapieplanService.updateRequiredMtbEntries(procedure);
}
@@ -128,135 +119,4 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
return studienService.findByQuery(query.toString());
}
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
- * "Humangenetische Beratung" und "Reevaluation", wenn erforderlich.
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- private void updateMtbInSections(Procedure procedure) {
- if (
- this.hasMultipleMtbsEnabled() || (
- !isYes(procedure, "humangenberatung") && !isYes(procedure, "reevaluation")
- )
- ) {
- return;
- }
-
- var a = procedure.getValue("humangenberatung").getString();
- var b = procedure.getValue("reevaluation").getString();
-
- var mtbReference = procedure.getValue("referstemtb").getInt();
- var mtbDate = procedure.getValue("datum").getDate();
- var noUpdateRequired = true;
-
- if (
- isYes(procedure, "humangenberatung") && (
- !hasValue(procedure, "reftkhumangenber")
- || mtbReference != procedure.getValue("reftkhumangenber").getInt()
- )
- ) {
- procedure.setValue("reftkhumangenber", new Item("ref_tk_humangenber", mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, "humangenberatung") && (
- !hasValue(procedure, "datumtkhumangenber")
- || !mtbDate.equals(procedure.getValue("datumtkhumangenber").getDate())
- )
- ) {
- procedure.setValue("datumtkhumangenber", new Item("datum_tk_humangenber", mtbDate));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, "reevaluation") && (
- !hasValue(procedure, "reftkreevaluation")
- || mtbReference != procedure.getValue("reftkreevaluation").getInt()
- )
- ) {
- procedure.setValue("reftkreevaluation", new Item("ref_tk_reevaluation", mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, "reevaluation") && (
- !hasValue(procedure, "datumtkreevaluation")
- || !mtbDate.equals(procedure.getValue("datumtkreevaluation").getDate())
- )
- ) {
- procedure.setValue("datumtkreevaluation", new Item("datum_tk_reevaluation", mtbDate));
- noUpdateRequired = false;
- }
-
- if (noUpdateRequired) {
- return;
- }
-
- try {
- onkostarApi.saveProcedure(procedure, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM Therapieplan' konnte nicht aktualisiert werden", e);
- }
- }
-
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in Unterformularen
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- private void updateMtbInSubforms(Procedure procedure) {
- if (this.hasMultipleMtbsEnabled()) {
- return;
- }
-
- var mtbReference = procedure.getValue("referstemtb").getInt();
- var mtbDate = procedure.getValue("datum").getDate();
-
- formService.getSubFormProcedureIds(procedure.getId()).stream()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .forEach(subform -> {
- if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
- if (mtbReference != subform.getValue("mtb").getInt() && !mtbDate.equals(subform.getValue("ufeedatum").getDate())) {
- subform.setValue("mtb", new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue("ufeedatum", new Item("datum", mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Einzelempfehlung' konnte nicht aktualisiert werden", e);
- }
- }
- }
-
- if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
- if (mtbReference != subform.getValue("reftumorkonferenz").getInt() && !mtbDate.equals(subform.getValue("ufrbdatum").getDate())) {
- subform.setValue("reftumorkonferenz", new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue("ufrbdatum", new Item("datum", mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Rebiopsie' konnte nicht aktualisiert werden", e);
- }
- }
- }
- });
- }
-
- private boolean hasMultipleMtbsEnabled() {
- return null != onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode")
- && onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true");
- }
-
- private boolean hasValue(final Procedure procedure, final String fieldName) {
- return null != procedure.getValue(fieldName);
- }
-
- private boolean isYes(final Procedure procedure, final String fieldName) {
- return hasValue(procedure, fieldName)
- && procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode());
- }
}