diff options
| author | Paul-Christian Volkmer | 2023-08-28 14:50:46 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-08-28 14:50:46 +0200 |
| commit | 994889da4accee45e3460695db4d888db7054615 (patch) | |
| tree | 1610e5299fa5ba9c4273379393c8b01ab4640338 /src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java | |
| parent | b43b85a5b5ad1ecff8c84baf21dd808443e05ed8 (diff) | |
| parent | ef21c287f04640021387914af6307d014ea4a2db (diff) | |
Merge branch 'master' into issue_37
Diffstat (limited to 'src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java')
| -rw-r--r-- | src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java b/src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java index 7c7e2b6..377e3d9 100644 --- a/src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java +++ b/src/main/java/DNPM/services/systemtherapie/DefaultSystemtherapieService.java @@ -2,11 +2,12 @@ package DNPM.services.systemtherapie; import DNPM.services.SettingsService; import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Patient; import de.itc.onkostar.api.Procedure; +import de.itc.onkostar.api.ProcedureEditStateType; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * Standardimplementierung des Systemtherapieservices @@ -15,6 +16,8 @@ import java.util.Map; */ public class DefaultSystemtherapieService implements SystemtherapieService { + private static final String ECOG_FIELD = "ECOGvorTherapie"; + private final IOnkostarApi onkostarApi; private final SettingsService settingsService; @@ -51,6 +54,43 @@ public class DefaultSystemtherapieService implements SystemtherapieService { return new OsSystemischeTherapieToProzedurwerteMapper(); } + /** + * Ermittelt den letzten bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten + * + * @param patient Der zu verwendende Patient + * @return Der ECOG-Status als String oder leeres Optional + */ + @Override + public Optional<String> latestEcogStatus(Patient patient) { + return ecogSatus(patient).stream() + .max(Comparator.comparing(EcogStatusWithDate::getDate)) + .map(EcogStatusWithDate::getStatus); + } + + /** + * Ermittelt jeden bekannten ECOG-Status aus allen Systemtherapieformularen des Patienten + * + * @param patient Der zu verwendende Patient + * @return Eine Liste mit Datum und ECOG-Status als String + */ + @Override + public List<EcogStatusWithDate> ecogSatus(Patient patient) { + return patient.getDiseases().stream() + .flatMap(disease -> onkostarApi.getProceduresForDiseaseByForm(disease.getId(), getFormName()).stream()) + .filter(procedure -> procedure.getEditState() == ProcedureEditStateType.COMPLETED) + .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") |
