diff options
Diffstat (limited to 'src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java')
| -rw-r--r-- | src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java | 158 |
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()); - } } |
