diff --git a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java index a0faa5000..3ce82c756 100644 --- a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java +++ b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java @@ -2219,7 +2219,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat ok = true; } else if (en.equals("Resource") && container.isResource()) { ok = true; - } else if (en.equals("CanonicalResource") && VersionUtilities.getExtendedCanonicalResourceNames(context.getVersion()).contains(stack.getLiteralPath())) { + } else if (en.equals("CanonicalResource") && containsAny(VersionUtilities.getExtendedCanonicalResourceNames(context.getVersion()), plist)) { ok = true; } else if (hasElementName(plist, en) && pu == null) { ok = true; @@ -2310,6 +2310,15 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat } } + private boolean containsAny(Set set, List list) { + for (String p : list) { + if (set.contains(p)) { + return true; + } + } + return false; + } + private boolean hasElementName(List plist, String en) { String[] ep = en.split("\\."); for (String s : plist) { @@ -2726,7 +2735,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat if (dok) { try { DateTimeType dt = new DateTimeType(e.primitiveValue()); - if (isCoreDefinition(profile) || (context.hasExtension(ToolingExtensions.EXT_DATE_RULES) && ToolingExtensions.readStringExtension(context, ToolingExtensions.EXT_DATE_RULES).contains("year-valid"))) { + if (isCoreDefinition(profile) || !context.hasExtension(ToolingExtensions.EXT_DATE_RULES) || ToolingExtensions.readStringExtension(context, ToolingExtensions.EXT_DATE_RULES).contains("year-valid")) { warning(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, yearIsValid(e.primitiveValue()), I18nConstants.TYPE_SPECIFIC_CHECKS_DT_DATETIME_REASONABLE, e.primitiveValue()); } } catch (Exception ex) {