From a68715ff25dc6b3e2c6a0d5b8c9f607aae1830c0 Mon Sep 17 00:00:00 2001 From: Justin McKelvy <60718638+Capt-Mac@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:35:03 -0600 Subject: [PATCH] Lift measure parameter cleanup (#551) * fix null pointer and add test * fix order of null check * clean up method structure --- .../fhir/cr/measure/r4/R4CareGapsService.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/cqf-fhir-cr/src/main/java/org/opencds/cqf/fhir/cr/measure/r4/R4CareGapsService.java b/cqf-fhir-cr/src/main/java/org/opencds/cqf/fhir/cr/measure/r4/R4CareGapsService.java index d18ba92d6..0653d3ef1 100644 --- a/cqf-fhir-cr/src/main/java/org/opencds/cqf/fhir/cr/measure/r4/R4CareGapsService.java +++ b/cqf-fhir-cr/src/main/java/org/opencds/cqf/fhir/cr/measure/r4/R4CareGapsService.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import org.hl7.fhir.r4.model.CanonicalType; import org.hl7.fhir.r4.model.IdType; import org.hl7.fhir.r4.model.Parameters; @@ -75,22 +74,28 @@ protected List> liftMeasureParameters( List> eitherList = new ArrayList<>(); measureId.stream() - .filter(Objects::nonNull) - .filter(x -> x.getIdPart() != null) - .collect(Collectors.toList()) - .forEach(id -> eitherList.add(Eithers.forLeft3(id))); + .filter(this::isValidMeasureIdType) + .map(Eithers::forLeft3) + .forEach(eitherList::add); measureIdentifier.stream() .filter(Objects::nonNull) - .collect(Collectors.toList()) - .forEach(identifier -> eitherList.add(Eithers.forMiddle3(identifier))); + .map(Eithers::forMiddle3) + .forEach(eitherList::add); measureUrl.stream() - .filter(Objects::nonNull) - .filter(x -> !x.toString().contains("null")) - .collect(Collectors.toList()) - .forEach(canonical -> eitherList.add(Eithers.forRight3(canonical))); + .filter(this::isValidCanonical) + .map(Eithers::forRight3) + .forEach(eitherList::add); if (eitherList.isEmpty()) { throw new IllegalArgumentException("no measure resolving parameter was specified"); } return eitherList; } + + private boolean isValidCanonical(CanonicalType canonicalType) { + return canonicalType != null && !canonicalType.toString().contains("null"); + } + + private boolean isValidMeasureIdType(IdType measureId) { + return measureId != null && measureId.getIdPart() != null; + } }