From f0f09d43a319f6facde3e774dd0f90a9b3c79815 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 10 Oct 2023 12:13:51 +0200 Subject: Issue #54: Service zum Ermitteln des ECOG-Status aus Strahlentherapie-Formularen hinzugefügt --- .../DefaultStrahlentherapieService.java | 73 ++++++++++++++++++++++ .../strahlentherapie/StrahlentherapieService.java | 70 +++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java create mode 100644 src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java (limited to 'src/main/java/DNPM/services/strahlentherapie') diff --git a/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java b/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java new file mode 100644 index 0000000..b899d56 --- /dev/null +++ b/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java @@ -0,0 +1,73 @@ +package DNPM.services.strahlentherapie; + +import DNPM.services.SettingsService; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Patient; +import de.itc.onkostar.api.Procedure; + +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * Standardimplementierung des StrahlentherapieServices + * + * @since 0.6.0 + */ +public class DefaultStrahlentherapieService implements StrahlentherapieService { + + private static final String ECOG_FIELD = "ECOGvorTherapie"; + + private final IOnkostarApi onkostarApi; + + private final 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 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"); + } +} diff --git a/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java b/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java new file mode 100644 index 0000000..f5cef46 --- /dev/null +++ b/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java @@ -0,0 +1,70 @@ +package DNPM.services.strahlentherapie; + +import de.itc.onkostar.api.Patient; +import org.springframework.util.Assert; + +import java.util.Date; +import java.util.List; +import java.util.Optional; + +/** + * Service für Systemtherapieformulare + * + * @since 0.6.0 + */ +public interface StrahlentherapieService { + + /** + * 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 + */ + Optional latestEcogStatus(Patient patient); + + /** + * Ermittelt jeden bekannten ECOG-Status aus allen Strahlentherapieformularen des Patienten + * @param patient Der zu verwendende Patient + * @return Eine Liste mit Datum und ECOG-Status als String + */ + List ecogStatus(Patient patient); + + /** + * Datenklasse zum Abbilden des ECOG-Status und Datum + */ + class EcogStatusWithDate { + private Date date; + private String status; + + public EcogStatusWithDate(Date date, String status) { + Assert.notNull(date, "Date cannot be null"); + Assert.hasText(status, "Status cannot be empty String"); + Assert.isTrue(isValidEcogCode(status), "Not a valid ADT.LeistungszustandECOG code"); + this.date = date; + this.status = status; + } + + private boolean isValidEcogCode(String status) { + switch (status) { + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "U": + return true; + default: + return false; + } + } + + public Date getDate() { + return date; + } + + public String getStatus() { + return status; + } + } + +} -- cgit v1.2.3 From 14e9fcab1a400d04b21c2ea5cf3a3e02dd30f043 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 10 Oct 2023 12:21:27 +0200 Subject: Issue #54: Add common EcogService interface --- .../DefaultStrahlentherapieService.java | 1 + .../strahlentherapie/StrahlentherapieService.java | 64 +--------------------- 2 files changed, 3 insertions(+), 62 deletions(-) (limited to 'src/main/java/DNPM/services/strahlentherapie') diff --git a/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java b/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java index b899d56..a318a81 100644 --- a/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java +++ b/src/main/java/DNPM/services/strahlentherapie/DefaultStrahlentherapieService.java @@ -1,5 +1,6 @@ package DNPM.services.strahlentherapie; +import DNPM.dto.EcogStatusWithDate; import DNPM.services.SettingsService; import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Patient; diff --git a/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java b/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java index f5cef46..a8de923 100644 --- a/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java +++ b/src/main/java/DNPM/services/strahlentherapie/StrahlentherapieService.java @@ -1,70 +1,10 @@ package DNPM.services.strahlentherapie; -import de.itc.onkostar.api.Patient; -import org.springframework.util.Assert; - -import java.util.Date; -import java.util.List; -import java.util.Optional; +import DNPM.services.TherapieMitEcogService; /** * Service für Systemtherapieformulare * * @since 0.6.0 */ -public interface StrahlentherapieService { - - /** - * 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 - */ - Optional latestEcogStatus(Patient patient); - - /** - * Ermittelt jeden bekannten ECOG-Status aus allen Strahlentherapieformularen des Patienten - * @param patient Der zu verwendende Patient - * @return Eine Liste mit Datum und ECOG-Status als String - */ - List ecogStatus(Patient patient); - - /** - * Datenklasse zum Abbilden des ECOG-Status und Datum - */ - class EcogStatusWithDate { - private Date date; - private String status; - - public EcogStatusWithDate(Date date, String status) { - Assert.notNull(date, "Date cannot be null"); - Assert.hasText(status, "Status cannot be empty String"); - Assert.isTrue(isValidEcogCode(status), "Not a valid ADT.LeistungszustandECOG code"); - this.date = date; - this.status = status; - } - - private boolean isValidEcogCode(String status) { - switch (status) { - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "U": - return true; - default: - return false; - } - } - - public Date getDate() { - return date; - } - - public String getStatus() { - return status; - } - } - -} +public interface StrahlentherapieService extends TherapieMitEcogService {} -- cgit v1.2.3