Skip to content

Commit c00c4ef

Browse files
authored
Merge pull request #1067 from drajer-health/valueSet-url-fixes
Fix ValueSet lookup failure by supporting versioned canonical URLs
2 parents 2c5be1b + 3cab643 commit c00c4ef

1 file changed

Lines changed: 30 additions & 2 deletions

File tree

src/main/java/com/drajer/bsa/kar/condition/FhirPathProcessor.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.Map.Entry;
1515
import java.util.Set;
1616
import java.util.function.Supplier;
17+
import org.apache.commons.lang3.StringUtils;
1718
import org.hl7.fhir.r4.model.*;
1819
import org.hl7.fhir.r4.model.DataRequirement.DataRequirementCodeFilterComponent;
1920
import org.hl7.fhir.r4.model.Parameters.ParametersParameterComponent;
@@ -409,8 +410,7 @@ public void filterByCode(
409410
|| drcf.getPath().equals("medication"))
410411
&& drcf.getValueSet() != null) {
411412

412-
Resource vsr =
413-
kd.getKar().getDependentResource(ResourceType.ValueSet, drcf.getValueSet());
413+
Resource vsr = getValueSet(kd, drcf.getValueSet());
414414

415415
if (vsr != null) {
416416
logger.debug(" Found Value Set {} to compare codes.", vsr.getId());
@@ -600,4 +600,32 @@ R4CqlExecutionService newEvaluator() {
600600
logger.info("Evaluator instance: " + System.identityHashCode(ev));
601601
return ev;
602602
}
603+
604+
public Resource getValueSet(KarProcessingData kd, String url) {
605+
if (StringUtils.isBlank(url)) {
606+
return null;
607+
}
608+
Resource res = kd.getKar().getDependentResource(ResourceType.ValueSet, url);
609+
610+
if (res == null) {
611+
res = kd.getKar().getDependentResource(ResourceType.ValueSet, normalizeCanonicalUrl(url));
612+
}
613+
return res;
614+
}
615+
616+
public String normalizeCanonicalUrl(String url) {
617+
try {
618+
if (StringUtils.isBlank(url)) {
619+
return null;
620+
}
621+
622+
int pipeIndex = url.indexOf('|');
623+
return (pipeIndex >= 0) ? url.substring(0, pipeIndex) : url;
624+
625+
} catch (Exception e) {
626+
logger.warn("Failed to normalize canonical URL: {}", url, e);
627+
628+
return url;
629+
}
630+
}
603631
}

0 commit comments

Comments
 (0)