From fb91356b7777dfa5b6088bcc3a48b43924c1c0fd Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 3 Sep 2026 14:35:10 +0200 Subject: build: apply Spotless plugin (#293) --- .../dnpm/oshelper/services/DefaultFormService.java | 45 +-- .../oshelper/services/DefaultStudienService.java | 94 +++--- .../dev/dnpm/oshelper/services/FormService.java | 79 ++--- .../dnpm/oshelper/services/SettingsService.java | 72 ++--- .../dev/dnpm/oshelper/services/StudienService.java | 62 ++-- .../oshelper/services/TherapieMitEcogService.java | 32 +- .../services/consent/ConsentManagerService.java | 29 +- .../consent/ConsentManagerServiceFactory.java | 37 ++- .../services/consent/MrConsentManagerService.java | 207 ++++++------- .../services/consent/UkwConsentManagerService.java | 95 +++--- .../MolekulargenetikFormService.java | 22 +- .../OsMolekulargenetikFormService.java | 65 ++-- .../mtb/MrMtbAnmeldungToProtocolMapper.java | 88 +++--- .../mtb/OsTumorkonferenzToProtocolMapper.java | 56 ++-- ...sTumorkonferenzVarianteUkwToProtocolMapper.java | 54 ++-- .../services/mtb/ProcedureToProtocolMapper.java | 1 - .../DefaultStrahlentherapieService.java | 100 ++++--- .../strahlentherapie/StrahlentherapieService.java | 2 +- .../DefaultSystemtherapieService.java | 148 ++++----- ...OsSystemischeTherapieToProzedurwerteMapper.java | 125 ++++---- .../ProzedurToProzedurwerteMapper.java | 4 +- .../systemtherapie/SystemtherapieService.java | 32 +- .../therapieplan/AbstractTherapieplanService.java | 53 ++-- .../therapieplan/DefaultTherapieplanService.java | 331 ++++++++++----------- .../MultipleMtbTherapieplanService.java | 97 +++--- .../services/therapieplan/TherapieplanService.java | 72 +++-- .../therapieplan/TherapieplanServiceFactory.java | 30 +- 27 files changed, 1023 insertions(+), 1009 deletions(-) (limited to 'src/main/java/dev/dnpm/oshelper/services') 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 getSubFormProcedureIds(int procedureId) { - var sql = "SELECT id FROM prozedur WHERE hauptprozedur_id = ?"; - return jdbcTemplate.queryForList(sql, Integer.class, procedureId); - } + @Override + public List 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 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 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 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 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 findActive() { - return findAll().stream().filter(Studie::isActive).collect(Collectors.toList()); - } + @Override + public List findActive() { + return findAll().stream().filter(Studie::isActive).collect(Collectors.toList()); + } - @Override - public List findActiveByQuery(String query) { - return findByQuery(query).stream().filter(Studie::isActive).collect(Collectors.toList()); - } + @Override + public List 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: FormInfoService.java - * - * @param procedureId Die Prozedur-ID des Unterformulars - * @return Die Prozedur-ID des zugehörigen Hauptformulars - * @throws FormException Wird geworfen, wenn ein Fehler auftrat - */ - int getMainFormProcedureId(int procedureId) throws FormException; - - /** - * Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular - * Siehe auch: FormInfoService.java - * - * @param procedureId Die Prozedur-ID des Formulars - * @return Eine Liste mit Prozedur-IDs der Unterformulare - */ - List getSubFormProcedureIds(int procedureId); + /** + * Diese Methode übergibt die Prozedur-ID des zugehörigen Hauptformulars zu einem Unterformular + * Siehe auch: FormInfoService.java + * + * @param procedureId Die Prozedur-ID des Unterformulars + * @return Die Prozedur-ID des zugehörigen Hauptformulars + * @throws FormException Wird geworfen, wenn ein Fehler auftrat + */ + int getMainFormProcedureId(int procedureId) throws FormException; - /** - * Prüft, ob ein Formularfeld in der Prozedur einen Wert hat oder null ist - * @param procedure Die zu prüfende Prozedur - * @param fieldName Der Formularfeldname - * @return Gibt true zurück, wenn das Feld einen Wert hat - */ - static boolean hasValue(final Procedure procedure, final String fieldName) { - return null != procedure.getValue(fieldName); - } + /** + * Diese Methode übergibt die Prozedur-IDs von Unterformularen zu einem Formular Siehe auch: FormInfoService.java + * + * @param procedureId Die Prozedur-ID des Formulars + * @return Eine Liste mit Prozedur-IDs der Unterformulare + */ + List getSubFormProcedureIds(int procedureId); - /** - * Prüft, ob ein Formularfeld mit Ja/Nein/Unbekannt den Wert Ja hat - * @param procedure Die zu prüfende Prozedur - * @param fieldName Der Formularfeldname - * @return Gibt true zurück, wenn das Feld den Wert "Ja" hat - */ - static boolean isYes(final Procedure procedure, final String fieldName) { - return hasValue(procedure, fieldName) - && procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode()); - } + /** + * Prüft, ob ein Formularfeld in der Prozedur einen Wert hat oder null ist + * + * @param procedure Die zu prüfende Prozedur + * @param fieldName Der Formularfeldname + * @return Gibt true zurück, wenn das Feld einen Wert hat + */ + static boolean hasValue(final Procedure procedure, final String fieldName) { + return null != procedure.getValue(fieldName); + } + /** + * Prüft, ob ein Formularfeld mit Ja/Nein/Unbekannt den Wert Ja hat + * + * @param procedure Die zu prüfende Prozedur + * @param fieldName Der Formularfeldname + * @return Gibt true zurück, wenn das Feld den Wert "Ja" hat + */ + static boolean isYes(final Procedure procedure, final String fieldName) { + return hasValue(procedure, fieldName) + && procedure.getValue(fieldName).getString().equals(JaNeinUnbekannt.JA.getCode()); + } } 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 Optional 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 getSetting(String name) { - var sid = settingsRepository.findByName(name); - if (null == sid) { - return Optional.empty(); - } - return Optional.of(sid.getValue()); + /** + * Übergibt ein Optional 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 getSetting(String name) { + var sid = settingsRepository.findByName(name); + if (null == sid) { + return Optional.empty(); } + return Optional.of(sid.getValue()); + } - /** - * Übergibt die SID als Optional - * @return Optional mit Wert der SID - */ - public Optional getSID() { - return getSetting("SID"); - } + /** + * Übergibt die SID als Optional + * + * @return Optional mit Wert der SID + */ + public Optional getSID() { + return getSetting("SID"); + } - /** - * Übergibt die Einstellung für mehrere_mtb_in_mtbepisode - * @return Übergibt true, wenn mehrere_mtb_in_mtbepisode 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 mehrere_mtb_in_mtbepisode + * + * @return Übergibt true, wenn mehrere_mtb_in_mtbepisode 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 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 findByQuery(String query); - - /** - * Übergibt eine Liste mit aktiven Studien - * - * @return Liste mit aktiven Studien - */ - List 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 findActiveByQuery(String query); - + /** + * Übergibt eine Liste mit allen Studien + * + * @return Liste mit allen Studien + */ + List 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 findByQuery(String query); + + /** + * Übergibt eine Liste mit aktiven Studien + * + * @return Liste mit aktiven Studien + */ + List 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 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 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 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 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 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 true 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 true 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 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 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 felder = prozedur.getAllValues(); - for (Map.Entry 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 felder = prozedur.getAllValues(); + for (Map.Entry 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 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 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: - *
    - *
  • Einfache Variante - *
  • CNV - *
  • 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 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: + * + *
      + *
    • Einfache Variante + *
    • CNV + *
    • 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 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 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(); + /** + * 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 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(); - 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 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 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 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 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 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 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 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 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> getSystemischeTherapienFromDiagnose(int diseaseId) { - List> 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> getSystemischeTherapienFromDiagnose(int diseaseId) { + List> 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 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 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 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 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> 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> 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 getProzedurwerte(Procedure prozedur) { - List wirkstoffListe = new ArrayList<>(); - // SubstanzenCodesListe enthält die Liste der SubstanzenCodes - List> substanzenCodesListe = new ArrayList<>(); + private static Map getProzedurwerte(Procedure prozedur) { + List wirkstoffListe = new ArrayList<>(); + // SubstanzenCodesListe enthält die Liste der SubstanzenCodes + List> substanzenCodesListe = new ArrayList<>(); - // alle Werte der Prozedur auslesen - Map alleWerte = prozedur.getAllValues(); - // Prozedurwerte enthält nur die interessanten Werte - Map 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> 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 alleWerte = prozedur.getAllValues(); + // Prozedurwerte enthält nur die interessanten Werte + Map 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> 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 getSubstanzCode(Map substanz) { - Map 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 getSubstanzCode(Map substanz) { + Map 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>> {} +public interface ProzedurToProzedurwerteMapper + extends Function>> {} 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> 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> 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 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 findReferencedFollowUpsForSubform(Procedure procedure) { + if (null == procedure || !"DNPM UF Einzelempfehlung".equals(procedure.getFormName())) { + return List.of(); } - @Override - public List 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 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 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 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 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 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 findReferencedMtbs(Procedure procedure) { - var procedureIds = new ArrayList(); + @Override + public List findReferencedMtbs(Procedure procedure) { + var procedureIds = new ArrayList(); - 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 findReferencedMtbs(int procedureId) { - var procedure = this.onkostarApi.getProcedure(procedureId); - if (null == procedure) { - return List.of(); - } - return findReferencedMtbs(procedure); + @Override + public List 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 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 findReferencedMtbs(int procedureId); + /** + * Finde verlinkte MTBs in Hauptformular und Unterformularen + * + * @param procedure Die Prozedur mit Hauptformular + * @return Liste mit verlinkten MTBs + */ + List findReferencedMtbs(Procedure procedure); - /** - * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung - * - * @param procedure Die DNPM UF Einzelempfehlung Prozedur - * @return Liste mit verlinkten FollowUps - */ - List findReferencedFollowUpsForSubform(Procedure procedure); + /** + * Finde verlinkte MTBs in Hauptformular und Unterformularen + * + * @param procedureId ID der Prozedur mit Hauptformular + * @return Liste mit verlinkten MTBs + */ + List findReferencedMtbs(int procedureId); - /** - * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung - * - * @param procedureId ID der Prozedur - * @return Liste mit verlinkten FollowUps - */ - List findReferencedFollowUpsForSubform(int procedureId); + /** + * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung + * + * @param procedure Die DNPM UF Einzelempfehlung Prozedur + * @return Liste mit verlinkten FollowUps + */ + List findReferencedFollowUpsForSubform(Procedure procedure); + /** + * Finde verlinkte FollowUps für DNPM UF Einzelempfehlung + * + * @param procedureId ID der Prozedur + * @return Liste mit verlinkten FollowUps + */ + List 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); + } } -- cgit v1.2.3