diff --git a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/type/CodeSystemValidator.java b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/type/CodeSystemValidator.java index bad6d6e29..6363c37b6 100644 --- a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/type/CodeSystemValidator.java +++ b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/type/CodeSystemValidator.java @@ -272,7 +272,7 @@ public class CodeSystemValidator extends BaseValidator { ukp = KnownProperty.ItemWeight; break; default: - ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), isBaseSpec(cs.getNamedChildValue("url")), I18nConstants.CODESYSTEM_PROPERTY_BAD_HL7_URI, uri); + ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), isBaseSpec(cs.getNamedChildValue("url")) || isSelfRef(cs.getNamedChildValue("url"), uri), I18nConstants.CODESYSTEM_PROPERTY_BAD_HL7_URI, uri); } } } @@ -370,6 +370,10 @@ public class CodeSystemValidator extends BaseValidator { return url.startsWith("http://hl7.org/fhir/") && !url.substring(20).contains("/"); } + private boolean isSelfRef(String url, String uri) { + return (url != null) && uri.startsWith(url); + } + private boolean checkConcept(List errors, Element cs, NodeStack stack, boolean caseSensitive, String hierarchyMeaning, CodeSystem csB, Element concept, Set codes, Map properties) { boolean ok = true; String code = concept.getNamedChildValue("code");