001package org.hl7.fhir.common.hapi.validation.support;
002
003import ca.uhn.fhir.context.ConfigurationException;
004import ca.uhn.fhir.context.FhirContext;
005import ca.uhn.fhir.context.FhirVersionEnum;
006import ca.uhn.fhir.i18n.Msg;
007import ca.uhn.fhir.util.StopWatch;
008import jakarta.annotation.Nonnull;
009import org.apache.commons.lang3.Validate;
010import org.slf4j.Logger;
011import org.slf4j.LoggerFactory;
012
013import java.io.IOException;
014
015public class DefaultProfileValidationSupportNpmStrategy extends NpmPackageValidationSupport {
016        private static final Logger ourLog = LoggerFactory.getLogger(DefaultProfileValidationSupportNpmStrategy.class);
017
018        /**
019         * Constructor
020         */
021        public DefaultProfileValidationSupportNpmStrategy(@Nonnull FhirContext theFhirContext) {
022                super(theFhirContext);
023
024                Validate.isTrue(theFhirContext.getVersion().getVersion() == FhirVersionEnum.R5);
025
026                ourLog.info("Loading R5 Core+Extension packages into memory");
027                StopWatch sw = new StopWatch();
028
029                try {
030                        loadPackageFromClasspath("org/hl7/fhir/r5/packages/hl7.fhir.r5.core-5.0.0.tgz");
031                        loadPackageFromClasspath("org/hl7/fhir/r5/packages/hl7.fhir.uv.extensions.r5-1.0.0.tgz");
032                        loadPackageFromClasspath("org/hl7/fhir/r5/packages/hl7.terminology-5.1.0.tgz");
033                } catch (IOException e) {
034                        throw new ConfigurationException(
035                                        Msg.code(2333)
036                                                        + "Failed to load required validation resources. Make sure that the appropriate hapi-fhir-validation-resources-VER JAR is on the classpath",
037                                        e);
038                }
039
040                ourLog.info("Loaded {} Core+Extension resources in {}", countAll(), sw);
041        }
042
043        @Override
044        public String getName() {
045                return getFhirContext().getVersion().getVersion() + " FHIR Standard Profile NPM Validation Support";
046        }
047}