/*
* This file is part of onkostar-plugin-dnpm
*
* Copyright (C) 2023-2026 the original author or authors.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*/
package dev.dnpm.oshelper.analyzer;
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 dev.dnpm.oshelper.services.therapieplan.TherapieplanServiceFactory;
import org.springframework.stereotype.Component;
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;
public TherapieplanAnalyzer(
final TherapieplanServiceFactory therapieplanServiceFactory
) {
this.therapieplanServiceFactory = therapieplanServiceFactory;
}
@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 getTriggerEvents() {
return Set.of(
AnalyseTriggerEvent.EDIT_SAVE,
AnalyseTriggerEvent.EDIT_LOCK,
AnalyseTriggerEvent.REORG
);
}
@Override
public void analyze(Procedure procedure, Disease disease) {
therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
}
}