summaryrefslogtreecommitdiff
path: root/src/main/java/dev/dnpm/oshelper/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev/dnpm/oshelper/services')
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java45
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java94
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/FormService.java79
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/SettingsService.java72
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/StudienService.java62
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java32
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java29
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java37
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java207
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java95
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java22
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java65
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java88
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java56
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java54
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java1
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java100
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java2
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java148
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java125
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java4
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java32
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java53
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java331
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java97
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java72
-rw-r--r--src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java30
27 files changed, 1023 insertions, 1009 deletions
diff --git a/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java b/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
index 9548202..e652ee5 100644
--- a/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/DefaultFormService.java
@@ -20,10 +20,9 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.exceptions.FormException;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
import java.util.List;
+import javax.sql.DataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Standardimplementierung zum Ermitteln von Unter- und Hauptformularen
@@ -32,25 +31,27 @@ import java.util.List;
*/
public class DefaultFormService implements FormService {
- private final JdbcTemplate jdbcTemplate;
-
- public DefaultFormService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
-
- @Override
- public int getMainFormProcedureId(int procedureId) throws FormException {
- var sql = "SELECT hauptprozedur_id FROM prozedur WHERE id = ?";
- try {
- return jdbcTemplate.queryForObject(sql, (resultSet, i) -> resultSet.getInt("hauptprozedur_id"), procedureId);
- } catch (Exception e) {
- throw new FormException(String.format("No main form found for subform with ID '%d'", procedureId));
- }
+ private final JdbcTemplate jdbcTemplate;
+
+ public DefaultFormService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+ @Override
+ public int getMainFormProcedureId(int procedureId) throws FormException {
+ var sql = "SELECT hauptprozedur_id FROM prozedur WHERE id = ?";
+ try {
+ return jdbcTemplate.queryForObject(
+ sql, (resultSet, i) -> resultSet.getInt("hauptprozedur_id"), procedureId);
+ } catch (Exception e) {
+ throw new FormException(
+ String.format("No main form found for subform with ID '%d'", procedureId));
}
+ }
- @Override
- public List<Integer> getSubFormProcedureIds(int procedureId) {
- var sql = "SELECT id FROM prozedur WHERE hauptprozedur_id = ?";
- return jdbcTemplate.queryForList(sql, Integer.class, procedureId);
- }
+ @Override
+ public List<Integer> getSubFormProcedureIds(int procedureId) {
+ var sql = "SELECT id FROM prozedur WHERE hauptprozedur_id = ?";
+ return jdbcTemplate.queryForList(sql, Integer.class, procedureId);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java b/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
index 463c1e9..2366c10 100644
--- a/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/DefaultStudienService.java
@@ -20,11 +20,10 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.dto.Studie;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
import java.util.List;
import java.util.stream.Collectors;
+import javax.sql.DataSource;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Standardimplementierung zum Ermitteln von Studien
@@ -33,65 +32,72 @@ import java.util.stream.Collectors;
*/
public class DefaultStudienService implements StudienService {
- private final JdbcTemplate jdbcTemplate;
+ private final JdbcTemplate jdbcTemplate;
- public DefaultStudienService(final DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- }
+ public DefaultStudienService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
- @Override
- public List<Studie> findAll() {
- var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
- + "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
- + "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
- + "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
- + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
- + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
- + "WHERE pc.name = 'OS.Studien'"
- + "ORDER BY TRIM(studie.studien_nummer)";
+ @Override
+ public List<Studie> findAll() {
+ var sql =
+ "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
+ + "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
+ + "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
+ + "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
+ + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
+ + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
+ + "WHERE pc.name = 'OS.Studien'"
+ + "ORDER BY TRIM(studie.studien_nummer)";
- return this.jdbcTemplate.query(sql, (resultSet, i) -> new Studie(
+ return this.jdbcTemplate.query(
+ sql,
+ (resultSet, i) ->
+ new Studie(
resultSet.getString("name"),
resultSet.getInt("version_number"),
resultSet.getString("code"),
resultSet.getString("studien_nummer"),
resultSet.getString("shortdesc"),
resultSet.getString("description"),
- resultSet.getBoolean("aktiv")
- ));
- }
+ resultSet.getBoolean("aktiv")));
+ }
- @Override
- public List<Studie> findByQuery(String query) {
- var sql = "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
- + "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
- + "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
- + "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
- + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
- + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
- + "WHERE pc.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ? OR studie.studien_nummer LIKE ?)"
- + "ORDER BY TRIM(studie.studien_nummer)";
+ @Override
+ public List<Studie> findByQuery(String query) {
+ var sql =
+ "SELECT pcc.name, pcv.version_number, TRIM(studie.studien_nummer) AS studien_nummer, studie.startdatum, studie.endedatum, pcve.code, pcve.shortdesc, pcve.description, studie.aktiv FROM studie "
+ + "LEFT JOIN category_entry ce ON ce.version_entry_id = studie.property_version_entry "
+ + "LEFT JOIN property_catalogue_category pcc ON pcc.id = ce.category_id "
+ + "JOIN property_catalogue_version_entry pcve ON pcve.id = studie.property_version_entry "
+ + "JOIN property_catalogue_version pcv ON pcv.id = pcve.property_version_id "
+ + "JOIN property_catalogue pc ON pc.id = pcv.datacatalog_id "
+ + "WHERE pc.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ? OR studie.studien_nummer LIKE ?)"
+ + "ORDER BY TRIM(studie.studien_nummer)";
- var like = String.format("%%%s%%", query);
+ var like = String.format("%%%s%%", query);
- return this.jdbcTemplate.query(sql, new Object[]{like, like, like}, (resultSet, i) -> new Studie(
+ return this.jdbcTemplate.query(
+ sql,
+ new Object[] {like, like, like},
+ (resultSet, i) ->
+ new Studie(
resultSet.getString("name"),
resultSet.getInt("version_number"),
resultSet.getString("code"),
resultSet.getString("studien_nummer"),
resultSet.getString("shortdesc"),
resultSet.getString("description"),
- resultSet.getBoolean("aktiv")
- ));
- }
+ resultSet.getBoolean("aktiv")));
+ }
- @Override
- public List<Studie> findActive() {
- return findAll().stream().filter(Studie::isActive).collect(Collectors.toList());
- }
+ @Override
+ public List<Studie> findActive() {
+ return findAll().stream().filter(Studie::isActive).collect(Collectors.toList());
+ }
- @Override
- public List<Studie> findActiveByQuery(String query) {
- return findByQuery(query).stream().filter(Studie::isActive).collect(Collectors.toList());
- }
+ @Override
+ public List<Studie> findActiveByQuery(String query) {
+ return findByQuery(query).stream().filter(Studie::isActive).collect(Collectors.toList());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/FormService.java b/src/main/java/dev/dnpm/oshelper/services/FormService.java
index 1e89d57..f48dcd2 100644
--- a/src/main/java/dev/dnpm/oshelper/services/FormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/FormService.java
@@ -19,52 +19,53 @@
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 dev.dnpm.oshelper.exceptions.FormException;
import java.util.List;
public interface FormService {
- /**
- * Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular
- * Siehe auch: <a href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
- *
- * @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: <a href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
- *
- * @param procedureId Die Prozedur-ID des Formulars
- * @return Eine Liste mit Prozedur-IDs der Unterformulare
- */
- List<Integer> getSubFormProcedureIds(int procedureId);
+ /**
+ * Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular
+ * Siehe auch: <a
+ * href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
+ *
+ * @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;
- /**
- * 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 <code>true</code> zurück, wenn das Feld einen Wert hat
- */
- static boolean hasValue(final Procedure procedure, final String fieldName) {
- return null != procedure.getValue(fieldName);
- }
+ /**
+ * Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular Siehe auch: <a
+ * href="https://github.com/CCC-MF/onkostar-plugin-forminfo/blob/master/src/main/java/de/ukw/ccc/onkostar/forminfo/services/FormInfoService.java">FormInfoService.java</a>
+ *
+ * @param procedureId Die Prozedur-ID des Formulars
+ * @return Eine Liste mit Prozedur-IDs der Unterformulare
+ */
+ List<Integer> getSubFormProcedureIds(int procedureId);
- /**
- * 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 <code>true</code> 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());
- }
+ /**
+ * 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 <code>true</code> 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 <code>true</code> 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());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/SettingsService.java b/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
index 61ef193..82dfcfc 100644
--- a/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/SettingsService.java
@@ -20,48 +20,50 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.database.SettingsRepository;
-
import java.util.Optional;
-/**
- * Implementiert den Dienst zur Ermittlung von Systemeinstellungen
- */
+/** Implementiert den Dienst zur Ermittlung von Systemeinstellungen */
public class SettingsService {
- private final SettingsRepository settingsRepository;
+ private final SettingsRepository settingsRepository;
- public SettingsService(final SettingsRepository settingsRepository) {
- this.settingsRepository = settingsRepository;
- }
+ public SettingsService(final SettingsRepository settingsRepository) {
+ this.settingsRepository = settingsRepository;
+ }
- /**
- * Übergibt ein <code>Optional</code> für die Einstellung mit angegebenen Namen
- * @param name Name der Einstellung
- * @return Optional mit Wert der Einstellung oder ein leeres Optional, wenn Einstellung nicht gefunden
- */
- public Optional<String> getSetting(String name) {
- var sid = settingsRepository.findByName(name);
- if (null == sid) {
- return Optional.empty();
- }
- return Optional.of(sid.getValue());
+ /**
+ * Übergibt ein <code>Optional</code> für die Einstellung mit angegebenen Namen
+ *
+ * @param name Name der Einstellung
+ * @return Optional mit Wert der Einstellung oder ein leeres Optional, wenn Einstellung nicht
+ * gefunden
+ */
+ public Optional<String> getSetting(String name) {
+ var sid = settingsRepository.findByName(name);
+ if (null == sid) {
+ return Optional.empty();
}
+ return Optional.of(sid.getValue());
+ }
- /**
- * Übergibt die SID als <code>Optional</code>
- * @return Optional mit Wert der SID
- */
- public Optional<String> getSID() {
- return getSetting("SID");
- }
+ /**
+ * Übergibt die SID als <code>Optional</code>
+ *
+ * @return Optional mit Wert der SID
+ */
+ public Optional<String> getSID() {
+ return getSetting("SID");
+ }
- /**
- * Übergibt die Einstellung für <code>mehrere_mtb_in_mtbepisode</code>
- * @return Übergibt <code>true</code>, wenn <code>mehrere_mtb_in_mtbepisode</code> auf "Ja" gesetzt ist.
- */
- @Deprecated(since = "2.1.0", forRemoval = true)
- public boolean multipleMtbsInMtbEpisode() {
- var setting = getSetting("mehrere_mtb_in_mtbepisode");
- return setting.isPresent() && setting.get().equals("true");
- }
+ /**
+ * Übergibt die Einstellung für <code>mehrere_mtb_in_mtbepisode</code>
+ *
+ * @return Übergibt <code>true</code>, wenn <code>mehrere_mtb_in_mtbepisode</code> auf "Ja"
+ * gesetzt ist.
+ */
+ @Deprecated(since = "2.1.0", forRemoval = true)
+ public boolean multipleMtbsInMtbEpisode() {
+ var setting = getSetting("mehrere_mtb_in_mtbepisode");
+ return setting.isPresent() && setting.get().equals("true");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/StudienService.java b/src/main/java/dev/dnpm/oshelper/services/StudienService.java
index 0e0314e..f39c7e9 100644
--- a/src/main/java/dev/dnpm/oshelper/services/StudienService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/StudienService.java
@@ -20,39 +20,39 @@
package dev.dnpm.oshelper.services;
import dev.dnpm.oshelper.dto.Studie;
-
import java.util.List;
public interface StudienService {
- /**
- * Übergibt eine Liste mit allen Studien
- *
- * @return Liste mit allen Studien
- */
- List<Studie> findAll();
-
- /**
- * Übergibt eine Liste mit Studien, deren (Kurz-)Beschreibung oder Studiennummer den übergebenen Wert enthalten
- *
- * @param query Wert der enthalten sein muss
- * @return Gefilterte Liste mit Studien
- */
- List<Studie> findByQuery(String query);
-
- /**
- * Übergibt eine Liste mit aktiven Studien
- *
- * @return Liste mit aktiven Studien
- */
- List<Studie> findActive();
-
- /**
- * Übergibt eine Liste mit aktiven Studien, deren (Kurz-)Beschreibung oder Studiennummer den übergebenen Wert enthalten
- *
- * @param query Wert der enthalten sein muss
- * @return Gefilterte Liste mit aktiven Studien
- */
- List<Studie> findActiveByQuery(String query);
-
+ /**
+ * Übergibt eine Liste mit allen Studien
+ *
+ * @return Liste mit allen Studien
+ */
+ List<Studie> findAll();
+
+ /**
+ * Übergibt eine Liste mit Studien, deren (Kurz-)Beschreibung oder Studiennummer den übergebenen
+ * Wert enthalten
+ *
+ * @param query Wert der enthalten sein muss
+ * @return Gefilterte Liste mit Studien
+ */
+ List<Studie> findByQuery(String query);
+
+ /**
+ * Übergibt eine Liste mit aktiven Studien
+ *
+ * @return Liste mit aktiven Studien
+ */
+ List<Studie> findActive();
+
+ /**
+ * Übergibt eine Liste mit aktiven Studien, deren (Kurz-)Beschreibung oder Studiennummer den
+ * übergebenen Wert enthalten
+ *
+ * @param query Wert der enthalten sein muss
+ * @return Gefilterte Liste mit aktiven Studien
+ */
+ List<Studie> findActiveByQuery(String query);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java b/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
index 5ae1093..3353e41 100644
--- a/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/TherapieMitEcogService.java
@@ -19,31 +19,31 @@
package dev.dnpm.oshelper.services;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
import de.itc.onkostar.api.Patient;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
import java.util.List;
import java.util.Optional;
/**
* Schnittstelle zum Ermitteln von ECOG-Statusinformationen
*
- * @since 0.6.0
+ * @since 0.6.0
*/
public interface TherapieMitEcogService {
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Therapieformularen des Patienten
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- Optional<String> latestEcogStatus(Patient patient);
-
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Therapieformularen des Patienten
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- List<EcogStatusWithDate> ecogStatus(Patient patient);
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Therapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ Optional<String> latestEcogStatus(Patient patient);
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Therapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ List<EcogStatusWithDate> ecogStatus(Patient patient);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
index 0a3346a..edfeddd 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerService.java
@@ -29,19 +29,20 @@ import de.itc.onkostar.api.Procedure;
@Deprecated(forRemoval = true, since = "2.0.0")
public interface ConsentManagerService {
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- * @param procedure Prozedur des Consent-Formulars
- */
- void applyConsent(Procedure procedure);
-
- /**
- * Optionale Prüfung, ob die angegebene Prozedur angewendet werden kann.
- * @param procedure Anzuwendende Prozedur
- * @return Gibt <code>true</code> zurück, wenn die Prozedur angewendet werden kann.
- */
- default boolean canApply(Procedure procedure) {
- return null != procedure;
- }
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ void applyConsent(Procedure procedure);
+ /**
+ * Optionale Prüfung, ob die angegebene Prozedur angewendet werden kann.
+ *
+ * @param procedure Anzuwendende Prozedur
+ * @return Gibt <code>true</code> zurück, wenn die Prozedur angewendet werden kann.
+ */
+ default boolean canApply(Procedure procedure) {
+ return null != procedure;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
index 3f548a0..81d864b 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/ConsentManagerServiceFactory.java
@@ -24,25 +24,22 @@ import de.itc.onkostar.api.IOnkostarApi;
@Deprecated(forRemoval = true, since = "2.0.0")
public class ConsentManagerServiceFactory {
- private final IOnkostarApi onkostarApi;
-
- public ConsentManagerServiceFactory(
- final IOnkostarApi onkostarApi
- ) {
- this.onkostarApi = onkostarApi;
+ private final IOnkostarApi onkostarApi;
+
+ public ConsentManagerServiceFactory(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
+
+ public ConsentManagerService currentUsableInstance() {
+ var consentFormName = onkostarApi.getGlobalSetting("consentform");
+
+ switch (consentFormName) {
+ case "Excel-Formular":
+ return new UkwConsentManagerService(this.onkostarApi);
+ case "MR.Consent":
+ return new MrConsentManagerService(this.onkostarApi);
+ default:
+ return procedure -> {};
}
-
- public ConsentManagerService currentUsableInstance() {
- var consentFormName = onkostarApi.getGlobalSetting("consentform");
-
- switch (consentFormName) {
- case "Excel-Formular":
- return new UkwConsentManagerService(this.onkostarApi);
- case "MR.Consent":
- return new MrConsentManagerService(this.onkostarApi);
- default:
- return procedure -> {};
- }
- }
-
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
index ca2cba5..c01568a 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/MrConsentManagerService.java
@@ -19,10 +19,12 @@
package dev.dnpm.oshelper.services.consent;
-import dev.dnpm.oshelper.VerweisVon;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import dev.dnpm.oshelper.VerweisVon;
+import java.util.List;
+import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -31,9 +33,6 @@ import org.hibernate.type.StandardBasicTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.Map;
-
/**
* Detailimplementierung für das Formular `MR.Consent`
*
@@ -42,105 +41,113 @@ import java.util.Map;
@Deprecated(forRemoval = true, since = "2.0.0")
public class MrConsentManagerService implements ConsentManagerService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- private final IOnkostarApi onkostarApi;
-
- public MrConsentManagerService(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
-
- @Override
- public boolean canApply(Procedure procedure) {
- return null != procedure && procedure.getFormName().equals("MR.Consent");
- }
-
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- *
- * @param procedure Prozedur des Consent-Formulars
- */
- @Override
- public void applyConsent(Procedure procedure) {
- int value = 0;
- try {
- SessionFactory sessionFactory = onkostarApi.getSessionFactory();
- Session session = sessionFactory.getCurrentSession();
- // geänderte Werte checken
- String sql1 = "select id, max(timestamp) AS datum from aenderungsprotokoll where entity_id = '" + procedure.getId() + "'";
- SQLQuery query1 = session.createSQLQuery(sql1)
- .addScalar("id", StandardBasicTypes.INTEGER)
- .addScalar("datum", StandardBasicTypes.TIMESTAMP);
- logger.info("Wert-Check: {}", query1.uniqueResult());
-
- String sql = "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum " +
- "FROM prozedur " +
- "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id " +
- "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id " +
- "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id " +
- "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id " +
- "WHERE patient_id = " + procedure.getPatientId() + " " +
- "AND geloescht = 0 " +
- "AND data_catalogue_entry.type = 'formReference' " +
- "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
-
- SQLQuery query = session.createSQLQuery(sql)
- .addScalar("procedure_id", StandardBasicTypes.INTEGER)
- .addScalar("data_form_id", StandardBasicTypes.INTEGER)
- .addScalar("data_catalogue", StandardBasicTypes.STRING)
- .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
- .addScalar("formname", StandardBasicTypes.STRING)
- .addScalar("datum", StandardBasicTypes.DATE);
-
- query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
-
- @SuppressWarnings("unchecked")
- List<VerweisVon> result = query.list();
-
- for (VerweisVon verweisVon : result) {
- sql = verweisVon.getSQL();
- query = session.createSQLQuery(sql)
- .addScalar("value", StandardBasicTypes.INTEGER);
- if (query.uniqueResult() != null) {
- value = (Integer) query.uniqueResult();
- }
- if (value == procedure.getId()) {
- saveReferencedProcedure(procedure, verweisVon);
- value = 0;
- }
- }
- } catch (RuntimeException e) {
- logger.error("Sonstiger Fehler bei der Ausführung von analyze()", e);
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ private final IOnkostarApi onkostarApi;
+
+ public MrConsentManagerService(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
+
+ @Override
+ public boolean canApply(Procedure procedure) {
+ return null != procedure && procedure.getFormName().equals("MR.Consent");
+ }
+
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ @Override
+ public void applyConsent(Procedure procedure) {
+ int value = 0;
+ try {
+ SessionFactory sessionFactory = onkostarApi.getSessionFactory();
+ Session session = sessionFactory.getCurrentSession();
+ // geänderte Werte checken
+ String sql1 =
+ "select id, max(timestamp) AS datum from aenderungsprotokoll where entity_id = '"
+ + procedure.getId()
+ + "'";
+ SQLQuery query1 =
+ session
+ .createSQLQuery(sql1)
+ .addScalar("id", StandardBasicTypes.INTEGER)
+ .addScalar("datum", StandardBasicTypes.TIMESTAMP);
+ logger.info("Wert-Check: {}", query1.uniqueResult());
+
+ String sql =
+ "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum "
+ + "FROM prozedur "
+ + "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id "
+ + "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id "
+ + "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id "
+ + "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id "
+ + "WHERE patient_id = "
+ + procedure.getPatientId()
+ + " "
+ + "AND geloescht = 0 "
+ + "AND data_catalogue_entry.type = 'formReference' "
+ + "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name";
+
+ SQLQuery query =
+ session
+ .createSQLQuery(sql)
+ .addScalar("procedure_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_form_id", StandardBasicTypes.INTEGER)
+ .addScalar("data_catalogue", StandardBasicTypes.STRING)
+ .addScalar("data_catalogue_entry", StandardBasicTypes.STRING)
+ .addScalar("formname", StandardBasicTypes.STRING)
+ .addScalar("datum", StandardBasicTypes.DATE);
+
+ query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class));
+
+ @SuppressWarnings("unchecked")
+ List<VerweisVon> result = query.list();
+
+ for (VerweisVon verweisVon : result) {
+ sql = verweisVon.getSQL();
+ query = session.createSQLQuery(sql).addScalar("value", StandardBasicTypes.INTEGER);
+ if (query.uniqueResult() != null) {
+ value = (Integer) query.uniqueResult();
+ }
+ if (value == procedure.getId()) {
+ saveReferencedProcedure(procedure, verweisVon);
+ value = 0;
}
+ }
+ } catch (RuntimeException e) {
+ logger.error("Sonstiger Fehler bei der Ausführung von analyze()", e);
}
-
- private void saveReferencedProcedure(Procedure prozedur, VerweisVon verweisVon) {
- Procedure andereprozedur = onkostarApi.getProcedure(verweisVon.getProcedure_id());
- try {
- Map<String, Item> felder = prozedur.getAllValues();
- for (Map.Entry<String, Item> feld : felder.entrySet()) {
- if (feld.getKey().startsWith("Consent")) {
- if (feld.getKey().equals("ConsentStatusEinwilligungDNPM")) {
- switch (feld.getValue().getValue().toString()) {
- case "z":
- andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "active"));
- break;
- case "a":
- case "w":
- andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "rejected"));
- break;
- default:
- break;
- }
- } else {
- andereprozedur.setValue(feld.getKey(), prozedur.getValue(feld.getKey()));
- }
- }
+ }
+
+ private void saveReferencedProcedure(Procedure prozedur, VerweisVon verweisVon) {
+ Procedure andereprozedur = onkostarApi.getProcedure(verweisVon.getProcedure_id());
+ try {
+ Map<String, Item> felder = prozedur.getAllValues();
+ for (Map.Entry<String, Item> feld : felder.entrySet()) {
+ if (feld.getKey().startsWith("Consent")) {
+ if (feld.getKey().equals("ConsentStatusEinwilligungDNPM")) {
+ switch (feld.getValue().getValue().toString()) {
+ case "z":
+ andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "active"));
+ break;
+ case "a":
+ case "w":
+ andereprozedur.setValue(feld.getKey(), new Item(feld.getKey(), "rejected"));
+ break;
+ default:
+ break;
}
- onkostarApi.saveProcedure(andereprozedur);
- } catch (Exception e) {
- logger.error("Kann Prozedur nicht speichern", e);
+ } else {
+ andereprozedur.setValue(feld.getKey(), prozedur.getValue(feld.getKey()));
+ }
}
+ }
+ onkostarApi.saveProcedure(andereprozedur);
+ } catch (Exception e) {
+ logger.error("Kann Prozedur nicht speichern", e);
}
-
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java b/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
index fdf4f7b..32f7219 100644
--- a/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/consent/UkwConsentManagerService.java
@@ -22,11 +22,10 @@ package dev.dnpm.oshelper.services.consent;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
+import java.util.Comparator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Comparator;
-
/**
* Detailimplementierung für das Formular `Excel-Formular`
*
@@ -35,58 +34,60 @@ import java.util.Comparator;
@Deprecated(forRemoval = true, since = "2.0.0")
public class UkwConsentManagerService implements ConsentManagerService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- public UkwConsentManagerService(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
+ public UkwConsentManagerService(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
- @Override
- public boolean canApply(Procedure procedure) {
- return null != procedure && procedure.getFormName().equals("Excel-Formular");
- }
+ @Override
+ public boolean canApply(Procedure procedure) {
+ return null != procedure && procedure.getFormName().equals("Excel-Formular");
+ }
- /**
- * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
- *
- * @param procedure Prozedur des Consent-Formulars
- */
- @Override
- public void applyConsent(Procedure procedure) {
- var refdnpmklinikanamnese = procedure.getValue("refdnpmklinikanamnese").getInt();
- var dnpmKlinikAnamnese = this.onkostarApi.getProcedure(refdnpmklinikanamnese);
+ /**
+ * Wende Consent an, wenn dieses Consent-Formular gespeichert wird
+ *
+ * @param procedure Prozedur des Consent-Formulars
+ */
+ @Override
+ public void applyConsent(Procedure procedure) {
+ var refdnpmklinikanamnese = procedure.getValue("refdnpmklinikanamnese").getInt();
+ var dnpmKlinikAnamnese = this.onkostarApi.getProcedure(refdnpmklinikanamnese);
- if (null == dnpmKlinikAnamnese) {
- return;
- }
-
- var consents = procedure.getSubProceduresMap().get("ufdnpmconsent");
-
- if (null == consents) {
- return;
- }
-
- consents.stream()
- .max(Comparator.comparing(Procedure::getStartDate))
- .ifPresent(lastConsent -> {
- var date = lastConsent.getStartDate();
- var status = lastConsent.getValue("status");
- if (null == date || null == status || status.getString().isBlank()) {
- logger.warn("Kein DNPM-Einwilligungstatus angegeben");
- return;
- }
+ if (null == dnpmKlinikAnamnese) {
+ return;
+ }
- dnpmKlinikAnamnese.setValue("ConsentStatusEinwilligungDNPM", new Item("Einwilligung", status.getString()));
- dnpmKlinikAnamnese.setValue("ConsentDatumEinwilligungDNPM", new Item("DatumEinwilligung", date));
+ var consents = procedure.getSubProceduresMap().get("ufdnpmconsent");
- try {
- onkostarApi.saveProcedure(dnpmKlinikAnamnese, false);
- } catch (Exception e) {
- logger.error("Kann DNPM-Einwilligungstatus nicht aktualisieren", e);
- }
- });
+ if (null == consents) {
+ return;
}
+ consents.stream()
+ .max(Comparator.comparing(Procedure::getStartDate))
+ .ifPresent(
+ lastConsent -> {
+ var date = lastConsent.getStartDate();
+ var status = lastConsent.getValue("status");
+ if (null == date || null == status || status.getString().isBlank()) {
+ logger.warn("Kein DNPM-Einwilligungstatus angegeben");
+ return;
+ }
+
+ dnpmKlinikAnamnese.setValue(
+ "ConsentStatusEinwilligungDNPM", new Item("Einwilligung", status.getString()));
+ dnpmKlinikAnamnese.setValue(
+ "ConsentDatumEinwilligungDNPM", new Item("DatumEinwilligung", date));
+
+ try {
+ onkostarApi.saveProcedure(dnpmKlinikAnamnese, false);
+ } catch (Exception e) {
+ logger.error("Kann DNPM-Einwilligungstatus nicht aktualisieren", e);
+ }
+ });
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
index 8216818..19cbc4c 100644
--- a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/MolekulargenetikFormService.java
@@ -19,21 +19,19 @@
package dev.dnpm.oshelper.services.molekulargenetik;
-import dev.dnpm.oshelper.dto.Variant;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.Variant;
import java.util.List;
-/**
- * Schnittstellenbeschreibung für Methoden zum Formular "OS.Molekulargenetik"
- */
+/** Schnittstellenbeschreibung für Methoden zum Formular "OS.Molekulargenetik" */
public interface MolekulargenetikFormService {
- /**
- * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
- * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik"
- * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden wurden.
- */
- List<Variant> getVariants(Procedure procedure);
-
+ /**
+ * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
+ *
+ * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik"
+ * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden
+ * wurden.
+ */
+ List<Variant> getVariants(Procedure procedure);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
index 71f2435..5111ac7 100644
--- a/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/molekulargenetik/OsMolekulargenetikFormService.java
@@ -19,46 +19,47 @@
package dev.dnpm.oshelper.services.molekulargenetik;
-import dev.dnpm.oshelper.dto.Variant;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.Variant;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class OsMolekulargenetikFormService implements MolekulargenetikFormService {
- /**
- * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik" (oder Variante)
- * Unterstützte Varianten sind:
- * <uL>
- * <li>Einfache Variante
- * <li>CNV
- * <li>Fusion
- * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik" (oder Variante)
- * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden wurden.
- */
- @Override
- public List<Variant> getVariants(Procedure procedure) {
- if (! procedureWithUsableFormVariant(procedure)) {
- return List.of();
- }
-
- var subforms = procedure.getSubProceduresMap().get("MolekulargenetischeUntersuchung");
- if (null == subforms) {
- return List.of();
- }
-
- return subforms.stream()
- .map(Variant::fromProcedure)
- .filter(Optional::isPresent)
- .map(Optional::get)
- .collect(Collectors.toList());
-
+ /**
+ * Ermittelt alle (unterstützten) Varianten zur Prozedur eines Formulars "OS.Molekulargenetik"
+ * (oder Variante) Unterstützte Varianten sind:
+ *
+ * <uL>
+ * <li>Einfache Variante
+ * <li>CNV
+ * <li>Fusion
+ *
+ * @param procedure Die Prozedur zum Formular "OS.Molekulargenetik" (oder Variante)
+ * @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden
+ * wurden.
+ */
+ @Override
+ public List<Variant> getVariants(Procedure procedure) {
+ if (!procedureWithUsableFormVariant(procedure)) {
+ return List.of();
}
- private boolean procedureWithUsableFormVariant(Procedure procedure) {
- return "OS.Molekulargenetik".equals(procedure.getFormName())
- || "UKER.Molekulargenetik".equals(procedure.getFormName());
+ var subforms = procedure.getSubProceduresMap().get("MolekulargenetischeUntersuchung");
+ if (null == subforms) {
+ return List.of();
}
+
+ return subforms.stream()
+ .map(Variant::fromProcedure)
+ .filter(Optional::isPresent)
+ .map(Optional::get)
+ .collect(Collectors.toList());
+ }
+
+ private boolean procedureWithUsableFormVariant(Procedure procedure) {
+ return "OS.Molekulargenetik".equals(procedure.getFormName())
+ || "UKER.Molekulargenetik".equals(procedure.getFormName());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
index 03532d6..53d4620 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/MrMtbAnmeldungToProtocolMapper.java
@@ -21,7 +21,6 @@ package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Optional;
@@ -29,55 +28,56 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class MrMtbAnmeldungToProtocolMapper implements ProcedureToProtocolMapper {
- private final IOnkostarApi onkostarApi;
-
- public MrMtbAnmeldungToProtocolMapper(final IOnkostarApi onkostarApi) {
- this.onkostarApi = onkostarApi;
- }
+ private final IOnkostarApi onkostarApi;
- /**
- * Wandelt eine Prozedur mit Formularnamen "MR.MTB_Anmeldung" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- *
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("MR.MTB_Anmeldung"))) {
- throw new AssertionError("Procedure is not of form type 'MR.MTB_Anmeldung'");
- }
+ public MrMtbAnmeldungToProtocolMapper(final IOnkostarApi onkostarApi) {
+ this.onkostarApi = onkostarApi;
+ }
- var resultParts = new ArrayList<String>();
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "MR.MTB_Anmeldung" in ein {@link Optional} mit einer
+ * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("MR.MTB_Anmeldung"))) {
+ throw new AssertionError("Procedure is not of form type 'MR.MTB_Anmeldung'");
+ }
- var fragestellung = procedure.getValue("Fragestellung");
- if (null != fragestellung && !fragestellung.getString().isBlank()) {
- resultParts.add(String.format("Fragestellung:%n%s", fragestellung.getString()));
- }
+ var resultParts = new ArrayList<String>();
- var refEmpfehlung = procedure.getValue("Empfehlung");
- if (null != refEmpfehlung && refEmpfehlung.getInt() > 0) {
- var empfehlungsProzedur = onkostarApi.getProcedure(refEmpfehlung.getInt());
- var refEinzelempfehlungen = onkostarApi.getSubprocedures(empfehlungsProzedur.getId());
+ var fragestellung = procedure.getValue("Fragestellung");
+ if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ resultParts.add(String.format("Fragestellung:%n%s", fragestellung.getString()));
+ }
- if (null != refEinzelempfehlungen) {
- refEinzelempfehlungen.stream()
- .sorted(Comparator.comparingInt(proc -> proc.getValue("Prioritaet").getInt()))
- .forEach(proc -> {
- if (proc.getFormName().equals("MR.MTB_Einzelempfehlung")) {
- var empfehlung = proc.getValue("Empfehlung");
- if (null != empfehlung && !empfehlung.getString().isBlank()) {
- resultParts.add(String.format("Empfehlung:%n%s", empfehlung.getString()));
- }
- }
- });
- }
- }
+ var refEmpfehlung = procedure.getValue("Empfehlung");
+ if (null != refEmpfehlung && refEmpfehlung.getInt() > 0) {
+ var empfehlungsProzedur = onkostarApi.getProcedure(refEmpfehlung.getInt());
+ var refEinzelempfehlungen = onkostarApi.getSubprocedures(empfehlungsProzedur.getId());
- if (resultParts.isEmpty()) {
- return Optional.empty();
- }
+ if (null != refEinzelempfehlungen) {
+ refEinzelempfehlungen.stream()
+ .sorted(Comparator.comparingInt(proc -> proc.getValue("Prioritaet").getInt()))
+ .forEach(
+ proc -> {
+ if (proc.getFormName().equals("MR.MTB_Einzelempfehlung")) {
+ var empfehlung = proc.getValue("Empfehlung");
+ if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ resultParts.add(String.format("Empfehlung:%n%s", empfehlung.getString()));
+ }
+ }
+ });
+ }
+ }
- return Optional.of(String.join("\n\n", resultParts));
+ if (resultParts.isEmpty()) {
+ return Optional.empty();
}
+
+ return Optional.of(String.join("\n\n", resultParts));
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
index cf992f8..67b3d81 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzToProtocolMapper.java
@@ -20,10 +20,8 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
-
/**
* Mapper zum Ermitteln des Protokollauszugs für Formular "OS.Tumorkonferenz"
*
@@ -32,32 +30,36 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class OsTumorkonferenzToProtocolMapper implements ProcedureToProtocolMapper {
- /**
- * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("OS.Tumorkonferenz"))) {
- throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz'");
- }
-
- var fragestellung = procedure.getValue("Fragestellung");
- var empfehlung = procedure.getValue("Empfehlung");
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz" in ein {@link Optional} mit einer
+ * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("OS.Tumorkonferenz"))) {
+ throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz'");
+ }
- if (
- null != fragestellung && !fragestellung.getString().isBlank()
- && null != empfehlung && !empfehlung.getString().isBlank()
- ) {
- return Optional.of(String.format("Fragestellung:%n%s%n%nEmpfehlung:%n%s", fragestellung.getString(), empfehlung.getString()));
- } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
- return Optional.of(fragestellung.getString());
- } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
- return Optional.of(empfehlung.getString());
- }
+ var fragestellung = procedure.getValue("Fragestellung");
+ var empfehlung = procedure.getValue("Empfehlung");
- return Optional.empty();
+ if (null != fragestellung
+ && !fragestellung.getString().isBlank()
+ && null != empfehlung
+ && !empfehlung.getString().isBlank()) {
+ return Optional.of(
+ String.format(
+ "Fragestellung:%n%s%n%nEmpfehlung:%n%s",
+ fragestellung.getString(), empfehlung.getString()));
+ } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ return Optional.of(fragestellung.getString());
+ } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ return Optional.of(empfehlung.getString());
}
+
+ return Optional.empty();
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
index c1c7bac..7a387c1 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/OsTumorkonferenzVarianteUkwToProtocolMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
/**
@@ -31,32 +30,35 @@ import java.util.Optional;
@Deprecated(forRemoval = true, since = "2.1.0")
public class OsTumorkonferenzVarianteUkwToProtocolMapper implements ProcedureToProtocolMapper {
- /**
- * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz.VarianteUKW" in ein {@link Optional} mit einer
- * Zeichenkette oder im Fehlerfall in ein leeres Optional um.
- * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
- * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
- */
- @Override
- public Optional<String> apply(Procedure procedure) {
- if ((!procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW"))) {
- throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz.VarianteUKW'");
- }
-
+ /**
+ * Wandelt eine Prozedur mit Formularnamen "OS.Tumorkonferenz.VarianteUKW" in ein {@link Optional}
+ * mit einer Zeichenkette oder im Fehlerfall in ein leeres Optional um.
+ *
+ * @param procedure Die Prozedur, für die eine Zusammenfassung ermittelt werden soll.
+ * @return Das {@link Optional} mit, im Erfolgsfall, der Zusammenfassung für die Prozedur.
+ */
+ @Override
+ public Optional<String> apply(Procedure procedure) {
+ if ((!procedure.getFormName().equals("OS.Tumorkonferenz.VarianteUKW"))) {
+ throw new AssertionError("Procedure is not of form type 'OS.Tumorkonferenz.VarianteUKW'");
+ }
- var fragestellung = procedure.getValue("Fragestellung");
- var empfehlung = procedure.getValue("Empfehlung");
+ var fragestellung = procedure.getValue("Fragestellung");
+ var empfehlung = procedure.getValue("Empfehlung");
- if (
- null != fragestellung && !fragestellung.getString().isBlank()
- && null != empfehlung && !empfehlung.getString().isBlank()
- ) {
- return Optional.of(String.format("Fragestellung:%n%s%n%nEmpfehlung:%n%s", fragestellung.getString().trim(), empfehlung.getString().trim()));
- } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
- return Optional.of(fragestellung.getString().trim());
- } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
- return Optional.of(empfehlung.getString().trim());
- }
- return Optional.empty();
+ if (null != fragestellung
+ && !fragestellung.getString().isBlank()
+ && null != empfehlung
+ && !empfehlung.getString().isBlank()) {
+ return Optional.of(
+ String.format(
+ "Fragestellung:%n%s%n%nEmpfehlung:%n%s",
+ fragestellung.getString().trim(), empfehlung.getString().trim()));
+ } else if (null != fragestellung && !fragestellung.getString().isBlank()) {
+ return Optional.of(fragestellung.getString().trim());
+ } else if (null != empfehlung && !empfehlung.getString().isBlank()) {
+ return Optional.of(empfehlung.getString().trim());
}
+ return Optional.empty();
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java b/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
index 93d30d7..8a09f5d 100644
--- a/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/mtb/ProcedureToProtocolMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.mtb;
import de.itc.onkostar.api.Procedure;
-
import java.util.Optional;
import java.util.function.Function;
diff --git a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
index 622f841..49fa149 100644
--- a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/DefaultStrahlentherapieService.java
@@ -19,12 +19,11 @@
package dev.dnpm.oshelper.services.strahlentherapie;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.services.SettingsService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.services.SettingsService;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@@ -38,56 +37,59 @@ import java.util.stream.Collectors;
*/
public class DefaultStrahlentherapieService implements StrahlentherapieService {
- private static final String ECOG_FIELD = "ECOGvorTherapie";
+ private static final String ECOG_FIELD = "ECOGvorTherapie";
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final SettingsService settingsService;
+ private final SettingsService settingsService;
- public DefaultStrahlentherapieService(final IOnkostarApi onkostarApi, final SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- }
+ public DefaultStrahlentherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ }
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- @Override
- public Optional<String> latestEcogStatus(Patient patient) {
- return ecogStatus(patient).stream()
- .max(Comparator.comparing(EcogStatusWithDate::getDate))
- .map(EcogStatusWithDate::getStatus);
- }
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ @Override
+ public Optional<String> latestEcogStatus(Patient patient) {
+ return ecogStatus(patient).stream()
+ .max(Comparator.comparing(EcogStatusWithDate::getDate))
+ .map(EcogStatusWithDate::getStatus);
+ }
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- @Override
- public List<EcogStatusWithDate> ecogStatus(Patient patient) {
- return patient.getDiseases().stream()
- .flatMap(disease -> onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
- .filter(procedure -> null != procedure.getStartDate())
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .map(procedure -> {
- try {
- return new EcogStatusWithDate(procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
- } catch (IllegalArgumentException e) {
- return null;
- }
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- }
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ @Override
+ public List<EcogStatusWithDate> ecogStatus(Patient patient) {
+ return patient.getDiseases().stream()
+ .flatMap(
+ disease ->
+ onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
+ .filter(procedure -> null != procedure.getStartDate())
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .map(
+ procedure -> {
+ try {
+ return new EcogStatusWithDate(
+ procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
+ } catch (IllegalArgumentException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
- private String getFormName() {
- return settingsService
- .getSetting("strahlentherapieform")
- .orElse("OS.Strahlentherapie");
- }
+ private String getFormName() {
+ return settingsService.getSetting("strahlentherapieform").orElse("OS.Strahlentherapie");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
index c410dfc..9b0a1f3 100644
--- a/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/strahlentherapie/StrahlentherapieService.java
@@ -24,6 +24,6 @@ import dev.dnpm.oshelper.services.TherapieMitEcogService;
/**
* Service für Systemtherapieformulare
*
- * @since 0.6.0
+ * @since 0.6.0
*/
public interface StrahlentherapieService extends TherapieMitEcogService {}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
index 7c73dbe..22c7f13 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/DefaultSystemtherapieService.java
@@ -19,12 +19,11 @@
package dev.dnpm.oshelper.services.systemtherapie;
-import dev.dnpm.oshelper.dto.EcogStatusWithDate;
-import dev.dnpm.oshelper.services.SettingsService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Patient;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.dto.EcogStatusWithDate;
+import dev.dnpm.oshelper.services.SettingsService;
import java.util.*;
import java.util.stream.Collectors;
@@ -35,83 +34,86 @@ import java.util.stream.Collectors;
*/
public class DefaultSystemtherapieService implements SystemtherapieService {
- private static final String ECOG_FIELD = "ECOGvorTherapie";
+ private static final String ECOG_FIELD = "ECOGvorTherapie";
- private final IOnkostarApi onkostarApi;
+ private final IOnkostarApi onkostarApi;
- private final SettingsService settingsService;
+ private final SettingsService settingsService;
- public DefaultSystemtherapieService(final IOnkostarApi onkostarApi, final SettingsService settingsService) {
- this.onkostarApi = onkostarApi;
- this.settingsService = settingsService;
- }
+ public DefaultSystemtherapieService(
+ final IOnkostarApi onkostarApi, final SettingsService settingsService) {
+ this.onkostarApi = onkostarApi;
+ this.settingsService = settingsService;
+ }
- /**
- * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
- *
- * @param diseaseId Die ID der Erkrankung
- * @return Zusammenfassung der systemischen Therapien
- */
- @Override
- public List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId) {
- List<Map<String, String>> result = new ArrayList<>();
- for (Procedure prozedur : onkostarApi.getProceduresForDiseaseByForm(diseaseId, getFormName())) {
- prozedurToProzedurwerteMapper(prozedur).apply(prozedur).ifPresent(result::add);
- }
- return result;
+ /**
+ * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
+ *
+ * @param diseaseId Die ID der Erkrankung
+ * @return Zusammenfassung der systemischen Therapien
+ */
+ @Override
+ public List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId) {
+ List<Map<String, String>> result = new ArrayList<>();
+ for (Procedure prozedur : onkostarApi.getProceduresForDiseaseByForm(diseaseId, getFormName())) {
+ prozedurToProzedurwerteMapper(prozedur).apply(prozedur).ifPresent(result::add);
}
+ return result;
+ }
- /**
- * Übergibt aktuell immer den Mapper für das Formular "OS.Systemische Therapie",
- * da beide bekannte Varianten damit gemappt werden können.
- *
- * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
- * @return Der Mapper für die Prozedur
- */
- @Override
- public ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure) {
- return new OsSystemischeTherapieToProzedurwerteMapper();
- }
+ /**
+ * Übergibt aktuell immer den Mapper für das Formular "OS.Systemische Therapie", da beide bekannte
+ * Varianten damit gemappt werden können.
+ *
+ * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
+ * @return Der Mapper für die Prozedur
+ */
+ @Override
+ public ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure) {
+ return new OsSystemischeTherapieToProzedurwerteMapper();
+ }
- /**
- * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Der ECOG-Status als String oder leeres Optional
- */
- @Override
- public Optional<String> latestEcogStatus(Patient patient) {
- return ecogStatus(patient).stream()
- .max(Comparator.comparing(EcogStatusWithDate::getDate))
- .map(EcogStatusWithDate::getStatus);
- }
+ /**
+ * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Der ECOG-Status als String oder leeres Optional
+ */
+ @Override
+ public Optional<String> latestEcogStatus(Patient patient) {
+ return ecogStatus(patient).stream()
+ .max(Comparator.comparing(EcogStatusWithDate::getDate))
+ .map(EcogStatusWithDate::getStatus);
+ }
- /**
- * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
- *
- * @param patient Der zu verwendende Patient
- * @return Eine Liste mit Datum und ECOG-Status als String
- */
- @Override
- public List<EcogStatusWithDate> ecogStatus(Patient patient) {
- return patient.getDiseases().stream()
- .flatMap(disease -> onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
- .filter(procedure -> null != procedure.getStartDate())
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .map(procedure -> {
- try {
- return new EcogStatusWithDate(procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
- } catch (IllegalArgumentException e) {
- return null;
- }
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- }
+ /**
+ * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten
+ *
+ * @param patient Der zu verwendende Patient
+ * @return Eine Liste mit Datum und ECOG-Status als String
+ */
+ @Override
+ public List<EcogStatusWithDate> ecogStatus(Patient patient) {
+ return patient.getDiseases().stream()
+ .flatMap(
+ disease ->
+ onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream())
+ .filter(procedure -> null != procedure.getStartDate())
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .map(
+ procedure -> {
+ try {
+ return new EcogStatusWithDate(
+ procedure.getStartDate(), procedure.getValue(ECOG_FIELD).getString());
+ } catch (IllegalArgumentException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
- private String getFormName() {
- return settingsService
- .getSetting("systemtherapieform")
- .orElse("OS.Systemische Therapie");
- }
+ private String getFormName() {
+ return settingsService.getSetting("systemtherapieform").orElse("OS.Systemische Therapie");
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
index f671381..0e7455d 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/OsSystemischeTherapieToProzedurwerteMapper.java
@@ -24,11 +24,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import dev.dnpm.oshelper.atc.AtcCode;
+import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
-
/**
* Implementierung zum Mappen des Formulars "OS.Systemische Therapie" auf die Prozedurwerte
*
@@ -36,74 +35,74 @@ import java.util.*;
*/
public class OsSystemischeTherapieToProzedurwerteMapper implements ProzedurToProzedurwerteMapper {
- private static final Logger logger = LoggerFactory.getLogger(OsSystemischeTherapieToProzedurwerteMapper.class);
+ private static final Logger logger =
+ LoggerFactory.getLogger(OsSystemischeTherapieToProzedurwerteMapper.class);
- @Override
- public Optional<Map<String, String>> apply(Procedure procedure) {
- try {
- return Optional.of(getProzedurwerte(procedure));
- } catch (Exception e) {
- logger.error("Fehler beim Mappen der Prozedur auf Prozedurwerte", e);
- return Optional.empty();
- }
+ @Override
+ public Optional<Map<String, String>> apply(Procedure procedure) {
+ try {
+ return Optional.of(getProzedurwerte(procedure));
+ } catch (Exception e) {
+ logger.error("Fehler beim Mappen der Prozedur auf Prozedurwerte", e);
+ return Optional.empty();
}
+ }
- private static Map<String, String> getProzedurwerte(Procedure prozedur) {
- List<String> wirkstoffListe = new ArrayList<>();
- // SubstanzenCodesListe enthält die Liste der SubstanzenCodes
- List<Map<String, String>> substanzenCodesListe = new ArrayList<>();
+ private static Map<String, String> getProzedurwerte(Procedure prozedur) {
+ List<String> wirkstoffListe = new ArrayList<>();
+ // SubstanzenCodesListe enthält die Liste der SubstanzenCodes
+ List<Map<String, String>> substanzenCodesListe = new ArrayList<>();
- // alle Werte der Prozedur auslesen
- Map<String, Item> alleWerte = prozedur.getAllValues();
- // Prozedurwerte enthält nur die interessanten Werte
- Map<String, String> prozedurwerte = new HashMap<>();
- // alle Werte durchgehen und die interessanten übernehmen
- if (alleWerte.containsKey("Beendigung")) {
- prozedurwerte.put("Beendigung", alleWerte.get("Beendigung").getValue());
- }
- if (alleWerte.containsKey("Ergebnis")) {
- prozedurwerte.put("Ergebnis", alleWerte.get("Ergebnis").getValue());
- }
- if (alleWerte.containsKey("Beginn")) {
- prozedurwerte.put("Beginn", alleWerte.get("Beginn").getString());
- }
- if (alleWerte.containsKey("Ende")) {
- prozedurwerte.put("Ende", alleWerte.get("Ende").getString());
- }
- if (alleWerte.containsKey("SubstanzenList")) {
- List<Map<String, String>> substanzList = alleWerte.get("SubstanzenList").getValue();
- for (var substanz : substanzList) {
- var substanzCodes = getSubstanzCode(substanz);
- substanzenCodesListe.add(substanzCodes);
- wirkstoffListe.add(substanzCodes.get("substance"));
- }
- }
-
- prozedurwerte.put("Wirkstoffe", String.join(", ", wirkstoffListe));
- try {
- ObjectMapper mapper = new ObjectMapper();
- prozedurwerte.put("WirkstoffCodes", mapper.writeValueAsString(substanzenCodesListe));
- } catch (JsonProcessingException e) {
- logger.error("Kann 'WirkstoffCodes' nicht in JSON-String mappen", e);
- }
+ // alle Werte der Prozedur auslesen
+ Map<String, Item> alleWerte = prozedur.getAllValues();
+ // Prozedurwerte enthält nur die interessanten Werte
+ Map<String, String> prozedurwerte = new HashMap<>();
+ // alle Werte durchgehen und die interessanten übernehmen
+ if (alleWerte.containsKey("Beendigung")) {
+ prozedurwerte.put("Beendigung", alleWerte.get("Beendigung").getValue());
+ }
+ if (alleWerte.containsKey("Ergebnis")) {
+ prozedurwerte.put("Ergebnis", alleWerte.get("Ergebnis").getValue());
+ }
+ if (alleWerte.containsKey("Beginn")) {
+ prozedurwerte.put("Beginn", alleWerte.get("Beginn").getString());
+ }
+ if (alleWerte.containsKey("Ende")) {
+ prozedurwerte.put("Ende", alleWerte.get("Ende").getString());
+ }
+ if (alleWerte.containsKey("SubstanzenList")) {
+ List<Map<String, String>> substanzList = alleWerte.get("SubstanzenList").getValue();
+ for (var substanz : substanzList) {
+ var substanzCodes = getSubstanzCode(substanz);
+ substanzenCodesListe.add(substanzCodes);
+ wirkstoffListe.add(substanzCodes.get("substance"));
+ }
+ }
- return prozedurwerte;
+ prozedurwerte.put("Wirkstoffe", String.join(", ", wirkstoffListe));
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ prozedurwerte.put("WirkstoffCodes", mapper.writeValueAsString(substanzenCodesListe));
+ } catch (JsonProcessingException e) {
+ logger.error("Kann 'WirkstoffCodes' nicht in JSON-String mappen", e);
}
- private static Map<String, String> getSubstanzCode(Map<String, String> substanz) {
- Map<String, String> substanzCode = new HashMap<>();
- if (substanz.containsKey("Substanz")) {
- if (AtcCode.isAtcCode(substanz.get("Substanz"))) {
- substanzCode.put("system", "ATC");
- } else {
- substanzCode.put("system", "other");
- }
- substanzCode.put("code", substanz.get("Substanz"));
+ return prozedurwerte;
+ }
- }
- if (substanz.containsKey("Substanz_shortDescription")) {
- substanzCode.put("substance", substanz.get("Substanz_shortDescription"));
- }
- return substanzCode;
+ private static Map<String, String> getSubstanzCode(Map<String, String> substanz) {
+ Map<String, String> substanzCode = new HashMap<>();
+ if (substanz.containsKey("Substanz")) {
+ if (AtcCode.isAtcCode(substanz.get("Substanz"))) {
+ substanzCode.put("system", "ATC");
+ } else {
+ substanzCode.put("system", "other");
+ }
+ substanzCode.put("code", substanz.get("Substanz"));
+ }
+ if (substanz.containsKey("Substanz_shortDescription")) {
+ substanzCode.put("substance", substanz.get("Substanz_shortDescription"));
}
+ return substanzCode;
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
index e2af851..c8a6829 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/ProzedurToProzedurwerteMapper.java
@@ -20,7 +20,6 @@
package dev.dnpm.oshelper.services.systemtherapie;
import de.itc.onkostar.api.Procedure;
-
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
@@ -30,4 +29,5 @@ import java.util.function.Function;
*
* @since 0.2.0
*/
-public interface ProzedurToProzedurwerteMapper extends Function<Procedure, Optional<Map<String, String>>> {}
+public interface ProzedurToProzedurwerteMapper
+ extends Function<Procedure, Optional<Map<String, String>>> {}
diff --git a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
index 63216a0..2be4cc4 100644
--- a/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/systemtherapie/SystemtherapieService.java
@@ -19,30 +19,30 @@
package dev.dnpm.oshelper.services.systemtherapie;
-import dev.dnpm.oshelper.services.TherapieMitEcogService;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.TherapieMitEcogService;
import java.util.List;
import java.util.Map;
/**
* Service für Systemtherapieformulare
*
- * @since 0.2.0
+ * @since 0.2.0
*/
public interface SystemtherapieService extends TherapieMitEcogService {
- /**
- * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
- * @param diseaseId Die ID der Erkrankung
- * @return Die Zusammenfassung der systemischen Therapien
- */
- List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId);
-
- /**
- * Erstellt den Mapper for die Prozedur
- * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
- * @return Der erstellte ProzedurToProzedurwerteMapper
- */
- ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure);
+ /**
+ * Ermittelt eine Zusammenfassung der systemischen Therapien für eine Erkrankung
+ *
+ * @param diseaseId Die ID der Erkrankung
+ * @return Die Zusammenfassung der systemischen Therapien
+ */
+ List<Map<String, String>> getSystemischeTherapienFromDiagnose(int diseaseId);
+ /**
+ * Erstellt den Mapper for die Prozedur
+ *
+ * @param procedure Die Prozedur für die ein Mapper erstellt werden soll
+ * @return Der erstellte ProzedurToProzedurwerteMapper
+ */
+ ProzedurToProzedurwerteMapper prozedurToProzedurwerteMapper(Procedure procedure);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
index 4542972..cd04e1f 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/AbstractTherapieplanService.java
@@ -19,43 +19,44 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.List;
import java.util.stream.Collectors;
public abstract class AbstractTherapieplanService implements TherapieplanService {
- protected final IOnkostarApi onkostarApi;
+ protected final IOnkostarApi onkostarApi;
- protected final FormService formService;
+ protected final FormService formService;
- protected AbstractTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- this.onkostarApi = onkostarApi;
- this.formService = formService;
- }
-
- @Override
- public List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure) {
- if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
- return List.of();
- }
+ protected AbstractTherapieplanService(
+ final IOnkostarApi onkostarApi, final FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.formService = formService;
+ }
- return procedure.getDiseaseIds().stream()
- .flatMap(diseaseId -> onkostarApi.getProceduresForDiseaseByForm(diseaseId, "DNPM FollowUp").stream())
- .filter(p -> p.getValue("LinkTherapieempfehlung").getInt() == procedure.getId())
- .collect(Collectors.toList());
+ @Override
+ public List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure) {
+ if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
+ return List.of();
}
- @Override
- public List<Procedure> findReferencedFollowUpsForSubform(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
- return List.of();
- }
- return findReferencedFollowUpsForSubform(procedure);
+ return procedure.getDiseaseIds().stream()
+ .flatMap(
+ diseaseId ->
+ onkostarApi.getProceduresForDiseaseByForm(diseaseId, "DNPM FollowUp").stream())
+ .filter(p -> p.getValue("LinkTherapieempfehlung").getInt() == procedure.getId())
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<Procedure> findReferencedFollowUpsForSubform(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) {
+ return List.of();
}
-
+ return findReferencedFollowUpsForSubform(procedure);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
index df1902e..4f5d716 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/DefaultTherapieplanService.java
@@ -19,197 +19,192 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
+import static dev.dnpm.oshelper.services.FormService.hasValue;
+import static dev.dnpm.oshelper.services.FormService.isYes;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.Date;
import java.util.List;
import java.util.Objects;
-
-import static dev.dnpm.oshelper.services.FormService.hasValue;
-import static dev.dnpm.oshelper.services.FormService.isYes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DefaultTherapieplanService extends AbstractTherapieplanService {
- public static final String FORMFIELD_REFERSTEMTB = "referstemtb";
- public static final String FORMFIELD_HUMANGENBERATUNG = "humangenberatung";
- public static final String FORMFIELD_REEVALUATION = "reevaluation";
- public static final String FORMFIELD_DATUM = "datum";
- public static final String FORMFIELD_REFTKHUMANGENBER = "reftkhumangenber";
- public static final String FORMFIELD_DATUMTKHUMANGENBER = "datumtkhumangenber";
- public static final String FORMFIELD_REFTKREEVALUATION = "reftkreevaluation";
- public static final String FORMFIELD_DATUMTKREEVALUATION = "datumtkreevaluation";
- public static final String FORMFIELD_MTB = "mtb";
- public static final String FORMFIELD_UFEEDATUM = "ufeedatum";
- public static final String FORMFIELD_REFTUMORKONFERENZ = "reftumorkonferenz";
- public static final String FORMFIELD_UFRBDATUM = "ufrbdatum";
-
- public static final String DATAFIELD_REF_TK_HUMANGENBER = "ref_tk_humangenber";
- public static final String DATAFIELD_DATUM_TK_HUMANGENBER = "datum_tk_humangenber";
- public static final String DATAFIELD_DATUM = "datum";
-
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- public DefaultTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- super(onkostarApi, formService);
+ public static final String FORMFIELD_REFERSTEMTB = "referstemtb";
+ public static final String FORMFIELD_HUMANGENBERATUNG = "humangenberatung";
+ public static final String FORMFIELD_REEVALUATION = "reevaluation";
+ public static final String FORMFIELD_DATUM = "datum";
+ public static final String FORMFIELD_REFTKHUMANGENBER = "reftkhumangenber";
+ public static final String FORMFIELD_DATUMTKHUMANGENBER = "datumtkhumangenber";
+ public static final String FORMFIELD_REFTKREEVALUATION = "reftkreevaluation";
+ public static final String FORMFIELD_DATUMTKREEVALUATION = "datumtkreevaluation";
+ public static final String FORMFIELD_MTB = "mtb";
+ public static final String FORMFIELD_UFEEDATUM = "ufeedatum";
+ public static final String FORMFIELD_REFTUMORKONFERENZ = "reftumorkonferenz";
+ public static final String FORMFIELD_UFRBDATUM = "ufrbdatum";
+
+ public static final String DATAFIELD_REF_TK_HUMANGENBER = "ref_tk_humangenber";
+ public static final String DATAFIELD_DATUM_TK_HUMANGENBER = "datum_tk_humangenber";
+ public static final String DATAFIELD_DATUM = "datum";
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ public DefaultTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
+ super(onkostarApi, formService);
+ }
+
+ /**
+ * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen "Humangenetische
+ * Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ */
+ @Override
+ public void updateRequiredMtbEntries(Procedure procedure) {
+ this.updateMtbInSections(procedure);
+ this.updateMtbInSubforms(procedure);
+ }
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ if (!hasValue(procedure, FORMFIELD_REFERSTEMTB)) {
+ return List.of();
+ }
+
+ var mtbProcedure =
+ this.onkostarApi.getProcedure(procedure.getValue(FORMFIELD_REFERSTEMTB).getInt());
+ if (null == mtbProcedure) {
+ return List.of();
}
+ return List.of(mtbProcedure);
+ }
+
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
+ }
+ return findReferencedMtbs(procedure);
+ }
+
+ private void updateMtbInSections(Procedure procedure) {
+ if (!isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && !isYes(procedure, FORMFIELD_REEVALUATION)) {
+ return;
+ }
+
+ var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
+ var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
+ var noUpdateRequired = true;
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
- * "Humangenetische Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- @Override
- public void updateRequiredMtbEntries(Procedure procedure) {
- this.updateMtbInSections(procedure);
- this.updateMtbInSubforms(procedure);
+ if (isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && (!hasValue(procedure, FORMFIELD_REFTKHUMANGENBER)
+ || mtbReference != procedure.getValue(FORMFIELD_REFTKHUMANGENBER).getInt())) {
+ procedure.setValue(
+ FORMFIELD_REFTKHUMANGENBER, new Item(DATAFIELD_REF_TK_HUMANGENBER, mtbReference));
+ noUpdateRequired = false;
}
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedure Die Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- @Override
- public List<Procedure> findReferencedMtbs(Procedure procedure) {
- if (!hasValue(procedure, FORMFIELD_REFERSTEMTB)) {
- return List.of();
- }
-
- var mtbProcedure = this.onkostarApi.getProcedure(procedure.getValue(FORMFIELD_REFERSTEMTB).getInt());
- if (null == mtbProcedure) {
- return List.of();
- }
- return List.of(mtbProcedure);
+ if (isYes(procedure, FORMFIELD_HUMANGENBERATUNG)
+ && (!hasValue(procedure, FORMFIELD_DATUMTKHUMANGENBER)
+ || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKHUMANGENBER).getDate()))) {
+ procedure.setValue(
+ FORMFIELD_DATUMTKHUMANGENBER, new Item(DATAFIELD_DATUM_TK_HUMANGENBER, mtbDate));
+ noUpdateRequired = false;
}
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedureId ID der Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- @Override
- public List<Procedure> findReferencedMtbs(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure) {
- return List.of();
- }
- return findReferencedMtbs(procedure);
+ if (isYes(procedure, FORMFIELD_REEVALUATION)
+ && (!hasValue(procedure, FORMFIELD_REFTKREEVALUATION)
+ || mtbReference != procedure.getValue(FORMFIELD_REFTKREEVALUATION).getInt())) {
+ procedure.setValue(
+ FORMFIELD_REFTKREEVALUATION, new Item("ref_tk_reevaluation", mtbReference));
+ noUpdateRequired = false;
}
- private void updateMtbInSections(Procedure procedure) {
- if (!isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && !isYes(procedure, FORMFIELD_REEVALUATION)) {
- return;
- }
-
- var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
- var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
- var noUpdateRequired = true;
-
- if (
- isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && (
- !hasValue(procedure, FORMFIELD_REFTKHUMANGENBER)
- || mtbReference != procedure.getValue(FORMFIELD_REFTKHUMANGENBER).getInt()
- )
- ) {
- procedure.setValue(FORMFIELD_REFTKHUMANGENBER, new Item(DATAFIELD_REF_TK_HUMANGENBER, mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_HUMANGENBERATUNG) && (
- !hasValue(procedure, FORMFIELD_DATUMTKHUMANGENBER)
- || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKHUMANGENBER).getDate())
- )
- ) {
- procedure.setValue(FORMFIELD_DATUMTKHUMANGENBER, new Item(DATAFIELD_DATUM_TK_HUMANGENBER, mtbDate));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_REEVALUATION) && (
- !hasValue(procedure, FORMFIELD_REFTKREEVALUATION)
- || mtbReference != procedure.getValue(FORMFIELD_REFTKREEVALUATION).getInt()
- )
- ) {
- procedure.setValue(FORMFIELD_REFTKREEVALUATION, new Item("ref_tk_reevaluation", mtbReference));
- noUpdateRequired = false;
- }
-
- if (
- isYes(procedure, FORMFIELD_REEVALUATION) && (
- !hasValue(procedure, FORMFIELD_DATUMTKREEVALUATION)
- || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKREEVALUATION).getDate())
- )
- ) {
- procedure.setValue(FORMFIELD_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);
- }
+ if (isYes(procedure, FORMFIELD_REEVALUATION)
+ && (!hasValue(procedure, FORMFIELD_DATUMTKREEVALUATION)
+ || !mtbDate.equals(procedure.getValue(FORMFIELD_DATUMTKREEVALUATION).getDate()))) {
+ procedure.setValue(FORMFIELD_DATUMTKREEVALUATION, new Item("datum_tk_reevaluation", mtbDate));
+ noUpdateRequired = false;
}
- private void updateMtbInSubforms(Procedure procedure) {
- if (
- !hasValue(procedure, FORMFIELD_REFERSTEMTB) || !hasValue(procedure, FORMFIELD_DATUM)
- ) {
- return;
- }
-
- var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
- var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
-
- formService.getSubFormProcedureIds(procedure.getId()).stream()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .forEach(subform -> {
- if (isUsableEinzelempfehlung(subform, mtbReference, mtbDate)) {
- subform.setValue(FORMFIELD_MTB, new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue(FORMFIELD_UFEEDATUM, new Item(DATAFIELD_DATUM, mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Einzelempfehlung' konnte nicht aktualisiert werden", e);
- }
- }
-
-
- if (isUsableRebiopsie(subform, mtbReference, mtbDate)) {
- subform.setValue(FORMFIELD_REFTUMORKONFERENZ, new Item("ref_tumorkonferenz", mtbReference));
- subform.setValue(FORMFIELD_UFRBDATUM, new Item(DATAFIELD_DATUM, mtbDate));
-
- try {
- onkostarApi.saveProcedure(subform, false);
- } catch (Exception e) {
- logger.error("Formular 'DNPM UF Rebiopsie' konnte nicht aktualisiert werden", e);
- }
- }
-
- });
+ if (noUpdateRequired) {
+ return;
}
- private static boolean isUsableRebiopsie(Procedure subform, int mtbReference, Date mtbDate) {
- return subform.getFormName().equals("DNPM UF Rebiopsie") && mtbReference != subform.getValue(FORMFIELD_REFTUMORKONFERENZ).getInt() && !mtbDate.equals(subform.getValue(FORMFIELD_UFRBDATUM).getDate());
+ try {
+ onkostarApi.saveProcedure(procedure, false);
+ } catch (Exception e) {
+ logger.error("Formular 'DNPM Therapieplan' konnte nicht aktualisiert werden", e);
}
+ }
- private static boolean isUsableEinzelempfehlung(Procedure subform, int mtbReference, Date mtbDate) {
- return subform.getFormName().equals("DNPM UF Einzelempfehlung") && mtbReference != subform.getValue(FORMFIELD_MTB).getInt() && !mtbDate.equals(subform.getValue(FORMFIELD_UFEEDATUM).getDate());
+ private void updateMtbInSubforms(Procedure procedure) {
+ if (!hasValue(procedure, FORMFIELD_REFERSTEMTB) || !hasValue(procedure, FORMFIELD_DATUM)) {
+ return;
}
+ var mtbReference = procedure.getValue(FORMFIELD_REFERSTEMTB).getInt();
+ var mtbDate = procedure.getValue(FORMFIELD_DATUM).getDate();
+
+ formService.getSubFormProcedureIds(procedure.getId()).stream()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .forEach(
+ subform -> {
+ if (isUsableEinzelempfehlung(subform, mtbReference, mtbDate)) {
+ subform.setValue(FORMFIELD_MTB, new Item("ref_tumorkonferenz", mtbReference));
+ subform.setValue(FORMFIELD_UFEEDATUM, new Item(DATAFIELD_DATUM, mtbDate));
+
+ try {
+ onkostarApi.saveProcedure(subform, false);
+ } catch (Exception e) {
+ logger.error(
+ "Formular 'DNPM UF Einzelempfehlung' konnte nicht aktualisiert werden", e);
+ }
+ }
+
+ if (isUsableRebiopsie(subform, mtbReference, mtbDate)) {
+ subform.setValue(
+ FORMFIELD_REFTUMORKONFERENZ, new Item("ref_tumorkonferenz", mtbReference));
+ subform.setValue(FORMFIELD_UFRBDATUM, new Item(DATAFIELD_DATUM, mtbDate));
+
+ try {
+ onkostarApi.saveProcedure(subform, false);
+ } catch (Exception e) {
+ logger.error("Formular 'DNPM UF Rebiopsie' konnte nicht aktualisiert werden", e);
+ }
+ }
+ });
+ }
+
+ private static boolean isUsableRebiopsie(Procedure subform, int mtbReference, Date mtbDate) {
+ return subform.getFormName().equals("DNPM UF Rebiopsie")
+ && mtbReference != subform.getValue(FORMFIELD_REFTUMORKONFERENZ).getInt()
+ && !mtbDate.equals(subform.getValue(FORMFIELD_UFRBDATUM).getDate());
+ }
+
+ private static boolean isUsableEinzelempfehlung(
+ Procedure subform, int mtbReference, Date mtbDate) {
+ return subform.getFormName().equals("DNPM UF Einzelempfehlung")
+ && mtbReference != subform.getValue(FORMFIELD_MTB).getInt()
+ && !mtbDate.equals(subform.getValue(FORMFIELD_UFEEDATUM).getDate());
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
index d6cf537..ff7408e 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/MultipleMtbTherapieplanService.java
@@ -19,73 +19,74 @@
package dev.dnpm.oshelper.services.therapieplan;
-import dev.dnpm.oshelper.services.FormService;
+import static dev.dnpm.oshelper.services.FormService.hasValue;
+import static dev.dnpm.oshelper.services.FormService.isYes;
+
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
-
+import dev.dnpm.oshelper.services.FormService;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
-import static dev.dnpm.oshelper.services.FormService.hasValue;
-import static dev.dnpm.oshelper.services.FormService.isYes;
-
@Deprecated(forRemoval = true, since = "2.0.0")
public class MultipleMtbTherapieplanService extends AbstractTherapieplanService {
- public MultipleMtbTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) {
- super(onkostarApi, formService);
- }
+ public MultipleMtbTherapieplanService(
+ final IOnkostarApi onkostarApi, final FormService formService) {
+ super(onkostarApi, formService);
+ }
- @Override
- public void updateRequiredMtbEntries(Procedure procedure) {
- // No action required
- }
+ @Override
+ public void updateRequiredMtbEntries(Procedure procedure) {
+ // No action required
+ }
- @Override
- public List<Procedure> findReferencedMtbs(Procedure procedure) {
- var procedureIds = new ArrayList<Integer>();
+ @Override
+ public List<Procedure> findReferencedMtbs(Procedure procedure) {
+ var procedureIds = new ArrayList<Integer>();
- var mtbReference = procedure.getValue("referstemtb").getInt();
- procedureIds.add(mtbReference);
+ var mtbReference = procedure.getValue("referstemtb").getInt();
+ procedureIds.add(mtbReference);
- if (isYes(procedure, "humangenberatung") && hasValue(procedure, "reftkhumangenber")) {
- procedureIds.add(procedure.getValue("reftkhumangenber").getInt());
- }
+ if (isYes(procedure, "humangenberatung") && hasValue(procedure, "reftkhumangenber")) {
+ procedureIds.add(procedure.getValue("reftkhumangenber").getInt());
+ }
- if (isYes(procedure, "reevaluation") && hasValue(procedure, "reftkreevaluation")) {
- procedureIds.add(procedure.getValue("reftkreevaluation").getInt());
- }
+ if (isYes(procedure, "reevaluation") && hasValue(procedure, "reftkreevaluation")) {
+ procedureIds.add(procedure.getValue("reftkreevaluation").getInt());
+ }
- formService.getSubFormProcedureIds(procedure.getId()).stream()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .forEach(subform -> {
- if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
- procedureIds.add(subform.getValue("mtb").getInt());
- }
+ formService.getSubFormProcedureIds(procedure.getId()).stream()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .forEach(
+ subform -> {
+ if (subform.getFormName().equals("DNPM UF Einzelempfehlung")) {
+ procedureIds.add(subform.getValue("mtb").getInt());
+ }
- if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
- procedureIds.add(subform.getValue("reftumorkonferenz").getInt());
- }
- });
+ if (subform.getFormName().equals("DNPM UF Rebiopsie")) {
+ procedureIds.add(subform.getValue("reftumorkonferenz").getInt());
+ }
+ });
- return procedureIds.stream()
- .distinct()
- .map(onkostarApi::getProcedure)
- .filter(Objects::nonNull)
- .sorted(Comparator.comparing(Procedure::getStartDate))
- .collect(Collectors.toList());
- }
+ return procedureIds.stream()
+ .distinct()
+ .map(onkostarApi::getProcedure)
+ .filter(Objects::nonNull)
+ .sorted(Comparator.comparing(Procedure::getStartDate))
+ .collect(Collectors.toList());
+ }
- @Override
- public List<Procedure> findReferencedMtbs(int procedureId) {
- var procedure = this.onkostarApi.getProcedure(procedureId);
- if (null == procedure) {
- return List.of();
- }
- return findReferencedMtbs(procedure);
+ @Override
+ public List<Procedure> findReferencedMtbs(int procedureId) {
+ var procedure = this.onkostarApi.getProcedure(procedureId);
+ if (null == procedure) {
+ return List.of();
}
+ return findReferencedMtbs(procedure);
+ }
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
index b22a75d..bfdbf76 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanService.java
@@ -20,49 +20,47 @@
package dev.dnpm.oshelper.services.therapieplan;
import de.itc.onkostar.api.Procedure;
-
import java.util.List;
public interface TherapieplanService {
- /**
- * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
- * "Humangenetische Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
- *
- * @param procedure Die Prozedur mit Hauptformular
- */
- void updateRequiredMtbEntries(Procedure procedure);
-
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedure Die Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- List<Procedure> findReferencedMtbs(Procedure procedure);
+ /**
+ * Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen "Humangenetische
+ * Beratung" und "Reevaluation" und Unterformularen, wenn erforderlich.
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ */
+ void updateRequiredMtbEntries(Procedure procedure);
- /**
- * Finde verlinkte MTBs in Hauptformular und Unterformularen
- *
- * @param procedureId ID der Prozedur mit Hauptformular
- * @return Liste mit verlinkten MTBs
- */
- List<Procedure> findReferencedMtbs(int procedureId);
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedure Die Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(Procedure procedure);
- /**
- * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
- *
- * @param procedure Die DNPM UF Einzelempfehlung Prozedur
- * @return Liste mit verlinkten FollowUps
- */
- List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure);
+ /**
+ * Finde verlinkte MTBs in Hauptformular und Unterformularen
+ *
+ * @param procedureId ID der Prozedur mit Hauptformular
+ * @return Liste mit verlinkten MTBs
+ */
+ List<Procedure> findReferencedMtbs(int procedureId);
- /**
- * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
- *
- * @param procedureId ID der Prozedur
- * @return Liste mit verlinkten FollowUps
- */
- List<Procedure> findReferencedFollowUpsForSubform(int procedureId);
+ /**
+ * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
+ *
+ * @param procedure Die DNPM UF Einzelempfehlung Prozedur
+ * @return Liste mit verlinkten FollowUps
+ */
+ List<Procedure> findReferencedFollowUpsForSubform(Procedure procedure);
+ /**
+ * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung
+ *
+ * @param procedureId ID der Prozedur
+ * @return Liste mit verlinkten FollowUps
+ */
+ List<Procedure> findReferencedFollowUpsForSubform(int procedureId);
}
diff --git a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
index 0b9222c..889f9c8 100644
--- a/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
+++ b/src/main/java/dev/dnpm/oshelper/services/therapieplan/TherapieplanServiceFactory.java
@@ -19,28 +19,26 @@
package dev.dnpm.oshelper.services.therapieplan;
+import de.itc.onkostar.api.IOnkostarApi;
import dev.dnpm.oshelper.services.FormService;
import dev.dnpm.oshelper.services.SettingsService;
-import de.itc.onkostar.api.IOnkostarApi;
public class TherapieplanServiceFactory {
- private final IOnkostarApi onkostarApi;
-
- private final FormService formService;
+ private final IOnkostarApi onkostarApi;
- @SuppressWarnings("unused")
- public TherapieplanServiceFactory(
- final IOnkostarApi onkostarApi,
- final SettingsService settingsService,
- final FormService formService
- ) {
- this.onkostarApi = onkostarApi;
- this.formService = formService;
- }
+ private final FormService formService;
- public TherapieplanService currentUsableInstance() {
- return new DefaultTherapieplanService(onkostarApi, formService);
- }
+ @SuppressWarnings("unused")
+ public TherapieplanServiceFactory(
+ final IOnkostarApi onkostarApi,
+ final SettingsService settingsService,
+ final FormService formService) {
+ this.onkostarApi = onkostarApi;
+ this.formService = formService;
+ }
+ public TherapieplanService currentUsableInstance() {
+ return new DefaultTherapieplanService(onkostarApi, formService);
+ }
}