/*
* 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.services;
import dev.dnpm.oshelper.exceptions.FormException;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.constants.JaNeinUnbekannt;
import java.util.List;
public interface FormService {
/**
* Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular
* Siehe auch: FormInfoService.java
*
* @param procedureId Die Prozedur-ID des Unterformulars
* @return Die Prozedur-ID des zugehörigen Hauptformulars
* @throws FormException Wird geworfen, wenn ein Fehler auftrat
*/
int getMainFormProcedureId(int procedureId) throws FormException;
/**
* Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular
* Siehe auch: FormInfoService.java
*
* @param procedureId Die Prozedur-ID des Formulars
* @return Eine Liste mit Prozedur-IDs der Unterformulare
*/
List getSubFormProcedureIds(int procedureId);
/**
* Prüft, ob ein Formularfeld in der Prozedur einen Wert hat oder null ist
* @param procedure Die zu prüfende Prozedur
* @param fieldName Der Formularfeldname
* @return Gibt true zurück, wenn das Feld einen Wert hat
*/
static boolean hasValue(final Procedure procedure, final String fieldName) {
return null != procedure.getValue(fieldName);
}
/**
* Prüft, ob ein Formularfeld mit Ja/Nein/Unbekannt den Wert Ja hat
* @param procedure Die zu prüfende Prozedur
* @param fieldName Der Formularfeldname
* @return Gibt true zurück, wenn das Feld den Wert "Ja" hat
*/
static boolean isYes(final Procedure procedure, final String fieldName) {
return hasValue(procedure, fieldName)
&& procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode());
}
}