diff options
| author | Paul-Christian Volkmer | 2023-05-08 11:56:35 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-05-08 11:59:59 +0200 |
| commit | 06b5381e885cf5cf4cb008e22e7cb2dff88f40b5 (patch) | |
| tree | 79bfb5d302a699c697d60662123dc4dd47257b24 /src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java | |
| parent | 13ba0f902fc51bb74f905332287650c407c2823d (diff) | |
Verschiebe Implementierungen für Therapiepläne in eigenes Paket
Diffstat (limited to 'src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java')
| -rw-r--r-- | src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java b/src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java new file mode 100644 index 0000000..11ce876 --- /dev/null +++ b/src/main/java/DNPM/services/therapieplan/MultipleMtbTherapieplanService.java @@ -0,0 +1,100 @@ +/* + * MIT License + * + * 2023 Comprehensive Cancer Center Mainfranken + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package DNPM.services.therapieplan; + +import DNPM.services.FormService; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Procedure; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import static DNPM.services.FormService.hasValue; +import static DNPM.services.FormService.isYes; + +public class MultipleMtbTherapieplanService implements TherapieplanService { + + private final IOnkostarApi onkostarApi; + + private final FormService formService; + + public MultipleMtbTherapieplanService(final IOnkostarApi onkostarApi, final FormService formService) { + this.onkostarApi = onkostarApi; + this.formService = formService; + } + + @Override + public void updateRequiredMtbEntries(Procedure procedure) { + // No action required + } + + @Override + public List<Procedure> findReferencedMtbs(Procedure procedure) { + var procedureIds = new ArrayList<Integer>(); + + 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, "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()); + } + + 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()); + } + + @Override + public List<Procedure> findReferencedMtbs(int procedureId) { + var procedure = this.onkostarApi.getProcedure(procedureId); + if (null == procedure) { + return List.of(); + } + return findReferencedMtbs(procedure); + } +} |
